12.6.2. MTV プロバイダーで使用する長期間有効なサービスアカウントとトークンを作成する
Migration Toolkit for Virtualization (MTV) Web コンソールで OpenShift Virtualization プロバイダーを登録する場合、MTV がクラスターと対話できるようにする認証情報を提供する必要があります。長期間有効なサービスアカウントとクラスターロールバインディングを作成すると、移行中に仮想マシンリソースの読み取りと作成を行うための永続的な権限が MTV に付与されます。
手順
次の例に示すように、クラスターロールを作成します。
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: live-migration-role rules: - apiGroups: - forklift.konveyor.io resources: - '*' verbs: - get - list - watch - apiGroups: - "" resources: - secrets - namespaces - configmaps - persistentvolumes - persistentvolumeclaims verbs: - get - list - watch - create - update - patch - delete - apiGroups: - k8s.cni.cncf.io resources: - network-attachment-definitions verbs: - get - list - watch - apiGroups: - storage.k8s.io resources: - storageclasses verbs: - get - list - watch - apiGroups: - kubevirt.io resources: - virtualmachines - virtualmachines/finalizers - virtualmachineinstancemigrations verbs: - get - list - watch - create - update - patch - delete - apiGroups: - kubevirt.io resources: - kubevirts - virtualmachineinstances verbs: - get - list - watch - apiGroups: - cdi.kubevirt.io resources: - datavolumes - datavolumes/finalizers verbs: - get - list - watch - create - update - patch - delete - apiGroups: - apps resources: - deployments verbs: - get - list - watch - create - update - patch - delete - apiGroups: - instancetype.kubevirt.io resources: - virtualmachineclusterpreferences - virtualmachineclusterinstancetypes verbs: - get - list - watch - apiGroups: - instancetype.kubevirt.io resources: - virtualmachinepreferences - virtualmachineinstancetypes verbs: - get - list - watch - create - update - patch - delete次のコマンドを実行して、クラスターのロールを作成します。
$ oc create -f <filename>.yaml次のコマンドを実行してサービスアカウントを作成します。
$ oc create serviceaccount <service_account_name> -n <service_account_namespace>次のコマンドを実行して、サービスアカウントをクラスターロールにリンクするクラスターロールバインディングを作成します。
$ oc create clusterrolebinding <service_account_name> --clusterrole=<cluster_role_name> --serviceaccount=<service_account_namespace>:<service_account_name>次のマニフェストを YAML ファイルとして保存して、トークンを保持するシークレットを作成します。
apiVersion: v1 kind: Secret metadata: name: <name_of_secret> namespace: <namespace_for_service_account> annotations: kubernetes.io/service-account.name: <service_account_name> type: kubernetes.io/service-account-token次のコマンドを実行してマニフェストを適用します。
$ oc apply -f <filename>.yamlシークレットが入力されたら、次のコマンドを実行してサービスアカウントベアラートークンを取得します。
$ TOKEN_BASE64=$(oc get secret "<name_of_secret>" -n "<namespace_bound_to_service_account>" -o jsonpath='{.data.token}') TOKEN=$(echo "$TOKEN_BASE64" | base64 --decode) echo "$TOKEN"- 出力されたトークンをコピーします。
- Migration Toolkit for Virtualization (MTV) Web コンソールでプロバイダーを作成し、OpenShift Virtualization を選択するときに、トークンを Service account bearer token フィールドにペーストします。