Menggunakan kebijakan deploy untuk membatasi peluncuran
Panduan memulai ini menunjukkan cara mencegah peluncuran Cloud Deploy ke target selama waktu tertentu, dan cara mengantisipasi batasan itu.
Dalam panduan memulai ini, Anda akan melakukan hal berikut:
Buat konfigurasi Skaffold dan manifes Kubernetes, atau Definisi layanan Cloud Run untuk menentukan container (bawaan) image dasar untuk di-deploy.
Menentukan pipeline pengiriman Cloud Deploy dan satu deployment target, yang mengarah ke satu GKE cluster atau layanan Cloud Run.
Pipeline ini hanya mencakup satu tahap, untuk satu target.
Konfigurasi kebijakan deploy untuk target.
Kebijakan ini menetapkan rentang tanggal untuk melarang peluncuran ke target tanggal target.
Membuat rilis.
Biasanya saat Anda membuat rilis, Cloud Deploy membuat peluncuran untuk target pertama dalam progres pipeline pengiriman Anda. Di beberapa dalam kasus ini, karena ada kebijakan yang mencegah deployment ke target, peluncuran untuk target tersebut tidak dibuat.
Lihat hasilnya di Konsol Google Cloud.
Oleh karena kebijakan ini, Anda tidak akan melihat peluncuran untuk rilis tersebut, dan ada tidak ada tindakan yang tertunda dalam visualisasi pipeline pengiriman.
Ganti kebijakan deploy.
Penggantian ini mengakibatkan Cloud Deploy yang sekarang membuat peluncuran untuk target.
Lihat hasilnya di Konsol Google Cloud.
Karena kebijakan tersebut sekarang telah diganti, Anda dapat melihat bahwa ada peluncuran sedang berlangsung (atau selesai, jika telah cukup waktu).
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Cloud Deploy, Cloud Build, GKE, and Cloud Storage.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Cloud Deploy, Cloud Build, GKE, and Cloud Storage.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
- Pastikan setelan default
Akun layanan Compute Engine memiliki izin yang memadai.
Akun layanan mungkin sudah memiliki izin yang diperlukan. Langkah-langkah ini disertakan untuk project yang menonaktifkan pemberian peran otomatis untuk layanan default menggunakan akun layanan.
- Pertama-tama, tambahkan peran
clouddeploy.jobRunner
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/clouddeploy.jobRunner"
- Tambahkan peran
clouddeploy.policyAdmin
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/clouddeploy.policyAdmin"
- Tambahkan peran developer untuk runtime tertentu Anda.
- Untuk GKE:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/container.developer"
- Untuk Cloud Run:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/run.developer"
-
Tambahkan peran
iam.serviceAccountUser
, yang menyertakan izinactAs
untuk men-deploy ke runtime:gcloud iam service-accounts add-iam-policy-binding $(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/iam.serviceAccountUser" \ --project=PROJECT_ID
Jika sudah menginstal Google Cloud CLI, pastikan Anda menjalankan versi terbaru:
gcloud components update
Membuat lingkungan runtime
Jika men-deploy ke Cloud Run, Anda dapat melewati perintah ini.
Untuk GKE, buat satu cluster: quickstart-cluster-qsprod
.
Endpoint Kubernetes API cluster harus dapat dijangkau ke jaringan dari publik
di Internet. Cluster GKE dapat diakses secara eksternal oleh
secara default.
gcloud container clusters create-auto quickstart-cluster-qsprod \
--project=PROJECT_ID \
--region=us-central1
Menyiapkan konfigurasi Skaffold dan manifes aplikasi
Cloud Deploy menggunakan Skaffold untuk menyediakan detail mengenai apa yang harus di-deploy dan cara men-deploy-nya ke target.
Dalam panduan memulai ini, Anda membuat file skaffold.yaml
, yang mengidentifikasi
manifes Kubernetes yang akan digunakan untuk men-deploy aplikasi contoh.
Buka jendela terminal.
Buat direktori baru dan buka direktori tersebut.
GKE
mkdir deploy-policy-quickstart cd deploy-policy-quickstart
Cloud Run
mkdir deploy-policy-quickstart cd deploy-policy-quickstart
Buat file bernama
skaffold.yaml
dengan konten berikut:GKE
apiVersion: skaffold/v4beta1 kind: Config manifests: rawYaml: - k8s-pod.yaml deploy: kubectl: {}
Cloud Run
apiVersion: skaffold/v4beta1 kind: Config manifests: rawYaml: - service.yaml deploy: cloudrun: {}
File ini adalah konfigurasi Skaffold minimal. Untuk panduan memulai ini, Anda membuat . Tapi Anda juga bisa meminta Cloud Deploy membuatkan Cloud Deploy untuk Anda, untuk aplikasi dasar non-produksi.
Lihat referensi
skaffold.yaml
untuk mengetahui informasi selengkapnya tentang file konfigurasi ini.Membuat manifes untuk aplikasi Anda—definisi layanan untuk Cloud Run atau manifes Kubernetes untuk GKE.
GKE
Buat file bernama
k8s-pod.yaml
, dengan konten berikut:apiVersion: v1 kind: Pod metadata: name: getting-started spec: containers: - name: nginx image: my-app-image
File ini adalah Kubernetes dasar manifes, yang diterapkan ke cluster untuk men-deploy aplikasi.
Cloud Run
Buat file bernama
service.yaml
, dengan konten berikut:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: my-deploy-policy-run-service spec: template: spec: containers: - image: my-app-image
File ini adalah definisi dasar layanan Cloud Run, yang digunakan saat deployment untuk membuat Cloud Run layanan.
Membuat pipeline dan target pengiriman
Anda dapat menentukan pipeline dan target pengiriman dalam satu file atau secara terpisah . Dalam panduan memulai ini, Anda akan membuat satu file berisi keduanya.
Buat pipeline pengiriman dan definisi target Anda:
GKE
Dalam direktori
deploy-policy-quickstart
, buat file baru:clouddeploy.yaml
, dengan konten berikut:apiVersion: deploy.cloud.google.com/v1 kind: DeliveryPipeline metadata: name: deploy-policy-pipeline serialPipeline: stages: - targetId: prod-target --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: prod-target description: production cluster gke: cluster: projects/PROJECT_ID/locations/us-central1/clusters/quickstart-cluster-qsprod
Cloud Run
Dalam direktori
deploy-policy-quickstart
, buat file baru:clouddeploy.yaml
, dengan konten berikut:apiVersion: deploy.cloud.google.com/v1 kind: DeliveryPipeline metadata: name: deploy-policy-pipeline serialPipeline: stages: - targetId: prod-target --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: prod-target description: production Run service run: location: projects/PROJECT_ID/locations/us-central1
Mendaftarkan pipeline dan target resource Anda dengan Cloud Deploy layanan:
gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_ID
Anda sekarang memiliki pipeline pengiriman dengan satu target.
Konfirmasi pipeline dan target Anda:
Di konsol Google Cloud, buka halaman Cloud Deploy Halaman Pipeline pengiriman untuk melihat daftar pengiriman Anda yang tersedia pipeline.
Buka halaman Pipeline Penayangan
Pipeline pengiriman yang baru saja Anda buat ditampilkan, dengan satu target tercantum di kolom Targets.
Membuat kebijakan deployment
Anda dapat menentukan kebijakan deploy dalam file yang sama dengan pipeline pengiriman dan target, atau Anda dapat menentukannya dalam file terpisah. Untuk panduan memulai ini, kami mendefinisikan secara terpisah.
Dalam direktori
deploy-policy-quickstart
, buat file baru,deploypolicy.yaml
, dengan konten berikut:apiVersion: deploy.cloud.google.com/v1 description: Restrict all rollouts in the deploy-policy-pipeline resource all the time kind: DeployPolicy metadata: name: quickstart-deploy-policy selectors: - deliveryPipeline: id: 'deploy-policy-pipeline' rules: - restrictRollouts: id: no-rollouts timeWindow: timeZone: America/New_York ranges: - startDate: day: 1 month: 1 endDate: month: 12 day: 31
Kebijakan ini memblokir peluncuran dari 1 Januari hingga 31 Desember.
Daftarkan resource kebijakan deploy Anda ke layanan Cloud Deploy:
gcloud deploy apply --file=deploypolicy.yaml --region=us-central1 --project=PROJECT_ID
Konfirmasi kebijakan deploy Anda:
Di konsol Google Cloud, buka halaman Cloud Deploy Halaman Deploy kebijakan untuk melihat daftar kebijakan yang tersedia.
Kebijakan deploy yang baru saja Anda buat akan ditampilkan.
Membuat rilis
Rilis adalah resource Cloud Deploy pusat yang mewakili perubahan yang di-deploy. Pipeline pengiriman menentukan siklus proses dari data. Lihat Arsitektur layanan Cloud Deploy untuk mengetahui detail tentang siklus proses tersebut.
GKE
Jalankan perintah berikut dari direktori deploy-policy-quickstart
untuk
buat rilis:
gcloud deploy releases create test-release-001 \
--project=PROJECT_ID \
--region=us-central1 \
--delivery-pipeline=deploy-policy-pipeline \
--images=my-app-image=gcr.io/google-containers/nginx@sha256:f49a843c290594dcf4d193535d1f4ba8af7d56cea2cf79d1e9554f077f1e7aaa
Cloud Run
Jalankan perintah berikut dari direktori deploy-policy-quickstart
untuk
buat rilis:
gcloud deploy releases create test-release-001 \
--project=PROJECT_ID \
--region=us-central1 \
--delivery-pipeline=deploy-policy-pipeline \
--images=my-app-image=us-docker.pkg.dev/cloudrun/container/hello@sha256:6063adf8f687702b4065151acddba6781c47bc602167eb9f3bec8aebc9ce95cc
Dalam keadaan normal, Cloud Deploy membuat peluncuran ke target pertama saat Anda membuat rilis menggunakan perintah ini. Dalam kasus ini, karena peluncuran dibatasi sesuai dengan kebijakan deploy, tidak ada peluncuran yang dibuat. Pesan error ditampilkan di baris perintah:
ERROR: (gcloud.deploy.releases.create) A create-rollout attempt was blocked by the "quickstart-deploy-policy"
policy. Target: "prod-target", Delivery pipeline: "deploy-policy-pipeline", policy rule: "no rollouts"
Ganti pembatasan kebijakan
Untuk men-deploy aplikasi contoh, yang diblokir oleh kebijakan deployment, Anda harus
perlu mengganti kebijakan tersebut. Untuk melakukannya, buat peluncuran baru untuk metode ini
rilis, kali ini termasuk opsi --override-deploy-policies
:
GKE
Jalankan perintah berikut dari direktori deploy-policy-quickstart
untuk
buat rilis:
gcloud deploy releases promote --release=test-release-001 \
--project=PROJECT_ID \
--region=us-central1 \
--delivery-pipeline=deploy-policy-pipeline \
--to-target=prod-target \
--override-deploy-policies=quickstart-deploy-policy
Cloud Run
Jalankan perintah berikut dari direktori deploy-policy-quickstart
untuk
buat rilis:
gcloud deploy releases promote --release=test-release-001 \
--project=PROJECT_ID \
--region=us-central1 \
--delivery-pipeline=deploy-policy-pipeline \
--to-target=prod-target \
--override-deploy-policies=quickstart-deploy-policy
Karena Anda menyertakan
--override-deploy-policies=quickstart-deploy-policy
, dan karena nilai default
akun layanan memiliki peran roles/clouddeploy.policyAdmin
,
Cloud Deploy mengabaikan kebijakan deploy yang Anda buat dan membuat
diluncurkan ke prod-target
.
Lihat hasilnya di Konsol Google Cloud
Di konsol Google Cloud, buka lagi halaman Cloud Deploy Halaman Pipeline pengiriman untuk melihat pipeline pengiriman Anda (
deploy-policy-pipeline
).Klik nama pipeline penayangan Anda (
deploy-policy-pipeline
).Visualisasi pipeline menunjukkan status deployment aplikasi. Dalam kasus ini, karena kebijakan diganti, peluncuran telah dibuat dan berhasil.
Dan rilis Anda tercantum di tab Rilis pada Pipeline pengiriman detail.
Pembersihan
Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan pada halaman ini, ikuti langkah-langkah berikut.
Hapus cluster GKE atau layanan Cloud Run:
GKE
gcloud container clusters delete quickstart-cluster-qsprod --region=us-central1 --project=PROJECT_ID
Cloud Run
gcloud run services delete my-deploy-policy-run-service --region=us-central1 --project=PROJECT_ID
Hapus kebijakan deploy:
gcloud deploy delete --file=deploypolicy.yaml --region=us-central1 --project=PROJECT_ID
Hapus pipeline pengiriman, target, rilis, dan peluncuran:
gcloud deploy delete --file=clouddeploy.yaml --force --region=us-central1 --project=PROJECT_ID
Hapus kedua bucket Cloud Storage yang di-deploy oleh Cloud dibuat.
Selesai, Anda telah menyelesaikan panduan memulai ini.