【问题标题】:How to access Kubernetes cluster environment variables within a container?如何访问容器内的 Kubernetes 集群环境变量?
【发布时间】:2021-09-14 17:47:50
【问题描述】:

例如,我在公共云集群中运行一个 Pod。 Pod 有一个运行应用程序的主容器。集群有一个名为ABC 的环境变量。在主容器中,我希望访问环境变量ABC。最好的方法是什么?

【问题讨论】:

  • 当您说“集群有一个环境变量”时,那个变量在哪里以及它是如何设置的?通常,一个集群将由几个(或数百个)节点组成,并且单个 pod 对容器级别之外的事物的访问非常有限。

标签: kubernetes


【解决方案1】:

非常简单的选项

apiVersion: v1
kind: Pod
metadata:
  name: envar-demo
  labels:
    purpose: demonstrate-envars
spec:
  containers:
  - name: envar-demo-container
    image: gcr.io/google-samples/node-hello:1.0
    env:
    - name: DEMO_GREETING
      value: "Hello from the environment"
    - name: DEMO_FAREWELL
      value: "Such a sweet sorrow"

阅读更多:https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/

选项 1

如果变量不是很重要,您可以使用配置映射来存储配置映射,配置映射将被注入 POD,您的应用可以从操作系统访问变量。

阅读更多关于 configmap 的信息:https://kubernetes.io/docs/concepts/configuration/configmap/

示例配置图:

apiVersion: v1
kind: ConfigMap
metadata:
  name: special-config
  namespace: default
data:
  SPECIAL_LEVEL: very
  SPECIAL_TYPE: charm 

示例吊舱

apiVersion: v1
kind: Pod
metadata:
  name: dapi-test-pod
spec:
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox
      command: [ "/bin/sh", "-c", "ls /etc/config/" ]
      volumeMounts:
      - name: config-volume
        mountPath: /etc/config
  volumes:
    - name: config-volume
      configMap:
        # Provide the name of the ConfigMap containing the files you want
        # to add to the container
        name: special-config
  restartPolicy: Never

您还可以根据需要注入带有变量列表的文件。

选项 2

如果你的变量很重要,你也可以使用 secret :https://kubernetes.io/docs/concepts/configuration/secret/

选项 3

如果您想采用最佳实践和选项,您可以将 vault 与 Kubernetes 一起使用来管理所有不同的微服务变量管理。

保险柜:https://www.vaultproject.io/

例如:https://github.com/travelaudience/kubernetes-vault-example

它是键值对管理并提供良好的安全选项。

【讨论】:

  • 谢谢!我正在寻找一种不明确要求使用 ConfigMap、Secret 或 Vault 的方式,但看起来没有这样的方式。 ConfigMap 应该是我用例的最佳选择。 :)
  • 是的,否则您可以使用第一个选项添加env, env: - name: DEMO_GREETING value: "Hello from the environment"
  • 如果你不想明确,你可以在应用程序中提及它自己在 .env 文件或配置文件中,这是唯一的选择。
  • 注意,感谢您提供替代选项的信息。 :)
  • 谢谢,很高兴听到这个消息,如果答案解决了您的问题,您还可以更新问题的状态。这就是它的工作原理。
猜你喜欢
  • 2021-01-30
  • 1970-01-01
  • 2021-08-10
  • 2020-03-23
  • 1970-01-01
  • 1970-01-01
  • 2019-06-23
  • 2020-07-22
  • 1970-01-01
相关资源
最近更新 更多