0

我们在 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部分中使用名称,这对我没有帮助,因为我所有的部署都有不同的名称。

4

4 回答 4

1

使用 PodPreset 将信息注入 Pod

您可以使用 PodPreset 对象在创建时将秘密、卷挂载和环境变量等信息注入 pod。

更新:2021 年 2 月。PodPreset 功能仅进入 Alpha 版。它在 Kubernetes 的 v1.20 中被删除。请参阅发行说明https://kubernetes.io/docs/setup/release/notes/

v1alpha1 PodPreset API 和准入插件已被删除,没有内置替换。准入 webhook 可用于在创建时修改 pod。(#94090, @deads2k) [SIG API 机械、应用程序、CLI、云提供商、可扩展性和测试]

于 2020-02-14T06:44:19.947 回答
1

PodPresent ( https://kubernetes.io/docs/tasks/inject-data-application/podpreset/ ) 是执行此操作的一种方法,但为此,您命名空间中的所有 pod 都应与您在 PodPresent 规范中指定的标签匹配。

另一种方法(最流行)是使用动态准入控制(https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/)并在您的集群中编写一个 Mutating webhook 这将编辑您的 pod 规格并添加您要挂载的所有秘密。使用它,您还可以在 pod 规格中进行其他更改,例如安装卷、添加标签等等。

于 2020-02-14T09:13:54.597 回答
0

独立的 kustomize 支持许多资源的补丁。这是一次修补多个资源的示例。kubectl 内置的 kustomize 不支持此功能。

于 2020-12-04T09:57:59.583 回答
-1

要将 secret 作为卷挂载,您需要更新 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

kustomize(或其他任何东西)不会为您安装它。

于 2020-02-13T10:49:56.683 回答