Halaman ini menjelaskan cara mengonfigurasi Cloud Deploy untuk merender konfigurasi untuk setiap target dalam pipeline pengiriman.
Cloud Deploy menggunakan Skaffold untuk merender manifes Kubernetes Anda. Layanan ini mendukung rendering manifes mentah dan alat pengelolaan manifes yang lebih canggih, seperti Helm, Kustomize, dan kpt.
Proses rendering memiliki dua tahap:
Alat pengelolaan manifes membuat manifes.
Skaffold mengganti referensi image dalam manifes dengan image yang ingin Anda deploy dalam rilis.
Halaman ini mencakup contoh konfigurasi menggunakan Helm dan Kustomize.
Menggunakan Skaffold untuk membuat konfigurasi
Jika Anda belum memiliki file konfigurasi Skaffold (skaffold.yaml), Anda
dapat menggunakan Skaffold untuk membuatnya bagi Anda, berdasarkan konten di repositori Anda.
Instal Skaffold menggunakan Google Cloud CLI:
gcloud components install skaffoldJalankan
skaffold initdi repositori yang berisi manifes Anda:skaffold init --skip-build
Perintah ini akan membuat file skaffold.yaml di repositori Anda. File tersebut
mereferensikan manifes di repositori tersebut. Isinya akan terlihat seperti ini:
apiVersion: skaffold/v4beta7
kind: Config
metadata:
name: sample-app
manifests:
rawYaml:
- k8s-manifests/deployment.yaml
- k8s-manifests/rbac.yaml
- k8s-manifests/redis.yaml
- k8s-manifests/service.yaml
Merender manifes mentah
Manifest mentah adalah manifest yang tidak dikelola oleh alat seperti Helm atau Kustomize, dan oleh karena itu tidak memerlukan pra-pemrosesan sebelum di-hydrate dan di-deploy ke cluster.
Secara default, Cloud Deploy menggunakan skaffold render
untuk merender manifes Kubernetes Anda, mengganti nama image yang tidak diberi tag dengan
nama image yang diberi tag dari image container yang Anda deploy. Kemudian, saat Anda mempromosikan rilis, Cloud Deploy menggunakan skaffold apply untuk menerapkan manifes dan men-deploy image ke cluster Google Kubernetes Engine Anda.
Stanza manifests dari konfigurasi dasar akan terlihat seperti ini:
manifests:
rawYaml:
- PATH_TO_MANIFEST
Lihat dokumentasi Skaffold untuk mengetahui informasi selengkapnya tentang nilai yang dapat diteruskan di sini.
Merender menggunakan Helm
Anda dapat menggunakan Cloud Deploy untuk merender diagram Helm. Untuk melakukannya, Anda menyertakan detail diagram Helm dalam stanza deploy di profil Skaffold.
Setiap definisi tersebut akan terlihat seperti ini:
apiVersion: skaffold/v4beta7
kind: Config
manifests:
helm:
releases:
- name: RELEASE_NAME
chartPath: PATH_TO_HELM_CHART
Dengan:
RELEASE_NAME adalah nama instance Helm chart untuk rilis ini.
PATH_TO_HELM_CHART adalah jalur lokal ke diagram Helm yang dikemas atau direktori diagram Helm yang tidak dikemas.
Anda dapat menggunakan opsi konfigurasi Helm tambahan, seperti yang dijelaskan dalam dokumentasi Skaffold
Merender menggunakan Kustomize
Anda dapat menggunakan Kustomize dengan Cloud Deploy. Untuk
melakukannya, Anda mengarahkan ke file Kustomisasi dari dalam stanza deploy di
konfigurasi profil skaffold.yaml.
Anda menyertakan konfigurasi Kustomize terpisah untuk setiap target yang
menggunakan Kustomize, di setiap profile yang sesuai dalam skaffold.yaml.
Setiap definisi tersebut akan terlihat seperti ini:
apiVersion: skaffold/v4beta7
kind: Config
manifests:
kustomize:
paths:
- PATH_TO_KUSTOMIZE
Dengan:
PATH_TO_KUSTOMIZE mengarah ke file Kustomisasi Anda. Defaultnya adalah
["."]
Anda dapat menggunakan opsi konfigurasi Kustomize tambahan, seperti yang dijelaskan dalam dokumentasi Skaffold
Mengonfigurasi berbagai manifes per target
Setiap target sering kali memerlukan konfigurasi yang sedikit berbeda. Misalnya, Anda mungkin memiliki lebih banyak replika di deployment produksi daripada di deployment staging.
Anda dapat merender kumpulan manifes yang berbeda untuk setiap target dengan memberikan setiap variasi sebagai profil Skaffold yang berbeda.
Profil dengan Manifes mentah
Saat bekerja dengan manifes mentah, Anda dapat mengarahkan Cloud Deploy ke file yang berbeda, bergantung pada target. Anda dapat mengonfigurasinya sebagai berikut:
apiVersion: skaffold/v4beta7
kind: Config
profiles:
- name: prod
manifests:
rawYaml:
- prod.yaml
- name: staging
manifests:
rawYaml:
- staging.yaml
Profil dengan Kustomize
Berikut adalah contoh skaffold.yaml yang memiliki profil berbeda untuk staging dan produksi menggunakan Kustomize, dengan setiap profil mengarah ke Kustomisasi yang berbeda:
apiVersion: skaffold/v4beta7
kind: Config
profiles:
- name: prod
manifests:
kustomize:
paths:
- environments/prod
- name: staging
manifests:
kustomize:
paths:
- environments/staging
Profil yang dirujuk dalam pipeline pengiriman
Profil ini, yang ditentukan dalam skaffold.yaml, dirujuk dalam konfigurasi pipeline pengiriman, per target:
serialPipeline:
stages:
- targetId: staging-target
profiles:
- staging
- targetId: prod-target
profiles:
- prod
Mengganti gambar tertentu saat Anda membuat rilis
Manifes Anda dapat menggunakan placeholder untuk nama gambar, yang dapat Anda ganti saat Anda membuat rilis.
Berikut contoh manifes dengan placeholder untuk gambar:
apiVersion: v1
kind: Deployment
metadata:
name: getting-started
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: my-app-image
Saat membuat rilis, Anda dapat menggunakan tanda --images= untuk mengidentifikasi image tertentu yang akan di-deploy. Misalnya, perintah berikut membuat rilis
dan mengganti nama image yang memenuhi syarat SHA dengan nama placeholder:
gcloud deploy releases create test-release-001 \
--project=test-gke-using-deployment \
--region=us-central1 \
--delivery-pipeline=my-gke-demo-app-1 \
--images=my-app-image=gcr.io/google-containers/nginx@sha256:f49a843c290594dcf4d193535d1f4ba8af7d56cea2cf79d1e9554f077f1e7aaa
Manifes yang dirender kini memiliki referensi ke gambar yang ditentukan, bukan my-app-image.
Langkah berikutnya
- Pelajari lebih lanjut konfigurasi pipeline pengiriman Cloud Deploy.
- Coba panduan profil Skaffold Cloud Deploy
- Pelajari lebih lanjut Kustomize.
- Pelajari Helm lebih lanjut.
- Pelajari lebih lanjut Kpt
- Sebaiknya gunakan Artifact Registry untuk menyimpan artefak seperti Helm chart atau Kustomisasi.