你可以使用ConfigMap来实现它。
ConfigMap 是一个 API 对象,用于在键值对中存储非机密数据。 Pod 可以将 ConfigMap 用作环境变量、命令行参数或卷中的配置文件。
首先,您需要使用以下命令从文件中创建ConfigMap:
kubectl create configmap <map-name> <data-source>
其中<map-name> 是您要分配给ConfigMap 的名称,<data-source> 是从中提取数据的目录、文件或文字值。你可以阅读更多关于它的信息here。
这是一个例子:
- 下载示例文件:
wget https://kubernetes.io/examples/configmap/game.properties
您可以使用cat 命令检查此文件中的内容:
cat game.properties
你会看到这个文件中有一些变量:
enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30r
- 从此文件创建
ConfigMap:
kubectl create configmap game-config --from-file=game.properties
您应该会看到 ConfigMap 已创建的输出:
configmap/game-config created
您可以使用以下命令显示ConfigMap 的详细信息:
kubectl describe configmaps game-config
你会看到如下输出:
Name: game-config
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
game.properties:
----
enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30
您还可以使用以下方法查看 yaml 的 ConfigMap 的外观:
kubectl get configmaps game-config -o yaml
输出将是相似的:
apiVersion: v1
data:
game.properties: |-
enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30
kind: ConfigMap
metadata:
creationTimestamp: "2022-01-28T12:33:33Z"
name: game-config
namespace: default
resourceVersion: "2692045"
uid: 5eed4d9d-0d38-42af-bde2-5c7079a48518
下一个目标是将ConfigMap 连接到Pod。可以添加到Podconfiguration的yaml文件中。
正如您在containers 下看到的,有envFrom 部分。因为name 是我在上一步中创建的ConfigMap 的名称。你可以阅读envFromhere
apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
containers:
- name: test-container
image: nginx
envFrom:
- configMapRef:
name: game-config
使用以下方法从 yaml 文件创建Pod:
kubectl apply -f <name-of-your-file>.yaml
最后一步是使用以下命令检查 Pod 中的环境变量:
kubectl exec -it test-pod -- env
如下所示,我在第一步下载的简单文件中有环境变量:
game.properties=enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30