18 配置与密钥管理之环境变量与挂载
在上一篇教程中,我们讨论了配置与密钥管理中的配置文件管理。在这一篇中,我们将深入探讨如何使用环境变量和挂载来管理应用程序中的配置和密钥。这是 Kubernetes 中一个非常重要的主题,能够帮助我们的应用程序在不同的环境中灵活配置,并保持安全性。
环境变量
在 Kubernetes 中,您可以通过环境变量向容器传递配置信息。这种方法尤其适用于需要在应用程序启动时加载的配置数据,例如数据库连接字符串或外部 API 密钥。通过在 Pod 的 YAML 配置文件中定义 env
字段,我们可以将这些环境变量注入到容器中。
示例
假设我们有一个简单的 Node.js 应用,需要连接到 MongoDB 数据库。我们可以在 Pod 的配置中指定相关的环境变量。
1 | apiVersion: v1 |
在这个示例中,MONGODB_URL
和 APP_PORT
是我们定义的环境变量。Node.js 应用程序可以使用process.env
来访问这些变量:
1 | const mongodbUrl = process.env.MONGODB_URL; |
从 ConfigMap 中获取环境变量
除了直接在 Pod 中定义环境变量外,您还可以使用 ConfigMap
来管理配置。当配置数据较多或者需要动态更新时,ConfigMap
是一种更好的选择。
首先,我们创建一个 ConfigMap
:
1 | apiVersion: v1 |
接下来,在 Pod 中引用这个 ConfigMap
:
1 | apiVersion: v1 |
通过这种方式,我们能够把应用程序的配置与代码分开,使得在不同环境中部署变得更加灵活。
挂载秘密(Secrets)
使用 Secrets
是 Kubernetes 的另一种安全管理敏感信息(如密码、API 密钥等)的方法。和 ConfigMap
类似,Secrets
也可以作为环境变量或文件挂载到容器内。
示例
假设我们有一个包含数据库密码的 Secret
:
1 | apiVersion: v1 |
接下来,可以将这个 Secret
作为环境变量注入到 Pod 中:
1 | apiVersion: v1 |
在容器中,应用程序就能够通过process.env.DB_PASSWORD
来访问数据库密码。
将 Secrets 挂载为文件
此外,您还可以将 Secrets
挂载为文件到容器中的特定路径:
1 | apiVersion: v1 |
在这个示例中,db-secret
中的密钥将以文件的形式存储在 /etc/secret-volume
目录中,您可以在应用程序中通过读取该文件来获取敏感数据。比如:
1 | const fs = require('fs'); |
小结
在本教程中,我们讨论了如何通过环境变量和挂载来进行配置与密钥管理。环境变量和 ConfigMap
提供了一个简单的方式来管理配置信息,而 Secrets
则确保了敏感信息的安全性。通过这些方法,您能够确保您的应用程序在不同环境中灵活且安全地配置。
在下一篇教程中,我们将探讨持久化存储,包括持久卷(PV)和持久卷声明(PVC),以进一步扩展 Kubernetes 的应用管理能力。
18 配置与密钥管理之环境变量与挂载