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)

手順

  1. サブスクライブするクラスターで、プロジェクトと virt-who という名前のサービスアカウントを作成します。

    $ oc new-project virt-who
    $ oc create serviceaccount virt-who
  2. ノードおよび仮想マシンインスタンスを一覧表示するためのクラスターロールを作成します。

    $ oc create clusterrole lsnodes --verb=list --resource=nodes
    $ oc create clusterrole lsvmis --verb=list --resource=vmis
  3. クラスターロールバインディングを作成します。

    $ 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
  4. virt-who システムアカウントに、実行中のすべての VM をリスト表示する権限があることを確認します。

    $ oc get vmis -A --as=system:serviceaccount:virt-who:virt-who
  5. ホスト (または OpenShift Virtualization で実行している仮想マシン) に virt-who をインストールします。

    [virtwho-host]$ yum install virt-who
  6. サブスクライブしているホストで、所有者番号を見つけます。

    $ subscription-manager orgs
  7. テンプレート設定ファイルを新規の個別の設定ファイルにコピーします。トラブルシューティングの際に設定ファイルを簡単に特定できるように、クラスター 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>
  8. virt-who サービスアカウントのトークンを取得します。

    # oc serviceaccounts get-token virt-who
  9. /usr/bin/oc が利用できない場合は、/usr/bin/oc をインストールし、トークンを使用してログインして有効な kubeconfig ファイルを作成します。url を指定して、クラスター api を指定する必要があります。以下に例を示します。

    [virtwho-host]# oc login https://api.testcluster-1.example.org:6443 --token=<token>
    1. 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.pem
    2. kubeconfig ファイルは、抽出した 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
  10. サービスを開始する前に、設定を手動でテストできます。

    [virtwho-host]# virt-who --print
注記

jq プログラムがインストールされている場合は、# virt-who --print | jq のように、そのプログラムを使用して出力を簡素化できます。

  1. virt-who サービスを有効にします。

    [virtwho-host]# systemctl enable virt-who
  2. virt-who サービスを再起動して、新しい設定を使用します。

    [virtwho-host]# systemctl restart virt-who

virt-who ログは、/var/log/rhsm/rhsm.log にあります。このファイルで、設定または接続エラーを確認できます。