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.

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.

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
- 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.



- 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_IDolarak 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.
- 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.

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.

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.

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ı:

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.

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ı:

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.


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.

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:
- Eventarc ile Cloud Workflows'u tetikleme
- Cloud Storage'dan etkinlik işlemeyi tetikleme
- Cloud Run'dan özel Cloud SQL'e bağlanma
- Cloud Run'dan tam olarak yönetilen veritabanlarına bağlanma
- Identity-Aware Proxy (IAP) ile Sunucusuz Uygulamaları Güvenli Hale Getirme
- Cloud Scheduler ile Cloud Run İşlerini Tetikleme
- Cloud Run'a güvenli bir şekilde dağıtma
- Cloud Run Giriş Trafiğinin Güvenliğini Sağlama
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.