Kubernetes 将代理设置为Helm 3中的环境变量
ı想将proxy设置为我通过Helm v3创建的deployment.yaml中的一个env变量。在Helm模板中添加env的正确格式应该是什么,同时是否有任何方法在values.yaml中传递该值Kubernetes 将代理设置为Helm 3中的环境变量,kubernetes,kubernetes-helm,Kubernetes,Kubernetes Helm,ı想将proxy设置为我通过Helm v3创建的deployment.yaml中的一个env变量。在Helm模板中添加env的正确格式应该是什么,同时是否有任何方法在values.yaml中传递该值 - env: - name: "HTTP_PROXY" value: "http://<user>:<password>@<ip_addr>:<port>" containers: - name:
- env:
- name: "HTTP_PROXY"
value: "http://<user>:<password>@<ip_addr>:<port>"
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- name: http
containerPort: 8080
protocol: TCP
resources:
{{- toYaml .Values.resources | nindent 12 }}
-env:
-名称:“HTTP_代理”
值:“http://:@:”
容器:
-名称:{{.Chart.name}
securityContext:
{{-toYaml.Values.securityContext | nindent12}
图像:“{.Values.image.repository}}:{{.Values.image.tag}”
imagePullPolicy:{{.Values.image.pullPolicy}}
端口:
-名称:http
集装箱港口:8080
协议:TCP
资源:
{-toYaml.Values.resources | nindent12}
考虑到Helm的语法已经在Stack上讨论过几次,我将对其进行总结,以减少孤立问题,并将其发布为社区wiki,因为我在这里做的不多
如前所述,有几种可能的方法可以添加
env
方式1。这样做的正确方式(秘密)
由于您不想公开数据,因此最好将其作为机密保存在kubernetes中
首先,在值
文件中添加所有需要的行,以便可以从外部设置这些值
例如:
username: root
password: password
apiVersion: v1
kind: Secret
metadata:
name: {{ .Release.Name }}-auth
data:
password: {{ .Values.password | b64enc }}
username: {{ .Values.username | b64enc }}
然后,在模板
文件夹中添加一个secret.yaml
文件,并将所需数据复制到该文件中
例如:
username: root
password: password
apiVersion: v1
kind: Secret
metadata:
name: {{ .Release.Name }}-auth
data:
password: {{ .Values.password | b64enc }}
username: {{ .Values.username | b64enc }}
现在调整部署yaml模板,并在env
部分中进行更改,如下所示(当然,您可以按需要的方式组合env):
方式2<代码>导出变量,并在运行
helm install
时使用它
在此之前,您必须修改图表,以便在安装时设置值
如果您已为--设置标志正确修改了模板,
您可以使用环境变量设置此值
$ 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
您可以看到,机密用户名的数据已更改为根用户
已添加到github回购中
回购协议中也对此进行了一些讨论。您可以了解使用环境变量的所有其他方法
路3。直接在Yaml中对值进行硬编码(更快,但不太安全/易于维护)
spec:
restartPolicy:始终
容器:
-名称:{{.Chart.name}
securityContext:
{{-toYaml.Values.securityContext | nindent12}
图像:“{.Values.image.repository}}:{{.Values.image.tag}”
imagePullPolicy:{{.Values.image.pullPolicy}}
端口:
-名称:http
集装箱港口:8080
协议:TCP
资源:
{-toYaml.Values.resources | nindent12}
环境:
-名称:“HTTP_代理”
值:“http://:@:”
这就是你一直在寻找的信息吗?是的,这就是我想要的。。感谢nickfor way 3,有没有办法使用go模板?例如名称:{{.Values.proxyname}}?