我们在 kubernetes 中有一个命名空间,我希望一些秘密(文件,如 jks、properties、ts 等(可用于所有 pod 中的所有容器(我们每个容器有一个 JVM,每个容器有一个容器,每个 pod 类型部署一个容器(。
我已经使用 kustomization 创建了机密,并计划将其用作每个部署规范的卷,然后将其卷挂载到此部署的容器中。我希望将此卷挂载到我们命名空间中部署的每个容器上。
我想知道 kustomize(或其他任何东西(是否可以帮助我在此命名空间中的所有部署上装载此卷?
我尝试了以下patchesStrategicMerge
---
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: myNamespace
spec:
template:
spec:
imagePullSecrets:
- name: pull-secret
containers:
- volumeMounts:
- name: secret-files
mountPath: "/secrets"
readOnly: true
volumes:
- name: secret-files
secret:
secretName: mySecrets
items:
- key: key1
path: ...somePath
- key: key2
path: ...somePath
它需要metadata
部分中的名称,这对我没有帮助,因为我的所有部署都有不同的名称。
使用 pod预设将信息注入到 pod
中您可以使用 PodPreset 对象在创建时将机密、卷挂载和环境变量等信息注入到 pod 中。
更新时间:2021 年 2 月。PodPreset功能只达到了alpha版本。它在 kubernetes 的 v1.20 中被删除。请参阅发行说明 https://kubernetes.io/docs/setup/release/notes/
v1alpha1 PodPreset API 和准入插件已被删除 没有内置替换。准入网络钩子可用于修改 pod 关于创造。(#94090, @deads2k([SIG API 机械、应用程序、CLI、云 提供程序、可伸缩性和测试]
PodPresent(https://kubernetes.io/docs/tasks/inject-data-application/podpreset/( 是执行此操作的一种方法,但为此,命名空间中的所有 pod 都应与您在 PodPresent 规范中指定的标签匹配。
另一种方法(最流行的(是使用动态准入控制 (https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/( 并在集群中编写一个变异 webhook,它将编辑您的 pod 规范并添加您想要挂载的所有密钥。使用它,您还可以在 Pod 规格中进行其他更改,例如安装卷、添加标签等等。
独立库斯托米兹支持许多资源的补丁。下面是一次修补多个资源的示例。Kubectl 中内置的 kustomize 不支持此功能。
要将密钥挂载为卷,您需要更新 pod/部署清单文件的 yaml 构造并重新构建它们。
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
volumeMounts:
- name: my-secret-volume
mountPath: /etc/secretpath
volumes:
- name: my-secret-volume
secret:
secretName: my-secret
库斯托米兹(或其他任何东西(不会为您安装它。