4.4. OpenShift Virtualization に接続するための virt-who の設定
サポート対象のプラットフォーム
virt-who による OpenShift Virtualization のサポート状況。
- virt-who-0.28.x-1.el7 (RHEL 7.9)
- virt-who-0.29.x-1.el8 (RHEL 8.3)
手順
サブスクライブするクラスターで、プロジェクトと virt-who という名前のサービスアカウントを作成します。
$ oc new-project virt-who $ oc create serviceaccount virt-who
ノードおよび仮想マシンインスタンスを一覧表示するためのクラスターロールを作成します。
$ oc create clusterrole lsnodes --verb=list --resource=nodes $ oc create clusterrole lsvmis --verb=list --resource=vmis
クラスターロールバインディングを作成します。
$ oc adm policy add-cluster-role-to-user lsnodes system:serviceaccount:virt-who:virt-who $ oc adm policy add-cluster-role-to-user lsvmis system:serviceaccount:virt-who:virt-who
virt-who システムアカウントに、実行中のすべての VM をリスト表示する権限があることを確認します。
$ oc get vmis -A --as=system:serviceaccount:virt-who:virt-who
ホスト (または OpenShift Virtualization で実行している仮想マシン) に virt-who をインストールします。
[virtwho-host]$ yum install virt-who
サブスクライブしているホストで、所有者番号を見つけます。
$ subscription-manager orgs
テンプレート設定ファイルを新規の個別の設定ファイルにコピーします。トラブルシューティングの際に設定ファイルを簡単に特定できるように、クラスター API のホスト名を使用します。この例では、ホスト名は
openshift-cluster-1です。[virtwho-host]# cp /etc/virt-who.d/template.conf /etc/virt-who.d/openshift-cluster-1.conf [cnv] type=kubevirt kubeconfig=/root/.kube/config hypervisor_id=hostname owner=<owner_number>
virt-who サービスアカウントのトークンを取得します。
# oc serviceaccounts get-token virt-who
/usr/bin/ocが利用できない場合は、/usr/bin/ocをインストールし、トークンを使用してログインして有効な kubeconfig ファイルを作成します。url を指定して、クラスター api を指定する必要があります。以下に例を示します。[virtwho-host]# oc login https://api.testcluster-1.example.org:6443 --token=<token>
kubeconfig ファイルで OpenShift Virtualization の certificate-authority (CA) 証明書を使用するには、クラスターから抽出してコントローラーデーモンとして virt-who を実行しているシステムのファイルに保存します。
oc get secret -n openshift-kube-apiserver-operator loadbalancer-serving-signer -o jsonpath='{.data.tls\.crt}' | base64 -d > $cluster-ca.pemkubeconfig ファイルは、抽出した CA 証明書を含めるように変更します。以下に例を示します。
[virtwho-host]$ cat /root/.kube/config apiVersion: v1 clusters: - cluster: server: https://api.testcluster.example.org:6443 certificate-authority: /root/testcluster-ca.pem name: api-testcluster-example-org:6443 contexts: - context: cluster: api-test-cluster-example-org:6443 namespace: default
サービスを開始する前に、設定を手動でテストできます。
[virtwho-host]# virt-who --print
jq プログラムがインストールされている場合は、# virt-who --print | jq のように、そのプログラムを使用して出力を簡素化できます。
virt-who サービスを有効にします。
[virtwho-host]# systemctl enable virt-who
virt-who サービスを再起動して、新しい設定を使用します。
[virtwho-host]# systemctl restart virt-who
virt-who ログは、/var/log/rhsm/rhsm.log にあります。このファイルで、設定または接続エラーを確認できます。