5.2. Web コンソールを使用した OpenShift Sandboxed Containers のデプロイ
OpenShift Container Platform Web コンソールを使用して次のタスクを実行することで、Google Cloud に OpenShift sandboxed containers をデプロイできます。
- OpenShift Sandboxed Containers Operator を再インストールします。
- オプション: ピア Pod との内部通信を許可するには、ポート 15150 を有効にします。
- オプション: OpenShift sandboxed containers Operator とともにインストールされる Cloud Credential Operator をアンインストールした場合は、ピア Pod シークレットを作成します。
- オプション: Kata エージェントポリシーをカスタマイズします。
- ピア Pod の config map を作成します。
- オプション: ピア Pod の仮想マシン (VM) イメージと仮想マシンイメージ config map を作成します。
-
KataConfigカスタムリソースを作成します。 - OpenShift Sandboxed Containers のワークロードオブジェクトを設定します。
5.2.1. OpenShift Sandboxed Containers Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform Web コンソールを使用して、OpenShift sandboxed containers Operator をインストールできます。
前提条件
-
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。
手順
-
Web コンソールで、Operators
OperatorHub に移動します。 -
Filter by keyword フィールドに
OpenShift sandboxed containersと入力します。 - OpenShift sandboxed containers Operator タイルを選択し、Install をクリックします。
- Install Operator ページで、利用可能な Update Channel オプションの一覧から stable を選択します。
Installed Namespace で Operator recommended Namespace が選択されていることを確認します。これにより、Operator が必須の
openshift-sandboxed-containers-operatornamespace にインストールされます。この namespace がまだ存在しない場合は、自動的に作成されます。注記OpenShift Sandboxed Containers Operator を
openshift-sandboxed-containers-operator以外の namespace にインストールしようとすると、インストールに失敗します。- Approval Strategy で Automatic が選択されていることを確認します。Automatic がデフォルト値であり、新しい z-stream リリースが利用可能になると、OpenShift Sandboxed Containers への自動更新が有効になります。
- Install をクリックします。
-
Operator
Installed Operator に移動して、Operator がインストールされていることを確認します。
5.2.2. Google Cloud のポート 15150 の有効化 リンクのコピーリンクがクリップボードにコピーされました!
Compute Engine で実行されているピア Pod との内部通信を許可するには、OpenShift Container Platform でポート 15150 を有効にする必要があります。
前提条件
- Google Cloud コマンドラインインターフェイス (CLI) ツールがインストールされている。
-
roles/container.adminロールを持つユーザーとして OpenShift Container Platform クラスターにアクセスできる。
手順
次のコマンドを実行して、プロジェクト ID 変数を設定します。
export GCP_PROJECT_ID="<project_id>"
$ export GCP_PROJECT_ID="<project_id>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して Google Cloud にログインします。
gcloud auth login
$ gcloud auth loginCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Google Cloud プロジェクト ID を設定します。
gcloud config set project ${GCP_PROJECT_ID}$ gcloud config set project ${GCP_PROJECT_ID}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してポート 15150 を開きます。
gcloud compute firewall-rules create allow-port-15150-restricted \ --project=${GCP_PROJECT_ID} \ --network=default \ --allow=tcp:15150 \ --source-ranges=<external_ip_cidr-1>[,<external_ip_cidr-2>,...]$ gcloud compute firewall-rules create allow-port-15150-restricted \ --project=${GCP_PROJECT_ID} \ --network=default \ --allow=tcp:15150 \ --source-ranges=<external_ip_cidr-1>[,<external_ip_cidr-2>,...]1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 1 つ以上の IP アドレスまたは範囲を CIDR 形式でコンマで区切って指定します。たとえば、
203.0.113.5/32,198.51.100.0/24です。
検証
次のコマンドを実行して、ポート 15150 が開いていることを確認します。
gcloud compute firewall-rule list
$ gcloud compute firewall-rule listCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.3. ピア Pod シークレットの作成 リンクのコピーリンクがクリップボードにコピーされました!
ピア Pod のシークレットが空で、Cloud Credential Operator (CCO) がインストールされている場合、OpenShift sandboxed containers Operator は CCO を使用してシークレットを取得します。CCO をアンインストールした場合は、OpenShift sandboxed containers のピア Pod シークレットを手動で作成する必要があります。そうしないと、ピア Pod は動作しなくなります。
シークレットには、Pod 仮想マシン (VM) イメージとピア Pod インスタンスを作成するための認証情報が保存されます。
デフォルトでは、OpenShift Sandboxed Containers Operator はクラスターの作成に使用される認証情報に基づいてシークレットを作成します。ただし、異なる認証情報を使用するシークレットを手動で作成することはできます。
前提条件
-
コンピュート Engine リソースを管理するための、
roles/compute.instanceAdmin.v1などの権限を持つ Google Cloud サービスアカウントを作成した。
手順
-
Google Cloud コンソールで IAM & Admin
Service Accounts Keys に移動し、キーを JSON ファイルとして保存します。 次のコマンドを実行して、JSON ファイルを 1 行の文字列に変換します。
cat <key_file>.json | jq -c .
$ cat <key_file>.json | jq -c .Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
OpenShift Container Platform Web コンソールで、Operators
Installed Operators に移動します。 - OpenShift sandboxed containers Operator タイルをクリックします。
- 右上隅のインポートアイコン (+) をクリックします。
Import YAML ウィンドウに、次の YAML マニフェストを貼り付けます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<gc_service_account_key_json>は、Google Cloud サービスアカウントキーの JSON ファイルから作成した 1 行の文字列に置き換えます。
- Save をクリックして変更を適用します。
-
Workloads
Secrets に移動して、ピア Pod シークレットを確認します。
5.2.4. ピア Pod config map の作成 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift sandboxed containers のピア Pod config map を作成する必要があります。
手順
Compute Engine インスタンスにログインして、次の環境変数を設定します。
次のコマンドを実行してプロジェクト ID を取得します。
GCP_PROJECT_ID=$(gcloud config get-value project)
$ GCP_PROJECT_ID=$(gcloud config get-value project)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してゾーンを取得します。
GCP_ZONE=$(gcloud config get-value compute/zone)
$ GCP_ZONE=$(gcloud config get-value compute/zone)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ネットワーク名のリストを取得します。
gcloud compute networks list --format="value(name)"
$ gcloud compute networks list --format="value(name)"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してネットワークを指定します。
GCP_NETWORK=<network_name>
$ GCP_NETWORK=<network_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<network_name>は、ネットワークの名前に置き換えます。
-
OpenShift Container Platform Web コンソールで、Operators
Installed Operators に移動します。 - Operator のリストから OpenShift Sandboxed Containers Operator を選択します。
- 右上隅にあるインポートアイコン (+) をクリックします。
Import YAML ウィンドウに、次の YAML マニフェストを貼り付けます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Save をクリックして変更を適用します。
-
新しい config map を表示するには、Workloads
ConfigMaps に移動します。
5.2.5. ピア Pod VM イメージの作成 リンクのコピーリンクがクリップボードにコピーされました!
QCOW2 ピア Pod 仮想マシン (VM) イメージを作成する必要があります。
前提条件
-
podmanがインストールされている。 - コンテナーレジストリーにアクセスできる。
手順
次のコマンドを実行して、OpenShift Sandboxed Containers リポジトリーのクローンを作成します。
git clone https://github.com/openshift/sandboxed-containers-operator.git
$ git clone https://github.com/openshift/sandboxed-containers-operator.gitCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
sandboxed-containers-operator/config/peerpods/podvm/bootcに移動します。cd sandboxed-containers-operator/config/peerpods/podvm/bootc
$ cd sandboxed-containers-operator/config/peerpods/podvm/bootcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
registry.redhat.ioにログインします。podman login registry.redhat.io
$ podman login registry.redhat.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow podman buildプロセスはレジストリーでホストされるContainerfile.rhelコンテナーイメージにアクセスする必要があるため、registry.redhat.ioにログインする必要があります。次のコマンドを実行して、コンテナーレジストリーのイメージパスを設定します。
IMG="<container_registry_url>/<username>/podvm-bootc:latest"
$ IMG="<container_registry_url>/<username>/podvm-bootc:latest"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Pod 仮想マシン
bootcイメージをビルドします。podman build -t ${IMG} -f Containerfile.rhel .$ podman build -t ${IMG} -f Containerfile.rhel .Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、コンテナーレジストリーにログインします。
podman login <container_registry_url>
$ podman login <container_registry_url>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、イメージをコンテナーレジストリーにプッシュします。
podman push ${IMG}$ podman push ${IMG}Copy to Clipboard Copied! Toggle word wrap Toggle overflow テストや開発のために、イメージを公開できます。
次のコマンドを実行して、
podvm-bootcイメージを確認します。podman images
$ podman imagesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
REPOSITORY TAG IMAGE ID CREATED SIZE example.com/example_user/podvm-bootc latest 88ddab975a07 2 seconds ago 1.82 GB
REPOSITORY TAG IMAGE ID CREATED SIZE example.com/example_user/podvm-bootc latest 88ddab975a07 2 seconds ago 1.82 GBCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.6. ピア Pod 仮想マシンイメージ config map の作成 リンクのコピーリンクがクリップボードにコピーされました!
Pod 仮想マシン (VM) イメージの config map を作成します。
手順
-
OpenShift Container Platform Web コンソールで、Operators
Installed Operators に移動します。 - Operator のリストから OpenShift Sandboxed Containers Operator を選択します。
- 右上隅にあるインポートアイコン (+) をクリックします。
Import YAML ウィンドウに、次の YAML マニフェストを貼り付けます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Save をクリックして変更を適用します。
-
新しい config map を表示するには、Workloads
ConfigMaps に移動します。
5.2.7. Kata エージェントポリシーのカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
Kata エージェントポリシーは、Kata ランタイムで実行されている Pod のエージェント API 要求を制御するセキュリティーメカニズムです。このポリシーは Rego で記述され、Pod 仮想マシン (VM) 内の Kata エージェントによって適用され、許可または拒否される操作を決定します。
セキュリティーが問題にならない開発やテストなどの特定のユースケースでは、デフォルトのポリシーをカスタムポリシーで上書きできます。たとえば、コントロールプレーンを信頼できる環境で実行する場合があります。カスタムポリシーは、複数の方法で適用できます。
- ポリシーを Pod VM イメージに組み込む。
- ピア Pod の config map にパッチを適用する。
- ワークロード Pod YAML にアノテーションを追加する。
実稼働システムの場合、initdata を使用して Kata エージェントポリシーをオーバーライドする方法が推奨されます。以下の手順では、io.katacontainers.config.agent.policy アノテーションを使用してカスタムポリシーを個々の Pod に適用します。ポリシーは Base64 でエンコードされた Rego 形式で提供されます。このアプローチでは、Pod 仮想マシンイメージを変更せずに、Pod 作成時にデフォルトのポリシーをオーバーライドします。
カスタムポリシーは、デフォルトのポリシーを完全に置き換えます。特定の API のみを変更するには、完全なポリシーを含め、関連するルールを調整します。
手順
カスタムポリシーを含む
policy.regoファイルを作成します。次の例では、デモ用にexecとlogを有効にした、設定可能なすべての API を示しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow このポリシーは、
exec(ExecProcessRequest) およびlog(ReadStreamRequest) API を有効にします。必要に応じて、trueまたはfalseの値を調整してポリシーをさらにカスタマイズします。次のコマンドを実行して、
policy.regoファイルを Base64 でエンコードされた文字列に変換します。base64 -w0 policy.rego
$ base64 -w0 policy.regoCopy to Clipboard Copied! Toggle word wrap Toggle overflow yaml ファイルで使用するために出力を保存します。
-
OpenShift Container Platform Web コンソールで、Operators
Installed Operators に移動します。 - Operator のリストから OpenShift Sandboxed Containers Operator を選択します。
- 右上隅にあるインポートアイコン (+) をクリックします。
Import YAML ウィンドウで、次の YAML マニフェストを貼り付け、Base64 でエンコードされたポリシーを追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Save をクリックして変更を適用します。
5.2.8. KataConfig カスタムリソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
ワーカーノードに kata-remote を RuntimeClass としてインストールするには、KataConfig カスタムリソース (CR) を作成する必要があります。
kata-remote ランタイムクラスは、デフォルトですべてのワーカーノードにインストールされます。kata-remote を特定のノードにのみインストールする場合は、それらのノードにラベルを追加し、KataConfig CR でラベルを定義できます。
OpenShift Sandboxed Containers は、kata-remote をプライマリーランタイムとしてではなく、クラスター上の セカンダリーオプション のランタイムとしてインストールします。
KataConfig CR を作成すると、ワーカーノードが自動的に再起動します。再起動には 10 分から 60 分以上かかる場合があります。次の要因により再起動時間が長くなる可能性があります。
- より多くのワーカーノードを持つ大規模な OpenShift Container Platform デプロイメント。
- BIOS および診断ユーティリティーが有効である。
- SSD ではなくハードディスクドライブにデプロイしている。
- 仮想ノードではなく、ベアメタルなどの物理ノードにデプロイしている。
- CPU とネットワークが遅い。
前提条件
-
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 - オプション: ノードの適格性チェックを有効にする場合は、Node Feature Discovery Operator をインストールしておきます。
手順
-
OpenShift Container Platform Web コンソールで、Operators
Installed Operators に移動します。 - OpenShift sandboxed containers Operator を選択します。
- KataConfig タブで、Create KataConfig をクリックします。
以下の詳細を入力します。
-
Name: オプション: デフォルト名は
example-kataconfigです。 -
Labels: オプション: 関連する識別属性を
KataConfigリソースに入力します。各ラベルはキーと値のペアを表します。 - enablePeerPods: パブリッククラウド、IBM Z®、および IBM® LinuxONE デプロイメントの場合に選択します。
kataConfigPoolSelector。オプション: 選択したノードに
kata-remoteをインストールするには、選択したノードのラベルに一致する式を追加します。- kataConfigPoolSelector エリアを展開します。
- kataConfigPoolSelector エリアで、matchExpressions を展開します。これは、ラベルセレクターの要件のリストです。
- Add matchExpressions をクリックします。
- Key フィールドに、セレクターの適用先のラベルキーを入力します。
-
Operator フィールドに、キーとラベル値の関係を入力します。有効な演算子は、
In、NotIn、Exists、DoesNotExistです。 - Values エリアを展開し、Add value をクリックします。
-
Value フィールドで、
trueまたはfalseを key ラベル値として入力します。
-
logLevel: ランタイムクラスが
kata-remoteのノードに対して取得されるログデータのレベルを定義します。
-
Name: オプション: デフォルト名は
Create をクリックします。
KataConfigCR が作成され、ワーカーノードにkata-remoteランタイムクラスをインストールします。インストールを確認する前に、
kata-remoteのインストールが完了し、ワーカーノードが再起動するまで待ちます。
検証
-
KataConfig タブで、
KataConfigCR をクリックして詳細を表示します。 YAML タブをクリックして
statusスタンザを表示します。statusスタンザには、conditionsおよびkataNodesキーが含まれています。status.kataNodesの値はノード配列であり、各ノードにはkata-remoteインストールの特定の状態にあるノードがリストされます。更新があるたびにメッセージが表示されます。Reload をクリックして、YAML を更新します。
status.kataNodes配列内のすべてのワーカーに、値installedと、理由が指定されていないconditions.InProgress: Falseが表示される場合、kata-remoteはクラスターにインストールされています。
関連情報
Pod VM イメージの確認
kata-remote がクラスターにインストールされると、OpenShift sandboxed containers Operator は、ピア Pod の作成に使用される Pod 仮想マシンイメージを作成します。イメージがクラウドインスタンス上に作成されるため、このプロセスには時間がかかる場合があります。クラウドプロバイダー用に作成した config map を確認し、Pod 仮想マシンイメージが正常に作成されたことを確認できます。
手順
-
Workloads
ConfigMaps に移動します。 - プロバイダー config map をクリックすると、詳細が表示されます。
- YAML タブをクリックします。
YAML ファイルの
statusスタンザを確認します。PODVM_IMAGE_NAMEパラメーターが入力されている場合は、Pod 仮想マシンイメージが正常に作成されています。
トラブルシューティング
次のコマンドを実行してイベントログを取得します。
oc get events -n openshift-sandboxed-containers-operator --field-selector involvedObject.name=osc-podvm-image-creation
$ oc get events -n openshift-sandboxed-containers-operator --field-selector involvedObject.name=osc-podvm-image-creationCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ジョブログを取得します。
oc logs -n openshift-sandboxed-containers-operator jobs/osc-podvm-image-creation
$ oc logs -n openshift-sandboxed-containers-operator jobs/osc-podvm-image-creationCopy to Clipboard Copied! Toggle word wrap Toggle overflow
問題を解決できない場合は、Red Hat サポートケースを送信し、両方のログの出力を添付してください。
5.2.9. ワークロードオブジェクトの設定 リンクのコピーリンクがクリップボードにコピーされました!
次の Pod テンプレートオブジェクトのランタイムクラスとして kata-remote を設定して、OpenShift sandboxed containers のワークロードオブジェクトを設定する必要があります。
-
Podオブジェクト -
ReplicaSetオブジェクト -
ReplicationControllerオブジェクト -
StatefulSetオブジェクト -
Deploymentオブジェクト -
DeploymentConfigオブジェクト
Operator namespace にワークロードをデプロイしないでください。これらのリソース専用の namespace を作成します。
前提条件
-
KataConfigカスタムリソース (CR) を作成している。
手順
次の例のように、各 Pod テンプレート化されたワークロードオブジェクトのマニフェストに
spec.runtimeClassName: kata-remoteを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform はワークロードオブジェクトを作成し、スケジュールを開始します。
検証
-
Pod テンプレートオブジェクトの
spec.runtimeClassNameフィールドを検査します。値がkata-remoteの場合、ワークロードはピア Pod を使用して OpenShift Sandboxed Containers で実行されています。