您可以export 变量并在运行helm install 时使用它。
在此之前,您必须修改您的图表,以便在安装时该值可以是set。
如果您已经知道如何设置模板字段,请跳过此部分。
由于您不想公开数据,因此最好将其保存为 kubernetes 中的秘密。
首先,将这两行添加到你的Values文件中,这样就可以从外部设置这两个值了。
username: root
password: password
现在,在您的 template 文件夹中添加一个 secret.yaml 文件。并且,将此代码 sn-p 复制到该文件中。
apiVersion: v1
kind: Secret
metadata:
name: {{ .Release.Name }}-auth
data:
password: {{ .Values.password | b64enc }}
username: {{ .Values.username | b64enc }}
现在调整您的部署 yaml 模板并在 env 部分进行更改,如下所示
...
...
spec:
restartPolicy: Always
containers:
- name: sample-app
image: "sample-app:latest"
imagePullPolicy: Always
env:
- name: "USERNAME"
valueFrom:
secretKeyRef:
key: username
name: {{ .Release.Name }}-auth
- name: "PASSWORD"
valueFrom:
secretKeyRef:
key: password
name: {{ .Release.Name }}-auth
...
...
如果您为--set 标志正确修改了模板,
您可以使用环境变量进行设置。
$ export USERNAME=root-user
现在在运行 helm install 时使用这个变量,
$ helm install --set username=$USERNAME ./mychart
如果您在dry-run 模式下运行此helm install,您可以验证更改,
$ helm install --dry-run --set username=$USERNAME --debug ./mychart
[debug] Created tunnel using local port: '44937'
[debug] SERVER: "127.0.0.1:44937"
[debug] Original chart version: ""
[debug] CHART PATH: /home/maruf/go/src/github.com/the-redback/kubernetes-yaml-drafts/helm-charts/mychart
NAME: irreverant-meerkat
REVISION: 1
RELEASED: Fri Apr 20 03:29:11 2018
CHART: mychart-0.1.0
USER-SUPPLIED VALUES:
username: root-user
COMPUTED VALUES:
password: password
username: root-user
HOOKS:
MANIFEST:
---
# Source: mychart/templates/secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: irreverant-meerkat-auth
data:
password: password
username: root-user
---
# Source: mychart/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: irreverant-meerkat
labels:
app: irreverant-meerkat
spec:
replicas: 1
template:
metadata:
name: irreverant-meerkat
labels:
app: irreverant-meerkat
spec:
containers:
- name: irreverant-meerkat
image: alpine
env:
- name: "USERNAME"
valueFrom:
secretKeyRef:
key: username
name: irreverant-meerkat-auth
- name: "PASSWORD"
valueFrom:
secretKeyRef:
key: password
name: irreverant-meerkat-auth
imagePullPolicy: IfNotPresent
restartPolicy: Always
selector:
matchLabels:
app: irreverant-meerkat
可以看到username in secret的数据变成了root-user。
我已将this example 添加到 github 存储库中。
kubernetes/helm repo 中也对此进行了一些讨论。您可以查看this issue 了解所有其他使用环境变量的方法。