Kubernetes 环境变量-为容器设置环境变量(4)

作者 : 慕源网 本文共2235个字,预计阅读时间需要6分钟 发布时间: 2021-11-25 共272人阅读

本文是Kubernetes权威指南系列的一部分,你可以点击Kubernetes权威指南查看所有教程

Kubernetes 环境变量-为容器设置环境变量(4)

Kubernetes 环境变量介绍

Kubernetes 环境变量只不过是我们可以在 Pod 的配置中定义的变量,它可以在配置中的其他地方使用。我们可以使用 Kubernetes 中的 ConfigMap 定义 Kubernetes 环境变量,以单独保存配置工件,并使容器化应用程序具有可移植性。我们可以使用 ‘env’ 或 ‘envFrom’ 字段来设置 Kubernetes 环境变量。它会覆盖容器映像中指定的任何环境变量。我们还有依赖的环境变量。我们可以在配置文件中 env 的值中使用 $(VAR_NAME) 来设置依赖的环境变量。

说明: –在上面的快照中,我们有两个名为“APP_VERSION”和“ENVIRONMENT”的环境变量,并在“env”字段下指定。

环境变量如何在 Kubernetes 中工作?

我们必须在要声明环境变量的 YAML 文件中使用 ‘env’ 关键字,它可能是 pod YAML 文件或秘密 YAML 文件等。然后我们在 env 下指定了环境变量的名称及其值关键字如上例所示。我们必须使用“printenv”来列出 pod 的容器环境变量。它列出了所有环境变量,包括在 YAML 文件中明确指定的变量。我们也可以从 configMap 中引用环境变量。

例子

让我们通过例子来理解:

场景: 1.创建一个带有几个环境变量的 pod,并在容器启动后在 STDOUT 上打印。

步骤: 1.首先,我们需要创建一个如下图所示的 YAML 文件,这里的文件名为 demo-pod.yml: –

demo-pod.yml

步骤 2.让我们使用上面的 YAML 文件创建 pod,如下所示:

$kubectl apply -f demo-pod.yml

步骤 3.现在,检查 pod 的状态,它应该处于运行状态,要检查 pod 的状态,运行以下命令,您将看到名为“demo-pod”的 pod: –

$kubectl get pods

Step 4.最后,让我们检查一下容器中的环境是否可用。要检查状态,我们必须连接到 pod 并执行“printenv”命令,如下所示: –

$kubectl exec <POD_NAME> -- printenv
$kubectl exec demo-pod -- printenv

Kubernetes 环境变量-为容器设置环境变量(4)

说明: –在上面的快照中,我们可以看到 yaml 文件中提到的环境变量 ‘APP_VERSION’ 和 ‘ENVIRONMENT’ 存在于容器中。

场景:2、创建ConfigMap,引用pod中ConfigMap的数据作为环境变量。

步骤 1.首先,让我们使用以下名为“demo-configmap.yml”的 yaml 文件创建两个 ConfigMap: –

demo-configmap.yml
$kubectl apply -f demo-configmap.yml

第 2 步。现在,创建一个 pod,该 pod 将从 configMap 中获取 pod yaml 文件或容器中提到的环境变量的值。这里的文件名是 demo2-pod.yml: –

demo2-pod.yml
$kubectl apply -f demo2-pod.yml

Kubernetes 环境变量-为容器设置环境变量(4)

说明:在上面的例子中,我们可以看到 Kubernetes 已经创建了 2 个 configMap ‘env-config-file’ 和 ‘env-var-config’,并且还创建了一个名为 ‘demo2-pod’ 的 pod。

Step 3.让我们继续检查 pod 的状态,看看环境变量的值是否已成功替换。

$kubectl get pods

Kubernetes 环境变量-为容器设置环境变量(4)

说明:在上面的快照中,我们可以看到状态不是运行而是完成,因为在运行’demo2-pod.yml’文件中提到的命令后容器已经停止。

第 4 步。让我们继续检查 pod 的日志,看看环境变量是否可用,是否具有正确的值: –

$kubectl logs <POD_NAME>  (Note – It will only show the pods running in default namespace)
$kubectl logs demo2-pod

Kubernetes 环境变量-为容器设置环境变量(4)

Kubernetes 环境变量-为容器设置环境变量(4)

说明:在上面的快照中,我们可以看到 ConfigMap 中提到的环境变量的值已经被赋值。

场景:3。将secrets 作为容器环境变量传递。

第 1 步。在这种情况下,首先,我们必须使用以下 yaml 文件创建一个secrets : –

test-secret.yml

Kubernetes 环境变量-为容器设置环境变量(4)

$kubectl apply -f test-secret.yml

第 2 步。接下来,使用下面的 YAML 文件创建一个 pod,如前所述,使用“envForm”关键字来获取secrets 引用,如下面的 YAML 文件所示:

demo3-pod.yml

Kubernetes 环境变量-为容器设置环境变量(4)

$kubectl apply -f demo3-pod.yml

第 3 步。让我们检查在该容器下运行的容器的 pod 和环境变量的状态:

$kubectl get pods

Kubernetes 环境变量-为容器设置环境变量(4)

$kubectl logs demo3-pod

Kubernetes 环境变量-为容器设置环境变量(4)

Kubernetes 环境变量-为容器设置环境变量(4)

说明:在上面的快照中,我们可以看到容器具有环境变量 ‘PASSWORD’ 和 ‘USER_NAME’ 并且它具有一个不可见的文本值,因为它来自 Kubernetes secrets 。

好处

  1. 在创建 pod 时为容器指定环境变量非常有用,例如,如果我们想为容器分配标签等。
  2. 如果需要,它有助于覆盖容器中的图像变量。
  3. 它还允许我们从 ConfigMap 或 secrets 中引用值。

结论

Kubernetes 环境变量提供了我们在 Linux 或任何应用程序开发中的普通环境变量中获得的所有优势。我们已经讨论了 Kubernetes 环境变量的基本用法,但是,我们可以通过使用依赖环境变量使其复杂化。

 


慕源网 » Kubernetes 环境变量-为容器设置环境变量(4)

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录