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

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

エアギャップ環境でのインストール

SUSE Security Admission Controllerのエアギャップ環境でのインストールには、Kubernetesクラスターからアクセス可能なプライベートOpen Container Initiative (OCI)レジストリが必要です。 Admission ControllerポリシーはWebAssemblyモジュールであるため、OCIアーティファクトとしてOCI準拠のレジストリに保存できます。このOCIレジストリにAdmission Controllerのイメージとポリシーを追加する必要があります。アーティファクト参照ページでAdmission Controllerアーティファクトのリストを参照できます。以下のセクションでは、手順について説明します。

Haulerの使用をお勧めします。 Haulerのドキュメントページをご覧ください。

または、以下に示す手動プロセスを使用することもできます。

Helmチャートをローカルに保存する

次のHelmチャートをワークステーションにダウンロードする必要があります:

helm pull kubewarden/kubewarden-crds
helm pull kubewarden/kubewarden-controller
helm pull kubewarden/kubewarden-defaults
helm pull kubewarden/sbomscanner

オプションで、helmチャートコンテナイメージの署名を確認できます。

コンテナイメージをローカルに保存する

  1. 私たちの各Helmチャートには、それによって消費されるコンテナイメージの`imagelist.txt`が含まれており、該当する場合は、それが消費するポリシーのOCI Wasmモジュールを含む`policylist.txt`も含まれています。

    それらを取得するには、次のようにします。

    helm pull --untar \
      kubewarden/kubewarden-crds \
      kubewarden/kubewarden-controller \
      kubewarden/kubewarden-defaults \
      kubewarden/sbomscanner

    それから、それらを1つのファイルに連結します。

    cat */imagelist.txt > kubewarden-images.txt
  2. ユーティリティリポジトリから`kubewarden-save-images.sh`と`kubewarden-load-images.sh`をダウンロードします。

  3. `.tar.gz`ファイルにAdmission Controllerコンテナイメージを保存します:

     ./kubewarden-save-images.sh \
       --image-list ./kubewarden-images.txt \
       --images kubewarden-images.tar.gz

    Dockerはエアギャップインストールに使用されるイメージのプルを開始します。このプロセスには数分かかることがあります。完了すると、コマンドを実行した現在のディレクトリにtarball(kubewarden-images.tar.gz)があります。

ポリシーをローカルに保存します

  1. 使用したいすべてのポリシーを`policies.txt`ファイルに追加します。

    cat */policylist.txt > policies.txt

    デフォルトポリシーのリストを含むファイルは、Admission Controllerデフォルトhttps://github.com/kubewarden/helm-charts/releases/[リリースページ]にあります。

  2. `kubewarden-controller`リポジトリから`kubewarden-save-policies.sh`と`kubewarden-load-policies.sh`をダウンロードします。

  3. ポリシーを`.tar.gz`ファイルに保存する:

    ./kubewarden-save-policies.sh --policies-list policies.txt

    `kwctl`を使用してポリシーをダウンロードします。`kubewarden-policies.tar.gz`アーカイブにはポリシーが含まれています。

Helmチャート

次のHelmチャートをワークステーションにダウンロードする必要があります:

helm pull kubewarden/kubewarden-crds
helm pull kubewarden/kubewarden-controller
helm pull kubewarden/kubewarden-defaults

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

これらのファイルをエアギャップ環境に移動します:

  • tgz`形式のHelmチャート(例:`kubewarden-crds-1.23.0.tgz

  • kubewarden-policies.tar.gz

  • kubewarden-images.tar.gz

  • kubewarden-load-images.sh

  • kubewarden-load-policies.sh および

  • policies.txt

    1. Admission Controller イメージをプライベートレジストリにロードします。Docker クライアントをローカルレジストリに対して認証する必要があります。

       ./kubewarden-load-images.sh \
         --image-list ./kubewarden-images.txt \
         --images kubewarden-images.tar.gz \
         --registry <REGISTRY.YOURDOMAIN.COM:PORT>
    2. Admission Controller ポリシーをプライベートレジストリにロードします。kwctl`でローカルレジストリの認証を行ってください(`kwctl`は、`docker`と同じメカニズム、すなわち~/.docker/config.json`ファイルを使用して認証します)。

       ./kubewarden-load-policies.sh \
         --policies-list policies.txt \
         --policies kubewarden-policies.tar.gz \
         --registry <REGISTRY.YOURDOMAIN.COM:PORT> \
         --sources-path sources.yml

kwctl コマンドは、これらのカテゴリのレジストリに接続するために`sources.yaml`ファイルが必要です。

  • 認証が必要です

  • 自己署名証明書が使用されています

  • TLSの終了は行われていません

ドキュメントのカスタム証明書機関に関するセクションを参照して、`sources.yaml`ファイルの設定方法を学んでください。

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

プライベートレジストリに必要なすべてのものが揃ったので、Admission Controllerをインストールする。標準のAdmission Controllerインストールとの唯一の違いは、コンテナイメージとポリシーのレジストリをプライベートレジストリに変更する必要があることです。

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

helm install --wait -n kubewarden \
  kubewarden-crds kubewarden-crds.tgz
helm install --wait -n kubewarden \
  kubewarden-controller kubewarden-controller.tgz \
  --set global.cattle.systemDefaultRegistry=<REGISTRY.YOURDOMAIN.COM:PORT>

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

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

サブチャートを有効にするために`auditScanner.policyReporter`を定義し、Policy Reporterのイメージを保存するレジストリとリポジトリを構成するために4つの値を定義する必要があります。Policy Reporterサブチャートの値に関する詳細情報は、https://github.com/kyverno/policy-reporter/tree/policy-reporter-2.19.4/charts/policy-reporter[Policy Reporterのドキュメント]を参照してください。

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

kubewarden-defaults Helm Chartによってインストールされた推奨ポリシーを`global.cattle.systemDefaultRegistry`以外のレジストリからダウンロードするには、`recommendedPolicies.defaultPoliciesRegistry`設定を使用します。 この構成により、ユーザーはポリシーのOCIアーティファクトを取得するために専用のレジストリを指定できます。これは、コンテナイメージリポジトリがOCIアーティファクトをサポートしていない場合に特に便利です。

インストールし、インストールが完了するまで待つには、次のコマンドを使用します:

helm install --wait -n kubewarden \
  kubewarden-defaults kubewarden-defaults.tgz \
  --set global.cattle.systemDefaultRegistry=<REGISTRY.YOURDOMAIN.COM:PORT> \
  --set recommendedPolicies.defaultPoliciesRegistry=<REGISTRY.YOURDOMAIN.COM:PORT>

recommendedPolicies.defaultPoliciesRegistry 設定が設定されていない場合、`global.cattle.systemDefaultRegistry`がデフォルトのレジストリとして使用されます。

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

これで、クラスター内に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: 2
  serviceAccountName: sa