Kubernetes Kustomize:替换修补程序文件中的变量

Kubernetes Kustomize:替换修补程序文件中的变量,kubernetes,kustomize,Kubernetes,Kustomize,给定以下kustomize修补程序: apiVersion: apps/v1 kind: Deployment metadata: name: flux spec: template: spec: containers: - name: some-name args: - --some-key=some-value ... - --git-url=https:/

给定以下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}
传递一个值,我可以从构建脚本中设置该值


<> P>我到目前为止唯一的解决方案是用<代码> SED替换<代码> ${Cudio} /Case>,但是我更喜欢KuStUCURE解决方案。

AS @乔纳斯已经建议你应该考虑使用<代码>机密< /代码>。这篇文章描述得很好

我想使用kubectl apply-k并以某种方式为传递一个值 ${PASSWORD},我可以从生成脚本中设置它

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

$ 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将创建以下内容:

apiVersion: v1
data:
  db-password: MTIzNDU=
kind: Secret
metadata:
  name: sl-demo-app-6ft88t2625
type: Opaque
...
更多细节可以在中找到

如果我们想使用部署中的这个秘密,我们只需要 在此之前,添加使用机密的新图层定义

例如,该文件将把db密码值装载为 环境变量

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
部署
定义文件中,它可能类似于以下内容:

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

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