この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

これは未公開の文書です Admission Controller 1.34-dev.

Haulerを使用したエアギャップ環境でのインストール

このガイドでは、Haulerを使用してエアギャップ(された)環境にSUSE Security Admission Controllerをインストールする方法を示します。Haulerは、ユーザーがエアギャップ(された)環境でワークロードを実行するのを支援するツールです。アプリに必要なリソースをエアギャップ(された)環境に移動します。

Admission Controllerは、プライベート環境でAdmission Controllerを実行するために必要なすべてのリソースを含むマニフェストファイルを提供します。このドキュメントでは、どのようにそれを使用できるかを説明します。Haulerのドキュメントを参照して、詳細を学んでください。

Haulerマニフェストを使用した基本的なワークフローは次のとおりです:

  1. Admission Controllerのリリースページから取得します。

  2. Admission Controllerを実行するために必要なすべてのリソースをローカルストアにロードします。

  3. それらをファイルにエクスポートします。

  4. ファイルをプライベート環境に移動します。

  5. プライベート環境内で実行されているHaulerにリソースをロードします。

  6. インストールプロセスで使用するために、すべてをエアギャップ(された)環境内のレジストリにコピーします。

HelmチャートのリリースページからHaulerマニフェストをダウンロードします。

Admission Controllerリリースページから`hauler_manifest.yml`をダウンロードします。

マニフェストに定義されたリソースをHaulerストアに同期します:

hauler store sync --filename hauler_manifest.yaml

Haulerはマニフェストからすべてのリソースをローカルストアにダウンロードします。このプロセスには数分かかります。完了すると、`hauler store info`コマンドで同期されたリソースを確認できます。

すべてのAdmission Controllerリソースを含むtarファイルを生成します。

Haulerコマンドを実行して、ストアに以前ロードされたすべてのリソースをファイルにエクスポートします:

hauler store save --filename kubewarden-resources.tar.zst

Admission Controllerコンテナイメージはx86_64およびArm®アーキテクチャをサポートしています。したがって、リソースをファイルに保存するときに、このような警告メッセージが表示されることがあります:

2025-08-12 18:55:54 WRN specify an export platform to prevent potential platform mismatch on import of index [ghcr.io/kyverno/policy-reporter:3.3.3]
2025-08-12 18:55:54 WRN specify an export platform to prevent potential platform mismatch on import of index [ghcr.io/kyverno/policy-reporter-ui:2.4.1]
2025-08-12 18:55:54 WRN specify an export platform to prevent potential platform mismatch on import of index [ghcr.io/kubewarden/policy-server:v1.27.0]
2025-08-12 18:55:54 WRN specify an export platform to prevent potential platform mismatch on import of index [ghcr.io/kubewarden/audit-scanner:v1.27.0]
2025-08-12 18:55:54 WRN specify an export platform to prevent potential platform mismatch on import of index [ghcr.io/rancher/kuberlr-kubectl:v5.0.0]
2025-08-12 18:55:54 WRN specify an export platform to prevent potential platform mismatch on import of index [ghcr.io/kubewarden/kubewarden-controller:v1.27.0]

この警告メッセージを回避するには、--platform CLIフラグを設定して、ファイルに保存したいプラットフォームアーキテクチャを定義できます。

tarファイルを隔離された環境に転送します。

Admission Controllerリソースがすべて`kubewarden-resources.tar.zst`にあるので、エアギャップ(された)環境にコピーし、そこでHaulerストアにロードします:

hauler store load --filename kubewarden-resources.tar.zst
# Check if the resources are loaded
hauler store info

これで、Admission Controllerをインストールするために必要なすべてのリソースが、隔離された環境のHaulerストアにあります。

プライベートレジストリに投入します

Haulerストアのリソースを使用するには、それらを内部レジストリで利用可能にする必要があります。Haulerコマンドを使用して、それらをプライベートレジストリにコピーできます。

hauler store copy registry://localhost:5000

Haulerを実行して、ストアからすべてのリソースを持つレジストリを開始することもできます。このレジストリは安全ではないため、クラスターの設定を変更する必要があります:

# Find IP address of your host
# hostname -I

# Update registries.yaml for k3s based cluster to allow insecure access
# mirrors:
#   "<HOST_IP>:5000":
#     endpoint:
#       - "http://<HOST_IP>:5000"
# configs:
#   "<HOST_IP>:5000":
#     tls:
#       insecure_skip_verify: true

# Configure policy-server to allow pulling policies from insecure sources
# helm install .. kubewarden-defaults .. --set policyServer.insecureSources[0]=<HOST_IP:5000>

hauler store serve registry

これにより、`localhost:5000`アドレスでレジストリが開始されます。この時点から、Skopeoのような他のコマンドを使用して、Admission Controllerによって使用されるすべてのコンテナイメージ、ポリシーモジュール、およびHelmチャートをプライベートレジストリにコピーできます。

Admission Controllerをインストールします

プライベートレジストリに必要なすべてのものが揃ったので、Admission Controllerをインストールできます。標準のAdmission Controllerインストールとの違いは、コンテナイメージとポリシーのレジストリをプライベートレジストリに変更する必要があることです。さらに、OCIアーティファクトからHelmチャートをインストールする必要があります。

Admission Controllerスタックをインストールします:

helm install --wait -n kubewarden kubewarden-crds --create-namespace \
    oci://<REGISTRY.YOURDOMAIN.COM:PORT>/hauler/kubewarden-crds
helm install --wait -n kubewarden kubewarden-controller \
    --set "global.cattle.systemDefaultRegistry=<REGISTRY.YOURDOMAIN.COM:PORT>" \
    oci://<REGISTRY.YOURDOMAIN.COM:PORT>/hauler/kubewarden-controller

`kubewarden-controller`チャートで利用可能なPolicyReporterサブチャートを使用するには、エアギャップ(された)環境でサブチャートに特有の他の値を定義する必要があります。以下に例を示します:

helm install --wait -n kubewarden kubewarden-controller oci://<REGISTRY.YOURDOMAIN.COM:PORT>/hauler/kubewarden-controller \
    --set global.cattle.systemDefaultRegistry=<REGISTRY.YOURDOMAIN.COM:PORT> \
    --set auditScanner.policyReporter=true \
    --set policy-reporter.image.registry=<REGISTRY.YOURDOMAIN.COM:PORT> \
    --set policy-reporter.image.repository=kyverno/policy-reporter \
    --set policy-reporter.ui.image.registry=<REGISTRY.YOURDOMAIN.COM:PORT> \
    --set policy-reporter.ui.image.repository=kyverno/policy-reporter-ui

サブチャートを有効にし、Policy Reporterイメージストアの場所でレジストリとリポジトリを構成するために、`auditScanner.policyReporter`と他の4つの値を定義する必要があります。ポリシーレポートサブチャートの値に関する詳細については、\Policy Reporterのドキュメントを参照してください。

helm install --wait -n kubewarden \
  kubewarden-defaults oci://<REGISTRY.YOURDOMAIN.COM:PORT>/hauler/kubewarden-defaults \
  --set global.cattle.systemDefaultRegistry=<REGISTRY.YOURDOMAIN.COM:PORT>

最後に、各ポリシーサーバーを設定して、プライベートレジストリからポリシーを取得する必要があります。ドキュメントのプライベートレジストリの使用セクションを参照してください。

これで、クラスター内にAdmission Controllerポリシーを作成できます。ポリシーは、プライベートレジストリで利用可能でなければなりません。

kubectl apply -f - <<EOF
apiVersion: policies.kubewarden.io/v1
kind: ClusterAdmissionPolicy
metadata:
  name: privileged-pods
spec:
  module: registry://<REGISTRY.YOURDOMAIN.COM:PORT>/kubewarden/policies/pod-privileged:v0.2.2
  rules:
  - apiGroups: [""]
    apiVersions: ["v1"]
    resources: ["pods"]
    operations:
    - CREATE
  mutating: false
EOF

`PolicyServer`リソースは、プライベートレジストリで利用可能なイメージを使用する必要があります。 次に例を示します。

apiVersion: policies.kubewarden.io/v1
kind: PolicyServer
metadata:
  name: reserved-instance-for-tenant-a
spec:
  image: <REGISTRY.YOURDOMAIN.COM:PORT>/kubewarden/policy-server:v1.3.0
  replicas: