GKE Autopilot'ta çalışan uygulamadan Özel AlloyDB örneğine bağlanma

1. Genel Bakış

Bu laboratuvarda, GKE Autopilot'ta çalışan bir pod ile iki katmanlı bir mikro hizmet dağıtacak ve bunu AlloyDB veritabanının özel bir örneğine bağlayacaksınız. Müşteri Hizmetleri uygulaması, Cymbal Eats sisteminin bir parçasıdır ve kayıtlı kullanıcıları yönetme işlevi sunar. Müşteri hizmetleri uygulaması, Quarkus çerçevesini kullanan Java tabanlı bir mikro hizmettir.

e8a5140b09521b7a.png

AlloyDB, özel hizmet erişimi için yapılandırılmış özel ve dahili IP adresleri aracılığıyla ağ bağlantısını destekler.

Özel hizmet erişimi, VPC ağınız ile AlloyDB kaynaklarınızın (kümeler ve örnekler) bulunduğu temel Google Cloud VPC ağı arasında bir VPC eşleme bağlantısı olarak uygulanır. Özel bağlantı, VPC ağınızdaki kaynakların eriştiği AlloyDB kaynaklarıyla yalnızca dahili IP adreslerini kullanarak iletişim kurabilmesini sağlar. VPC ağınızdaki kaynakların AlloyDB kaynaklarına ulaşmak için internet erişimine veya harici IP adreslerine ihtiyacı yoktur.

44662d7a086358de.png

GKE Autopilot nedir?

GKE Autopilot, GKE'de bir çalışma modudur. Bu modda Google, düğümleriniz, ölçeklendirme, güvenlik ve önceden yapılandırılmış diğer ayarlar dahil olmak üzere küme yapılandırmanızı yönetir. Autopilot kümeleri, çoğu üretim iş yükünü çalıştıracak şekilde optimize edilmiştir ve Kubernetes manifestlerinize göre işlem kaynakları sağlar. Basitleştirilmiş yapılandırma, küme ve iş yükü kurulumu, ölçeklenebilirlik ve güvenlik için GKE'deki en iyi uygulamaları ve önerileri takip eder. Yerleşik ayarların listesi için Autopilot ve Standard karşılaştırma tablosu'na bakın.

AlloyDB nedir?

En zorlu kurumsal veritabanı iş yükleriniz için tümüyle yönetilen, PostgreSQL ile uyumlu bir veritabanı hizmeti. AlloyDB, üstün performans, ölçek ve kullanılabilirlik için Google'ın en iyi özelliklerini en popüler açık kaynaklı veritabanı motorlarından biri olan PostgreSQL ile birleştirir.

Öğrenecekleriniz

Bu laboratuvarda şunları yapmayı öğreneceksiniz:

  • AlloyDB veritabanının özel örneğini oluşturma
  • AlloyDB örneğine bağlanan bir uygulamayı GKE Autopilot kümesine dağıtma

Ön koşullar

  • Bu laboratuvarda, Cloud Console ve Cloud Shell ortamlarına aşina olduğunuz varsayılır.
  • Daha önce GKE ve AlloyDB deneyiminiz olması yardımcı olur ancak zorunlu değildir.

2. Kurulum ve Gereksinimler

Cloud projesi kurulumu

  1. Google Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. Dilediğiniz zaman bunu güncelleyebilirsiniz.
  • Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dizeyi otomatik olarak oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğine (genellikle PROJECT_ID olarak tanımlanır) başvurmanız gerekir. Oluşturulan kimliği beğenmezseniz başka bir rastgele kimlik oluşturabilirsiniz. Dilerseniz kendi adınızı deneyerek kullanılabilir olup olmadığını kontrol edebilirsiniz. Bu adımdan sonra değiştirilemez ve proje süresince geçerli kalır.
  • Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
  1. Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırma ücreti alınmaması için kaynakları kapatmak üzere oluşturduğunuz kaynakları veya projenin tamamını silebilirsiniz. Google Cloud'un yeni kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.

Ortam Kurulumu

Arama çubuğunun sağındaki simgeyi tıklayarak Cloud Shell'i etkinleştirin.

eb0157a992f16fa3.png

Depoyu klonlayıp dizine gidin, aşağıdaki komutu kopyalayıp terminale yapıştırın ve Enter tuşuna basın:

git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/customer-service

gke-lab-setup.sh komutunu çalıştırarak gerekli bağımlılıkları dağıtın.

Aşağıdaki kaynaklar oluşturulur:

  • AlloyDB kümesi ve örneği
  • Cloud Run Job ve Customer Service için container görüntülerini depolamak üzere Artifact Registry
  • Cloud Run işinin AlloyDB veritabanıyla iletişim kurması için VPC erişim bağlayıcısı
  • AlloyDB veritabanı oluşturmak için Cloud Run işi
  • GKE Autopilot kümesi
./gke-lab-setup.sh

Yetkilendirmeniz istenirse devam etmek için "Yetkilendir"i tıklayın.

6356559df3eccdda.png

Kurulum yaklaşık 10 dakika sürer. Gerekli bağımlılıkları oluşturmak için kullanılan kurulum komut dosyasını inceleyin.

gke-lab-setup.sh

Sonraki adımları çalıştırmadan önce komut dosyasının tamamlanmasını ve aşağıdaki çıktıyı görmeyi bekleyin.

Job [db-job] has successfully been created.

To execute this job, use:
gcloud beta run jobs execute db-job
OK Creating execution... Done.               
  OK Provisioning resources...
Done.
Execution [db-job-k94ps] has successfully started running.

3. Uygulama Dağıtımı

AlloyDB kümesini inceleme

Oluşturulan AlloyDB örneğini incelemek için aşağıdaki komutu çalıştırın:

gcloud alloydb instances describe customer-instance --cluster=customer-cluster --region=us-central1

Örnek çıktı:

createTime: '2023-01-06T14:40:07.213288293Z'
instanceType: PRIMARY
ipAddress: 10.77.176.2
machineConfig:
  cpuCount: 2
name: projects/cymbal-eats-20056-16671/locations/us-central1/clusters/customer-cluster/instances/customer-instance
nodes:
- zoneId: us-central1-f
queryInsightsConfig:
  queryPlansPerMinute: 5
  queryStringLength: 1024
  recordApplicationTags: true
  recordClientAddress: true
reconciling: false
state: READY
uid: df90d57d-88df-49be-a626-6dfec0513e64
updateTime: '2023-01-06T14:49:40.907977843Z'
writableNode:
  zoneId: us-central1-b

Konsolda kullanılabilen özellikleri(Sorgu Analizi, İzleme) keşfedin.

3b12b0fa1367fb42.png

GKE Autopilot kümesini inceleme

Proje ortamı değişkenlerini ayarlayın:

export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export PROJECT_NAME=$(gcloud projects describe $PROJECT_ID --format='value(name)')

İlk kurulumun bir parçası olarak küme, aşağıdaki komut kullanılarak oluşturuldu (Bu komutu çalıştırmanız gerekmez):

gcloud container clusters create-auto $CLUSTER_NAME --region $REGION

Oluşturulan GKE Autopilot kümesini görüntülemek için komutu çalıştırın:

gcloud container clusters list

Örnek çıktı:

e8882c44fa0bb631.png

Kümenin kimlik bilgilerini depolamak için komutu çalıştırın:

CLUSTER_NAME=rewards-cluster
REGION=us-central1

gcloud container clusters get-credentials $CLUSTER_NAME --region=$REGION

Uygulama dağıtma

Ardından bir müşteri hizmetleri uygulaması dağıtacaksınız.

Müşteri Hizmetleri uygulaması, Quarkus çerçevesini kullanan Java tabanlı bir mikro hizmettir.

cymbal-eats/customer-service klasörüne gidin ve container görüntüsünü oluşturup yüklemek için komutları çalıştırın:

./mvnw clean package -DskipTests

export CUSTOMER_SERVICE_IMAGE=gcr.io/$PROJECT_ID/customer-service:1.0.0

gcloud builds submit --tag $CUSTOMER_SERVICE_IMAGE .

En son derlemeyle ilgili ayrıntıları incelemek için konsolda Cloud Build'u açın.

49fd65309967ae47.png

AlloyDB özel IP adresinin değerini kullanarak aşağıdaki ortam değişkenini ayarlayın:

export DB_HOST=$(gcloud beta alloydb instances describe customer-instance \
    --cluster=customer-cluster \
    --region=$REGION \
    --format=json | jq \
    --raw-output ".ipAddress")

echo $DB_HOST

Müşteri hizmetleri uygulamasının veritabanına bağlanmak için kullanacağı veritabanı kimlik bilgilerini depolamak üzere Kubernetes sırları nesnesi oluşturmak için aşağıdaki komutları çalıştırın:

DB_NAME=customers
DB_USER=postgres
DB_PASSWORD=password123

kubectl create secret generic gke-alloydb-secrets \
  --from-literal=database=$DB_NAME \
  --from-literal=username=$DB_USER \
  --from-literal=password=$DB_PASSWORD \
  --from-literal=db_host=$DB_HOST

deployment.yaml dosyasında CUSTOMER_SERVICE_IMAGE'ı değiştirmek için komutu çalıştırın:

sed "s@CUSTOMER_SERVICE_IMAGE@$CUSTOMER_SERVICE_IMAGE@g" deployment.yaml.tmpl > customer-service-deployment.yaml

Uygulamayı dağıtmak için komutu çalıştırın:

kubectl apply -f customer-service-deployment.yaml

Uygulamanın RUNNING durumuna geçmesi birkaç dakika sürer.

Test adımlarında kullanılacak harici IP'yi oluşturmak için komutu çalıştırın:

SERVICE_NAME=customer-service

kubectl expose deployment $SERVICE_NAME \
  --type LoadBalancer --port 80 --target-port 8080

Oluşturulan kaynakları doğrulamak için komutu çalıştırın:

kubectl get all

Örnek çıktı:

179a23bd33793924.png

4. Test uygulaması

Müşteri Hizmetleri URL'sini kaydetmek için aşağıdaki komutları çalıştırın.

kubectl get svc

Önceki çıktıda yer alan Harici IP değerini kullanarak aşağıdaki ortam değişkenini ayarlayın.

CUSTOMER_SERVICE_URL=$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')

Yeni bir müşteri kaydı oluşturmak için aşağıdaki komutları çalıştırın:

curl -X POST $CUSTOMER_SERVICE_URL/customer \
-H 'Content-Type: application/json' \
-d '{"id": "id1","rewardPoints": 3,"address": "1845 Denise St","city": "Mountain View","createDateTime": "2022-11-11T15:56:45.487566","email": "ajensen9090+eats@gmail.com","name": "Angela Jensen","state": "CA","updateDateTime": "2022-11-11T15:56:45.866125","zip": "94043"}'

Daha sonra Günlük Gezgini'nde görüntüleyeceğiniz günlük mesajları oluşturmak için yukarıdaki komutu birden çok kez çalıştırın.

Müşteri Kayıtlarını İnceleme

Oluşturulan müşteri kaydını görüntülemek için aşağıdaki komutları çalıştırın.

curl $CUSTOMER_SERVICE_URL/customer | jq

Örnek çıktı:

[
  {
    "address": "1845 Denise St",
    "city": "Mountain View",
    "createDateTime": "2023-01-06T16:13:19.118744",
    "email": "ajensen9090+eats@gmail.com",
    "id": "id1",
    "name": "Angela Jensen",
    "rewardPoints": 3,
    "state": "CA",
    "updateDateTime": "2023-01-06T16:13:19.118896",
    "zip": "94043"
  }
]

GKE iş yüklerini ve hizmetlerini inceleme

Cloud Console'da Kubernetes Engine'i açın ve oluşturulan iş yüklerini ve hizmetleri inceleyin.

e1217216e003a839.png

d5c97fb5950c4db.png

Uygulama Günlükleri

Günlük Gezgini'ni açın ve "Customer already exists" (Müşteri zaten mevcut) metnini içeren günlükleri arayın.

543c5ed97819f540.png

5. Tebrikler!

Tebrikler, codelab'i tamamladınız.

İşlediğimiz konular:

  • AlloyDB veritabanının özel örneğini oluşturma
  • AlloyDB örneğine bağlanan bir uygulamayı GKE Autopilot kümesine dağıtma

Sıradaki adım:

Diğer Cymbal Eats codelab'lerini keşfedin:

Temizleme

Bu eğitimde kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini önlemek amacıyla kaynakları içeren projeyi silin veya projeyi koruyup tek tek kaynakları silin.

Projeyi silme

Faturalandırılmanın önüne geçmenin en kolay yolu, eğitim için oluşturduğunuz projeyi silmektir.