Runtime VM di GDC mengelola berbagai resource yang terkait dengan VM Anda. Resource ini mencakup resource yang ditentukan GKE, resource yang ditentukan KubeVirt, dan resource Kubernetes. VM Runtime di GDC menggunakan kontrol akses berbasis peran (RBAC) untuk menetapkan dan menerapkan izin bagi resource terkelola. Untuk membantu Anda bekerja dengan resource ini dan mengelola VM, kami telah menyediakan empat ClusterRole yang telah dikonfigurasi sebelumnya:
kubevm.admin
kubevm.edit
kubevm.view
kubevm.cluster.view
Peran bawaan ini menyediakan model akses umum pada resource kustom yang terkait dengan VM Runtime di GDC. Setiap peran memiliki izin yang telah ditetapkan sebelumnya untuk beroperasi pada resource. Dokumen ini memberikan informasi tentang resource yang dikelola oleh VM Runtime di GDC sehingga administrator cluster dapat menyesuaikan model akses mereka sendiri.
ClusterRole Standar
Bagian ini menjelaskan setiap ClusterRole yang telah ditentukan sebelumnya. ClusterRole ini hanya tersedia jika VM Runtime di GDC diaktifkan:
- Saat VM Runtime di GDC diaktifkan, empat ClusterRole yang telah ditentukan sebelumnya akan dibuat secara otomatis.
- Jika VM Runtime di GDC dinonaktifkan, empat ClusterRole yang telah ditentukan sebelumnya akan dihapus.
Tabel berikut mencantumkan peran cluster dan izin terkaitnya:
Peran cluster | Deskripsi | Verba akses |
---|---|---|
kubevm.admin |
Memberikan akses penuh ke semua resource GKE. |
|
kubevm.edit |
Memberikan akses baca/tulis ke semua resource GKE. |
|
kubevm.view |
Memberikan akses baca ke semua resource GKE. |
|
kubevm.cluster.view |
Memberikan akses baca ke resource per cluster. Peran cluster ini diperlukan saat peran edit/lihat terikat ke namespace, sementara akses ke resource di seluruh cluster diperlukan. |
|
ClusterRole Gabungan
ClusterRole kubevm.admin
, kubevm.view
, dan kubevm.edit
tidak digunakan
secara langsung. Sebagai gantinya, ketiga peran ini diagregasi ke ClusterRole admin
, view
, dan edit
default Kubernetes. Agregasi ini memperluas peran Kubernetes default sehingga dapat digunakan untuk mengelola resource GKE. Dengan
ClusterRole gabungan,
Anda dapat menggunakan peran default Kubernetes untuk mengelola akses ke resource GKE atau membuat peran Anda sendiri berdasarkan ClusterRole yang telah ditentukan sebelumnya.
Contoh label agregasi
ClusterRole kubevm.edit
memiliki label
rbac.authorization.k8s.io/aggregate-to-edit: "true"
, yang menggabungkannya ke
ClusterRole edit
Kubernetes. Izin di kubevm.edit
ClusterRole diberikan ke peran edit
default Kubernetes. ClusterRole kubevm.admin
dan kubevm.view
diagregasi dengan cara yang sama 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 ClusterRole yang telah ditetapkan kepada pengguna atau sekumpulan pengguna.
Admin cluster
Untuk memberikan izin admin kepada pengguna atau sekumpulan pengguna, buat
ClusterRoleBinding dengan ClusterRole admin
default Kubernetes.
Contoh ClusterRoleBinding
Contoh admin-charlie
ClusterRoleBinding berikut memberikan izin admin
kepada pengguna charlie
. ClusterRoleBinding menggunakan izin dari ClusterRole admin
Kubernetes default, yang mencakup izin dari ClusterRole kubevm.admin
yang telah ditentukan sebelumnya 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
Pelihat cluster
Untuk memberikan izin pelihat kepada pengguna atau sekumpulan pengguna, buat
ClusterRoleBinding dengan ClusterRole view
default Kubernetes. Lihat
Contoh ClusterRoleBinding untuk contoh
ClusterRoleBinding serupa.
Editor cluster
Untuk memberikan izin editor kepada pengguna atau sekumpulan pengguna, buat
ClusterRoleBinding dengan ClusterRole edit
default Kubernetes. Lihat
Contoh ClusterRoleBinding untuk contoh
ClusterRoleBinding serupa.
Editor dengan namespace
Untuk memberikan izin editor yang memiliki namespace kepada pengguna atau sekumpulan pengguna, Anda perlu membuat dua binding terpisah:
Buat RoleBinding di namespace dan referensikan ClusterRole
edit
Kubernetes default.Buat ClusterRoleBinding yang mereferensikan ClusterRole
kubevm.cluster.view
yang telah ditentukan sebelumnya. ClusterRoleBinding ini diperlukan, karena beberapa resource, sepertivirtualmachinetypes
danstorageclasses
, tidak memiliki namespace.
Contoh binding peran (editor dengan cakupan namespace)
Contoh RoleBinding dan ClusterRoleBinding berikut memberikan izin editor charlie
kepada pengguna 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 penampil yang diberi namespace kepada pengguna atau sekelompok pengguna, Anda perlu membuat dua binding terpisah:
Buat RoleBinding di namespace dan referensikan ClusterRole
view
Kubernetes default.Buat ClusterRoleBinding yang mereferensikan ClusterRole
kubevm.cluster.view
yang telah ditentukan sebelumnya.
Lihat Contoh binding peran (editor cakupan namespace) untuk contoh RoleBinding dan ClusterRoleBinding 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 bawaan dalam skenario pengguna umum yang dijelaskan di bagian sebelumnya, tidak ada penggunaan khusus untuk informasi ini.
Namun, jika Anda tidak ingin menggunakan peran standar, Anda dapat menggunakan informasi sumber ini untuk membuat peran khusus Anda sendiri.
Resource yang ditentukan Google Kubernetes Engine
ClusterRole yang telah ditentukan berfokus pada akses ke resource yang ditentukan GKE. Tabel berikut mencantumkan resource GKE dan izin akses yang diberikan oleh setiap ClusterRole bawaan.
Resource | Dibuat | Per cluster | kubevm.admin |
kubevm.view |
kubevm.edit |
kubevm.cluster.view |
---|---|---|---|---|---|---|
virtualmachineaccessrequests |
– | – | Penuh | Baca | Baca/Tulis | – |
virtualmachinedisks |
– | – | Penuh | Baca | Baca/Tulis | – |
virtualmachines |
– | – | Penuh | Baca | Baca/Tulis | – |
gpuallocations |
– | – | Penuh | Baca | Baca/Tulis | – |
guestenvironmentdata |
Ya | – | Penuh | Baca | Baca/Tulis | – |
vmruntimes |
– | Ya | Penuh | Baca | Baca/Tulis | Baca |
virtualmachinetypes |
– | Ya | Penuh | Baca | Baca/Tulis | Baca |
vmhighavailabilitypolicies |
– | Ya | Penuh | Baca | Baca/Tulis | Baca |
networkinterfaces |
Ya | – | Penuh | Baca | Baca/Tulis | – |
networks |
– | Ya | Penuh | Baca | Baca/Tulis | Baca |
Referensi KubeVirt
VM Runtime di GDC didasarkan pada project open source KubeVirt. Secara default, izin untuk resource KubeVirt secara otomatis digabungkan ke peran Kubernetes default, mirip dengan resource yang dikelola GKE. Gunakan informasi resource dalam tabel berikut jika Anda ingin membuat peran khusus yang disesuaikan sendiri:
Resource | Dibuat | Per cluster |
---|---|---|
virtualmachineinstances /console |
– | – |
virtualmachineinstances /vnc |
– | – |
virtualmachineinstances /portforward |
– | – |
virtualmachineinstances /start |
– | – |
virtualmachineinstances /stop |
– | – |
virtualmachineinstances /mulai ulang |
– | – |
virtualmachines |
Ya | – |
virtualmachineinstances |
Ya | – |
datavolumes |
– | – |
storageprofiles |
– | Ya |
cdiconfigs |
– | Ya |
Resource Kubernetes
Saat menggunakan VM Runtime 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 Anda sendiri:
Resource | Dibuat | Per cluster |
---|---|---|
pods |
Ya | – |
services |
– | – |
persistentvolumeclaims |
– | – |
secrets |
– | – |
nodes |
– | Ya |
storageclasses |
– | Ya |
configmaps |
– | – |
Contoh YAML ClusterRole
Anda dapat mengambil YAML untuk ClusterRole 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 setiap ClusterRole yang telah ditentukan sebelumnya:
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