我有一个应用需要将三个配置文件放在同一个目录中。然而这三个配置文件来自两个 secret 和一个 config map。
到目前为止,所有的尝试要么导致 K8s 出现错误,因为不同的卷具有相同mountPath
(不同的subPath
)文件,要么导致文件路径中的目录我想要一个文件。
理想的结果是容器具有以下特征:
/app/config/database.json <-- File from secret 1
/app/config/message_broker.json <-- File from secret 2
/app/config/app_config.json <-- File from config map
这是可能的吗,或者这只是 K8s 的限制?
最佳答案
1
根据有关的官方 kubernetes 文档:
投影卷将多个现有卷源映射到同一目录中。
您可以使用单个卷并在该卷内策略性地使用子路径。
目前可以投影以下类型的体积源:
秘密
向下API
配置图
服务账户令牌
clusterTrustBundle
所有源都必须与 Pod 位于同一命名空间中。有关更多详细信息,请参阅设计文档。
包含 secret、downwardAPI 和 configMap 的示例配置:
apiVersion: v1
kind: Pod
metadata:
name: volume-test
spec:
containers:
- name: container-test
image: busybox:1.28
command: ["sleep", "3600"]
volumeMounts:
- name: all-in-one
mountPath: "/projected-volume"
readOnly: true
volumes:
- name: all-in-one
projected:
sources:
- secret:
name: mysecret
items:
- key: username
path: my-group/my-username
- downwardAPI:
items:
- path: "labels"
fieldRef:
fieldPath: metadata.labels
- path: "cpu_limit"
resourceFieldRef:
containerName: container-test
resource: limits.cpu
- configMap:
name: myconfigmap
items:
- key: config
path: my-group/my-config
另请参阅如何以获取更多信息。
|
|