Runtime VM di GDC mengelola berbagai resource yang terkait dengan VM Anda. Resource ini mencakup resource yang ditentukan edisi Google Kubernetes Engine (GKE) Enterprise, resource yang ditentukan KubeVirt, dan resource Kubernetes. VM Runtime di GDC menggunakan kontrol akses berbasis peran (RBAC) untuk menetapkan dan menerapkan izin untuk resource terkelola. Untuk membantu Anda menggunakan resource ini dan mengelola VM, kami telah menyediakan empat ClusterRole yang sudah dikonfigurasi sebelumnya:
kubevm.admin
kubevm.edit
kubevm.view
kubevm.cluster.view
Peran bawaan ini menyediakan model akses umum pada resource kustom yang terkait dengan Runtime VM di GDC. Setiap peran memiliki izin yang telah ditetapkan untuk beroperasi pada resource. Dokumen ini memberikan informasi tentang resource yang dikelola VM Runtime di GDC sehingga administrator cluster dapat menyesuaikan model akses mereka sendiri.
ClusterRole yang Ditentukan Sebelumnya
Bagian ini menjelaskan setiap ClusterRole yang sudah ditentukan. ClusterRoles ini hanya tersedia jika Runtime VM di GDC diaktifkan:
- Saat Runtime VM di GDC diaktifkan, empat ClusterRole yang sudah ditentukan akan dibuat otomatis.
- Saat Runtime VM di GDC dinonaktifkan, keempat ClusterRoles yang telah ditetapkan akan dihapus.
Tabel berikut mencantumkan peran cluster dan izin yang terkait:
Peran cluster | Deskripsi | Akses kata kerja |
---|---|---|
kubevm.admin |
Memberikan akses penuh ke semua resource edisi Google Kubernetes Engine (GKE) Enterprise. |
|
kubevm.edit |
Memberikan akses baca/tulis ke semua resource edisi Google Kubernetes Engine (GKE) Enterprise. |
|
kubevm.view |
Memberikan akses baca ke semua resource edisi Google Kubernetes Engine (GKE) Enterprise. |
|
kubevm.cluster.view |
Memberikan akses baca ke resource cluster-wise. Peran cluster ini diperlukan jika peran edit/lihat terikat dengan namespace, sementara akses ke resource berbasis cluster diperlukan. |
|
ClusterRole Gabungan
ClusterRole kubevm.admin
, kubevm.view
, dan kubevm.edit
tidak digunakan
secara langsung. Sebagai gantinya, ketiga peran ini digabungkan ke masing-masing admin
, view
, dan edit
ClusterRoles default Kubernetes. Agregasi ini memperluas peran Kubernetes default sehingga dapat digunakan untuk mengelola resource edisi Google Kubernetes Engine (GKE) Enterprise. Dengan ClusterRoles gabungan, Anda dapat menggunakan peran default Kubernetes untuk mengelola akses ke resource edisi Google Kubernetes Engine (GKE) Enterprise atau membuat peran Anda sendiri berdasarkan ClusterRoles yang telah ditetapkan.
Contoh label agregasi
ClusterRole kubevm.edit
memiliki label
rbac.authorization.k8s.io/aggregate-to-edit: "true"
, yang menggabungkannya ke
ClusterRole edit
Kubernetes. Izin di ClusterRole kubevm.edit
diberikan ke peran edit
default Kubernetes. ClusterRole kubevm.admin
dan kubevm.view
digabungkan dengan cara yang mirip dengan
anotasi aggregate-to-admin
atau aggregate-to-view
.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: kubevm.edit
labels:
kubevm: kubevm.edit
rbac.authorization.k8s.io/aggregate-to-edit: "true"
...
Skenario Pengguna Umum
Bagian berikut menjelaskan cara menggunakan RoleBinding dan ClusterRoleBinding untuk memberikan izin yang ditentukan dalam ClusterRoles yang telah ditetapkan kepada pengguna atau sekelompok pengguna.
Admin cluster
Untuk memberikan izin admin kepada satu pengguna atau sekelompok pengguna, buat
ClusterRoleBinding dengan ClusterRole admin
default Kubernetes.
Contoh ClusterRoleBinding
admin-charlie
Contoh ClusterRoleBinding berikut memberikan izin admin charlie
kepada pengguna. ClusterRoleBinding menggunakan izin dari ClusterRole admin
Kubernetes default, yang mencakup izin dari ClusterRole kubevm.admin
yang sudah ditentukan melalui agregasi.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-charlie
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: admin
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: charlie
Penampil cluster
Untuk memberikan izin viewer kepada satu pengguna atau sekelompok pengguna, buat
ClusterRoleBinding dengan ClusterRole view
default Kubernetes. Lihat Contoh ClusterRoleBinding untuk mengetahui contoh ClusterRoleBinding yang serupa.
Editor cluster
Untuk memberikan izin editor kepada satu atau sekelompok pengguna, buat
ClusterRoleBinding dengan ClusterRole edit
default Kubernetes. Lihat Contoh ClusterRoleBinding untuk mengetahui contoh ClusterRoleBinding yang serupa.
Editor dengan namespace
Untuk memberikan izin editor dengan namespace kepada satu atau sekelompok pengguna, Anda harus membuat dua binding terpisah:
Buat RoleBinding pada namespace dan referensikan ClusterRole
edit
Kubernetes default.Buat ClusterRoleBinding yang merujuk ke ClusterRole
kubevm.cluster.view
yang telah ditetapkan. ClusterRoleBinding ini diperlukan, karena beberapa resource, sepertivirtualmachinetypes
danstorageclasses
, tidak di-namespace.
Contoh binding peran (editor dengan namespace)
Contoh RoleBinding dan ClusterRoleBinding berikut memberi pengguna izin editor charlie
untuk resource di namespace default
:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: edit-charlie
namespace: default
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: edit
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: charlie
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: kubevm-cluster-view-charlie
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: kubevm.cluster.view
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: charlie
Penampil dengan namespace
Untuk memberikan izin viewer dengan namespace kepada satu atau sekelompok pengguna, Anda harus membuat dua binding terpisah:
Buat RoleBinding pada namespace dan referensikan ClusterRole
view
Kubernetes default.Buat ClusterRoleBinding yang merujuk ke ClusterRole
kubevm.cluster.view
yang telah ditetapkan.
Lihat Contoh peran binding (editor dengan namespace) untuk contoh RoleBinding dan ClusterRoleBinding yang serupa.
Resource yang digunakan oleh Runtime VM di GDC
Bagian berikut berisi tabel resource yang digunakan oleh VM Runtime di GDC. Bagian ini hanya untuk tujuan informasi. Jika Anda berencana menggunakan peran yang telah ditetapkan dalam skenario pengguna standar yang dijelaskan di bagian sebelumnya, tidak ada penggunaan khusus untuk informasi ini.
Namun, jika tidak ingin menggunakan peran yang telah ditetapkan, Anda dapat menggunakan informasi resource ini untuk membuat peran yang disesuaikan sendiri.
Resource yang ditentukan edisi Google Kubernetes Engine (GKE) Enterprise
ClusterRole yang sudah ditentukan berfokus pada akses ke resource yang ditentukan edisi Google Kubernetes Engine (GKE) Enterprise. Tabel berikut berisi daftar resource edisi Google Kubernetes Engine (GKE) Enterprise dan izin akses yang diberikan oleh setiap ClusterRoles yang telah ditetapkan.
Resource | Dibuat | {i>Cluster-wise<i} | kubevm.admin |
kubevm.view |
kubevm.edit |
kubevm.cluster.view |
---|---|---|---|---|---|---|
virtualmachineaccessrequests |
– | – | Penuh | Melihat | Baca/Tulis | – |
virtualmachinedisks |
– | – | Penuh | Melihat | Baca/Tulis | – |
virtualmachines |
– | – | Penuh | Melihat | Baca/Tulis | – |
gpuallocations |
– | – | Penuh | Melihat | Baca/Tulis | – |
guestenvironmentdata |
Ya | – | Penuh | Melihat | Baca/Tulis | – |
vmruntimes |
– | Ya | Penuh | Melihat | Baca/Tulis | Melihat |
virtualmachinetypes |
– | Ya | Penuh | Melihat | Baca/Tulis | Melihat |
vmhighavailabilitypolicies |
– | Ya | Penuh | Melihat | Baca/Tulis | Melihat |
networkinterfaces |
Ya | – | Penuh | Melihat | Baca/Tulis | – |
networks |
– | Ya | Penuh | Melihat | Baca/Tulis | Melihat |
Resource KubeVirt
Runtime VM di GDC didasarkan pada project open source KubeVirt. Secara default, izin untuk resource KubeVirt otomatis digabungkan ke peran Kubernetes default, mirip dengan resource yang dikelola edisi Google Kubernetes Engine (GKE) Enterprise. Gunakan informasi resource dalam tabel berikut jika Anda ingin membuat peran Anda sendiri yang disesuaikan:
Resource | Dibuat | {i>Cluster-wise<i} |
---|---|---|
virtualmachineinstances /konsol |
– | – |
virtualmachineinstances /vnc |
– | – |
virtualmachineinstances /portforward |
– | – |
virtualmachineinstances /awal |
– | – |
virtualmachineinstances /perhentian |
– | – |
virtualmachineinstances /mulai ulang |
– | – |
virtualmachines |
Ya | – |
virtualmachineinstances |
Ya | – |
datavolumes |
– | – |
storageprofiles |
– | Ya |
cdiconfigs |
– | Ya |
Resource Kubernetes
Saat menggunakan Runtime VM di GDC dan VM, Anda mungkin perlu mengelola akses ke resource Kubernetes berikut. Gunakan informasi resource dalam tabel berikut jika Anda ingin membuat peran khusus:
Resource | Dibuat | {i>Cluster-wise<i} |
---|---|---|
pods |
Ya | – |
services |
– | – |
persistentvolumeclaims |
– | – |
secrets |
– | – |
nodes |
– | Ya |
storageclasses |
– | Ya |
configmaps |
– | – |
Contoh YAML ClusterRole
Anda dapat mengambil YAML untuk ClusterRoles dengan perintah kubectl
berikut:
kubectl get ClusterRole CLUSTERROLE_NAME -o yaml --kubeconfig KUBECONFIG_PATH
Ganti kode berikut:
CLUSTERROLE_NAME
: nama ClusterRole, sepertikubevm.cluster.view
.KUBECONFIG_PATH
: jalur ke file kubeconfig untuk cluster.
Berikut adalah contoh output perintah untuk masing-masing dari empat ClusterRole yang telah ditetapkan:
kubevm.admin
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: "2022-10-11T21:10:31Z" labels: kubevm: kubevm.admin rbac.authorization.k8s.io/aggregate-to-admin: "true" name: kubevm.admin resourceVersion: "16654950" uid: 3296c279-6e85-4ea6-b250-548bf0c3e935 rules: - apiGroups: - vm.cluster.gke.io resources: - virtualmachineaccessrequests - virtualmachinedisks - virtualmachines - gpuallocations - guestenvironmentdata - vmruntimes - virtualmachinetypes - vmhighavailabilitypolicies verbs: - get - delete - create - update - patch - list - watch - deletecollection - apiGroups: - networking.gke.io resources: - networkinterfaces - networks verbs: - get - delete - create - update - patch - list - watch - deletecollection
kubevm.edit
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: "2022-10-11T21:10:31Z" labels: kubevm: kubevm.edit rbac.authorization.k8s.io/aggregate-to-edit: "true" name: kubevm.edit resourceVersion: "16654951" uid: 237bf9ae-b2c8-4303-94dc-e6425a2df331 rules: - apiGroups: - vm.cluster.gke.io resources: - virtualmachineaccessrequests - virtualmachinedisks - virtualmachines - gpuallocations - guestenvironmentdata - vmruntimes - virtualmachinetypes - vmhighavailabilitypolicies verbs: - get - delete - create - update - patch - list - watch - apiGroups: - networking.gke.io resources: - networkinterfaces - networks verbs: - get - delete - create - update - patch - list - watch
kubevm.view
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: "2022-10-11T21:10:31Z" labels: kubevm: kubevm.view rbac.authorization.k8s.io/aggregate-to-view: "true" name: kubevm.view resourceVersion: "16654953" uid: b5b54e2d-0097-4698-abbd-aeac212d0a34 rules: - apiGroups: - vm.cluster.gke.io resources: - virtualmachineaccessrequests - virtualmachinedisks - virtualmachines - gpuallocations - guestenvironmentdata - vmruntimes - virtualmachinetypes - vmhighavailabilitypolicies verbs: - get - list - watch - apiGroups: - networking.gke.io resources: - networkinterfaces - networks verbs: - get - list - watch
kubevm.cluster.view
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: "2022-10-11T21:10:31Z" labels: kubevm: kubevm.cluster.view name: kubevm.cluster.view resourceVersion: "16654956" uid: b25dde64-67da-488b-81d2-1a08f9a4a7c1 rules: - apiGroups: - vm.cluster.gke.io resources: - vmruntimes - virtualmachinetypes - vmhighavailabilitypolicies verbs: - get - list - watch - apiGroups: - networking.gke.io resources: - networks verbs: - get - list - watch