Halaman ini menjelaskan cara men-deploy aplikasi ke Kubernetes menggunakan Cloud Build.
Cloud Build menyediakan builder gke-deploy
yang dapat Anda gunakan untuk men-deploy aplikasi dalam container ke cluster GKE.
gke-deploy
adalah wrapper di sekitar kubectl
, yang merupakan antarmuka command line untuk Kubernetes. Privacy Sandbox menerapkan praktik yang direkomendasikan Google untuk men-deploy aplikasi ke Kubernetes dengan cara:
Memperbarui file resource Kubernetes aplikasi untuk menggunakan ringkasan gambar container, bukan tag.
Menambahkan label yang direkomendasikan ke file resource Kubernetes.
Mengambil kredensial untuk cluster GKE tempat Anda men-deploy image.
Menunggu file resource Kubernetes yang dikirim telah siap.
Jika Anda ingin men-deploy aplikasi menggunakan kubectl
secara langsung dan tidak memerlukan fungsi tambahan, Cloud Build juga menyediakan builder kubectl
yang dapat Anda gunakan untuk men-deploy aplikasi ke cluster GKE.
Sebelum memulai
Buat cluster GKE jika Anda belum memilikinya.
Siapkan aplikasi dalam container dalam bentuk kode sumber dan
Dockerfile
. Kode sumber Anda harus disimpan dalam repositori, seperti Cloud Source Repositories, GitHub, atau Bitbucket.Anda memerlukan setidaknya satu file resource Kubernetes yang menjelaskan resource Kubernetes yang digunakan untuk menjalankan aplikasi Anda. Jika Anda tidak memiliki file resource Kubernetes, ikuti langkah-langkah berikut untuk membuat file resource bagi aplikasi Anda:
- Buka halaman cluster Kubernetes Engine di Google Cloud Console.
- Di halaman cluster Kubernetes Engine, klik Deploy.
- Pilih penampung, lalu klik Lanjutkan. Anda akan melihat bagian Konfigurasi.
- Di bagian Configuration YAML, klik View YAML untuk mendapatkan contoh file resource Kubernetes.
Izin IAM yang diperlukan
Tambahkan peran Google Kubernetes Engine Developer ke akun Anda:
Buka halaman Cloud Build Settings:
Buka halaman Cloud Build Settings
Anda akan melihat halaman Izin akun layanan:
Setel status peran Kubernetes Engine Developer ke Diaktifkan.
Men-deploy image container yang telah dibangun sebelumnya
Untuk men-deploy versi tertentu aplikasi Anda dengan gke-deploy
:
Pastikan file resource Kubernetes Anda merujuk ke tag atau ringkasan image container yang benar.
Tambahkan langkah
gke-deploy
di file konfigurasi build Anda:YAML
steps: ... # deploy container image to GKE - name: "gcr.io/cloud-builders/gke-deploy" args: - run - --filename=kubernetes-resource-file - --location=location - --cluster=cluster
JSON
{ "steps": [ { "name": "gcr.io/cloud-builders/gke-deploy", "args": [ "run", "--filename=kubernetes-resource-file", "--location=location", "--cluster=cluster" ] } ] }
Dengan keterangan:
- kubernetes-resource-file adalah jalur file dari file resource Kubernetes atau jalur direktori yang berisi file resource Kubernetes Anda.
- cluster adalah nama cluster GKE tempat aplikasi akan di-deploy.
- location adalah region/zona cluster.
Untuk mengetahui informasi selengkapnya tentang tanda yang tersedia, lihat tanda
gke-deploy run
.Mulai build Anda:
gcloud builds submit --region=REGION --project=project-id --config build-config
Dengan keterangan:
- project-id adalah ID untuk project Anda.
- build-config adalah nama file konfigurasi build Anda.
REGION
adalah salah satu region build yang didukung.
Membangun dan men-deploy image container baru
Untuk membangun image container baru dan men-deploy image container baru:
Update file resource Kubernetes Anda dengan image container baru menggunakan atribut
--image
:YAML
steps: # build the container image - name: "gcr.io/cloud-builders/docker" args: ["build", "-t", "gcr.io/project-id/image:tag", "."] # push container image - name: "gcr.io/cloud-builders/docker" args: ["push", "gcr.io/project-id/image:tag"] # deploy container image to GKE - name: "gcr.io/cloud-builders/gke-deploy" args: - run - --filename=kubernetes-resource-file - --image=gcr.io/project-id/image:tag - --location=location - --cluster=cluster
JSON
{ "steps": [ { "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "gcr.io/project-id/image:tag", "." ] }, { "name": "gcr.io/cloud-builders/docker", "args": [ "push", "gcr.io/project-id/image:tag" ] }, { "name": "gcr.io/cloud-builders/gke-deploy", "args": [ "run", "--filename=kubernetes-resource-file", "--image=gcr.io/project-id/image:tag", "--location=location", "--cluster=cluster" ] } ] }
Dengan keterangan:
- project-id adalah ID untuk project Anda.
- image adalah nama image container yang diinginkan, biasanya nama aplikasi.
- tag adalah tag image container.
- Jika Anda membuat image container baru dengan setiap commit, praktik yang baik adalah menggunakan SHA pendek commit sebagai tag. Cloud Build menyediakannya sebagai substitusi default,
$SHORT_SHA
.
- Jika Anda membuat image container baru dengan setiap commit, praktik yang baik adalah menggunakan SHA pendek commit sebagai tag. Cloud Build menyediakannya sebagai substitusi default,
- kubernetes-resource-file adalah jalur file dari file resource Kubernetes atau jalur direktori yang berisi file resource Kubernetes Anda.
- cluster adalah nama cluster GKE tempat aplikasi akan di-deploy.
- location adalah region/zona cluster yang akan di-deploy.
Mulai build Anda:
gcloud builds submit --region=REGION --project=project-id --config build-config
Dengan keterangan:
- project-id adalah ID untuk project Anda.
- build-config adalah nama file konfigurasi build Anda.
REGION
adalah salah satu region build yang didukung.
Mengotomatiskan deployment
Anda dapat mengotomatiskan deployment aplikasi ke GKE dengan membuat pemicu di Cloud Build. Anda dapat mengonfigurasi pemicu untuk mem-build dan men-deploy image setiap kali mengirim perubahan pada kode.
Untuk membuat pemicu build:
Buka halaman Pemicu di Konsol Google Cloud:
Pilih project Anda dari menu drop-down pemilih project di bagian atas halaman.
Klik Buka.
Klik Create trigger.
Di halaman Create trigger, masukkan setelan berikut:
Masukkan nama untuk pemicu Anda.
Pilih peristiwa repositori untuk memulai pemicu Anda.
Pilih repositori yang berisi kode sumber dan file konfigurasi build Anda.
Tentukan ekspresi reguler untuk nama cabang atau tag yang akan memulai trigger.ee
Pilih Konfigurasi untuk pemicu Anda.
Jika memilih file konfigurasi Cloud Build, Anda dapat menentukan Variabel substitusi dengan memberikan nama variabel dan nilai yang ingin dikaitkan dengan variabel tersebut. Pada contoh di bawah, variabel substitusi yang ditentukan pengguna
_CLOUDSDK_CONTAINER_CLUSTER
menentukan cluster yang akan di-deploy, dan variabel substitusi yang ditetapkan pengguna_CLOUDSDK_COMPUTE_ZONE
menentukan lokasinya. Jika ingin melakukan deployment ke cluster lain, Anda dapat menggunakan konfigurasi build yang sama dan hanya perlu mengubah nilai variabel substitusi:YAML
steps: ... # deploy container image to GKE - name: "gcr.io/cloud-builders/gke-deploy" args: - run - --filename=kubernetes-resource-file - --image=gcr.io/project-id/image:tag - --location=${_CLOUDSDK_COMPUTE_ZONE} - --cluster=${_CLOUDSDK_CONTAINER_CLUSTER}
JSON
{ "steps": [ { "name": "gcr.io/cloud-builders/gke-deploy", "args": [ "run", "--filename=kubernetes-resource-file", "--image=gcr.io/project-id/image:tag", "--location=${_CLOUDSDK_COMPUTE_ZONE}", "--cluster=${_CLOUDSDK_CONTAINER_CLUSTER}" ] } ] }
Dengan keterangan:
- kubernetes-resource-file adalah jalur file file konfigurasi Kubernetes atau jalur direktori yang berisi file resource Kubernetes Anda.
- project-id adalah ID untuk project Anda.
- image adalah nama image container yang diinginkan, biasanya nama aplikasi.
- tag adalah tag image container.
Untuk mempelajari lebih lanjut cara menentukan substitusi untuk file konfigurasi build, lihat Menggunakan substitusi yang ditentukan pengguna.
Klik Buat untuk menyimpan pemicu build Anda.
Saat Anda mengirim kode ke repositori, Cloud Build akan otomatis memicu build. Untuk mempelajari pemicu build lebih lanjut, lihat Membuat dan mengelola pemicu build.
Langkah selanjutnya
- Pelajari cara mengonfigurasi deployment otomatis untuk workload Anda di GKE.
- Pelajari cara membuat pipeline CI/CD bergaya GitOps yang di-deploy ke GKE dengan Cloud Build.
- Pelajari opsi
gke-deploy
tambahan. - Pelajari cara melakukan blue/green deployment di Compute Engine.
- Pelajari Cloud builder tambahan.
- Pelajari cara memecahkan masalah error build.