Bu sayfada, Metrik Yapılandırma Oluşturucu'nun (MCG) nasıl dağıtılacağı açıklanmaktadır.
Kaynak koduna erişme
MCG'nin kaynak kodu, GitHub'da aaos-sdv-telemetry-mcg adresinde barındırılır. MCG'yi geliştirme ve test için yerel olarak çalıştırabilir veya ekibin erişebilmesi için bulut ortamına dağıtabilirsiniz.
Yerel olarak çalıştırma
MCG'yi yerel geliştirme ve test için kaynak dizininden çalıştırmak üzere Bazel'i kullanın. Bazel'in yüklü olması gerekir. Yerel olarak çalıştırırken MCG_LOCALCACHE=true ayarını yaparak RAM önbelleğe almayı etkinleştirmeniz gerekir. Bu, Araç Sinyal Katalogları'nın depolanmasını destekler. Hizmeti yerel olarak derleyip çalıştırmak için kaynak dizininden aşağıdaki komutları kullanın:
# Build and run on default port 8005
MCG_LOCALCACHE=true bazel run //:mcg
# Or, to change the port, use:
MCG_LOCALCACHE=true bazel run //:mcg -- --listen :9000
Google Cloud'a dağıtma
MCG kod tabanı, MCG'yi Google Cloud'da Google Cloud Run hizmeti olarak dağıtmak için Terraform ve Google Cloud Build dosyalarını içerir. Aşağıdaki bölümlerde, değişken dosyası oluşturma, altyapıyı dağıtma, uygulamayı derleyip dağıtma, erişim izni verme ve dağıtımı doğrulama gibi adımları içeren dağıtım süreci açıklanmaktadır.
Cloud Run, sunucusuz bir platform olduğundan sunucuyu 7/24 etkin tutmak yerine yalnızca istekleri işlerken container'ları çalıştırarak kaynakları korur. Bu, istekler arasında container örnekleri kapatıldığında bellek içi verilerin kaybolduğu anlamına gelir. Bu nedenle, hizmet çağrıları arasında katalog verileri için kalıcı depolama alanı sağlamak üzere Redis gerekir. Bu yaklaşım, ekip veya üretim kullanımına uygun, ölçeklenebilir bir dağıtım sağlar.
Ön koşullar
Google Cloud'a dağıtıma başlamadan önce aşağıdaki ön koşulları karşıladığınızdan emin olun:
- Faturalandırmanın etkin olduğu ve kaynaklar ile IAM rollerini temel hazırlık için yeterli izinlere sahip bir Google Cloud projesi
- Terraform (v1.0.0 ve sonraki sürümler) yüklü olmalıdır.
- Google Cloud CLI (
gcloud) yüklü ve kimliği doğrulanmış olmalıdır.
Dosya yapısı
Google Cloud'a dağıtım yapmak için infrastructure/ alt dizininden Terraform komutlarını ve depo kökünden Cloud Build komutlarını çalıştırmanız gerekir. Etkileşimde bulunduğunuz ana dosyalar ve dizinler şunlardır:
repository-root/
├── cloudbuild.yaml
└── infrastructure/
└── terraform.tfvars <-- you create this file
Terraform değişkenleri dosyası oluşturma
infrastructure/ dizininde, variables.tf içinde tanımlanan değişkenler için değerler sağlamak ve dağıtımınızı özelleştirmek üzere terraform.tfvars adlı bir dosya oluşturun. Bu dosyada project_id ve region için değerler tanımlamanız gerekir. Diğer tüm değişkenler isteğe bağlıdır. terraform.tfvars alanına aşağıdakileri ekleyin:
project_id = "your-gcp-project-id" region = "your-gcp-region" # For example, us-central1 or europe-west1
Kullanılabilir tüm değişkenler ve varsayılan değerleri için variables.tf bölümüne bakın. Varsayılan değerleri terraform.tfvars içinde ayarlayarak geçersiz kılabilirsiniz.
Altyapıyı dağıtma
terraform.tfvars oluşturduktan sonra Terraform yapılandırmasını başlatıp uygulayabilirsiniz. Bu adımda, Artifact Registry, Redis ve Cloud Run dahil olmak üzere gerekli tüm Google Cloud kaynakları temel hazırlanır. İşlem tamamlandığında Terraform, yer tutucu container görüntüsü çalıştıran Google Cloud Run hizmetini oluşturur.
Bu adım birkaç dakika sürebilir.
# Run from the infrastructure/ directory
terraform init
terraform apply
terraform apply tarafından istendiğinde planı inceleyin ve onaylamak için yes yazın.
MCG uygulamasını derleme ve dağıtma
Altyapı temel hazırlığı tamamlandıktan sonraki adım, MCG kaynak kodunu derlemek ve Google Cloud Run'a dağıtmaktır. Bu işlem, kaynak kodun Google Cloud Build'e gönderilmesiyle gerçekleştirilir. Google Cloud Build, Docker görüntüsünü oluşturur, Artifact Registry'ye gönderir ve Google Cloud Run hizmetini yeni görüntüyü kullanacak şekilde günceller.
Google Cloud Build, oluşturulan görüntüyü etiketlemek için COMMIT_SHA değiştirme değişkenini kullanır. Bir sürüm numarası (ör. v1.0.0) veya deponuzun SHA'sını kullanabilirsiniz. Etiketleme, Artifact Registry'deki sürümleri ayırt etmenize, dağıtımları yönetmenize ve gerektiğinde önceki bir sürüme geri dönmenize yardımcı olur.
Derleme ve dağıtımı tetiklemek için aşağıdaki gcloud komutunu çalıştırın:
# Run from the repository root
#
# The command tags the image with the Git commit SHA.
# To tag with a version number, replace '$(git rev-parse --short HEAD)' with the version number.
gcloud builds submit . \
--config=cloudbuild.yaml \
--substitutions=COMMIT_SHA=$(git rev-parse --short HEAD)
Bu komut, uygulama kodunun ilk dağıtımını gerçekleştirir. MCG kaynak kodunda yapılan güncellemeleri dağıtmak için bu komutu tekrar çalıştırın.
Erişim izni verme ve dağıtımı doğrulama
Kullanıcıların veya hizmet hesaplarının MCG API'yi çağırmasına izin vermek için onlara Cloud Run Invoker (roles/run.invoker) IAM rolünü vermeniz gerekir:
gcloud run services add-iam-policy-binding mcg-service \ --member=MEMBER_TYPE:EMAIL_ADDRESS \ --role=roles/run.invoker \ --region=your-gcp-region
Aşağıdaki komutu çalıştırarak hizmet URL'sini alabilirsiniz. URL, dağıtımlar arasında değişmeden kalır.
SERVICE_URL=$(gcloud run services describe mcg-service \ --region your-gcp-region \ --format='value(status.url)')
İzinleri verdikten sonra hizmetin çalıştığını ve /health uç noktasını çağırarak erişilebilir olduğunu onaylayın. Google Cloud Run hizmetleri kimlik doğrulama gerektirdiğinden, uç noktayı çağırırken istek başlığına gcloud üzerinden bir yetkilendirme jetonu eklemeniz gerekir:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
$SERVICE_URL/health
Hizmet çalışıyorsa bu komut OK değerini döndürür ve artık API'yi çağırma bölümünde açıklandığı gibi API uç noktalarından herhangi birini çağırabilirsiniz.