2

現在、より多くの環境変数 (約 20) を設定する必要があるプロジェクトに取り組んでいます。

これらの変数は、ポッド内の複数のコンテナーと共有する必要があります。Configmap を使用して値を定義しています。今私の問題はこれです。すべての環境変数を個別に設定する必要があり、コンテナごとにこれを行う必要がありますが、これはかなり醜く、不要なコードがたくさんあります。基本的にはこんな感じです

kind: Pod
apiVersion: v1
...
containers:
- name: container1
  image: my-image:latest
  env:
  - name: VAR1
    valueFrom:
      configMapKeyRef:
        name: my-config
        key: my-var1
    ...
- name: container2
  image: some-other-image:stable
  env:
  - name: VAR1
    valueFrom:
      configMapKeyRef:
        name: my-config
        key: my-var1
    ...

私が望むのは、configMap as および環境変数からすべての値をコンテナーに自動的に追加することです。私の最初のアプローチは、configMap をボリュームとしてマウントし、起動時にシェル スクリプトを実行することです。これに似ている

configMap

kind: ConfigMap
apiVersion: v1
...
data:
  envCat.sh: |
    #!/bin/sh
    export $(grep -v '^#' /etc/pod-config/envVars | xargs)
    cat
  envVars
    MY_VAR1="HELLO WORLD!!"
    MY_VAR2="I AM HERE"

ポッド

kind: Pod
apiVersion: v1
...
spec:
  volumes:
  - name: config-volume:
    configMap:
      name: my-config
  containers:
  - name: container1
    image: my-image:latest
    volumeMounts:
    - name: config-volume
      mountPath: /etc/pod-config
    command:
    - /etc/pod-config/envCat.sh

残念ながら、export コマンドはコンテナーで手動で実行すると問題なく動作しますが、シェル スクリプトの実行または /bin/sh /etc/pod-config/envCat.sh の実行は機能しません。

私がやりたいことを達成するための提案はありますか?

4

1 に答える 1

6

envFrom を使用して、すべてのキーと値のペアをコンテナ内の環境変数としてロードする必要があります

于 2019-03-12T18:01:33.123 に答える