Cluster Google Kubernetes Engine (GKE) terdiri dari bidang kontrol dan mesin pekerja yang disebut node. Anda dapat menjalankan workload Kubernetes dalam container di cluster GKE. Node adalah mesin pekerja yang menjalankan aplikasi dalam container dan beban kerja lainnya, dan bidang kontrol adalah endpoint terpadu untuk cluster Anda. Untuk mengetahui informasi selengkapnya, lihat arsitektur cluster GKE.
Server Kubernetes API berjalan di bidang kontrol, sehingga Anda dapat berinteraksi dengan objek Kubernetes di cluster melalui panggilan Kubernetes API. Objek adalah entity persisten dalam sistem Kubernetes dan mewakili status cluster Anda. Untuk informasi selengkapnya, dalam dokumentasi Kubernetes, lihat Objek di Kubernetes, dan Ringkasan API yang tertaut ke halaman "Referensi Kubernetes API".
Dokumen ini menunjukkan cara menggunakan konektor Kubernetes API dalam alur kerja untuk membuat permintaan ke endpoint layanan Kubernetes yang dihosting di bidang kontrol cluster GKE. Misalnya, Anda dapat menggunakan konektor untuk membuat Deployment Kubernetes, menjalankan Tugas, mengelola Pod, atau mengakses aplikasi yang di-deploy melalui proxy. Untuk informasi selengkapnya, lihat Ringkasan Konektor Kubernetes API
Sebelum memulai
Sebelum melanjutkan tugas dalam dokumen ini, pastikan Anda telah menyelesaikan prasyarat tertentu.
Mengaktifkan API
Sebelum dapat mengakses objek Kubernetes API menggunakan konektor Kubernetes API, Anda harus mengaktifkan API berikut:
- Google Kubernetes Engine API: untuk mem-build dan mengelola aplikasi berbasis container menggunakan GKE
Workflows API: untuk mengelola definisi dan eksekusi alur kerja; mengaktifkan Workflows API akan otomatis mengaktifkan Workflow Executions API
Konsol
Aktifkan API:
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Aktifkan API:
gcloud services enable container.googleapis.com workflows.googleapis.com
Membuat akun layanan
Buat akun layanan yang dikelola pengguna yang
bertindak sebagai identitas alur kerja Anda, dan berikan peran
Kubernetes Engine Developer
(roles/container.developer
) sehingga alur kerja dapat mengakses objek Kubernetes API di dalam cluster.
Konsol
Di Konsol Google Cloud, buka halaman Service accounts.
Pilih project, lalu klik Buat akun layanan.
Di kolom Nama akun layanan, masukkan nama. Konsol Google Cloud akan mengisi kolom ID akun layanan berdasarkan nama ini.
Di kolom Deskripsi akun layanan, masukkan sebuah deskripsi. Contoh,
Service account for Kubernetes API
.Klik Buat dan lanjutkan.
Dalam daftar Select a role, filter, lalu pilih peran Kubernetes Engine Developer.
Klik Lanjutkan.
Untuk menyelesaikan pembuatan akun, klik Selesai.
gcloud
Buat akun layanan:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ganti
SERVICE_ACCOUNT_NAME
dengan nama akun layanan.Berikan peran
container.developer
ke akun layanan Anda:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/container.developer
Ganti
PROJECT_ID
dengan project ID Google Cloud Anda.
Perhatikan bahwa Anda dapat menggunakan IAM dan kontrol akses berbasis peran (RBAC) Kubernetes untuk mengontrol akses ke cluster GKE:
IAM tidak spesifik pada Kubernetes; sistem ini menyediakan pengelolaan identitas untuk beberapa produk Google Cloud , dan beroperasi terutama di tingkat project Google Cloud .
RBAC Kubernetes adalah komponen inti Kubernetes untuk membuat dan memberikan peran (serangkaian izin) untuk objek atau jenis objek dalam cluster. Jika Anda mengutamakan penggunaan GKE, dan memerlukan izin terperinci untuk setiap objek dan operasi dalam cluster Anda, Kubernetes RBAC adalah pilihan terbaik.
Untuk informasi selengkapnya, lihat Kontrol akses.
Membuat cluster GKE
Untuk menggunakan konektor Kubernetes API, Anda harus sudah membuat cluster GKE publik atau pribadi. Dalam cluster pribadi, node hanya memiliki alamat IP internal, yang berarti node dan Pod diisolasi dari internet secara default. Untuk mengetahui informasi selengkapnya, lihat Cluster pribadi.
Anda juga dapat menentukan mode operasi yang menawarkan berbagai tingkat fleksibilitas, tanggung jawab, dan kontrol. Misalnya, Anda dapat membuat cluster Autopilot yang merupakan mode operasi di GKE tempat Google mengelola konfigurasi cluster Anda, termasuk node, penskalaan, keamanan, dan setelan lainnya yang telah dikonfigurasi sebelumnya. Untuk mengetahui informasi selengkapnya, lihat Memilih mode operasi GKE.
Jika belum membuat cluster GKE, Anda dapat men-deploy aplikasi dalam container server web ke cluster GKE. Atau, untuk mencoba petunjuk dalam dokumen ini, Anda dapat membuat cluster Autopilot dengan menyelesaikan hal berikut.
Konsol
Di konsol Google Cloud, buka halaman Kubernetes clusters.
Klik add_box Create.
Jika Anda diminta untuk memilih mode cluster, pilih Autopilot.
Di bagian Cluster basics, selesaikan langkah-langkah berikut:
- Masukkan Name untuk cluster Anda, seperti
hello-cluster
. - Pilih region untuk
cluster Anda, seperti
us-central1
.
- Masukkan Name untuk cluster Anda, seperti
Klik Berikutnya: Jaringan.
Di bagian IPv4 network access, untuk membuat cluster dengan endpoint yang dapat diakses secara publik, pilih Public cluster.
Untuk semua setelan lainnya, terima setelan default.
Klik Buat.
Mungkin perlu waktu beberapa menit hingga pembuatan cluster selesai. Setelah cluster dibuat, tanda centang
menunjukkan bahwa cluster tersebut sedang berjalan.gcloud
Jalankan perintah berikut:
gcloud container clusters create-auto CLUSTER_NAME \ --location=LOCATION \ --project=PROJECT_ID
Ganti kode berikut:
CLUSTER_NAME
: nama cluster GKE Anda, sepertihello-cluster
LOCATION
: region untuk cluster Anda, sepertius-central1
PROJECT_ID
: Google Cloud project ID Anda
Mungkin perlu waktu beberapa menit hingga pembuatan cluster selesai. Setelah cluster dibuat, output-nya akan terlihat seperti berikut:
Creating cluster hello-cluster...done.
Created [https://container.googleapis.com/v1/projects/MY_PROJECT
/zones/us-central1/clusters/hello-cluster].
[...]
STATUS: RUNNING
Menggunakan konektor untuk mengirim permintaan HTTP
Anda dapat menggunakan konektor Kubernetes API untuk mengirim permintaan HTTP ke
bidang kontrol cluster GKE. Misalnya, alur kerja berikut
membuat Deployment bernama nginx-deployment
di cluster Kubernetes
yang ditentukan. Deployment menjelaskan status yang diperlukan; dalam hal ini, untuk menjalankan tiga Pod dengan image nginx:1.14.2
dan mengekspos layanannya di port 80. (Jika tidak ditentukan, project
dan location
akan ditetapkan secara default ke alur kerja.)
Untuk informasi selengkapnya, lihat halaman referensi untuk fungsi konektor Kubernetes API, gke.request.
Perhatikan hal-hal berikut:
- Kolom
path
sesuai dengan jalur metode Kubernetes API. Untuk informasi selengkapnya, dalam dokumentasi Kubernetes, lihat Ringkasan API yang tertaut ke halaman "Referensi Kubernetes API". - Anda dapat menangkap dan menangani error permintaan HTTP dalam alur kerja Anda. Untuk mengetahui informasi selengkapnya, lihat Error alur kerja.
Men-deploy alur kerja
Sebelum menjalankan alur kerja, Anda harus membuatnya dan men-deploy-nya.
Konsol
Di konsol Google Cloud, buka halaman Workflows.
Klik
Buat.Masukkan nama untuk alur kerja baru, seperti
kubernetes-api-request
.Dalam daftar Region, pilih us-central1.
Pilih Service account yang sebelumnya Anda buat.
Klik Berikutnya.
Di editor alur kerja, masukkan definisi berikut untuk alur kerja Anda:
YAML
JSON
Ganti kode berikut:
CLUSTER_NAME
: nama cluster GKE Anda, sepertihello-cluster
PROJECT_ID
: Google Cloud project ID AndaLOCATION
: region untuk cluster Anda, sepertius-central1
Klik Deploy.
gcloud
Buat file kode sumber untuk alur kerja Anda:
touch kubernetes-api-request.JSON_OR_YAML
Ganti
JSON_OR_YAML
denganyaml
ataujson
, bergantung pada format alur kerja Anda.Di editor teks, salin alur kerja berikut ke file kode sumber Anda:
YAML
JSON
Ganti kode berikut:
CLUSTER_NAME
: nama cluster GKE Anda, sepertihello-cluster
LOCATION
: region untuk cluster Anda, sepertius-central1
Deploy alur kerja:
gcloud workflows deploy kubernetes-api-request \ --source=kubernetes-api-request.
JSON_OR_YAML
\ --location=LOCATION
\ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Menjalankan alur kerja
Setelah berhasil men-deploy alur kerja, Anda dapat mengeksekusinya. Mengeksekusi alur kerja akan menjalankan definisi alur kerja saat ini yang terkait dengan alur kerja.
Konsol
Di konsol Google Cloud, buka halaman Workflows.
Di halaman Workflows, pilih alur kerja Anda untuk membuka halaman detailnya.
Di halaman Workflow details, klik play_arrow Execute.
Klik Execute lagi.
Lihat hasil alur kerja di panel Output.
Jika berhasil, status eksekusi harus
Succeeded
dan isi respons akan ditampilkan.
gcloud
Menjalankan alur kerja:
gcloud workflows run kubernetes-api-request \ --location=LOCATION
Jika berhasil, statusnya harus SUCCEEDED
dan isi respons
akan ditampilkan.
Menggunakan konektor untuk menjalankan Tugas Kubernetes
Anda dapat menggunakan konektor Kubernetes API untuk men-deploy dan menjalankan Tugas Kubernetes di cluster GKE. Alur kerja berikut membuat Tugas Kubernetes yang menjalankan skrip Bash yang melakukan iterasi melalui urutan angka. Alur kerja menunggu hingga 90 detik hingga Tugas Kubernetes selesai; jika tidak, error akan ditampilkan. Jika selesai, Tugas akan dihapus.
Perhatikan bahwa Tugas dianggap selesai jika statusnya menyertakan jenis
kondisi Complete
. Contoh:
"status": { "conditions": [ { "type": "Complete", "status": "True" } ] }
Jika Tugas gagal, tag FailedJobError
akan ditampilkan. Contoh:
{ "tags": ["FailedJobError"] "job": {...} "message":"Kubernetes job failed" }
Untuk informasi selengkapnya, lihat halaman referensi untuk fungsi konektor Kubernetes API berikut:
Men-deploy alur kerja
Sebelum menjalankan alur kerja, Anda harus membuatnya dan men-deploy-nya.
Konsol
Di konsol Google Cloud, buka halaman Workflows.
Klik
Buat.Masukkan nama untuk alur kerja baru, seperti
kubernetes-api-job
.Dalam daftar Region, pilih us-central1.
Pilih Service account yang sebelumnya Anda buat.
Klik Berikutnya.
Di editor alur kerja, masukkan definisi berikut untuk alur kerja Anda:
YAML
JSON
Ganti kode berikut:
LOCATION
: region untuk cluster Anda, sepertius-central1
CLUSTER_NAME
: nama cluster GKE Anda, sepertihello-cluster
JOB_NAME
: nama Tugas Kubernetes, sepertihello-job
Klik Deploy.
gcloud
Buat file kode sumber untuk alur kerja Anda:
touch kubernetes-api-job.JSON_OR_YAML
Ganti
JSON_OR_YAML
denganyaml
ataujson
, bergantung pada format alur kerja Anda.Di editor teks, salin alur kerja berikut ke file kode sumber Anda:
YAML
JSON
Ganti kode berikut:
LOCATION
: region untuk cluster Anda, sepertius-central1
CLUSTER_NAME
: nama cluster GKE Anda, sepertihello-cluster
JOB_NAME
: nama Tugas Kubernetes, sepertihello-job
Deploy alur kerja:
gcloud workflows deploy kubernetes-api-job \ --source=kubernetes-api-job.
JSON_OR_YAML
\ --location=LOCATION
\ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Menjalankan alur kerja
Setelah berhasil men-deploy alur kerja, Anda dapat mengeksekusinya. Mengeksekusi alur kerja akan menjalankan definisi alur kerja saat ini yang terkait dengan alur kerja.
Konsol
Di konsol Google Cloud, buka halaman Workflows.
Di halaman Workflows, pilih alur kerja Anda untuk membuka halaman detailnya.
Di halaman Workflow details, klik play_arrow Execute.
Klik Execute lagi.
Eksekusi alur kerja mungkin memerlukan waktu beberapa menit.
Lihat hasil alur kerja di panel Output.
Hasilnya akan mirip dengan berikut ini:
{ ... }, "status": { "completionTime": "2023-10-31T17:04:32Z", "conditions": [ { "lastProbeTime": "2023-10-31T17:04:33Z", "lastTransitionTime": "2023-10-31T17:04:33Z", "status": "True", "type": "Complete" } ], "ready": 0, "startTime": "2023-10-31T17:04:28Z", "succeeded": 1, "uncountedTerminatedPods": {} } }
gcloud
Menjalankan alur kerja:
gcloud workflows run kubernetes-api-job \ --location=LOCATION
Eksekusi alur kerja mungkin memerlukan waktu beberapa menit. Hasilnya akan mirip dengan berikut ini:
{
...
},
"status": {
"completionTime": "2023-10-31T17:04:32Z",
"conditions": [
{
"lastProbeTime": "2023-10-31T17:04:33Z",
"lastTransitionTime": "2023-10-31T17:04:33Z",
"status": "True",
"type": "Complete"
}
],
"ready": 0,
"startTime": "2023-10-31T17:04:28Z",
"succeeded": 1,
"uncountedTerminatedPods": {}
}
}