Mengintegrasikan gateway Connect dengan Cloud Build
Ini adalah tutorial dasar tentang cara mengintegrasikan Cloud Build dengan gateway Connect, sehingga Anda dapat membuat pipeline CI/CD untuk cluster GKE yang berjalan di berbagai lingkungan.
Tutorial ini mengasumsikan bahwa Anda telah memahami bagian sebelumnya dalam panduan gateway Connect, dan juga memahami Cloud Build. Petunjuk ini memanfaatkan gambar builder cloud-sdk
yang memerlukan beberapa pembuatan skrip minor (seperti yang akan Anda lihat di bawah).
Sebelum memulai
Pastikan Anda telah menginstal alat command line berikut:
- Versi terbaru Google Cloud CLI, yang mencakup
gcloud
, alat command line untuk berinteraksi dengan Google Cloud. kubectl
Jika Anda menggunakan Cloud Shell sebagai lingkungan shell untuk berinteraksi dengan Google Cloud, alat ini akan diinstal untuk Anda.
- Versi terbaru Google Cloud CLI, yang mencakup
Pastikan Anda telah melakukan inisialisasi gcloud CLI untuk digunakan dengan project Anda.
Pastikan gateway Connect dan API lain yang diperlukan telah diaktifkan untuk project Anda, seperti yang dijelaskan dalam panduan penyiapan.
1. Memberikan peran IAM ke akun layanan Cloud Build
Secara default, Cloud Build menggunakan akun layanan Google Cloud untuk menjalankan semua pekerjaan yang diperlukan, dengan alamat dalam format MY_PROJECT_NUMBER @cloudbuild.
. Anda dapat menemukan alamat email akun layanan ini untuk project Anda di bagian Cloud Build - Setelan di Konsol Google Cloud.
Ikuti petunjuk di bagian Memberikan izin IAM dalam panduan penyiapan gateway untuk memberikan peran yang diperlukan kepada akun ini dalam project Anda.
2. Menentukan kebijakan RBAC untuk akun layanan Cloud Build
Ikuti petunjuk di Mengonfigurasi kebijakan RBAC dalam panduan penyiapan gateway untuk memberi akun layanan Cloud Build izin yang sesuai pada semua cluster yang ingin Anda gunakan.
Sebaiknya gunakan Pengontrol Kebijakan untuk men-deploy dan mempertahankan kebijakan RBAC di beberapa cluster.
3. Membuat pipeline Cloud Build
Alur kerja Cloud Build memerlukan file cloudbuild.yaml
untuk mengonfigurasi pipeline. Berikut adalah contoh sederhana yang men-deploy manifes statis ke dua cluster berbeda (satu cluster GKE di Google Cloud, dan satu lagi di VMware). Anda dapat mengetahui lebih lanjut cara mengonfigurasi pipeline Cloud Build di dokumentasi Cloud Build.
steps:
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
entrypoint: bash
id: Deploy to cluster on Google Cloud
args:
- '-c'
- |
set -x && \
export KUBECONFIG="$(pwd)/gateway-kubeconfig" && \
gcloud container fleet memberships get-credentials my-gke-cluster && \
kubectl --kubeconfig gateway-kubeconfig apply -f myapp.yaml
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
entrypoint: bash
id: Deploy to cluster on VMware
args:
- '-c'
- |
set -x && \
export KUBECONFIG="$(pwd)/gateway-kubeconfig" && \
gcloud container fleet memberships get-credentials my-vmware-cluster && \
kubectl --kubeconfig gateway-kubeconfig apply -f myapp.yaml
Anda dapat menempatkan alur kerja yang diinginkan di myapp.yaml
untuk mengonfigurasi cluster. Berikut ini contohnya:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
selector:
matchLabels:
app: nginx
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
Setelah Anda mengirimkan konfigurasi ke repositori Git, alur kerja Cloud Build akan men-deploy aplikasi yang diperlukan ke cluster yang ditentukan. Anda juga dapat menyiapkan Cloud Build untuk mendeteksi perubahan di repositori Git yang ditautkan untuk memicu update atau penginstalan aplikasi otomatis.
Penggunaan lanjutan
Karena menggunakan konsep Cloud Build standar, Anda dapat mengadaptasi dan menyesuaikan contoh kami lebih lanjut agar sesuai dengan kebutuhan CI/CD tertentu. Secara khusus, jika Anda ingin membuat gambar dari awal dan men-deploy-nya dalam pipeline, Anda dapat menggunakan mode persiapan dari builder gke-deploy
. Misalnya, konfigurasi Cloud Build berikut:
- Membangun image Docker dari Dockerfile di root repo Git dan menandainya dengan SHA Git.
- Mengirim image yang diberi tag ke Container Registry project.
- Menyiapkan manifes Kubernetes di direktori
manifest
dengan menyetel tag gambar yang benar, serta menempatkan manifes output dioutput/expanded
. - Men-deploy ke cluster GKE lokal menggunakan gateway Connect.
steps:
- name: 'gcr.io/cloud-builders/docker'
id: "Build Container"
args: ['build', '--tag=gcr.io/$PROJECT_ID/demo-app:$SHORT_SHA', '.']
- name: 'gcr.io/cloud-builders/docker'
id: "Push to GCR"
args: ['push', 'gcr.io/$PROJECT_ID/demo-app:$SHORT_SHA']
- name: "gcr.io/cloud-builders/gke-deploy"
id: "Prepare Manifests"
args:
- prepare
- --filename=manifests/
- --image=gcr.io/$PROJECT_ID/demo-app:$SHORT_SHA
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
entrypoint: bash
id: "Deploy to cluster on VMware
args:
- '-c'
- |
set -x && \
export KUBECONFIG="$(pwd)/gateway-kubeconfig" && \
gcloud container fleet memberships get-credentials my-vmware-cluster && \
kubectl --kubeconfig=gateway-kubeconfig apply -f output/expanded
Perlu diperhatikan bahwa dalam contoh ini, kita harus membuat rahasia pull image untuk mengizinkan cluster GKE lokal mengambil image dari Container Registry.
Untuk mengetahui ide lainnya tentang penggunaan Cloud Build, lihat dokumentasi Cloud Build.