VM Runtime di GDC mengelola berbagai resource yang terkait dengan atau VM. Resource ini mencakup resource yang ditentukan edisi Google Kubernetes Engine (GKE) Enterprise, yang ditentukan oleh KubeVirt resource, dan resource Kubernetes. Menggunakan Runtime VM di GDC kontrol akses berbasis peran (RBAC) untuk mengatur dan memberlakukan izin akses untuk sumber daya yang dikelola. Untuk membantu Anda bekerja dengan resource ini dan mengelola VM Anda, kami telah menyediakan empat konfigurasi ClusterRoles:
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 sebelumnya untuk beroperasi pada sumber daya. Dokumen ini memberikan informasi tentang resource Runtime VM di GDC dikelola sehingga administrator cluster dapat menyesuaikan model aksesnya sendiri.
ClusterRole yang Telah Ditetapkan Sebelumnya
Bagian ini menjelaskan setiap ClusterRoles yang telah ditentukan. ClusterRole ini hanya tersedia jika Runtime VM di GDC diaktifkan:
- Saat Runtime VM di GDC diaktifkan, keempat ClusterRole yang telah ditentukan sebelumnya otomatis dibuat.
- Saat Runtime VM di GDC dinonaktifkan, keempat ClusterRole yang telah ditentukan sebelumnya akan dihapus.
Tabel berikut mencantumkan peran cluster dan izin yang terkait:
Peran cluster | Deskripsi | Kata kerja akses |
---|---|---|
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 berdasarkan cluster. Peran cluster ini saat peran edit/lihat terikat ke namespace saat mengakses untuk menentukan resource berbasis cluster. |
|
ClusterRole Gabungan
ClusterRoles kubevm.admin
, kubevm.view
, dan kubevm.edit
tidak digunakan
secara langsung. Sebagai gantinya, ketiga peran ini digabungkan ke default Kubernetes
ClusterRoles admin
, view
, dan edit
. Agregasi ini memperluas
peran Kubernetes default sehingga dapat digunakan untuk mengelola edisi Google Kubernetes Engine (GKE) Enterprise
Google Cloud Platform. Dengan
ClusterRoles gabungan,
Anda dapat menggunakan peran default Kubernetes untuk mengelola akses ke edisi Google Kubernetes Engine (GKE) Enterprise
resource atau buat peran Anda sendiri berdasarkan ClusterRoles yang telah ditentukan.
Contoh label agregasi
ClusterRole kubevm.edit
memiliki label
rbac.authorization.k8s.io/aggregate-to-edit: "true"
, yang mengagregasinya ke
ClusterRole Kubernetes edit
. Izin di kubevm.edit
ClusterRole diberikan ke peran edit
default Kubernetes. kubevm.admin
dan kubevm.view
ClusterRoles digabungkan 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 bawaan kepada pengguna atau sekumpulan pengguna.
Admin cluster
Untuk memberikan izin admin kepada pengguna atau sekelompok pengguna, buat
ClusterRoleBinding dengan ClusterRole admin
default Kubernetes.
Contoh ClusterRoleBinding
Contoh admin-charlie
berikut ClusterRoleBinding memberi pengguna charlie
izin admin. ClusterRoleBinding menggunakan izin dari akses default
ClusterRole admin
Kubernetes, yang mencakup izin dari
kubevm.admin
ClusterRole 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 pelihat kepada pengguna atau sekelompok pengguna, buat
ClusterRoleBinding dengan ClusterRole view
default Kubernetes. Lihat
Contoh ClusterRoleBinding untuk objek serupa
Contoh ClusterRoleBinding.
Editor cluster
Untuk memberikan izin editor kepada pengguna atau sekelompok pengguna, buat
ClusterRoleBinding dengan ClusterRole edit
default Kubernetes. Lihat
Contoh ClusterRoleBinding untuk objek serupa
Contoh ClusterRoleBinding.
Editor dengan namespace
Untuk memberikan izin editor dengan namespace kepada pengguna atau sekelompok pengguna, Anda harus membuat dua binding terpisah:
Membuat RoleBinding pada namespace dan mereferensikan Kubernetes default ClusterRole
edit
.Membuat ClusterRoleBinding yang mereferensikan ClusterRole
kubevm.cluster.view
. ClusterRoleBinding ini diperlukan, karena beberapa resource, sepertivirtualmachinetypes
danstorageclasses
, tidak dengan namespace.
Contoh binding peran (editor dengan namespace)
Contoh RoleBinding dan ClusterRoleBinding berikut memberi pengguna charlie
izin editor untuk resource dalam 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 pelihat dengan namespace kepada pengguna atau sekelompok pengguna, Anda harus membuat dua binding terpisah:
Membuat RoleBinding pada namespace dan mereferensikan Kubernetes default ClusterRole
view
.Membuat ClusterRoleBinding yang mereferensikan ClusterRole
kubevm.cluster.view
.
Lihat Contoh binding peran (editor dengan namespace) untuk contoh RoleBinding dan ClusterRoleBinding serupa.
Resource yang digunakan oleh VM Runtime di GDC
Bagian berikut berisi tabel resource yang digunakan oleh Runtime VM di GDC. Bagian ini hanya untuk tujuan informasi. Jika Anda berencana untuk menggunakan peran bawaan dalam skenario pengguna umum yang dijelaskan dalam bagian sebelumnya, tidak ada penggunaan khusus untuk informasi ini.
Namun, jika tidak ingin menggunakan peran bawaan, Anda dapat informasi resource untuk membuat peran Anda sendiri yang disesuaikan.
Resource yang ditentukan edisi Google Kubernetes Engine (GKE) Enterprise
ClusterRoles yang telah ditentukan sebelumnya berfokus pada akses ke Google Kubernetes Engine (GKE) Enterprise yang telah ditentukan edisi Google Cloud Platform. Tabel berikut berisi resource edisi Google Kubernetes Engine (GKE) Enterprise dan izin akses yang diberikan oleh setiap ClusterRoles yang telah ditentukan.
Resource | Dibuat | Berdasarkan 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
Runtime VM di GDC didasarkan pada project open source KubeVirt. Secara {i>default<i}, izin akses ke resource KubeVirt secara otomatis digabungkan ke peran Kubernetes default, serupa dengan resource yang dikelola edisi Google Kubernetes Engine (GKE) Enterprise. Gunakan informasi sumber daya di tabel berikut jika Anda ingin membuatnya sendiri, peran yang disesuaikan:
Resource | Dibuat | Berdasarkan cluster |
---|---|---|
virtualmachineinstances /console |
– | – |
virtualmachineinstances /vnc |
– | – |
virtualmachineinstances /portforward |
– | – |
virtualmachineinstances /start |
– | – |
virtualmachineinstances /perhentian |
– | – |
virtualmachineinstances /restart |
– | – |
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 ini. Gunakan informasi resource di tabel berikut jika Anda ingin membuat peran sendiri yang disesuaikan:
Resource | Dibuat | Berdasarkan cluster |
---|---|---|
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 {i>kubeconfig<i} untuk cluster tersebut.
Berikut ini contoh {i>output<i} perintah untuk masing-masing dari empat ClusterRoles:
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