0

私のプロジェクトの 1 つに、Helm と Kustomize を使用してビルド、構成、パッケージ化された k8s リソースがいくつかあります。Conftest を使用していくつかの OPA テストを作成しました。チェックの 1 つは、ルートとしてコンテナーを実行しないようにすることです。したがって、これが私のベースフォルダーの deployment.yaml です。

apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: {{ .Values.app.namespace }}
  labels:
    name: {{ .Values.app.name }}
    #app: {{ .Values.app.name }}
    component: {{ .Values.plantSimulatorService.component }}
    part-of: {{ .Values.app.name }}
    managed-by: helm
    instance: {{ .Values.app.name }}
    version: {{ .Values.app.version }}
spec:
  selector:
    matchLabels:
      app: {{ .Values.app.name }}
  replicas: 1
  template:
    metadata:
      labels:
        app: {{ .Values.app.name }}
    spec:
      securityContext:
        runAsUser: 1000
        runAsGroup: 3000
        fsGroup: 2000
        runAsNonRoot: true
      containers:
        - name: {{ .Values.app.name }}
          image: {{ .Values.plantSimulatorService.image.repository }}:{{ .Values.plantSimulatorService.image.tag }}
          ports:
            - containerPort: {{ .Values.plantSimulatorService.ports.containerPort }} # Get this value from ConfigMap

次に、overlays フォルダーに次のようなパッチ ファイル (flux-patch-prod.yaml) を作成します。

---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    fluxPatchFile: prodPatchFile
  annotations:
    flux.weave.works/locked: "true"
    flux.weave.works/locked_msg: Lock deployment in production
    flux.weave.works/locked_user: Joesan <github.com/joesan>
  name: plant-simulator-prod
  namespace: {{ .Values.app.namespace }}

base.rego ファイルに次のような Conftest を記述しました。

# Check container is not run as root
deny_run_as_root[msg] {
  kubernetes.is_deployment
  not input.spec.template.spec.securityContext.runAsNonRoot

  msg = sprintf("Containers must not run as root in Deployment %s", [name])
}

exception[rules] {
  kubernetes.is_deployment
  input.metadata.name == "plant-simulator-prod"
  rules := ["run_as_root"]
}

しかし、それらを実行すると (helm-conftest プラグインがインストールされています)、次のエラーが発生します。

FAIL - Containers must not run as root in Deployment plant-simulator-prod
90 tests, 80 passed, 3 warnings, 7 failures
Error: plugin "conftest" exited with error

これを機能させる方法がわかりません。そもそも Kustomization を使用する目的全体が無効になるため、deployment.yaml から flux-patch-prod.yaml にコンテンツを再度コピーすることはしたくありません。これを修正する方法はありますか?私は昨日からこの問題でダウンしています!

4

1 に答える 1