【问题标题】:Conftest Fails For a Valid Kubernetets YAML FileConftest 对有效的 Kubernetes YAML 文件失败
【发布时间】:2021-03-22 02:38:52
【问题描述】:

我有以下简单的 Kubernetes YAML 部署:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Values.app.name }}
  namespace: {{ .Values.app.namespace }}
spec:
  selector:
    matchLabels:
      app: {{ .Values.app.name }}
  replicas: 1
  template:
    metadata:
      labels:
        app: {{ .Values.app.name }}
    spec:
      securityContext:
        runAsUser: 1000
        runAsGroup: 3000
        fsGroup: 2000
      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

我的 test.rego 中有以下内容:

package main

import data.kubernetes

name = input.metadata.name

deny[msg] {
  kubernetes.is_deployment
  not input.spec.template.spec.securityContext.runAsNonRoot

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

当我使用以下命令运行它时:

joesan@joesan-InfinityBook-S-14-v5:~/Projects/Private/infrastructure-projects/plant-simulator-deployment$ helm conftest helm-k8s -p test
WARN - Found service plant-simulator-service but services are not allowed
WARN - Found service plant-simulator-grafana but services are not allowed
WARN - Found service plant-simulator-prometheus but services are not allowed
FAIL - Containers must not run as root in Deployment plant-simulator
FAIL - Deployment plant-simulator must provide app/release labels for pod selectors

如您所见,我确实没有以 root 身份运行容器,但尽管我收到此错误消息 - 容器不能在部署工厂模拟器中以 root 身份运行

任何想法可能是什么原因?

【问题讨论】:

    标签: testing kubernetes kubernetes-helm conftest


    【解决方案1】:

    您需要将runAsNonRoot 添加到您的securityContext:

      securityContext:
        runAsUser: 1000
        runAsGroup: 3000
        fsGroup: 2000
        runAsNonRoot: true
    

    rego 规则只能验证 Yaml 结构 - 它不够聪明,无法确定您的配置有效地运行非 root 用户。

    【讨论】:

    • 我就是这么做的!谢谢!但是另一个问题 - 我正在使用 Kustomize 来编写我的文件,在这种情况下,我会在 Overlays 中的一个文件中看到相同的错误消息。在这方面的任何想法。这是整个项目 - github.com/joesan/plant-simulator-deployment
    • 抱歉,还没有查看 Kustomize。不错的项目!
    猜你喜欢
    • 2016-05-31
    • 2021-03-22
    • 2018-04-29
    • 2021-07-14
    • 2018-02-28
    • 1970-01-01
    • 2019-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多