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

1. Genel Bakış

Bu laboratuvarda, GKE Autopilot'ta çalışan kapsüle sahip iki katmanlı bir mikro hizmet dağıtacak ve onu 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 sağlar. Müşteri Hizmetleri uygulaması, Quarkus çerçevesini kullanan Java tabanlı bir mikro hizmettir.

e8a5140b09521b7a.png

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

Özel hizmetler 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 dahili IP adreslerini kullanarak yalnızca eriştikleri AlloyDB kaynaklarıyla iletişim kurmasını sağlar. VPC ağınızdaki kaynakların AlloyDB kaynaklarına erişmek için internet erişimine veya harici IP adreslerine ihtiyacı yoktur.

44662d7a086358de.png

GKE Autopilot nedir?

GKE Autopilot, GKE'de Google'ın düğümleriniz, ölçeklendirme, güvenlik ve önceden yapılandırılmış diğer ayarlar dahil küme yapılandırmanızı yönettiği bir çalışma modudur. Autopilot kümeleri, çoğu üretim iş yükünü çalıştırmak ve Kubernetes manifest'lerinize göre işlem kaynakları sağlamak için optimize edilmiştir. Geliştirilmiş yapılandırma; küme ve iş yükü kurulumu, ölçeklenebilirlik ve güvenlikle ilgili GKE en iyi uygulamalarını ve önerilerini izler. Yerleşik ayarların listesi için Autopilot ve Standart 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 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 kaynak veritabanı motorlarından biri olan PostgreSQL ile bir araya getirir.

Öğrenecekleriniz

Bu laboratuvarda aşağıdakileri nasıl yapacağınızı öğreneceksiniz:

  • AlloyDB veritabanının gizli örneğini oluşturma
  • AlloyDB örneğine bağlanan GKE Autopilot kümesinde bir uygulama dağıtma

Ön koşullar

  • Bu laboratuvarda, Cloud Console ve Cloud Shell ortamlarıyla ilgili bilgi sahibi olmanız gerekir.
  • Önceki GKE ve AlloyDB deneyimi faydalıdır ancak zorunlu değildir.

2. Kurulum ve Gereksinimler

Cloud projesi kurulumu

  1. Google Cloud Console'da oturum açıp 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. İstediğiniz zaman güncelleyebilirsiniz.
  • Proje Kimliği, tüm Google Cloud projelerinde benzersizdir ve değiştirilemez (belirlendikten sonra değiştirilemez). Cloud Console, otomatik olarak benzersiz bir dize oluşturur. bunun ne olduğunu umursamıyorsunuz. Çoğu codelab'de proje kimliğini (genellikle PROJECT_ID olarak tanımlanır) referans almanız gerekir. Oluşturulan kimliği beğenmezseniz rastgele bir kimlik daha oluşturabilirsiniz. Alternatif olarak, kendi ölçümünüzü deneyip mevcut olup olmadığına bakabilirsiniz. Bu adımdan sonra değiştirilemez ve proje süresince kalır.
  • Bilginiz için bazı API'lerin kullandığı üçüncü bir değer, yani Proje Numarası daha vardır. Bu değerlerin üçü hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
  1. Sonraki adımda, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. Bu eğitim dışında faturalandırma yapılmaması için kaynakları kapatmak isterseniz oluşturduğunuz kaynakları silebilir veya projenin tamamını silebilirsiniz. Yeni Google Cloud kullanıcıları, 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.

Ortam Kurulumu

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

eb0157a992f16fa3.png

Depoyu klonlayın ve 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şturulacak:

  • AlloyDB kümesi ve örneği
  • Cloud Run İşi ve Müşteri Hizmetleri için container görüntülerini depolayacak Artifact Registry
  • AlloyDB veritabanıyla iletişim kurmak için Cloud Run İşi için VPC Erişim bağlayıcısı
  • AlloyDB veritabanı oluşturma için Cloud Run İşi
  • GKE Autopilot kümesi
./gke-lab-setup.sh

Yetki vermeniz istenirse "Yetkilendir"i tıklayın seçeneğini 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

Komut dosyası tamamlanana kadar bekleyin. Sonraki adımları çalıştırmadan önce aşağıdaki çıkışı görün.

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ı

AllyDB 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

Konsoldaki kullanılabilir ö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ı olan küme aşağıdaki komut kullanılarak oluşturulmuştur (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 şu komutu çalıştırın:

CLUSTER_NAME=rewards-cluster
REGION=us-central1

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

Uygulama dağıtma

Şimdi 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 kapsayıcı görüntüsü 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 derlemenin ayrıntılarını incelemek için konsolda Cloud Build'i 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ı tarafından veritabanına bağlanmak için kullanılacak veritabanı kimlik bilgilerini depolamak üzere Kubernetes gizli anahtar 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

delivery.yaml dosyasındaki CUSTOMER_SERVICE_IMAGE öğesini değiştirmek için şu 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 şu komutu çalıştırın:

kubectl apply -f customer-service-deployment.yaml

Uygulamanın RUNNING (ÇALIŞIYOR) durumuna geçmesi birkaç dakika sürer.

Test adımlarında kullanılacak harici IP'yi oluşturmak için şu 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 çıkıştaki 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öreceğ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 İş Yüklerini ve Hizmetlerini İncele

Cloud Console'da Kubernetes Engine'i açıp oluşturulan İş Yüklerini ve Hizmetleri inceleyin.

e1217216e003a839.png

d5c97fb5950c4db.png

Uygulama Günlükleri

Günlük Gezgini'ni açın ve "Müşteri zaten var" ifadesini içeren günlükleri arayın metin.

543c5ed97819f540.png

5. Tebrikler!

Tebrikler, codelab'i tamamladınız.

İşlediğimiz konular:

  • AlloyDB veritabanının gizli örneği oluşturma
  • AlloyDB örneğine bağlanan bir GKE Autopilot kümesine uygulama dağıtma

Sıradaki adım:

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

Temizleme

Bu eğiticide kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız kaynakları içeren projeyi silin veya projeyi tutup tek tek kaynakları silin.

Projeyi silme

Faturalandırmayı ortadan kaldırmanın en kolay yolu, eğitim için oluşturduğunuz projeyi silmektir.