我想安装音量(如果存在)。例如:
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
不存在,我想跳过安装。这是乐观/可选的挂载点。
现在它会停止,直到秘密被创建。
答案 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
它将不会被声明,因此它将不会尝试安装它