簡體   English   中英

Kubernetes Kustomize:替換補丁文件中的變量

[英]Kubernetes Kustomize: replace variable in patch file

鑒於以下 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}的值,我可以從我的構建腳本中設置該值。

到目前為止,我工作的唯一解決方案是用sed替換${PASSWORD} ,但我更喜歡 kustomize 解決方案。

正如@Jonas 已經建議你應該考慮使用Secret 這篇文章很好地描述了

我想使用 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
...

更多細節你可以在文章中細化。

如果我們想從我們的部署中使用這個秘密,我們只需像以前一樣添加一個使用秘密的新層定義。

例如,此文件將 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM