【问题标题】:Optional volume/secret volume in kubernetes?Kubernetes 中的可选卷/秘密卷?
【发布时间】:2018-01-12 09:07:54
【问题描述】:

如果存在,我想安装卷。例如:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mypod
    image: redis
    volumeMounts:
    - name: foo
      mountPath: "/etc/foo"
  volumes:
  - name: foo
    secret:
      secretName: mysecret

是文档中的示例。但是,如果秘密 mysecret 不存在,我想跳过安装。那是乐观/可选的挂载点。

现在它会停止,直到创建秘密。

【问题讨论】:

标签: kubernetes


【解决方案1】:

secret 和 configmap 卷可以标记为可选,如果相关的 secret 或 configmap 不存在,则会导致空目录,而不是阻止 pod 启动

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
    - name: mypod
      image: redis
      volumeMounts:
        - name: foo
          mountPath: /etc/foo
  volumes:
    - name: foo
      secret:
        secretName: mysecret
        optional: true

【讨论】:

    【解决方案2】:

    虽然这个optional 逻辑适用于环境变量,但据我所知,它不适用于卷。这似乎也有点问题,因为您的基础设施不再是不可变的,这取决于在 kube 中创建的顺序,您会获得不同的应用程序状态。我建议使用更高级别的模板功能,例如Helm 中提供的功能,而不是寻找这个,以便您可以这样做:

    apiVersion: v1
    kind: Pod
    metadata:
      name: mypod
    spec:
      containers:
      - name: mypod
        image: redis
    {{- if .Values.mysecret.enabled }}
        volumeMounts:
        - name: foo
          mountPath: "/etc/foo"
      volumes:
      - name: foo
        secret:
          secretName: mysecret
    {{- end }}
    

    然后,如果您使用 --set mysecret.enabled=true 进行配置,您将获得声明的卷,而使用 --set mysecret.enabled=false 将不会声明它,因此它根本不会尝试挂载它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      • 1970-01-01
      • 1970-01-01
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      相关资源
      最近更新 更多