首页 > 解决方案 > 使用 kustomize 挂载 k8s 密钥

问题描述

我一直在寻找一段时间,但我对 kustomize 还是很陌生。我花了一些时间来理解覆盖等的概念。

我正在尝试使用 kustomization 文件将现有的秘密挂载到 pod 中。我无法在部署中执行此操作,因为它是单个部署,kustomize 处理了 3 个不同版本的部署。每个都需要不同的秘密安装。

因此,显而易见的答案是使用基础或覆盖中的 kustomize 文件将机密作为卷安装。

我找到了有关使用 kustomize 生成秘密的信息,但是该秘密已经存在并且作为 kubernetes 秘密传递到其他地方。

所以总结...

base/
├─ kustomization.yaml
├─ statefulset.yaml
├─ service.yaml
├─ instance1/
│  ├─ kustomization.yaml
├─ instance2/
│  ├─ kustomization.yaml
├─ instance3/
│  ├─ kustomization.yaml

所以我希望处理将秘密安装到实例位置中的卷,因为秘密将不同,例如 1,2 和 3。

这可能吗?

TIA

编辑:

我为秘密添加了一个文件(它用于证书,因此每个实例都不同)。

base/
├─ kustomization.yaml
├─ statefulset.yaml
├─ service.yaml
├─ instance1/
│  ├─ kustomization.yaml
│  ├─ pki.yaml
├─ instance2/
│  ├─ kustomization.yaml
├─ instance3/
│  ├─ kustomization.yaml

我的补丁文件 (pki.yaml) 如下所示:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: de
spec:
  template:
    containers:
    - name: de
      volumeMounts:
        - mountPath: "/opt/de/pki"
          name: pki
          readOnly: true
      volumes:
        - name: pki
          secret:
            secretName: de_1_pki

然后在./base/instance1/kustomization.yaml我有:

commonLabels:
  app: de-1
resources:
- ../base
nameSuffix: -1
images:
- newName: de-1
  name: de
patches:
  - pki.yaml

为了完整起见,我的./base/kustomization.yaml文件:

kind: Kustomization
apiVersion: kustomize.config.k8s.io/v1beta1
commonLabels:
  app: de
  affinity: directory
resources:
- service.yaml
- statefulset.yaml

部署上述内容时出现错误。所以在我挖得太深之前,只是想知道我是否在吠叫正确的树?

标签: kuberneteskustomize

解决方案


我设法通过大量修补来解决这个问题。

我将实例的基本规范移动到叠加层,然后以这种方式添加了一个补丁。

谢谢


推荐阅读