Mengintegrasikan gateway Connect dengan Cloud Build

Ini adalah tutorial dasar 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 di panduan gateway Connect dan juga sudah memahami Cloud Build. Petunjuk ini memanfaatkan gambar builder cloud-sdk yang memerlukan beberapa skrip kecil (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 diinstal untuk Anda.

  • Pastikan Anda telah melakukan inisialisasi gcloud CLI untuk digunakan dengan project.

  • Pastikan gateway Connect dan API lain yang diperlukan 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.gserviceaccount.com. Anda dapat menemukan alamat email akun layanan ini untuk project Anda di bagian Cloud Build - Setelan di Konsol Google Cloud.

Screenshot halaman setelan Cloud Build

Ikuti petunjuk dalam artikel Memberikan izin IAM di panduan penyiapan gateway untuk memberikan peran yang diperlukan ke akun ini dalam project Anda.

2. Menentukan kebijakan RBAC untuk akun layanan Cloud Build

Ikuti petunjuk dalam Mengonfigurasi kebijakan RBAC dalam panduan penyiapan gateway untuk memberikan izin yang sesuai kepada akun layanan Cloud Build di semua cluster yang ingin Anda gunakan.

Sebaiknya gunakan Pengontrol Kebijakan untuk men-deploy dan mengelola 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 dan satu cluster GKE 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 GKE cluster
  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 Anthos 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 mengirim konfigurasi ke repositori Git, alur kerja Cloud Build men-deploy aplikasi yang diperlukan ke cluster yang ditentukan. Anda juga dapat menyiapkan Cloud Build untuk mendeteksi perubahan pada repositori Git yang ditautkan guna memicu update atau penginstalan aplikasi otomatis.

Penggunaan lanjutan

Karena versi ini menggunakan konsep Cloud Build standar, Anda dapat mengadaptasi dan menyesuaikan contoh lebih lanjut agar sesuai dengan kebutuhan CI/CD khusus Anda. Secara khusus, jika ingin membuat gambar dari awal dan men-deploy-nya di pipeline, Anda dapat menggunakan mode persiapan builder gke-deploy. Misalnya, konfigurasi Cloud Build berikut:

  1. Membangun image docker dari Dockerfile di root repo Git dan memberinya tag dengan Git SHA.
  2. Mengirim image yang diberi tag ke Container Registry project.
  3. Menyiapkan manifes Kubernetes di direktori manifest dengan menetapkan tag gambar yang benar, dan menempatkan manifes output di output/expanded.
  4. Men-deploy ke cluster GKE di infrastruktur 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 Anthos clusters 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 image pull secret guna mengizinkan cluster GKE lokal untuk mengambil image dari Container Registry.

Untuk mengetahui ide lainnya terkait penggunaan Cloud Build, lihat dokumentasi Cloud Build.