Halaman ini menjelaskan cara mengelola pengguna di Distributed Cloud connected.
Saat Anda membuat cluster Distributed Cloud connected, hanya akun pengguna yang Anda gunakan untuk membuat cluster yang diberi akses ke cluster tersebut. Untuk memberikan akses ke cluster kepada lebih banyak pengguna, Anda dapat melakukan salah satu hal berikut:
- Memberikan izin yang diperlukan menggunakan RBAC Kubernetes
- Menggunakan connect gateway untuk mengakses cluster
Memberikan izin yang diperlukan menggunakan RBAC Kubernetes
Bagian ini menjelaskan cara memberikan izin yang diperlukan oleh kebutuhan bisnis pengguna ke akun pengguna menggunakan Kontrol Akses Berbasis Peran (RBAC) Kubernetes. Izin ini dienkapsulasi oleh beberapa peran. Setelah memberikan peran yang sesuai ke akun pengguna, Anda dapat menambahkan akun tersebut ke cluster Distributed Cloud connected target.
Distributed Cloud connected tidak mendukung grup Identity and Access Management atau penyedia identitas pihak ketiga untuk digunakan dengan RBAC Kubernetes di cluster Distributed Cloud connected.
Anda harus menggunakan resource Kubernetes berikut untuk memberikan peran kepada pengguna:
ClusterRole: memungkinkan Anda menerapkan sekumpulan izin ke namespace apa pun di cluster; juga memberikan akses ke resource di seluruh cluster.ClusterRoleBinding: mengikat resourceClusterRoleke akun pengguna.Role: memungkinkan Anda menerapkan sekumpulan izin ke namespace tertentu.RoleBinding: mengikat resourceRoleatauClusterRoleke akun pengguna di namespace tertentu.
Memberikan izin untuk administrator cluster
Saat Anda membuat cluster Distributed Cloud connected, akun pengguna yang Anda gunakan untuk melakukannya secara otomatis menjadi administrator cluster. Untuk memberikan izin administrator cluster kepada pengguna tambahan, ikat akun pengguna target ke peran cluster-admin dengan membuat resource ClusterRoleBinding dan menerapkannya ke cluster:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: BINDING_NAME subjects: kind: User name: ACCOUNT_NAME roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io
Ganti kode berikut:
BINDING_NAME: nama yang secara unik mengidentifikasi binding peran ini.ACCOUNT_NAME: nama akun pengguna target.
Anda juga dapat menggunakan perintah kubectl berikut:
kubectl create clusterrolebinding "BINDING_NAME" \ --clusterrole cluster-admin --user "ACCOUNT_NAME"
Ganti kode berikut:
BINDING_NAME: nama yang secara unik mengidentifikasi binding peran ini.ACCOUNT_NAME: nama akun pengguna target.
Memberikan izin untuk developer aplikasi
Untuk memberikan izin yang diperlukan kepada developer aplikasi untuk men-deploy workload di cluster target, lakukan hal berikut:
Buat resource
Roleyang memberikan izin untuk membuat dan mengelola Pod, Layanan, dan deployment di namespace target, lalu terapkan ke cluster:apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: NAMESPACE name: ROLE_NAME rules: apiGroups: ["apps", ""] resources: ["pods", "deployments", "services"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
Ganti kode berikut:
NAMESPACE: nama namespace target.ROLE_NAME: nama yang secara unik mengidentifikasi peran ini.
Buat resource
RoleBindingyang mengikat akun pengguna target ke peran yang Anda buat pada langkah sebelumnya, lalu terapkan ke cluster:apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: namespace: NAMESPACE name: BINDING_NAME subjects: kind: User name: ACCOUNT_NAME kind: User name: ACCOUNT_NAME roleRef: kind: Role name: ROLE_NAME apiGroup: rbac.authorization.k8s.io
Ganti kode berikut:
BINDING_NAME: nama yang secara unik mengidentifikasi binding peran ini.NAMESPACE: nama namespace target.ACCOUNT_NAME: nama akun pengguna target.ROLE_NAME: nama peran target.
Memberikan izin untuk Agen Layanan Cloud Build
Untuk memberikan izin yang diperlukan kepada Agen Layanan Cloud Build untuk men-deploy workload di cluster target, lakukan hal berikut:
Buat resource
Roleyang memberikan izin untuk membuat dan mengelola Pod, Layanan, dan deployment di namespace target, lalu terapkan ke cluster:apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: NAMESPACE name: ROLE_NAME rules: apiGroups: ["apps", ""] resources: ["pods", "deployments", "services"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
Ganti kode berikut:
NAMESPACE: nama namespace target.ROLE_NAME: nama yang secara unik mengidentifikasi peran ini.
Buat resource
RoleBindingyang mengikat akun Agen Layanan Cloud Build target ke peran yang Anda buat pada langkah sebelumnya, lalu terapkan ke cluster:apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: namespace: NAMESPACE name: BINDING_NAME subjects: kind: User name: PROJECT_ID@cloudbuild.gserviceaccount.com roleRef: kind: Role name: ROLE_NAME apiGroup: rbac.authorization.k8s.io
Ganti kode berikut:
BINDING_NAME: nama yang secara unik mengidentifikasi binding peran ini.NAMESPACE: nama namespace target.PROJECT_ID: ID project target Google Cloud .ROLE_NAME: nama peran target.
Jika Anda perlu memberikan izin kepada Agen Layanan Cloud Build untuk men-deploy
dan mengelola workload di semua namespace pada cluster target, buat resource ClusterRole
dan ClusterRoleBinding, bukan resource Role dan RoleBinding.
Memberikan izin untuk melihat informasi cluster
Untuk memberikan izin yang diperlukan untuk melihat informasi mendetail tentang cluster di Google Cloud konsol, lakukan hal berikut:
Buat resource
ClusterRoleyang memungkinkan Connect Agent meniru pengguna yang perlu melihat informasi cluster di Google Cloud konsol:apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: ROLE_NAME rules: apiGroups: [""] resources: ["users"] verbs: ["impersonate"] resourceNames: ["ACCOUNT_NAME"]
Ganti kode berikut:
ROLE_NAME: nama peran target.ACCOUNT_NAME: nama akun pengguna target.
Buat resource
ClusterRoleBindingyang mengikat akun Agen Layanan Connect Agent ke peran yang Anda buat pada langkah sebelumnya, lalu terapkan ke cluster:apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: BINDING_NAME subjects: kind: ServiceAccount name: ACCOUNT_NAME roleRef: kind: ClusterRole name: ROLE_NAME apiGroup: rbac.authorization.k8s.io
Ganti kode berikut:
BINDING_NAME: nama yang secara unik mengidentifikasi binding peran ini.ACCOUNT_NAME: nama akun pengguna layanan target.ROLE_NAME: nama peran target.
Anda harus membuat pasangan resource ClusterRole dan ClusterRoleBinding terpisah untuk setiap
pengguna yang terpengaruh.
Anda juga dapat menggunakan alat command-line kubectl untuk memberikan izin yang diperlukan untuk melihat informasi cluster sebagai berikut:
Buat resource
ClusterRoleyang memungkinkan Connect Agent meniru pengguna yang perlu melihat informasi cluster di Google Cloud konsol:kubectl create clusterrole "ROLE_NAME" --verb impersonate \ --resource users --resource-name "ACCOUNT_NAME"
Ganti kode berikut:
ROLE_NAME: nama peran target.ACCOUNT_NAME: nama akun pengguna layanan target.
Buat resource
ClusterRoleBindingyang mengikat akun Agen Layanan Connect Agent ke peran yang Anda buat pada langkah sebelumnya, lalu terapkan ke cluster:kubectl create clusterrolebinding "BINDING_NAME" --clusterrole \ "ROLE_NAME" --serviceaccount "ACCOUNT_NAME"
Ganti kode berikut:
BINDING_NAME: nama yang secara unik mengidentifikasi binding peran ini.ACCOUNT_NAME: nama akun pengguna layanan target.ROLE_NAME: nama peran target.
Menggunakan connect gateway untuk mengakses cluster Distributed Cloud connected
Anda memiliki opsi untuk menggunakan connect gateway guna mengakses cluster Distributed Cloud connected. Pengguna connect gateway memerlukan satu atau beberapa peran berikut, bergantung pada persyaratan bisnisnya:
- Admin Connect Gateway (
roles/gkehub.gatewayAdmin): memberikan akses ke connect gateway API. Peran ini memungkinkan penggunaan alat command-linekubectluntuk mengelola cluster. - Editor Connect Gateway (
roles/gkehub.gatewayEditor): memberikan akses baca dan tulis ke cluster. - Pembaca Connect Gateway (
roles/gkehub.gatewayReader): memberikan akses hanya baca ke cluster. - Pelihat GKE Hub (
roles/gkehub.viewer): memberikan kemampuan untuk mengambil file kubeconfig dari cluster.
Untuk mengetahui informasi selengkapnya tentang penggunaan connect gateway, lihat hal berikut: