舵图:在同级图表的部署/配置映射中共享环境变量

时间:2019-12-13 10:53:39

标签: kubernetes kubernetes-helm

文件结构(最小化)

有一个图表文件夹,其中包含多个图表。

charts/
  foo-chart/
    templates/
       deployment.yml
       secrets.yml
  bar-chart/
    templates/
      configmaps/
        script.yml

secrets.yml

定义令牌:

apiVersion: v1
kind: Secret
metadata:
  name: {{ .Release.Name }}-secret
  labels:
    app: {{ include "metrics.name" . }}
    chart: {{ include "metrics.chart" . }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
type: Opaque
data:
  # NOTE: Service token has to fit the NIST requirement
  serviceToken: {{ randAscii 40 | b64enc }}

deployment.yml

运行使用环境变量的命令,该环境变量使用机密:

containers:
  command:
  - fancy-binary
  - -token
  - $(AUTH_TOKEN)
  env:
  - name: AUTH_TOKEN
  valueFrom:
    secretKeyRef:
    name: {{ .Release.Name }}-secret
    key: serviceToken

script.yml

应该运行bash命令(Django admin-command)并使用环境变量:

# Create a Service Token
django-admin service_token_add $(AUTH_TOKEN)

问题

  1. 在{em> script.yml 中可以看到AUTH_TOKEN吗?
  2. env valueFrom是否自动设置AUTH_TOKEN的值(部署是否可行)?

2 个答案:

答案 0 :(得分:1)

回答第一个问题,通过容器的env字段传递的环境变量将在您的容器中的所有位置可见 所以在脚本中也要运行,除非您明确取消设置。

您可以通过创建以下代码进行检查(您应该能够复制并粘贴示例):

apiVersion: v1
kind: Secret
metadata:
  name: test-secret
type: Opaque
data:
  serviceToken: MTIzNDU2Nzg5MAo=     # base64 encoded string: "1234567890"

---
apiVersion: v1
kind: Pod
metadata:
  name: test
spec:
  containers:
  - args:
    - echo
    - hello
    - $(AUTH_TOKEN)
    name: test
    env:
    - name: AUTH_TOKEN
      valueFrom:
          secretKeyRef:
          name: test-secret
          key: serviceToken
    image: centos:7
  restartPolicy: Never

,然后在pod完成后,检查日志,您将看到令牌:

$ kubectl logs test
hello 1234567890

脚本也是如此。

为您解答第二个问题;如您在上面的示例中可能已经看到的那样,使用env valueFrom确实会自动将env设置为secret的值。

让我知道它是否有帮助。

答案 1 :(得分:0)

只要使用private void OnPanUpdated(object sender, PanUpdatedEventArgs e) { switch (e.StatusType) { case GestureStatus.Started: break; case GestureStatus.Running: var newRectangle = new Rectangle(e.TotalX, e.TotalY, this.Bounds.Width, this.Bounds.Height); this.LayoutTo(newRectangle, easing: Easing.Linear); break; case GestureStatus.Completed: break; } } configmap进行配置,就可以像您在部署中显示的那样设置环境变量。 (同样,您的缩进有些偏离,但这可能只是一个不好的粘贴)