Saat Anda men-deploy ke Google Kubernetes Engine (GKE), akun layanan eksekusi Cloud Deploy default memiliki akses ke semua namespace dalam cluster target. Anda dapat mengonfigurasi akun layanan tersebut untuk men-deploy hanya ke satu namespace.
Pastikan akun layanan eksekusi tidak memiliki peran IAM
roles/container.developer.Berikan peran
roles/container.clusterViewerkepada akun layanan.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT" \ --role="roles/container.clusterViewer"Dengan peran ini, akun layanan dapat melakukan autentikasi di cluster, tetapi tidak melakukan tindakan lain.
Buat Peran RBAC Kubernetes yang memberikan akses admin ke namespace.
Peran RBAC dalam contoh ini memiliki izin yang luas, setara dengan peran IAM
clouddeploy.developer. Untuk meminimalkan risiko eskalasi hak istimewa, sebaiknya Anda mengubah izin ini ke minimum yang diperlukan untuk aplikasi Anda. Untuk mengetahui petunjuknya, lihat dokumentasi RBAC untuk GKE.kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: admin namespace: NAMESPACE rules: - apiGroups: ["", "extensions", "apps"] resources: ["*"] verbs: ["*"]Buat
RoleBindingyang mengikat Peran RBAC tersebut di namespace yang Anda pilih ke akun layanan eksekusi Cloud Deploy:kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: admin namespace: NAMESPACE subjects: # Google Cloud user account - kind: User name: SERVICE_ACCOUNT roleRef: kind: Role name: admin apiGroup: rbac.authorization.k8s.ioManifes ini menentukan binding kebijakan RBAC yang mengikat Peran
adminke akun layanan eksekusi Anda.NAMESPACEadalah namespace yang ingin Anda beri akses akun layanan. Akun layanan tidak dapat mengakses namespace lain di cluster.Terapkan manifes RBAC ke cluster:
kubectl apply -f YAML_NAME