Men-deploy ke cluster Google Kubernetes Engine

Dokumen ini menjelaskan cara men-deploy aplikasi Anda ke cluster Google Kubernetes Engine.

Cloud Deploy memungkinkan Anda men-deploy workload berbasis container ke cluster Google Kubernetes Engine mana pun. Semua fitur Cloud Deploy didukung saat Anda men-deploy ke target GKE.

Sebelum memulai

Dalam file skaffold.yaml ini, stanza deploy menyertakan kubectl, yang menunjukkan bahwa Skaffold dirender untuk, dan di-deploy ke, Kubernetes (GKE). Dan manifes yang Anda gunakan untuk aplikasi ini tercantum di sana.

Membuat konfigurasi target

Setiap target dapat dikonfigurasi dalam YAML pipeline delivery Anda, atau dapat berada dalam file terpisah. Selain itu, Anda dapat mengonfigurasi lebih dari satu target dalam file yang sama, tetapi target tersebut harus berada dalam stanza kind: Target yang berbeda.

Target harus ditentukan dalam project dan region yang sama dengan pipeline delivery. Namun, cluster yang di-deploy target dapat berada di project dan region yang berbeda, selama akun layanan memiliki akses ke project tersebut.

Dalam definisi target, buat stanza gke untuk mengarah ke cluster GKE:

gke:
 cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]

ID resource GKE ini menggunakan elemen berikut:

  • [project_name] adalah nama Google Cloud project tempat Anda menjalankan cluster ini.

    Cluster yang Anda deploy tidak harus berada dalam project yang sama dengan pipeline delivery Anda.

  • [location] adalah region tempat cluster dibuat.

  • [cluster_name] adalah nama yang diberikan ke cluster saat dibuat.

    Anda dapat menemukan nama ini dalam daftar cluster untuk project Anda, di Google Cloud konsol.

    Daftar cluster di konsol Google Cloud

Berikut adalah contoh konfigurasi target, yang mengarah ke cluster GKE:

      apiVersion: deploy.cloud.google.com/v1
      kind: Target
      metadata:
       name: dev
      description: development cluster
      gke:
       cluster: projects/my-app/locations/us-central1/clusters/my-app-dev-cluster

Membuat konfigurasi Skaffold

Bagian ini memberikan dan menjelaskan contoh konfigurasi Skaffold sederhana yang akan digunakan saat men-deploy ke cluster GKE.

Berikut adalah contoh file skaffold.yaml untuk deployment ke cluster GKE:

apiVersion: skaffold/v4beta7
kind: Config
metadata:
  name: gke-application
manifests:
  rawYaml:
  - deployment.yaml
deploy:
  kubectl: {}

Menggunakan Skaffold dengan Cloud Deploy menjelaskan secara lebih mendetail cara menggunakan Skaffold dengan pipeline delivery Anda.

Menyiapkan manifes Kubernetes

Untuk men-deploy aplikasi Anda ke GKE, Anda memberikan satu atau beberapa manifes Kubernetes ke Cloud Deploy, yang dirender, lalu diterapkan ke cluster atau cluster target untuk men-deploy aplikasi Anda.

Jika Anda tidak memiliki manifes tersebut, buat manifes tersebut sebelum mencoba men-deploy menggunakan pipeline delivery Cloud Deploy.

Anda dapat menggunakan Kustomize atau Helm untuk membantu membuat manifes. Anda juga dapat menggunakan Kustomize atau Helm jika manifes Anda menggunakan template dan perlu dirender.

Menggabungkan semuanya

Setelah memiliki manifes Kubernetes, konfigurasi skaffold.yaml, dan definisi target Cloud Deploy, serta Anda telah mendaftarkan target sebagai resource Cloud Deploy, Anda kini dapat memanggil pipeline delivery untuk membuat rilis dan memprosesnya melalui progres target yang ditentukan dalam pipeline.

Men-deploy menggunakan proxy

Anda dapat menentukan proxy untuk cluster GKE target. Hal ini ditujukan untuk organisasi yang disiapkan untuk mengakses cluster mereka hanya melalui proxy HTTP.

Untuk melakukannya, tambahkan properti proxyUrl ke stanza gke dalam konfigurasi target:

gke:
 cluster: projects/my-app/locations/us-central1/clusters/my-app-dev-cluster
 proxyUrl: [URL]

Dengan URL adalah URL proxy.

Men-deploy ke cluster pribadi

Anda dapat men-deploy aplikasi ke cluster GKE pribadi, menggunakan salah satu dari tiga opsi:

Menggunakan endpoint DNS

Ini adalah cara paling sederhana untuk terhubung ke cluster pribadi.

  1. Aktifkan endpoint berbasis DNS di cluster Anda.

  2. Tetapkan dnsEndpoint ke true di bagian gke dalam konfigurasi target.

    Jika cluster Anda tidak memiliki endpoint berbasis IP yang dikonfigurasi, Anda dapat melewati langkah ini; Cloud Deploy akan terhubung ke endpoint DNS secara default karena merupakan satu-satunya endpoint bidang kontrol.

Menggunakan jaringan Virtual Private Cloud

Anda dapat mengonfigurasi target untuk men-deploy ke cluster GKE pribadi yang terhubung ke jaringan Virtual Private Cloud:

  1. Buat cluster pribadi Anda

    Cluster pribadi adalah cluster native VPC yang node dan Pod-nya diisolasi secara default dari internet publik.

    Jika Anda berencana menggunakan IP internal target cluster pribadi, tetapkan internalIp ke true di bagian gke dalam konfigurasi target.

  2. Di Cloud Build, buat pool worker pribadi yang dapat Anda gunakan untuk men-deploy ke cluster pribadi ini.

  3. Konfigurasi lingkungan eksekusi untuk menggunakan pool pribadi tersebut.

    Anda harus menggunakan pool ini untuk RENDER. Anda juga dapat menggunakannya untuk DEPLOY dan untuk VERIFY. Berikut adalah contoh yang menggunakan RENDER dan DEPLOY:

    executionConfigs:
    - usages:
      - RENDER
      - DEPLOY
      workerPool: "projects/p123/locations/us-central1/workerPools/wp123"
    

Lihat Mengakses cluster GKE pribadi dengan pool pribadi Cloud Build untuk mengetahui informasi selengkapnya.

Pertimbangan project dan izin

Anda dapat mengonfigurasi target untuk menggunakan pool worker pribadi yang dapat men-deploy ke cluster pribadi. Namun, ada beberapa hal yang perlu diperhatikan jika resource berada di project yang berbeda.

  • Saat Cloud Deploy dan pool worker berada di project terpisah

Untuk berkomunikasi dengan pool pribadi yang memiliki akses ke VPC dan berada di project yang berbeda dari target Anda, agen layanan Cloud Deploy memerlukan izin yang memadai untuk berkomunikasi dengan project tersebut.

Akun layanan eksekusi juga memerlukan izin untuk mengakses bucket Cloud Storage.

  • Saat pool worker dan cluster berada di project terpisah

Jika cluster GKE pribadi berada di project yang berbeda dari pool worker pribadi, akun layanan eksekusi memerlukan izin yang memadai untuk berkomunikasi dengan project tempat cluster berada.

Menggunakan target cluster terpasang GKE dan gateway connect

Anda dapat mengonfigurasi target untuk men-deploy ke cluster GKE pribadi dengan target yang menggunakan cluster terpasang GKE dan gateway connect.

Pendekatan ini tidak mengharuskan Anda menggunakan koneksi Virtual Private Cloud atau virtual private network.

Langkah berikutnya