Sebelum memulai

Untuk mendaftarkan cluster Kubernetes di luar Google Cloud, diperlukan langkah-langkah berikut selain menyelesaikan prasyarat umum.

Pastikan konektivitas jaringan

Agar berhasil mendaftarkan cluster, Anda harus memastikan bahwa domain di bawah ini dapat dijangkau dari cluster Kubernetes Anda.

  • cloudresourcemanager.googleapis.com menyelesaikan metadata terkait project Google Cloud yang terhubung dengan cluster tersebut.
  • oauth2.googleapis.com untuk mendapatkan token OAuth berumur pendek untuk operasi agen terhadap gkeconnect.googleapis.com.
  • gkeconnect.googleapis.com untuk menetapkan saluran yang digunakan untuk menerima permintaan dari Google Cloud dan mengeluarkan respons.
  • gkehub.googleapis.com untuk membuat resource keanggotaan Fleet sisi Google Cloud yang sesuai dengan cluster yang Anda hubungkan ke Google Cloud.
  • www.googleapis.com untuk mengautentikasi token layanan dari permintaan layanan Google Cloud yang masuk.
  • gcr.io dan storage.googleapis.com untuk mengambil image Agen GKE Connect.

Jika Anda ingin mendaftarkan cluster menggunakan Workload Identity fleet, domain berikut juga harus dapat dijangkau:

  • securetoken.googleapis.com
  • iamcredentials.googleapis.com
  • sts.googleapis.com

Jika menggunakan proxy untuk Connect, Anda juga harus memperbarui daftar yang diizinkan proxy dengan domain yang relevan.

Jika Anda menggunakan gcloud untuk mendaftarkan cluster Kubernetes, domain ini juga harus dapat dijangkau di lingkungan tempat Anda menjalankan perintah gcloud.

Menggunakan Kontrol Layanan VPC

Jika ingin menggunakan Kontrol Layanan VPC untuk keamanan data tambahan di aplikasi, Anda harus memastikan bahwa layanan berikut berada dalam perimeter layanan Anda:

  • API Resource Manager (cloudresourcemanager.googleapis.com)
  • GKE Connect API (gkeconnect.googleapis.com)
  • Fleet API (gkehub.googleapis.com)

Jika ingin mendaftarkan cluster dengan Workload Identity fleet yang aktif, Anda juga memerlukan layanan berikut:

  • API Kredensial Akun Layanan IAM (iamcredentials.googleapis.com)
  • Security Token Service API (sts.googleapis.com)

Anda juga perlu menyiapkan konektivitas pribadi untuk mengakses API yang relevan. Anda dapat mengetahui cara melakukannya di Menyiapkan konektivitas pribadi.

Siapkan identitas

Semua opsi pendaftaran cluster manual di luar Google Cloud mengharuskan Anda mengonfigurasi autentikasi ke Google. Ini bisa berupa:

Cluster yang terpasang dapat didaftarkan dengan Workload Identity fleet yang diaktifkan jika cluster tersebut memenuhi Prasyarat cluster terlampir, seperti yang dijelaskan di bawah ini. Jika tidak, daftarkan cluster yang terpasang dengan akun layanan Google Cloud untuk autentikasi. Bagian berikutnya menunjukkan cara membuat akun layanan.

Buat akun layanan Google Cloud menggunakan gcloud

Untuk mendaftarkan cluster secara manual menggunakan akun layanan Google Cloud, Anda memerlukan file JSON yang berisi kredensial akun layanan. Untuk mengikuti prinsip hak istimewa terendah, sebaiknya buat akun layanan yang berbeda untuk setiap cluster Kubernetes yang Anda daftarkan, dan hanya ikat peran IAM ke cluster yang sesuai.

Untuk membuat file ini, lakukan langkah-langkah berikut:

gcloud

Buat akun layanan dengan menjalankan perintah berikut:

gcloud iam service-accounts create SERVICE_ACCOUNT_NAME --project=FLEET_HOST_PROJECT_ID

Tampilkan daftar semua akun layanan project dengan menjalankan perintah berikut:

gcloud iam service-accounts list --project=FLEET_HOST_PROJECT_ID

Jika Anda membuat akun layanan yang berbeda untuk setiap cluster Kubernetes yang Anda daftarkan, ikat peran IAM gkehub.connect ke akun layanan untuk cluster terkaitnya dengan Kondisi IAM pada nama keanggotaan cluster:

MEMBERSHIP_NAME=MEMBERSHIP_NAME
FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID
SERVICE_ACCOUNT_NAME=SERVICE_ACCOUNT_NAME
gcloud projects add-iam-policy-binding ${FLEET_HOST_PROJECT_ID} \
   --member="serviceAccount:${SERVICE_ACCOUNT_NAME}@${FLEET_HOST_PROJECT_ID}.iam.gserviceaccount.com" \
   --role="roles/gkehub.connect" \
   --condition "expression=resource.name == \
'projects/${FLEET_HOST_PROJECT_ID}/locations/global/memberships/${MEMBERSHIP_NAME}',\
title=bind-${SERVICE_ACCOUNT_NAME}-to-${MEMBERSHIP_NAME}"

Jika tidak, ikat peran ke akun layanan untuk semua cluster dalam project tanpa kondisi.

FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID
gcloud projects add-iam-policy-binding ${FLEET_HOST_PROJECT_ID} \
   --member="serviceAccount:SERVICE_ACCOUNT_NAME@${FLEET_HOST_PROJECT_ID}.iam.gserviceaccount.com" \
   --role="roles/gkehub.connect"

Download file JSON kunci pribadi akun layanan. Gunakan file ini saat Mendaftarkan cluster:

FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID
gcloud iam service-accounts keys create LOCAL_KEY_PATH \
   --iam-account=SERVICE_ACCOUNT_NAME@${FLEET_HOST_PROJECT_ID}.iam.gserviceaccount.com \
   --project=${FLEET_HOST_PROJECT_ID}

dengan:

  • FLEET_HOST_PROJECT_ID adalah ID project Google Cloud tempat Anda ingin mendaftarkan cluster. Pelajari cara menemukan nilai ini.
  • SERVICE_ACCOUNT_NAME adalah nama tampilan yang Anda pilih untuk [Akun Layanan].
  • MEMBERSHIP_NAME adalah nama keanggotaan yang Anda pilih untuk secara unik mewakili cluster saat mendaftarkannya.
  • LOCAL_KEY_PATH adalah jalur file lokal tempat Anda ingin menyimpan kunci pribadi akun layanan, yaitu file JSON. Sebaiknya beri nama file menggunakan nama akun layanan dan project ID Anda, seperti /tmp/creds/[SERVICE_ACCOUNT_NAME]-[FLEET_HOST_PROJECT_ID].json.

Prasyarat cluster terlampir

Bergantung pada jenis cluster Kubernetes pihak ketiga yang ingin didaftarkan sebagai cluster terpasang, Anda mungkin harus memenuhi beberapa persyaratan tambahan untuk menginstal Connect Agent dan/atau menggunakan Workload Identity fleet.

Mengonfigurasi Batasan Konteks Keamanan (SCC) (cluster OpenShift)

Di cluster OpenShift OKE dan OKD, administrator dapat menggunakan SCC untuk mengontrol izin pod. Untuk mengizinkan penginstalan Connect Agent di cluster, Anda perlu membuat SCC kustom.

Contoh definisi SCC berikut menentukan kumpulan kondisi yang harus dijalankan oleh Connect Agent agar dapat diterima ke dalam cluster:

# Connect Agent SCC
apiVersion: security.openshift.io/v1
kind: SecurityContextConstraints
metadata:
  name: gke-connect-scc
allowPrivilegeEscalation: false
# This is redundant with non-root + disallow privilege escalation,
# but we provide it for defense in depth.
requiredDropCapabilities:
- ALL
runAsUser:
  type: MustRunAsNonRoot
seLinuxContext:
  type: RunAsAny
supplementalGroups:
  type: MustRunAs
  ranges:
  - min: 1
    max: 65535
fsGroup:
  type: MustRunAs
  ranges:
  - min: 1
    max: 65535
volumes:
- secret
- projected
readOnlyRootFilesystem: true
seccompProfiles:
- docker/default
users:
groups:
  # Grants all service accounts in the gke-connect namespace access to this SCC
  - system:serviceaccounts:gke-connect

Dengan asumsi bahwa Anda telah menyimpan definisi SCC sebagai gke-connect-scc.yaml, gunakan alat command line OpenShift oc untuk membuat SCC gke-connect-scc bagi cluster Anda, sebagai berikut:

$ oc create -f gke-connect-scc.yaml

Untuk memverifikasi bahwa SCC kustom telah dibuat, jalankan perintah oc berikut:

$ oc get scc | grep gke-connect-scc

Persyaratan Workload Identity Fleet

Anda dapat mendaftarkan cluster yang terpasang dengan fleet Workload Identity aktif jika platform Anda membuat endpoint OIDC publik untuk cluster Anda (atau memungkinkan Anda membuatnya), atau jika Anda mengaktifkan penemuan penerbit akun layanan Kubernetes untuk cluster tersebut. Jika tidak dapat memenuhi persyaratan ini, Anda harus mendaftarkan cluster yang terpasang dengan akun layanan Google Cloud untuk autentikasi.

Untuk jenis cluster tertentu, lihat hal berikut:

  • Cluster OpenShift: Dapat didaftarkan dengan Workload Identity fleet yang diaktifkan setelah Anda mengonfigurasi SCC kustom, seperti yang dijelaskan di atas.
  • cluster jenis: Wajibkan pengaktifan penemuan penerbit akun layanan agar dapat menggunakan Workload Identity fleet. Opsi ini diaktifkan secara default dari Kubernetes versi 1.20. Jika Anda perlu mengaktifkan fitur ini, ikuti petunjuk di Proyeksi volume token akun layanan. Penemuan penerbit akun layanan diaktifkan secara otomatis saat project volume token akun layanan diaktifkan.

Apa langkah selanjutnya?

Ikuti petunjuk untuk mendaftarkan cluster.