[英]Kubernetes Kustomize patching - Can't patch a file located in base
[英]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.