我对 Kubernetes 还很陌生,想弄清楚。我一直无法谷歌这个答案,所以我很难过。Kubernetes 可以将两个 secret 挂载到同一路径吗?假设有以下部署:
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx-deployment
version: v1
spec:
selector:
matchLabels:
app: nginx
replicas: 1
template:
metadata:
labels:
app: nginx
version: v1
spec:
volumes:
- name: nginxlocal
hostPath:
path: /srv/docker/nginx
- name: requestcert
secret:
secretName: requests-certificate
- name: mysitecert
secret:
secretName: mysitecert
containers:
- name: nginx
image: nginx:mainline-alpine # Use 1.15.0
volumeMounts:
- name: nginxlocal
subPath: config/nginx.conf
mountPath: /etc/nginx/nginx.conf
- name: requestcert
mountPath: /etc/nginx/ssl
- name: mysitecert
mountPath: /etc/nginx/ssl
- name: nginxlocal
subPath: logs
mountPath: /etc/nginx/logs
ports:
- containerPort: 443
Run Code Online (Sandbox Code Playgroud)
是否可以将两个 SSL 证书挂载到同一目录 (/etc/nginx/ssl/*)?
如果没有,是否可以将 TLS cert+key 存储为“Opaque”而不是 kubernetes.io/tls 类型?我试图将两个 certs+keys 组合成一个 tls 类型的 secret,但 kubernetes 期望它被称为 tls.crt 和 tls.key,所以我不得不将它拆分为两个 secret 文件。如果它们可以作为不透明来完成,我想我可以删除两个秘密值并只使用一个不透明条目。
谢谢!
是否可以将两个 SSL 证书挂载到同一目录 (/etc/nginx/ssl/*)?
不,因为(至少使用泊坞窗运行时),它使用卷安装,它们的行为完全一样,mount -t ext4 /dev/something /path/something
在这/path/something
将是最后一胜。
但是,您只有一个有点臭的解决方法:将 secret 挂载requestcert
为/etc/nginx/.reqcert
(或类似的),将 secret 挂载mysitecert
为/etc/nginx/.sitecert
,然后取代entrypoint
图像的 并将文件复制到位,然后再委派到实际的入口点:
containers:
- name: nginx
image: etc etc
command:
- bash
- -c
- |
mkdir -p /etc/nginx/ssl
cp /etc/nginx/.*cert/* /etc/nginx/ssl/
# or whatever initialization you'd like
# then whatever the entrypoint is for your image
/usr/local/sbin/nginx -g "daemon off;"
Run Code Online (Sandbox Code Playgroud)
或者,如果这看起来不是一个好主意,您可以结合使用一次性的、特定于 Pod 的目录initContainers:
:
spec:
volumes:
# all the rest of them, as you had them
- name: temp-config
emptyDir: {}
initContainers:
- name: setup-config
image: busybox # or whatever
command:
- sh
- -c
- |
# "stage" all the config files, including certs
# into /nginx-config which will evaporate on Pod destruction
volumeMounts:
- name: temp-config
mountPath: /nginx-config
# and the rest
containers:
- name: nginx
# ...
volumeMounts:
- name: temp-config
mountPath: /etc/nginx
Run Code Online (Sandbox Code Playgroud)
它们在复杂性上有所不同,具体取决于您是否要处理跟踪上游图像的入口点命令,还是保持上游图像不变,但会花费更多的初始化能量
归档时间: |
|
查看次数: |
3567 次 |
最近记录: |