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.
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.
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
- 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.
- 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.
- 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.
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.
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.
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ı:
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.
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ı:
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.
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.
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:
- Eventarc ile Cloud Workflows'u tetikleme
- Cloud Storage'dan Etkinlik İşlemeyi Tetikleme
- Cloud Run'dan Private CloudSQL'e bağlanma
- Cloud Run'dan Tümüyle Yönetilen Veritabanlarına Bağlanma
- Identity Aware Proxy (IAP) ile Güvenli Sunucusuz Uygulama
- Cloud Scheduler ile Cloud Run İşlerini Tetikleme
- Cloud Run'a Güvenli Şekilde Dağıtma
- Cloud Run Giriş Trafiğinin Güvenliğini Sağlama
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.