11.3. ImagePolicy 受付プラグインの設定
クラスターで実行できるイメージを設定するには、ImagePolicy 受付プラグインを master-config.yaml
ファイルで設定します。1 つまたは複数のルールを必要に応じて設定できます。
特定のアノテーションを持つイメージの拒否:
このルールを使用して、特定のアノテーションが設定されたすべてのイメージを拒否します。以下は、
images.openshift.io/deny-execution
アノテーションを使用してすべてのイメージを拒否します。- name: execution-denied onResources: - resource: pods - resource: builds reject: true matchImageAnnotations: - key: images.openshift.io/deny-execution 1 value: "true" skipOnResolutionFailure: true
- 1
- 特定のイメージが有害であるとみなされる場合、管理者はそれらのイメージにフラグを付けるためにこのアノテーションを設定できます。
ユーザーの Docker Hub からのイメージの実行を許可:
このルールを使用して、ユーザーが Docker Hub からのイメージを使用できるようにします。
- name: allow-images-from-dockerhub onResources: - resource: pods - resource: builds matchRegistries: - docker.io
以下は、複数の ImagePolicy 受付プラグインルールを master-config.yaml
ファイルに設定する設定例です。
アノテーション付きのサンプルファイル
admissionConfig: pluginConfig: openshift.io/ImagePolicy: configuration: kind: ImagePolicyConfig apiVersion: v1 resolveImages: AttemptRewrite 1 executionRules: 2 - name: execution-denied # Reject all images that have the annotation images.openshift.io/deny-execution set to true. # This annotation may be set by infrastructure that wishes to flag particular images as dangerous onResources: 3 - resource: pods - resource: builds reject: true 4 matchImageAnnotations: 5 - key: images.openshift.io/deny-execution value: "true" skipOnResolutionFailure: true 6 - name: allow-images-from-internal-registry # allows images from the internal registry and tries to resolve them onResources: - resource: pods - resource: builds matchIntegratedRegistry: true - name: allow-images-from-dockerhub onResources: - resource: pods - resource: builds matchRegistries: - docker.io resolutionRules: 7 - targetResource: resource: pods localNames: true policy: AttemptRewrite - targetResource: 8 group: batch resource: jobs localNames: true 9 policy: AttemptRewrite
- 1
- イミュータブルなイメージダイジェストを使用してイメージを解決し、Pod でイメージのプル仕様を更新します。
- 2
- 着信リソースに対して評価するルールの配列です。
reject: true
ルールのみがある場合、デフォルトは allow all になります。reject: false
である accept ルールがルールのいずれかに含まれる場合、ImagePolicy のデフォルト動作は deny all に切り替わります。 - 3
- ルールを実施するリソースを示します。何も指定されていない場合、デフォルトは pods になります。
- 4
- このルールが一致する場合、Pod は拒否されることを示します。
- 5
- イメージオブジェクトのメタデータで一致するアノテーションの一覧。
- 6
- イメージを解決できない場合に Pod は失敗しません。
- 7
- Kubernetes リソースでのイメージストリームの使用を許可するルールの配列。デフォルト設定は、pods、replicationcontrollers、replicasets、statefulsets、daemonsets、deployments および jobs がイメージフィールドで同じプロジェクトイメージストリームのタグ参照を使用することを許可します。
- 8
- このルールが適用されるグループおよびリソースを特定します。リソースが
*
の場合、このルールはそのグループのすべてのリソースに適用されます。 - 9
LocalNames
は、単一のセグメント名 (例:ruby:2.5
) が、リソースまたはターゲットイメージストリームでlocal name resolution
が有効にされている場合にのみ namespace のローカルイメージストリームタグとして解釈されるようにします。
デフォルトのレジストリー接頭辞 (docker.io または registry.redhat.io など) を使用してプルされるインフラストラクチャーイメージを通常使用する場合、レジストリー接頭辞がないイメージは matchRegistries
値には一致しません。インフラストラクチャーイメージにイメージポリシーに一致するレジストリー接頭辞を持たせるには、master-config.yaml
ファイルに imageConfig.format 値を設定します。