use*_*945 4 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://user:${PASSWORD}@domain.de
Run Code Online (Sandbox Code Playgroud)
我想使用kubectl apply -k并以某种方式传递一个值${PASSWORD},我可以从我的构建脚本中设置该值。
我工作的唯一解决方案迄今被替换${PASSWORD}用sed,但我宁愿一个kustomize解决方案。
正如@Jonas 已经建议您应该考虑使用Secret. 这篇文章很好地描述了它。
我想使用 kubectl apply -k 并以某种方式传递 ${PASSWORD} 的值,我可以从我的构建脚本中设置该值。
我猜您的脚本可以将生成的密码存储为变量或将其保存到某个文件中。您可以轻松地创建一个Secret如下:
$ kustomize edit add secret sl-demo-app --from-literal=db-password=$PASSWORD
Run Code Online (Sandbox Code Playgroud)
或从文件:
$ kustomize edit add secret sl-demo-app --from-file=file/path
Run Code Online (Sandbox Code Playgroud)
正如您在提到的文章中所读到的:
这些命令将修改您的
kustomization.yaml并SecretGenerator在其中添加一个 。Run Code Online (Sandbox Code Playgroud)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
...
Run Code Online (Sandbox Code Playgroud)
更多细节你可以在文章中细化。
如果我们想从我们的部署中使用这个秘密,我们只需像以前一样添加一个使用秘密的新层定义。
例如,此文件会将 db-password 值挂载为环境变量
Run Code Online (Sandbox Code Playgroud)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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9611 次 |
| 最近记录: |