9.13. 仮想マシンの状態を制御する
virtctl を使用して仮想マシンの状態を管理し、CLI から他のアクションを実行できます。たとえば、virtctl を使用して仮想マシンを強制停止したり、ポートを公開したりできます。
Web コンソールから仮想マシンを停止、起動、再起動、一時停止、一時停止解除できます。
9.13.1. Web コンソールを使用して仮想マシンの状態を管理するための RBAC 権限を設定する リンクのコピーリンクがクリップボードにコピーされました!
ユーザーが OpenShift Container Platform Web コンソールを使用して仮想マシン (VM) の状態を管理できるようにするには、RBAC クラスターロールとクラスターロールバインディングを作成する必要があります。クラスターロールは、subresources.kubevirt.io API を使用して、特定のユーザーまたはグループが制御できるリソースを定義します。
前提条件
- OpenShift Virtualization がインストールされている OpenShift Container Platform クラスターへのクラスター管理者アクセス権を持っている。
-
OpenShift CLI (
oc) がインストールされている。
手順
ターゲットユーザーまたはグループが仮想マシンの状態を管理できるようにする
ClusterRoleオブジェクトを作成します。apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: vm-manager-access rules: - apiGroups: - subresources.kubevirt.io resources: - virtualmachines/start - virtualmachines/stop verbs: - put # ...クラスターロールを適用するには、次のコマンドを実行します。
$ oc apply -f <filename>.yaml次のコマンドを実行して出力をチェックし、クラスターロールが作成されたことを確認します。
$ oc get clusterrole <name>出力例:
NAME AGE vm-manager-access 15sクラスターロールの詳細を検査し、
subresources.kubevirt.ioの目的のルール (具体的には、virtualmachines/startおよびvirtualmachines/stopサブリソース) が存在することを確認します。次のコマンドを実行し、出力を確認します。
$ oc describe clusterrole <name>出力例:
Name: vm-manager-access Labels: <none> Annotations: <none> PolicyRule: Resources Non-Resource URLs Resource Names Verbs --------- ----------------- -------------- ----- virtualmachines/start, virtualmachines/stop with subresources.kubevirt.io group [] [] [put]作成したクラスターロールをターゲットユーザーまたはグループにバインドするための
ClusterRoleBindingオブジェクトを作成します。apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: vm-manager-access-binding subjects: - kind: User name: test-user apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: vm-manager-access apiGroup: rbac.authorization.k8s.ioクラスターロールバインディングを適用するには、次のコマンドを実行します。
$ oc apply -f <filename>.yaml次のコマンドを実行して出力をチェックし、クラスターロールバインディングが作成されたことを確認します。
$ oc get clusterrolebinding <name>出力例:
NAME AGE vm-manager-access-binding 15s
検証
次のコマンドを実行して、ユーザーが仮想マシンを起動できるかどうかを確認します。
$ oc auth can-i update virtualmachines/start --namespace=<namespace> --as=<user_name> --subresource=subresources.kubevirt.io出力例:
yes次のコマンドを実行して、ユーザーが仮想マシンを停止できるかどうかを確認します。
$ oc auth can-i update virtualmachines/stop --namespace=<namespace> --as=<user_name> --group=subresources.kubevirt.io出力例:
yes