15.5. 特定の SCC を必要とするワークロードの設定
特定の Security Context Constraints (SCC) を要求するようにワークロードを設定できます。これは、特定の SCC をワークロードに固定する場合、または必要な SCC がクラスター内の別の SCC によってプリエンプションされるのを防ぐ場合に役立ちます。
特定の SCC を要求するには、ワークロードに openshift.io/required-scc
アノテーションを設定します。このアノテーションは、デプロイメントやデーモンセットなど、Pod マニフェストテンプレートを設定できる任意のリソースに設定できます。
SCC はクラスター内に存在し、ワークロードに適用できる必要があります。そうでない場合、Pod のアドミッションは失敗します。Pod を作成するユーザーまたは Pod のサービスアカウントが Pod の namespace で SCC の use
権限を持っている場合、SCC はワークロードに適用可能であるとみなされます。
ライブ Pod のマニフェスト内の openshift.io/required-scc
アノテーションを変更しないでください。変更すると、Pod のアドミッションが失敗するためです。必要な SCC を変更するには、基礎となる Pod テンプレートのアノテーションを更新します。これにより、Pod が削除され、再作成されます。
前提条件
- SCC はクラスター内に存在する必要があります。
手順
デプロイメント用の YAML ファイルを作成し、
openshift.io/required-scc
アノテーションを設定して必要な SCC を指定します。deployment.yaml
の例apiVersion: config.openshift.io/v1 kind: Deployment apiVersion: apps/v1 spec: # ... template: metadata: annotations: openshift.io/required-scc: "my-scc" 1 # ...
- 1
- 必要な SCC の名前を指定します。
次のコマンドを実行して、リソースを作成します。
$ oc create -f deployment.yaml
検証
デプロイメントで指定された SCC が使用されたことを確認します。
次のコマンドを実行して、Pod の
openshift.io/scc
アノテーションの値を表示します。$ oc get pod <pod_name> -o jsonpath='{.metadata.annotations.openshift\.io\/scc}{"\n"}' 1
- 1
<pod_name>
をデプロイメント Pod の名前に置き換えます。
出力を調べて、表示された SCC がデプロイメントで定義した SCC と一致することを確認します。
出力例
my-scc