【问题标题】:Kubernetes Kustomize: replace variable in patch fileKubernetes Kustomize:替换补丁文件中的变量
【发布时间】:2020-05-01 12:50:34
【问题描述】:

鉴于以下 kustomize 补丁:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: flux
spec:
  template:
    spec:
      containers:
        - name: some-name
          args:
            - --some-key=some-value
            ...
            - --git-url=https://user:${PASSWORD}@domain.de

我想使用kubectl apply -k 并以某种方式传递${PASSWORD} 的值,我可以从我的构建脚本中设置该值。

到目前为止,我工作的唯一解决方案是将 ${PASSWORD} 替换为 sed,但我更喜欢 kustomize 解决方案。

【问题讨论】:

  • 您应该尝试使用Secret 将密码传递给容器

标签: kubernetes kustomize


【解决方案1】:

正如@Jonas 已经建议的那样,您应该考虑使用Secretthis 文章中有很好的描述。

我想使用 kubectl apply -k 并以某种方式传递一个值 ${PASSWORD} 我可以从我的构建脚本中设置。

我猜您的脚本可以将生成的密码存储为变量或将其保存到某个文件中。您可以按如下方式轻松创建Secret

$ kustomize edit add secret sl-demo-app --from-literal=db-password=$PASSWORD

或来自文件:

$ kustomize edit add secret sl-demo-app --from-file=file/path

正如您在上述文章中所读到的那样:

这些命令将修改您的kustomization.yaml 并添加一个 SecretGenerator 在里面。

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

bases:
- ../../base

patchesStrategicMerge:
- custom-env.yaml
- replica-and-rollout-strategy.yaml

secretGenerator:
- literals:
  - db-password=12345
  name: sl-demo-app
  type: Opaque

kustomize build 在您的项目目录中运行将在Secret 之后创建其他内容:

apiVersion: v1
data:
  db-password: MTIzNDU=
kind: Secret
metadata:
  name: sl-demo-app-6ft88t2625
type: Opaque
...

更多详情可以关注article

如果我们想从我们的部署中使用这个秘密,我们只需要,比如 之前,添加一个使用秘密的新层定义。

例如,此文件会将 db-password 值挂载为 环境变量

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sl-demo-app
spec:
  template:
    spec:
      containers:
      - name: app
        env:
        - name: "DB_PASSWORD"
          valueFrom:
            secretKeyRef:
              name: sl-demo-app
              key: db.password

在您的 Deployment 定义文件中,它可能类似于:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: flux
spec:
  template:
    spec:
      containers:
        - name: some-name
          env:
            - name: "PASSWORD"
              valueFrom:
                secretKeyRef:
                  name: git-secret
                  key: git.password
          args:
            - --some-key=some-value
            ...
            - --git-url=https://user:${PASSWORD}@domain.de

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多