Kubernetes 将代理设置为Helm 3中的环境变量

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:

ı想将proxy设置为我通过Helm v3创建的deployment.yaml中的一个env变量。在Helm模板中添加env的正确格式应该是什么,同时是否有任何方法在values.yaml中传递该值

  - 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}}?