kubernetes中的可选音量/秘密音量?

时间:2018-01-12 09:07:55

标签: kubernetes

我想安装音量(如果存在)。例如:

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不存在,我想跳过安装。这是乐观/可选的挂载点。

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

2 个答案:

答案 0 :(得分:1)

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

请参阅SecretVolumeSource参考。

答案 1 :(得分:0)

虽然env变量存在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它将不会被声明,因此它将不会尝试安装它