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'daki aaos-sdv-telemetry-mcg deposunda barındırılır. MCG'yi geliştirme ve test için yerel olarak çalıştırabilir veya ekip erişimi için bir 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 yüklü olmalıdır. Yerel olarak çalıştırırken MCG_LOCALCACHE=true değerini ayarlayarak bellek içi önbelleğe almayı etkinleştirmeniz gerekir. Bu, Araç Sinyali Katalogları'nın depolanmasını destekler. Hizmeti yerel olarak oluşturup çalıştırmak için kaynak dizindeki 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 Run hizmeti olarak Google Cloud'a dağıtmak için Terraform ve Google Cloud Build dosyalarını içerir. Aşağıdaki bölümler, değişkenler dosyası oluşturma, altyapıyı dağıtma, uygulamayı oluşturup dağıtma ve erişim izni verip dağıtımı doğrulama gibi dağıtım sürecinde size rehberlik eder.
Cloud Run sunucusuz bir platform olduğundan, 7/24 etkin bir sunucu tutmak yerine yalnızca istekleri işlerken container'ları çalıştırarak kaynakları korur. Bu nedenle, istekler arasında kapsayıcı örnekleri kapatıldığında bellek içi veriler kaybolur. Bu nedenle, hizmet çağrıları arasında katalog verileri için kalıcı depolama sağlamak üzere Redis gerekir. Bu yaklaşım, ekip veya üretim kullanımı için uygun olan ö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ızı doğrulayın:
- Faturalandırmanın etkin olduğu ve kaynak ile IAM rolleri sağlama 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 KSA (
gcloud) yüklü ve kimliği doğrulanmış olmalıdır.
Dosya yapısı
Google Cloud'a dağıtım, infrastructure/ alt dizininden Terraform komutlarını ve depo kökünden Cloud Build komutlarını çalıştırmayı içerir. Etkileşimde bulunduğunuz başlıca dosya 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 = "<var label="Google Cloud project ID">your-gcp-project-id</var>"
region = "<var label="Google Cloud region">your-gcp-region</var>" # 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şlatabilir ve uygulayabilirsiniz. Bu adımda, Artifact Registry, Redis ve Cloud Run dahil olmak üzere gerekli tüm Google Cloud kaynakları sağlanır. İşlem tamamlandığında Terraform, yer tutucu bir 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ı oluşturma ve dağıtma
Altyapı sağlandıktan sonraki adım, MCG kaynak kodunu oluşturup Google Cloud Run'a dağıtmaktır. Bu işlem, kaynak kodu Google Cloud Build'e gönderilerek yapılır. Google Cloud Build, Docker görüntüsünü oluşturur, Artifact Registry'ye aktarır ve Google Cloud Run hizmetini yeni görüntüyü kullanacak şekilde günceller.
Google Cloud Build, derlenen görüntüyü etiketlemek için COMMIT_SHA yerine koyma değişkenini kullanır. Sürüm numarası (örneğin, v1.0.0) veya deponuzun commit SHA'sını kullanabilirsiniz. Etiketleme, Artifact Registry'deki sürümleri ayırt etmenize, dağıtımları yönetmenize ve gerekirse önceki bir sürüme geri çekmenize 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 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=<var label="member type, e.g. user or serviceAccount">MEMBER_TYPE</var>:<var label="email address of member">EMAIL_ADDRESS</var> \
--role=roles/run.invoker \
--region=<var label="Google Cloud region">your-gcp-region</var>
Aşağıdaki komutu çalıştırarak hizmet URL'sini alabilirsiniz. URL, dağıtımlar arasında sabit kalır.
SERVICE_URL=$(gcloud run services describe mcg-service \
--region <var label="Google Cloud region">your-gcp-region</var> \
--format='value(status.url)')
İzinleri verdikten sonra /health uç noktasını çağırarak hizmetin çalıştığını ve erişilebilir olduğunu doğrulayın. Google Cloud Run hizmetleri kimlik doğrulama gerektirdiğinden, uç noktayı çağırırken istek başlığına gcloud hizmetinden 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.