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 terhadapgkeconnect.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
danstorage.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:
- Fleet Workload Identity (direkomendasikan jika tersedia). Anda dapat mengetahui lebih lanjut manfaat mengaktifkan Workload Identity fleet di artikel Menggunakan Workload Identity fleet.
- Akun layanan Google Cloud
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.