Men-deploy ke GKE

Halaman ini menjelaskan cara men-deploy aplikasi ke Kubernetes menggunakan Cloud Build.

Cloud Build menyediakan builder gke-deploy yang memungkinkan Anda men-deploy aplikasi dalam container ke cluster GKE.

gke-deploy adalah wrapper di sekitar kubectl, antarmuka command line untuk Kubernetes. Tutorial ini menerapkan praktik yang direkomendasikan Google untuk men-deploy aplikasi ke Kubernetes dengan:

  • Memperbarui file resource Kubernetes aplikasi untuk menggunakan ringkasan gambar penampung, 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 dikirimkan 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 di 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, gunakan langkah-langkah berikut untuk membuatnya untuk aplikasi Anda:

    1. Buka halaman cluster Kubernetes Engine di Konsol Google Cloud.
    2. Di halaman cluster Kubernetes Engine, klik Deploy.
    3. Pilih penampung, lalu klik Lanjutkan. Anda akan melihat bagian Konfigurasi.
    4. Di bagian Configuration YAML, klik View YAML untuk mendapatkan contoh file resource Kubernetes.

Izin IAM yang diperlukan

Tambahkan peran Developer Google Kubernetes Engine ke akun Anda:

  1. Buka halaman Setelan Cloud Build:

    Buka halaman Setelan Cloud Build

    Anda akan melihat halaman Izin akun layanan:

    Screenshot halaman izin akun Layanan

  2. Tetapkan status peran Developer Kubernetes Engine ke Aktif.

Men-deploy image container bawaan

Untuk men-deploy versi aplikasi tertentu dengan gke-deploy:

  1. Pastikan file resource Kubernetes Anda merujuk ke tag atau ringkasan image container yang benar.

  2. 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 resource Kubernetes atau jalur direktori yang berisi file resource Kubernetes.
    • cluster adalah nama cluster GKE tempat aplikasi akan di-deploy.
    • location adalah region/zona cluster.

    Untuk mengetahui informasi selengkapnya tentang flag yang tersedia, lihat flag gke-deploy run.

  3. 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.

Mem-build dan men-deploy image container baru

Untuk mem-build image container baru dan men-deploy image container baru:

  1. Perbarui file resource Kubernetes dengan image penampung 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 mem-build image container baru dengan setiap commit, praktik yang baik adalah menggunakan SHA singkat commit sebagai tag. Cloud Build menyediakannya sebagai penggantian default, $SHORT_SHA.
    • kubernetes-resource-file adalah jalur file resource Kubernetes atau jalur direktori yang berisi file resource Kubernetes.
    • cluster adalah nama cluster GKE tempat aplikasi akan di-deploy.
    • location adalah region/zona tempat cluster akan di-deploy.
  2. 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 Anda mendorong perubahan ke kode.

Untuk membuat pemicu build:

  1. Buka halaman Pemicu di konsol Google Cloud:

    Buka halaman Pemicu

  2. Pilih project Anda dari menu drop-down pemilih project di bagian atas halaman.

  3. Klik Buka.

  4. Klik Create trigger.

    Di halaman Create trigger, masukkan setelan berikut:

    1. Masukkan nama untuk pemicu Anda.

    2. Pilih peristiwa repositori untuk memulai pemicu Anda.

    3. Pilih repositori yang berisi kode sumber dan file konfigurasi build Anda.

    4. Tentukan ekspresi reguler untuk nama cabang atau tag yang akan memulai pemicu Anda.

    5. Pilih Konfigurasi untuk pemicu Anda.

      Jika memilih file konfigurasi Cloud Build, Anda dapat menentukan Variabel penggantian dengan memberikan nama variabel dan nilai yang ingin dikaitkan dengan variabel tersebut. Pada contoh di bawah, variabel penggantian buatan pengguna _CLOUDSDK_CONTAINER_CLUSTER menentukan cluster tempat deployment dilakukan, dan variabel penggantian buatan pengguna _CLOUDSDK_COMPUTE_ZONE menentukan lokasinya. Jika ingin men-deploy ke cluster lain, Anda dapat menggunakan konfigurasi build yang sama dan hanya perlu mengubah nilai variabel penggantian:

      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 penggantian untuk file konfigurasi build, lihat Menggunakan penggantian buatan pengguna.

  5. Klik Buat untuk menyimpan pemicu build Anda.

Saat Anda melakukan push kode ke repositori, Cloud Build akan otomatis memicu build. Untuk mempelajari pemicu build lebih lanjut, lihat Membuat dan mengelola pemicu build.

Langkah selanjutnya