Halaman ini menjelaskan cara mengelola pengguna di Distributed Cloud.
Saat Anda membuat cluster Distributed Cloud, 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 gateway koneksi 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 Role-Based Access Control (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 target.
Distributed Cloud tidak mendukung grup Identity and Access Management atau penyedia identitas pihak ketiga untuk digunakan dengan RBAC Kubernetes di cluster Distributed Cloud.
Anda harus menggunakan resource Kubernetes berikut untuk memberikan peran kepada pengguna:
ClusterRole: memungkinkan Anda menerapkan serangkaian izin ke namespace mana pun dalam cluster; juga memberikan akses ke resource di seluruh cluster.ClusterRoleBinding: mengikat resourceClusterRoleke akun pengguna.Role: memungkinkan Anda menerapkan serangkaian izin ke namespace tertentu.RoleBinding: mengikat resourceRoleatauClusterRoleke akun pengguna di namespace tertentu.
Memberikan izin untuk administrator cluster
Saat Anda membuat cluster Distributed Cloud, akun pengguna yang Anda gunakan untuk melakukannya akan 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 terapkan 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 mengidentifikasi binding peran ini secara unik.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 mengidentifikasi binding peran ini secara unik.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, Service, 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 di langkah sebelumnya dan 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 mengidentifikasi binding peran ini secara unik.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 beban kerja pada cluster target, lakukan hal berikut:
Buat resource
Roleyang memberikan izin untuk membuat dan mengelola Pod, Service, 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 dan 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 mengidentifikasi binding peran ini secara unik.NAMESPACE: nama namespace target.PROJECT_ID: ID project Google Cloud target.ROLE_NAME: nama peran target.
Jika Anda perlu memberikan izin 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 guna melihat informasi mendetail tentang cluster di konsol Google Cloud , lakukan hal berikut:
Buat resource
ClusterRoleyang memungkinkan Agen Koneksi meniru identitas pengguna yang perlu melihat informasi cluster di konsol Google Cloud :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 Agen Koneksi ke peran yang Anda buat pada langkah sebelumnya dan 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 mengidentifikasi binding peran ini secara unik.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 Agen Koneksi meniru identitas pengguna yang perlu melihat informasi cluster di konsol Google Cloud :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 Agen Koneksi ke peran yang Anda buat pada langkah sebelumnya dan terapkan ke cluster:kubectl create clusterrolebinding "BINDING_NAME" --clusterrole \ "ROLE_NAME" --serviceaccount "ACCOUNT_NAME"
Ganti kode berikut:
BINDING_NAME: nama yang mengidentifikasi binding peran ini secara unik.ACCOUNT_NAME: nama akun pengguna layanan target.ROLE_NAME: nama peran target.
Menggunakan gateway koneksi untuk mengakses cluster Distributed Cloud
Anda memiliki opsi untuk menggunakan gateway koneksi guna mengakses cluster Distributed Cloud. Pengguna gateway koneksi memerlukan satu atau beberapa peran berikut, bergantung pada persyaratan bisnisnya:
- Connect Gateway Admin (
roles/gkehub.gatewayAdmin): memberikan akses ke connect gateway API. Hal ini memungkinkan penggunaan alat command linekubectluntuk mengelola cluster. - Editor Gateway Gateway (
roles/gkehub.gatewayEditor): memberikan akses baca dan tulis ke cluster. - Connect Gateway Reader (
roles/gkehub.gatewayReader): memberikan akses hanya baca ke cluster. - GKE Hub Viewer (
roles/gkehub.viewer): memberikan kemampuan untuk mengambil filekubeconfigdari cluster.
Untuk mengetahui informasi selengkapnya tentang cara menggunakan gateway koneksi, lihat artikel berikut: