|
この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。 |
|
これは未公開の文書です Admission Controller 1.34-dev. |
共通のタスク
これは、Kubernetesクラスター内でインストールSUSE Security Admission Controllerした後の一般的なタスクを説明します。
個別のタスクは論理的な順序で配置されています。
ポリシーのテスト
Admission Controllerは、ポリシーを見つけてローカルでテストするために2つのツールを使用します:
-
Artifact Hub、Admission Controllerポリシーのためのパッケージフィルターを使用
-
kwctl、CLIツール
Artifact Hub
Artifact Hubは、コミュニティによって寄稿されたポリシーをホストしています。例えば、Admission Controllerの開発者によって作成された、https://kubernetes.io/blog/2021/04/06/podsecuritypolicy-deprecation-past-present-and-future/[廃止されたKubernetes Pod Security Policies]の代替品を見つけることができます。
下のスクリーンショットに示されているように、興味のあるポリシーを見つけたら、`Install`ボタンを選択し、`kwctl`を使用してクラスターのポリシーを取得します。
|
以前は、Admission Controllerポリシーはhttps://hub.kubewarden.io[Admission Controller Policy Hub]で見つけることができました。これはhttps://www.kubewarden.io/blog/2022/07/artifact-hub-supports-kubewarden/[廃止されました]。 ポリシーは現在、https://artifacthub.io/packages/search?kind=13&sort=relevance&page=1[https://artifacthub.io]から入手可能です。 |
kwctl CLIツール
`kwctl`はAdmission ControllerのCLIツールで、ポリシーの作成者とクラスター管理者がKubernetesクラスターに適用する前にポリシーをテストするためのものです。
このツールは`docker` CLIツールと似たインターフェースを持っています。
使用例
`kwctl`を使用して、これらのシナリオで役立てることができます:
ポリシーの著者として
-
ポリシーのエンドツーエンドテスト:作成したKubernetesリクエストに対してポリシーをテストし、ポリシーが期待通りに動作することを確認してください。実行中のクラスターへのアクセスを必要とするコンテキスト対応ポリシーもテストできます。
-
Wasmモジュールにメタデータを埋め込む:バイナリには、実行に必要な権限の注釈が含まれています。これらの注釈は`kwctl`を使用して検査および変更できます。
-
ポリシーをOCIレジストリに公開する:バイナリは完全に準拠したOCIオブジェクトであり、OCIレジストリに保存できます。
クラスター管理者として
-
リモートポリシーを検査する:OCIレジストリまたはHTTPサーバーにあるポリシーが指定された場合、そのポリシーに関するすべての静的情報を表示します。
-
クラスター内のポリシーのドライラン:作成したKubernetesリクエストに対してポリシーをテストし、提供した入力データに基づいてポリシーが期待通りに動作することを確認してください。実行中のクラスターへのアクセスを必要とするコンテキスト対応ポリシーもドライランモードでテストできます。
-
ポリシーの初期`ClusterAdmissionPolicy`スキャフォールディングを生成する: 必要な設定をすべて含む`YAML`ファイルを生成し、`kubectl`を使用してKubernetesクラスターに適用できます。
インストール
`kwctl`の安定版リリース用のバイナリは、https://github.com/kubewarden/kwctl/releases[GitHubリポジトリ]から入手できます。GitHubのhttps://github.com/kubewarden/kwctl[リポジトリ]から`kwctl`をビルドするには、https://www.rust-lang.org/tools/install[Rust]開発環境が必要です。
使用方法
次のコマンドを実行することで、すべての`kwctl`オプションとサブコマンドをリストできます:
$ kwctl --help
kwctl 0.2.5
Admission Controller Developers <cncf-kubewarden-maintainers@lists.cncf.io>
Tool to manage Admission Controller policies
USAGE:
kwctl [OPTIONS] <SUBCOMMAND>
OPTIONS:
-h, --help Print help information
-v Increase verbosity
-V, --version Print version information
SUBCOMMANDS:
annotate Add Admission Controller metadata to a WebAssembly module
completions Generate shell completions
digest Fetch the digest of its OCI manifest
help Print this message or the help of the given subcommand(s)
inspect Inspect Admission Controller policy
policies Lists all downloaded policies
pull Pulls a Admission Controller policy from a given URI
push Pushes a Admission Controller policy to an OCI registry
rm Removes a Admission Controller policy from the store
run Runs a Admission Controller policy from a given URI
scaffold Scaffold a Kubernetes resource or configuration file
verify Verify a Admission Controller policy from a given URI using Sigstore
ここにいくつかのコマンド使用例があります:
-
ポリシーを一覧表示する: ローカル`kwctl`レジストリに保存されているすべてのポリシーを一覧表示します
-
コマンド:
kwctl policies
-
-
ポリシーを取得する: ポリシーをダウンロードしてローカル`kwctl`ストアに保存します
-
コマンド:
kwctl pull <policy URI>$ kwctl pull registry://ghcr.io/kubewarden/policies/pod-privileged:v0.1.9 $ kwctl policies +--------------------------------------------------------------+----------+---------------+--------------+----------+ | Policy | Mutating | Context aware | SHA-256 | Size | +--------------------------------------------------------------+----------+---------------+--------------+----------+ | registry://ghcr.io/kubewarden/policies/pod-privileged:v0.1.9 | no | no | 59e34f482b40 | 21.86 kB | +--------------------------------------------------------------+----------+---------------+--------------+----------+
-
-
ポリシーの動作を理解する: ポリシーメタデータを検査します
-
コマンド:
kwctl inspect <policy URI>$ kwctl inspect registry://ghcr.io/kubewarden/policies/pod-privileged:v0.1.9 Details title: pod-privileged description: Limit the ability to create privileged containers author: Flavio Castelli url: https://github.com/kubewarden/pod-privileged-policy source: https://github.com/kubewarden/pod-privileged-policy license: Apache-2.0 mutating: false context aware: false execution mode: kubewarden-wapc protocol version: 1 Annotations io.kubewarden.kwctl 0.1.9 Rules ──────────────────── --- - apiGroups: - "" apiVersions: - v1 resources: - pods operations: - CREATE ──────────────────── Usage This policy doesn't have a configuration. Once enforced, it will reject the creation of Pods that have at least a privileged container defined.
-
-
ポリシーを評価する:ポリシーを評価し、利用可能な場合は、要件に合った適切な設定値を見つけます。
Kubernetes REST APIにある程度の慣れが必要です。
-
コマンド:
kwctl run -r <"Kubernetes Admission request" file path> -s <"JSON document" file path> <policy URI> -
シナリオ1:
-
評価のリクエスト:'privileged’コンテナなしでポッドを作成します
$ kwctl run registry://ghcr.io/kubewarden/policies/pod-privileged:v0.1.9 -r unprivileged-pod-request.json {"uid":"C6E115F4-A789-49F8-B0C9-7F84C5961FDE","allowed":true,"status":{"message":""}} -
ダウンロードしたポリシーバイナリを使用した同等のコマンド:
`$ kwctl run file://$PWD/pod-privileged-policy.wasm -r unprivileged-pod-request.json {"uid":"C6E115F4-A789-49F8-B0C9-7F84C5961FDE","allowed":true,"status":{"message":""}} -
結果:ポリシーはリクエストを許可します
-
-
シナリオ2:
-
評価のリクエスト:少なくとも1つの’privileged’コンテナを持つポッドを作成します
-
コマンド:
kwctl run registry://ghcr.io/kubewarden/policies/pod-privileged:v0.1.9 -r privileged-pod-request.json -
ダウンロードしたポリシーバイナリを使用した同等のコマンド:
kwctl run file://$PWD/pod-privileged-policy.wasm -r privileged-pod-request.json -
出力:
{ "uid": "8EE6AF8C-C8C8-45B0-9A86-CB52A70EC50D", "allowed": false, "status": { "message": "User 'kubernetes-admin' cannot schedule privileged containers" } } -
結果:ポリシーはリクエストを拒否します
-
より複雑な例については、ブログ記事https://www.kubewarden.io/blog/2021/06/kwctl-intro-for-kubernetes-administrators/[Kubernetes管理者への`kwctl`の紹介]を参照してください。
-
ポリシーを適用する
ポリシーを`ClusterAdmissionPolicy`定義し、それを`kubectl`を使用してクラスターにデプロイすることでポリシーを適用します。
`kwctl`は、適用したいポリシーをもとに`ClusterAdmissionPolicy`を生成するのに役立ちます。
`ClusterAdmissionPolicy`を生成し、それをクラスターに適用した後、以下のクイックスタートに記載されている手順に従うことができます。
-
ポリシー`ClusterAdmissionPolicy`から`manifest`を生成し、ファイルに保存します。
-
コマンド:
kwctl scaffold manifest -t ClusterAdmissionPolicy <policy URI> > <"policy name".yaml>$ kwctl scaffold manifest -t ClusterAdmissionPolicy registry://ghcr.io/kubewarden/policies/pod-privileged:v0.1.9 --- apiVersion: policies.kubewarden.io/v1alpha2 kind: ClusterAdmissionPolicy metadata: name: privileged-pods spec: module: "registry://ghcr.io/kubewarden/policies/pod-privileged:v0.1.9" settings: {} rules: - apiGroups: - "" apiVersions: - v1 resources: - pods operations: - CREATE mutating: false
デフォルトでは、`name`の値は`generated-policy`に設定されています。 `ClusterAdmissionPolicy`をデプロイする前に、編集することをお勧めします。 前の例の名前は`privileged-pods`に設定されています。
-
-
`ClusterAdmissionPolicy`をKubernetesクラスターにデプロイします。
-
コマンド:
kubectl apply -f <"policy name".yaml>$ kubectl apply -f pod-privileged-policy.yaml clusteradmissionpolicy.policies.kubewarden.io/privileged-pods created
-
`ClusterAdmissionPolicy`をデプロイした後、クラスターに送信されたすべてのリクエストは、ポリシーの範囲内であればポリシーによって評価されます。