9.5.2.3. VNC コンソールの一時トークンの生成
Kubernetes API が仮想マシン (VM) の VNC にアクセスするための一時的な認証ベアラートークンを生成します。
Kubernetes は、curl コマンドを変更することで、ベアラートークンの代わりにクライアント証明書を使用した認証もサポートします。
前提条件
-
OpenShift Virtualization 4.14 以降および
ssp-operator4.14 以降を搭載した実行中の仮想マシン。 -
OpenShift CLI (
oc) がインストールされている。
手順
HyperConverged(HCO) カスタムリソース (CR) のdeployVmConsoleProxyフィールドの値をtrueに設定します。$ oc patch hyperconverged kubevirt-hyperconverged -n openshift-cnv --type json -p '[{"op": "replace", "path": "/spec/deployVmConsoleProxy", "value": true}]'次のコマンドを入力してトークンを生成します。
$ curl --header "Authorization: Bearer ${TOKEN}" \ "https://api.<cluster_fqdn>/apis/token.kubevirt.io/v1alpha1/namespaces/<namespace>/virtualmachines/<vm_name>/vnc?duration=<duration>"<duration>パラメーターは時間と分で設定でき、最小期間は 10 分です。たとえば、5h30mです。このパラメーターを設定しない場合、トークンの有効期限はデフォルトで 10 分となります。出力サンプル
{ "token": "eyJhb..." }オプション: 出力で提供されたトークンを使用して変数を作成します。
$ export VNC_TOKEN="<token>"これで、トークンを使用して、仮想マシンの VNC コンソールにアクセスできるようになります。
検証
次のコマンドを入力してクラスターにログインします。
$ oc login --token ${VNC_TOKEN}virtctlコマンドを使用して、仮想マシンの VNC コンソールへのアクセスをテストします。$ virtctl vnc <vm_name> -n <namespace>
現在、特定のトークンを取り消すことはできません。
トークンを取り消すには、トークンの作成に使用したサービスアカウントを削除する必要があります。ただし、これにより、サービスアカウントを使用して作成した他のすべてのトークンも無効になります。次のコマンドは注意して使用してください。
$ virtctl delete serviceaccount --namespace "<namespace>" "<vm_name>-vnc-access"
9.5.2.3.1. クラスターロールを使用して VNC コンソールにトークン生成パーミッションを付与する リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者は、クラスターロールをインストールし、それをユーザーまたはサービスアカウントにバインドして、VNC コンソールのトークンを生成するエンドポイントへのアクセスを許可できます。
手順
クラスターロールをユーザーまたはサービスアカウントにバインドすることを選択します。
クラスターロールをユーザーにバインドするには、次のコマンドを実行します。
$ kubectl create rolebinding "${ROLE_BINDING_NAME}" --clusterrole="token.kubevirt.io:generate" --user="${USER_NAME}"以下のコマンドを実行してクラスターロールをサービスアカウントにバインドします。
$ kubectl create rolebinding "${ROLE_BINDING_NAME}" --clusterrole="token.kubevirt.io:generate" --serviceaccount="${SERVICE_ACCOUNT_NAME}"