3.3. CLI でピア Pod を使用した OpenShift Sandboxed Containers ワークロードのデプロイ
CLI を使用して、OpenShift Sandboxed Containers のワークロードをデプロイできます。まず、OpenShift Sandboxed Containers Operator をインストールしてから、KataConfig カスタムリソースを作成する必要があります。Sandboxed Containers にワークロードをデプロイする準備ができたら、kata-remote を runtimeClassName としてワークロード YAML ファイルに追加する必要があります。
3.3.1. CLI を使用したSandboxed Containers Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform CLI から OpenShift サンドボックスコンテナー Operator をインストールできます。
前提条件
- クラスターに OpenShift Container Platform 4.15 がインストールされている。
IBM Z または IBM® LinuxONE へのインストールには、OpenShift Container Platform 4.14 以降がインストールされている。
重要IBM Z でのピア Pod を使用した OpenShift Sandboxed Containers ワークロードのデプロイは、テクノロジープレビューとしてのみ提供されています。テクノロジープレビュー機能は、Red Hat 製品サポートのサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではない場合があります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 OpenShift Sandboxed Containers カタログにサブスクライブしている。
注記OpenShift Sandboxed Containers カタログにサブスクライブすると、
openshift-sandboxed-containers-operatornamespace の OpenShift Sandboxed Containers Operator にアクセスできるようになります。
手順
OpenShift Sandboxed Containers Operator の
Namespaceオブジェクトを作成します。次のマニフェストを含む
Namespaceオブジェクト YAML ファイルを作成します。apiVersion: v1 kind: Namespace metadata: name: openshift-sandboxed-containers-operator
apiVersion: v1 kind: Namespace metadata: name: openshift-sandboxed-containers-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow Namespaceオブジェクトを作成します。oc create -f Namespace.yaml
$ oc create -f Namespace.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
OpenShift Sandboxed Containers Operator の
OperatorGroupオブジェクトを作成します。次のマニフェストを含む
OperatorGroupオブジェクト YAML ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow OperatorGroupオブジェクトを作成します。oc create -f OperatorGroup.yaml
$ oc create -f OperatorGroup.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Subscriptionオブジェクトを作成して、Namespaceを OpenShift Sandboxed Containers Operator にサブスクライブします。次のマニフェストを含む
Subscriptionオブジェクト YAML ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Subscriptionオブジェクトを作成します。oc create -f Subscription.yaml
$ oc create -f Subscription.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
これで、OpenShift Sandboxed Containers Operator がクラスターにインストールされました。
上記のオブジェクトファイル名はすべて提案です。他の名前を使用してオブジェクト YAML ファイルを作成できます。
検証
Operator が正常にインストールされていることを確認します。
oc get csv -n openshift-sandboxed-containers-operator
$ oc get csv -n openshift-sandboxed-containers-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME DISPLAY VERSION REPLACES PHASE openshift-sandboxed-containers openshift-sandboxed-containers-operator 1.5.3 1.5.2 Succeeded
NAME DISPLAY VERSION REPLACES PHASE openshift-sandboxed-containers openshift-sandboxed-containers-operator 1.5.3 1.5.2 SucceededCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.2. CLI を使用した AWS のピア Pod の設定 リンクのコピーリンクがクリップボードにコピーされました!
AWS で使用するピア Pod を設定するには、シークレットオブジェクト、AWS イメージ VM (AMI)、およびピア Pod の ConfigMap を作成する必要があります。
AWS のピア Pod を設定した後に、ピア Pod を使用して OpenShift Sandboxed Containers をデプロイするには、KataConfig カスタムリソース (CR) を作成する必要があります。
前提条件
- クラスターに OpenShift Container Platform 4.15 がインストールされている。
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 - OpenShift Sandboxed Containers Operator をインストールしている。
3.3.2.1. CLI を使用した AWS のシークレットオブジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
AWS アクセスキーを指定してシークレットオブジェクトでネットワークを設定します。シークレットオブジェクトは、Pod 仮想マシンイメージの作成に使用され、ピア Pod によって使用されます。
AWS のシークレットオブジェクトを作成するときは、特定の環境値を設定する必要があります。シークレットオブジェクトを作成する前に、これらの値の一部を取得できます。ただし、次の値を準備しておく必要があります。
-
AWS_ACCESS_KEY_ID -
AWS_SECRET_ACCESS_KEY
これらの値は、AWS コンソールで生成できます。
手順
シークレットオブジェクトに必要なパラメーター値を収集します。それぞれの値を必ず書き留めてください。
インスタンス ID を取得します。
INSTANCE_ID=$(oc get nodes -l 'node-role.kubernetes.io/worker' -o jsonpath='{.items[0].spec.providerID}' | sed 's#[^ ]*/##g')$ INSTANCE_ID=$(oc get nodes -l 'node-role.kubernetes.io/worker' -o jsonpath='{.items[0].spec.providerID}' | sed 's#[^ ]*/##g')Copy to Clipboard Copied! Toggle word wrap Toggle overflow この値はシークレットオブジェクト自体には必要ありませんが、シークレットオブジェクトの他の値を取得するために使用されます。
AWS リージョンを取得します。
AWS_REGION=$(oc get infrastructure/cluster -o jsonpath='{.status.platformStatus.aws.region}') && echo "AWS_REGION: \"$AWS_REGION\""$ AWS_REGION=$(oc get infrastructure/cluster -o jsonpath='{.status.platformStatus.aws.region}') && echo "AWS_REGION: \"$AWS_REGION\""Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS サブネット ID を取得します。
AWS_SUBNET_ID=$(aws ec2 describe-instances --instance-ids ${INSTANCE_ID} --query 'Reservations[*].Instances[*].SubnetId' --region ${AWS_REGION} --output text) && echo "AWS_SUBNET_ID: \"$AWS_SUBNET_ID\""$ AWS_SUBNET_ID=$(aws ec2 describe-instances --instance-ids ${INSTANCE_ID} --query 'Reservations[*].Instances[*].SubnetId' --region ${AWS_REGION} --output text) && echo "AWS_SUBNET_ID: \"$AWS_SUBNET_ID\""Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS VPC ID を取得します。
AWS_VPC_ID=$(aws ec2 describe-instances --instance-ids ${INSTANCE_ID} --query 'Reservations[*].Instances[*].VpcId' --region ${AWS_REGION} --output text) && echo "AWS_VPC_ID: \"$AWS_VPC_ID\""$ AWS_VPC_ID=$(aws ec2 describe-instances --instance-ids ${INSTANCE_ID} --query 'Reservations[*].Instances[*].VpcId' --region ${AWS_REGION} --output text) && echo "AWS_VPC_ID: \"$AWS_VPC_ID\""Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS セキュリティーグループ ID を取得します。
AWS_SG_IDS=$(aws ec2 describe-instances --instance-ids ${INSTANCE_ID} --query 'Reservations[*].Instances[*].SecurityGroups[*].GroupId' --region $AWS_REGION --output json | jq -r '.[][][]' | paste -sd ",") && echo "AWS_SG_IDS: \"$AWS_SG_IDS\""$ AWS_SG_IDS=$(aws ec2 describe-instances --instance-ids ${INSTANCE_ID} --query 'Reservations[*].Instances[*].SecurityGroups[*].GroupId' --region $AWS_REGION --output json | jq -r '.[][][]' | paste -sd ",") && echo "AWS_SG_IDS: \"$AWS_SG_IDS\""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のマニフェストで YAML ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow シークレットオブジェクトを適用します。
oc apply -f peer-pods-secret.yaml
$ oc apply -f peer-pods-secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
シークレットオブジェクトが適用されました。
ピア Pod シークレットを更新する場合は、peerpodconfig-ctrl-caa-daemon daemonset を再起動して変更を適用する必要があります。
シークレットを更新したら、マニフェストを適用します。次に、以下のコマンドを実行して cloud-api-adaptor Pod を再起動します。
oc set env ds/peerpodconfig-ctrl-caa-daemon -n openshift-sandboxed-containers-operator REBOOT="$(date)"
$ oc set env ds/peerpodconfig-ctrl-caa-daemon -n openshift-sandboxed-containers-operator REBOOT="$(date)"
daemonset を再起動すると、ピア Pod が再作成されるので、既存の Pod は更新されないことに注意してください。
3.3.2.2. CLI を使用した AWS 用のピア Pod ConfigMap の作成 リンクのコピーリンクがクリップボードにコピーされました!
AWS の ConfigMap を作成するときは、AMI ID を設定する必要があります。この値は、ConfigMap を作成する前に取得できます。
手順
次のマニフェストで YAML ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ConfigMapを適用します。oc apply -f peer-pods-cm.yaml
$ oc apply -f peer-pods-cm.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ConfigMap が適用されます。
ピア Pod 設定マップを更新する場合は、peerpodconfig-ctrl-caa-daemon daemonset を再起動して変更を適用する必要があります。
設定マップを更新したら、マニフェストを適用します。次に、以下のコマンドを実行して cloud-api-adaptor Pod を再起動します。
oc set env ds/peerpodconfig-ctrl-caa-daemon -n openshift-sandboxed-containers-operator REBOOT="$(date)"
$ oc set env ds/peerpodconfig-ctrl-caa-daemon -n openshift-sandboxed-containers-operator REBOOT="$(date)"
daemonset を再起動すると、ピア Pod が再作成されるので、既存の Pod は更新されないことに注意してください。
KataConfig CR を作成すると、AWS 上のピア Pod を使用して OpenShift Sandboxed Containers を実行できます。
3.3.3. CLI を使用した Azure のピア Pod の設定 リンクのコピーリンクがクリップボードにコピーされました!
Microsoft Azure で使用するピア Pod を設定するには、シークレットオブジェクト、Azure イメージ VM、ピア Pod ConfigMap、および SSH 鍵のシークレットオブジェクトを作成する必要があります。
Azure のピア Pod を設定した後、ピア Pod を使用して OpenShift Sandboxed Containers をデプロイするには、KataConfig カスタムリソース (CR) を作成する必要があります。
前提条件
- クラスターに OpenShift Container Platform 4.15 がインストールされている。
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 - OpenShift Sandboxed Containers Operator をインストールしている。
- Azure CLI ツールをインストールして設定しておく。
3.3.3.1. CLI を使用した Azure のシークレットオブジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
Azure アクセスキーを設定し、シークレットオブジェクトでネットワークを設定します。シークレットオブジェクトは、Pod 仮想マシンイメージの作成に使用され、ピア Pod によって使用されます。
Azure のシークレットオブジェクトを作成するときは、特定の環境値を設定する必要があります。これらの値は、シークレットオブジェクトを作成する前に取得できます。ロールベースのアクセス制御 (RBAC) ファイルも作成する必要があります。このファイルでは以下の値が生成されます。
-
AZURE_CLIENT_ID -
AZURE_CLIENT_SECRET -
AZURE_TENANT_ID
手順
Azure サブスクリプション ID を取得します。
AZURE_SUBSCRIPTION_ID=$(az account list --query "[?isDefault].id" -o tsv) && echo "AZURE_SUBSCRIPTION_ID: \"$AZURE_SUBSCRIPTION_ID\""
$ AZURE_SUBSCRIPTION_ID=$(az account list --query "[?isDefault].id" -o tsv) && echo "AZURE_SUBSCRIPTION_ID: \"$AZURE_SUBSCRIPTION_ID\""Copy to Clipboard Copied! Toggle word wrap Toggle overflow RBAC コンテンツを生成します。これにより、クライアント ID、クライアントシークレット、およびテナント ID が生成されます。
az ad sp create-for-rbac --role Contributor --scopes /subscriptions/$AZURE_SUBSCRIPTION_ID --query "{ client_id: appId, client_secret: password, tenant_id: tenant }$ az ad sp create-for-rbac --role Contributor --scopes /subscriptions/$AZURE_SUBSCRIPTION_ID --query "{ client_id: appId, client_secret: password, tenant_id: tenant }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の出力が表示されます。
{ "client_id": `AZURE_CLIENT_ID`, "client_secret": `AZURE_CLIENT_SECRET`, "tenant_id": `AZURE_TENANT_ID` }{ "client_id": `AZURE_CLIENT_ID`, "client_secret": `AZURE_CLIENT_SECRET`, "tenant_id": `AZURE_TENANT_ID` }Copy to Clipboard Copied! Toggle word wrap Toggle overflow - シークレットオブジェクトで使用するために、RBAC 出力の値を保存します。
シークレットオブジェクトの追加のパラメーター値を収集します。それぞれの値を必ず書き留めてください。
リソースグループを取得します。
AZURE_RESOURCE_GROUP=$(oc get infrastructure/cluster -o jsonpath='{.status.platformStatus.azure.resourceGroupName}') && echo "AZURE_RESOURCE_GROUP: \"$AZURE_RESOURCE_GROUP\""$ AZURE_RESOURCE_GROUP=$(oc get infrastructure/cluster -o jsonpath='{.status.platformStatus.azure.resourceGroupName}') && echo "AZURE_RESOURCE_GROUP: \"$AZURE_RESOURCE_GROUP\""Copy to Clipboard Copied! Toggle word wrap Toggle overflow Azure リージョンを取得します。
AZURE_REGION=$(az group show --resource-group ${AZURE_RESOURCE_GROUP} --query "{Location:location}" --output tsv) && echo "AZURE_REGION: \"$AZURE_REGION\""$ AZURE_REGION=$(az group show --resource-group ${AZURE_RESOURCE_GROUP} --query "{Location:location}" --output tsv) && echo "AZURE_REGION: \"$AZURE_REGION\""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のマニフェストで YAML ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow シークレットオブジェクトを適用します。
oc apply -f peer-pods-secret.yaml
$ oc apply -f peer-pods-secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
シークレットオブジェクトが適用されました。
ピア Pod シークレットを更新する場合は、peerpodconfig-ctrl-caa-daemon daemonset を再起動して変更を適用する必要があります。
シークレットを更新したら、マニフェストを適用します。次に、以下のコマンドを実行して cloud-api-adaptor Pod を再起動します。
oc set env ds/peerpodconfig-ctrl-caa-daemon -n openshift-sandboxed-containers-operator REBOOT="$(date)"
$ oc set env ds/peerpodconfig-ctrl-caa-daemon -n openshift-sandboxed-containers-operator REBOOT="$(date)"
daemonset を再起動すると、ピア Pod が再作成されるので、既存の Pod は更新されないことに注意してください。
3.3.3.2. CLI を使用した Azure のピア Pod ConfigMap の作成 リンクのコピーリンクがクリップボードにコピーされました!
Azure の ConfigMap を作成するときは、特定の設定値を指定する必要があります。これらの値は、ConfigMap を作成する前に取得できます。
手順
Azure ピア Pod
ConfigMapの設定値を収集します。それぞれの値を必ず書き留めてください。Azure VNet 名を取得します。
AZURE_VNET_NAME=$(az network vnet list --resource-group ${AZURE_RESOURCE_GROUP} --query "[].{Name:name}" --output tsv)$ AZURE_VNET_NAME=$(az network vnet list --resource-group ${AZURE_RESOURCE_GROUP} --query "[].{Name:name}" --output tsv)Copy to Clipboard Copied! Toggle word wrap Toggle overflow この値は
ConfigMapには必要ありませんが、Azure サブネット ID を取得するために使用されます。Azure サブネット ID を取得します。
AZURE_SUBNET_ID=$(az network vnet subnet list --resource-group ${AZURE_RESOURCE_GROUP} --vnet-name $AZURE_VNET_NAME --query "[].{Id:id} | [? contains(Id, 'worker')]" --output tsv) && echo "AZURE_SUBNET_ID: \"$AZURE_SUBNET_ID\""$ AZURE_SUBNET_ID=$(az network vnet subnet list --resource-group ${AZURE_RESOURCE_GROUP} --vnet-name $AZURE_VNET_NAME --query "[].{Id:id} | [? contains(Id, 'worker')]" --output tsv) && echo "AZURE_SUBNET_ID: \"$AZURE_SUBNET_ID\""Copy to Clipboard Copied! Toggle word wrap Toggle overflow Azure ネットワークセキュリティーグループ (NSG) ID を取得します。
AZURE_NSG_ID=$(az network nsg list --resource-group ${AZURE_RESOURCE_GROUP} --query "[].{Id:id}" --output tsv) && echo "AZURE_NSG_ID: \"$AZURE_NSG_ID\""$ AZURE_NSG_ID=$(az network nsg list --resource-group ${AZURE_RESOURCE_GROUP} --query "[].{Id:id}" --output tsv) && echo "AZURE_NSG_ID: \"$AZURE_NSG_ID\""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のマニフェストで YAML ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ConfigMapを適用します。oc apply -f peer-pods-cm.yaml
$ oc apply -f peer-pods-cm.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ConfigMap がデプロイされました。
ピア Pod 設定マップを更新する場合は、peerpodconfig-ctrl-caa-daemon daemonset を再起動して変更を適用する必要があります。
設定マップを更新したら、マニフェストを適用します。次に、以下のコマンドを実行して cloud-api-adaptor Pod を再起動します。
oc set env ds/peerpodconfig-ctrl-caa-daemon -n openshift-sandboxed-containers-operator REBOOT="$(date)"
$ oc set env ds/peerpodconfig-ctrl-caa-daemon -n openshift-sandboxed-containers-operator REBOOT="$(date)"
daemonset を再起動すると、ピア Pod が再作成されるので、既存の Pod は更新されないことに注意してください。
3.3.3.3. CLI を使用した Azure の SSH 鍵のシークレットオブジェクト作成 リンクのコピーリンクがクリップボードにコピーされました!
Azure でピア Pod を使用するには、SSH 鍵を生成し、SSH 鍵のシークレットオブジェクトを作成する必要があります。
手順
SSH 鍵を生成します。
ssh-keygen -f ./id_rsa -N ""
$ ssh-keygen -f ./id_rsa -N ""Copy to Clipboard Copied! Toggle word wrap Toggle overflow SSH シークレットオブジェクトを作成します。
oc create secret generic ssh-key-secret -n openshift-sandboxed-containers-operator --from-file=id_rsa.pub=./id_rsa.pub --from-file=id_rsa=./id_rsa
$ oc create secret generic ssh-key-secret -n openshift-sandboxed-containers-operator --from-file=id_rsa.pub=./id_rsa.pub --from-file=id_rsa=./id_rsaCopy to Clipboard Copied! Toggle word wrap Toggle overflow
SSH 鍵が作成され、SSH 鍵のシークレットオブジェクトが作成されます。KataConfig CR を作成すると、Azure 上のピア Pod を使用して OpenShift Sandboxed Containers を実行できます。
3.3.4. CLI を使用した IBM Z のピア Pod のセットアップ リンクのコピーリンクがクリップボードにコピーされました!
IBM Z 上で実行している OpenShift Container Platform クラスターで使用するピア Pod をセットアップするには、シークレットオブジェクト、RHEL KVM イメージ仮想マシン、およびピア Pod ConfigMap を作成する必要があります。これらは、libvirt と KVM ホストとの間の通信に必要な認証情報を保持します。
IBM Z のピア Pod を設定した後に、ピア Pod を使用して OpenShift Sandboxed Containers をデプロイするには、KataConfig カスタムリソース (CR) を作成する必要があります。
前提条件
- OpenShift Container Platform 4.14 以降がクラスターにインストールされている。
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 - OpenShift Sandboxed Containers Operator をインストールしている。
- KVM ホストに libvirt がインストールされており、管理者権限が割り当てられている。
3.3.4.1. KVM ホストでの libvirt のセットアップ リンクのコピーリンクがクリップボードにコピーされました!
KVM ホスト上に libvirt をセットアップする必要があります。IBM Z 上のピア Pod は、クラウド API アダプターの libvirt プロバイダーを使用して仮想マシンを作成および管理します。
手順
IBM Z KVM ホストにログインし、libvirt がストレージ管理に使用するシェル変数を設定します。
次のコマンドを実行して、libvirt プールの名前を設定します。
export LIBVIRT_POOL=<name_of_libvirt_pool_to_create>
$ export LIBVIRT_POOL=<name_of_libvirt_pool_to_create>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、libvirt プールの名前を設定します。
export LIBVIRT_VOL_NAME=<name_of_libvirt_volume_to_create>
$ export LIBVIRT_VOL_NAME=<name_of_libvirt_volume_to_create>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、デフォルトのストレージプールの場所のパスを設定します。
export LIBVIRT_POOL_DIRECTORY=<name_of_target_directory>
$ export LIBVIRT_POOL_DIRECTORY=<name_of_target_directory>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- libvirt に読み取りおよび書き込みアクセス許可があることを確認するには、libvirt のストレージディレクトリーのサブディレクトリーを使用します。デフォルトは
/var/lib/libvirt/images/です。
次のコマンドを実行して、libvirt プールを作成します。
virsh pool-define-as $LIBVIRT_POOL --type dir --target "$LIBVIRT_POOL_DIRECTORY"
$ virsh pool-define-as $LIBVIRT_POOL --type dir --target "$LIBVIRT_POOL_DIRECTORY"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、libvirt プールを開始します。
virsh pool-start $LIBVIRT_POOL
$ virsh pool-start $LIBVIRT_POOLCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、プールの libvirt ボリュームを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.4.2. IBM Z 用のピア PodVM イメージの作成 リンクのコピーリンクがクリップボードにコピーされました!
IBM Z 上でピア Pod を使用して OpenShift Sandboxed Containers を実行するには、まず、libvirt プロバイダーがピア Pod VM を起動する KVM ゲストを作成する必要があります。
イメージが作成されたら、前の手順で作成したボリュームにイメージをアップロードします。
前提条件
- IBM z15 以降、または IBM® LinuxONE III 以降。
- KVM を備えた RHEL 9 以降で実行している少なくとも 1 つの LPAR。
手順
システムの RHEL
ORG_IDおよびACTIVATION_KEYシェル変数を設定します。サブスクライブされた RHEL システムを使用する場合は、次のコマンドを実行して、組織 ID と Red Hat Subscription Management (RHSM) のアクティベーションキーを保持するファイルにシェル環境変数を設定します。
export ORG_ID=$(cat ~/.rh_subscription/orgid) $ export ACTIVATION_KEY=$(cat ~/.rh_subscription/activation_key)
$ export ORG_ID=$(cat ~/.rh_subscription/orgid) $ export ACTIVATION_KEY=$(cat ~/.rh_subscription/activation_key)Copy to Clipboard Copied! Toggle word wrap Toggle overflow サブスクライブされていない RHEL システムを使用する場合は、次のコマンドを実行して適切なサブスクリプション値を設定します。
export ORG_ID=<RHEL_ORGID_VALUE> export ACTIVATION_KEY=<RHEL_ACVTIVATION_KEY>
$ export ORG_ID=<RHEL_ORGID_VALUE> $ export ACTIVATION_KEY=<RHEL_ACVTIVATION_KEY>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
IBM Z システムにログインし、以下の手順を実行します。
-
s390xRHEL KVM ゲストイメージを Red Hat カスタマーポータル から libvirt ストレージディレクトリーにダウンロードして、libvirt に正しいアクセスを許可します。デフォルトのディレクトリーは/var/lib/libvirt/imagesです。このイメージは、関連するバイナリーを含むピア Pod VM イメージを生成するために使用されます。 次のコマンドを実行して、ダウンロードしたイメージの
IMAGE_URLシェル環境変数を設定します。export IMAGE_URL=<location_of_downloaded_KVM_guest_image>
$ export IMAGE_URL=<location_of_downloaded_KVM_guest_image>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 前の手順でダウンロードした KVM ゲストイメージのパスを入力します。
次のコマンドを実行して、ゲスト KVM イメージを登録します。
export REGISTER_CMD="subscription-manager register --org=${ORG_ID} \ --activationkey=${ACTIVATION_KEY}"$ export REGISTER_CMD="subscription-manager register --org=${ORG_ID} \ --activationkey=${ACTIVATION_KEY}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ゲスト KVM イメージをカスタマイズします。
virt-customize -v -x -a ${IMAGE_URL} --run-command "${REGISTER_CMD}"$ virt-customize -v -x -a ${IMAGE_URL} --run-command "${REGISTER_CMD}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、イメージのチェックサムを設定します。
export IMAGE_CHECKSUM=$(sha256sum ${IMAGE_URL} | awk '{ print $1 }')$ export IMAGE_CHECKSUM=$(sha256sum ${IMAGE_URL} | awk '{ print $1 }')Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
3.3.4.2.1. ピア Pod VM QCOW2 イメージの構築 リンクのコピーリンクがクリップボードにコピーされました!
IBM Z 上でピア Pod を使用して OpenShift Sandboxed Containers を実行するには、ピア Pod VM QCOW2 イメージを構築する必要があります。
手順
次のコマンドを実行して、cloud-api-adaptor リポジトリーのクローンをビルドワークステーションに作成します。
git clone --single-branch https://github.com/confidential-containers/cloud-api-adaptor.git
$ git clone --single-branch https://github.com/confidential-containers/cloud-api-adaptor.gitCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
podvmディレクトリーに移動します。cd cloud-api-adaptor && git checkout 8577093
$ cd cloud-api-adaptor && git checkout 8577093Copy to Clipboard Copied! Toggle word wrap Toggle overflow 最終的な QCOW2 イメージの生成元となるビルダーイメージを作成します。
サブスクライブされた RHEL システムを使用する場合は、次のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow サブスクライブされていない RHEL システムを使用する場合は、次のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のコマンドを実行して、ピア Pod を実行するために必要なバイナリーを含む中間イメージパッケージを生成します。
podman build -t podvm_binaries_rhel_s390x \ --build-arg BUILDER_IMG="podvm_builder_rhel_s390x:latest" \ --build-arg ARCH=s390x \ -f podvm/Dockerfile.podvm_binaries.rhel .
$ podman build -t podvm_binaries_rhel_s390x \ --build-arg BUILDER_IMG="podvm_builder_rhel_s390x:latest" \ --build-arg ARCH=s390x \ -f podvm/Dockerfile.podvm_binaries.rhel .Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記このプロセスにはかなりの時間がかかることが予想されます。
次のコマンドを実行して、バイナリーを抽出し、ピア Pod QCOW2 イメージを構築します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ピア Pod QCOW2 イメージを選択したディレクトリーに抽出します。
export IMAGE_OUTPUT_DIR=<image_output_directory> mkdir -p $IMAGE_OUTPUT_DIR podman save podvm_rhel_s390x | tar -xO --no-wildcards-match-slash '*.tar' | tar -x -C ${IMAGE_OUTPUT_DIR}$ export IMAGE_OUTPUT_DIR=<image_output_directory>1 $ mkdir -p $IMAGE_OUTPUT_DIR $ podman save podvm_rhel_s390x | tar -xO --no-wildcards-match-slash '*.tar' | tar -x -C ${IMAGE_OUTPUT_DIR}Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 最終的な QCOW イメージを抽出する
image_output_directoryを入力します。
ピア Pod QCOW2 イメージを libvirt ボリュームにアップロードします。
virsh -c qemu:///system vol-upload \ --vol $LIBVIRT_VOL_NAME \ $IMAGE_OUTPUT_DIR/podvm-*.qcow2 \ --pool $LIBVIRT_POOL --sparse
$ virsh -c qemu:///system vol-upload \ --vol $LIBVIRT_VOL_NAME \ $IMAGE_OUTPUT_DIR/podvm-*.qcow2 \ --pool $LIBVIRT_POOL --sparseCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.4.3. ピア Pod 認証情報の RHEL シークレットの作成 リンクのコピーリンクがクリップボードにコピーされました!
IBM Z のシークレットオブジェクトを作成するときは、特定の環境値を設定する必要があります。シークレットオブジェクトを作成する前に、これらの値の一部を取得できます。ただし、次の値を準備しておく必要があります。
-
LIBVIRT_POOL -
LIBVIRT_VOL_NAME -
LIBVIRT_URI
LIBVIRT_URI は、libvirt ネットワークのデフォルトゲートウェイ IP アドレスです。この値を取得するには、libvirt ネットワーク設定を確認してください。
libvirt インストールでデフォルトのブリッジ仮想ネットワークを使用している場合は、次のコマンドを実行して LIBVIRT_URI を取得できます。
virtint=$(bridge_line=$(virsh net-info default | grep Bridge); echo "${bridge_line//Bridge:/}" | tr -d [:blank:])
LIBVIRT_URI=$( ip -4 addr show $virtint | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
$ virtint=$(bridge_line=$(virsh net-info default | grep Bridge); echo "${bridge_line//Bridge:/}" | tr -d [:blank:])
$ LIBVIRT_URI=$( ip -4 addr show $virtint | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
手順
次のマニフェストを使用して YAML ファイル
peer-pods-secret.yamlを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow シークレットオブジェクトを作成します。
oc apply -f peer-pods-secret.yaml
$ oc apply -f peer-pods-secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
シークレットオブジェクトが適用されました。
3.3.4.4. CLI を使用した IBM Z のピア Pod ConfigMap の作成 リンクのコピーリンクがクリップボードにコピーされました!
IBM Z の ConfigMap を作成するときは、libvirt プロバイダーを使用する必要があります。
手順
次のマニフェストを使用して YAML ファイル
peer-pods-cm.yamlを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ConfigMapを適用します。oc apply -f peer-pods-cm.yaml
$ oc apply -f peer-pods-cm.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ConfigMap が適用されます。
3.3.4.5. CLI を使用した IBM Z の SSH キーのシークレットオブジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
IBM Z でピア Pod を使用するには、SSH 鍵ピアを生成し、SSH 鍵のシークレットオブジェクトを作成する必要があります。
手順
SSH 鍵を生成します。
ssh-keygen -f ./id_rsa -N ""
$ ssh-keygen -f ./id_rsa -N ""Copy to Clipboard Copied! Toggle word wrap Toggle overflow SSH 公開キーを KVM ホストにコピーします。
ssh-copy-id -i ./id_rsa.pub <KVM_HOST_ADDRESS>
$ ssh-copy-id -i ./id_rsa.pub <KVM_HOST_ADDRESS>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- KVM ホストの IP アドレスを入力します。
シークレットオブジェクトを作成します。
oc create secret generic ssh-key-secret \ -n openshift-sandboxed-containers-operator \ --from-file=id_rsa.pub=./id_rsa.pub \ --from-file=id_rsa=./id_rsa$ oc create secret generic ssh-key-secret \ -n openshift-sandboxed-containers-operator \ --from-file=id_rsa.pub=./id_rsa.pub \ --from-file=id_rsa=./id_rsaCopy to Clipboard Copied! Toggle word wrap Toggle overflow SSH キーを削除します。
shred –remove id_rsa.pub id_rsa
$ shred –remove id_rsa.pub id_rsaCopy to Clipboard Copied! Toggle word wrap Toggle overflow
シークレットオブジェクトが作成されます。KataConfig CR を作成すると、IBM Z 上のピア Pod を使用して OpenShift Sandboxed Containers を実行できます。
3.3.5. CLI を使用した KataConfig カスタムリソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
kata-remote をノードに RuntimeClass としてインストールするには、KataConfig カスタムリソース (CR) を 1 つ作成する必要があります。KataConfig CR を作成すると、OpenShift Sandboxed Containers Operator がトリガーされ、以下が実行されます。
-
QEMU および
kata-containersなど、必要な RHCOS 拡張を RHCOS ノードにインストールします。 - CRI-O ランタイムが正しいランタイムハンドラーで設定されていることを確認してください。
-
デフォルト設定で
kata-remoteという名前のRuntimeClassCR を作成します。これにより、RuntimeClassNameフィールドの CR を参照して、kata-remoteをランタイムとして使用するようにワークロードを設定できるようになります。この CR は、ランタイムのリソースオーバーヘッドも指定します。
ピア Pod の Kata は、デフォルトですべてのワーカーノードにインストールされます。kata-remote を特定のノードにのみ RuntimeClass としてインストールする場合は、それらのノードにラベルを追加し、作成時に KataConfig CR でラベルを定義できます。
前提条件
- クラスターに OpenShift Container Platform 4.15 がインストールされている。
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 - OpenShift Sandboxed Containers Operator をインストールしている。
KataConfig CR を作成すると、ワーカーノードが自動的に再起動します。再起動には 10 分から 60 分以上かかる場合があります。再起動時間を妨げる要因は次のとおりです。
- より多くのワーカーノードを持つ大規模な OpenShift Container Platform デプロイメント。
- BIOS および診断ユーティリティーが有効である。
- SSD ではなくハードディスクドライブにデプロイしている。
- 仮想ノードではなく、ベアメタルなどの物理ノードにデプロイしている。
- CPU とネットワークが遅い。
手順
次のマニフェストで YAML ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow (オプション)
kata-remoteを選択したノードにのみRuntimeClassとしてインストールする場合は、マニフェストにラベルを含む YAML ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
kataConfigPoolSelectorのラベルは単一値のみをサポートします。nodeSelector構文はサポートされていません。
KataConfigリソースを作成します。oc create -f cluster-kataconfig.yaml
$ oc create -f cluster-kataconfig.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
新しい KataConfig CR が作成され、ワーカーノードに RuntimeClass として kata-remote をインストールし始めます。kata-remote のインストールが完了し、ワーカーノードが再起動するまで待ってから、次の手順に進みます。
CR を実行すると、VM イメージが作成されます。イメージの作成はクラウドプロバイダーにより行われ、追加のリソースを使用する場合があります。
OpenShift Sandboxed Containers は、kata-remote をプライマリーランタイムとしてではなく、クラスター上のセカンダリーオプションのランタイムとしてのみインストールします。
検証
インストールの進捗を監視します。
watch "oc describe kataconfig | sed -n /^Status:/,/^Events/p"
$ watch "oc describe kataconfig | sed -n /^Status:/,/^Events/p"Copy to Clipboard Copied! Toggle word wrap Toggle overflow kataNodes の下のすべてのワーカーが
installsとしてリストされ、理由を指定せずにInProgressの条件がFalseの場合は、kataがクラスターにインストールされていることを示します。詳細は、「移行のインストールとアンインストール」を参照してください。
3.3.6. CLI を使用したSandboxed Containers 内のピア Pod を含むワークロードのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Sandboxed Containers は、Kata をプライマリーランタイムとしてではなく、クラスターでセカンダリーオプションのランタイムとしてインストールします。
Sandboxed Containers 内のピア Pod を使用して Pod テンプレート化されたワークロードをデプロイするには、kata-remote を runtimeClassName としてワークロード YAML ファイルに追加する必要があります。
また、YAML ファイルにアノテーションを追加して、ConfigMap で以前に定義したデフォルトのインスタンスサイズまたはタイプを使用してワークロードをデプロイするかどうかも定義する必要があります。インスタンスサイズまたはインスタンスタイプの使用は、クラウドプロバイダーによって異なります。インスタンスのサイズまたはタイプを手動で定義しない場合は、アノテーションを追加して、使用可能なメモリーに基づいて自動インスタンスのサイズまたはタイプの使用を定義する必要があります。
前提条件
- クラスターに OpenShift Container Platform 4.15 がインストールされている。
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 - OpenShift Sandboxed Containers Operator をインストールしている。
-
クラウドプロバイダーに固有のシークレットオブジェクトとピア Pod の
ConfigMapを作成している。 -
KataConfigカスタムリソース (CR) を作成している。
手順
runtimeClassName: kata-remoteを Pod でテンプレート化されたオブジェクトに追加します。-
Podオブジェクト -
ReplicaSetオブジェクト -
ReplicationControllerオブジェクト -
StatefulSetオブジェクト -
Deploymentオブジェクト -
DeploymentConfigオブジェクト
-
Pod のテンプレート化されたオブジェクトにアノテーションを追加し、特定のインスタンスサイズまたはタイプを使用するか、自動インスタンスサイズまたはタイプを使用するかを定義します。インスタンスサイズは特定のクラウドプロバイダーに使用され、インスタンスタイプは他のクラウドプロバイダーに使用されます。
特定のインスタンスのサイズまたはタイプについては、次のアノテーションを追加します。
io.katacontainers.config.hypervisor.machine_type: <instance type/instance size>
io.katacontainers.config.hypervisor.machine_type: <instance type/instance size>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ワークロードが使用するインスタンスのサイズまたはタイプを定義します。これらのデフォルトのサイズまたはタイプは、ピア Pod の
ConfigMapを作成するときに事前に定義してあります。そのうちの 1 つを選択してください。自動インスタンスのサイズまたはタイプについては、次のアノテーションを追加します。
io.katacontainers.config.hypervisor.default_vcpus: <vcpus> io.katacontainers.config.hypervisor.default_memory: <memory>
io.katacontainers.config.hypervisor.default_vcpus: <vcpus> io.katacontainers.config.hypervisor.default_memory: <memory>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ワークロードが使用できるメモリーの量を定義します。ワークロードは、使用可能なメモリーの量に基づいて、自動インスタンスサイズまたはタイプで実行されます。
Podオブジェクトの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- この例では、Azure を使用してピア Pod に事前に定義されたインスタンスサイズを使用します。AWS を使用するピア Pod はインスタンスタイプを使用します。
OpenShift Container Platform はワークロードを作成し、スケジューリングを開始します。
検証
-
Pod テンプレートオブジェクトの
runtimeClassNameフィールドを調べます。runtimeClassNameがkata-remoteの場合、ワークロードはピア Pod を使用して OpenShift Sandboxed Containers 上で実行されます。