使用场景
Projected Volumes非常适用于以下场景:
- 将来自多个来源的配置数据组合在一起,如Secrets和ConfigMaps。
- 通过downwardAPI向容器暴露Pod和集群信息。
- 为访问Kubernetes API提供服务账户令牌。
使用技巧
- 命名空间一致性:所有Projected Volume的源必须与Pod在同一命名空间。
- 卷源类型:可以投影Secrets、ConfigMaps、downwardAPI和serviceAccountToken卷。
- 路径自定义:在卷中自定义每个投影源数据出现的路径。
- 安全性:为敏感数据(如Secrets)设置非默认的权限模式,以增强安全性。
使用案例
以下是一些使用Projected Volumes的示例:
组合Secret、downwardAPI和ConfigMap:在这个示例中,Pod使用Projected Volume将一个secret、downwardAPI数据和一个configMap组合到一个单一的卷中。每个数据源在卷配置的sources
下指定。每个源的数据可以放置在卷内的自定义路径中。
apiVersion: v1
kind: Pod
metadata:
name: volume-test
spec:
containers:
- name: container-test
image: busybox
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
- configMap:
name: myconfigmap
items:
- key: config
path: my-group/my-config
服务账户令牌投影:这个示例展示了一个Pod,它有一个包含服务账户令牌的Projected Volume。该令牌用于认证Kubernetes API。
代码语言:javascript复制apiVersion: v1
kind: Pod
metadata:
name: sa-token-test
spec:
containers:
- name: container-test
image: busybox
command: ["sleep", "3600"]
volumeMounts:
- name: token-vol
mountPath: "/service-account"
readOnly: true
serviceAccountName: default
volumes:
- name: token-vol
projected:
sources:
- serviceAccountToken:
audience: api
expirationSeconds: 3600
path: token
这些示例说明了Kubernetes中Projected Volumes的灵活性,允许您在Pod内有效地组合和管理多个数据源。