Mendaftarkan cluster Kubernetes di luar Google Cloud memerlukan langkah-langkah berikut selain menyelesaikan prasyarat umum.
Pastikan konektivitas jaringan
Agar berhasil mendaftarkan cluster, Anda harus memastikan bahwa domain di bawah dapat dijangkau dari cluster Kubernetes Anda.
cloudresourcemanager.googleapis.com
menyelesaikan metadata terkait project Google Cloud yang sedang dihubungkan ke cluster.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 Cloudyang sesuai dengan cluster yang Anda hubungkan Google Cloud.www.googleapis.com
untuk mengautentikasi token layanan dari permintaan layanan Google Cloud yang masuk.gcr.io
danstorage.googleapis.com
untuk menarik 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 Anda 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 di perimeter layanan Anda:
- Resource Manager API (
cloudresourcemanager.googleapis.com
) - GKE Connect API (
gkeconnect.googleapis.com
) - Fleet API (
gkehub.googleapis.com
)
Jika ingin mendaftarkan cluster dengan Workload Identity fleet yang diaktifkan, Anda juga memerlukan layanan berikut:
- IAM Service Account Credentials API (
iamcredentials.googleapis.com
) - Security Token Service API (
sts.googleapis.com
)
Anda juga perlu menyiapkan konektivitas pribadi untuk akses ke 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 dapat berupa:
- Fleet Workload Identity (direkomendasikan jika tersedia). Anda dapat mengetahui lebih lanjut keuntungan mengaktifkan Workload Identity fleet di Menggunakan Workload Identity fleet.
- A Google Cloud kun layanan
Cluster terlampir dapat didaftarkan dengan Workload Identity fleet yang diaktifkan jika cluster memenuhi Prasyarat cluster terlampir kami, seperti yang dijelaskan di bawah. Atau, daftarkan cluster terlampir dengan Google Cloud akun layanan untuk autentikasi. Bagian berikutnya akan 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 terpisah untuk setiap cluster Kubernetes yang Anda daftarkan, dan hanya ikat peran IAM ke akun layanan tersebut untuk 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
Buat 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 yang sesuai 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. Anda menggunakan 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 Google Cloud project ID 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 merepresentasikan cluster secara unik 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 Anda daftarkan sebagai cluster terlampir, 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 bagi pod. Untuk mengizinkan penginstalan Connect Agent di cluster Anda, Anda perlu membuat SCC kustom.
Definisi SCC contoh berikut menentukan serangkaian kondisi yang harus dipenuhi 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 Anda telah menyimpan definisi SCC sebagai gke-connect-scc.yaml
, gunakan alat command line oc
OpenShift untuk membuat SCC gke-connect-scc
untuk 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 terlampir dengan Workload Identity yang diaktifkan untuk fleet jika platform Anda membuat endpoint OIDC publik untuk cluster Anda (atau memungkinkan Anda membuat endpoint tersebut), atau jika Anda telah mengaktifkan penemuan penerbit akun layanan Kubernetes untuk cluster. Jika tidak dapat memenuhi persyaratan ini, Anda harus mendaftarkan cluster terlampir dengan Google Cloud akun layanan untuk autentikasi.
Untuk jenis cluster tertentu, lihat berikut ini:
- Cluster OpenShift: Dapat didaftarkan dengan Workload Identity fleet yang diaktifkan setelah Anda mengonfigurasi SCC kustom, seperti yang dijelaskan di atas.
- Cluster KInd: Memerlukan penemuan penerbit akun layanan diaktifkan untuk menggunakan Workload Identity fleet. Fitur ini diaktifkan secara default mulai 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.