現在表示しているのは、次のバージョン向けのドキュメントです。Kubernetesバージョン: v1.30

Kubernetes v1.30 のドキュメントは積極的にメンテナンスされていません。現在表示されているバージョンはスナップショットです。最新のドキュメントはこちらです: 最新バージョン

コンテナの環境変数の定義

このページでは、Kubernetes Podでコンテナの環境変数を定義する方法を説明します。

始める前に

Kubernetesクラスターが必要、かつそのクラスターと通信するためにkubectlコマンドラインツールが設定されている必要があります。 このチュートリアルは、コントロールプレーンのホストとして動作していない少なくとも2つのノードを持つクラスターで実行することをおすすめします。 まだクラスターがない場合、minikubeを使って作成するか、 以下のいずれかのKubernetesプレイグラウンドも使用できます:

バージョンを確認するには次のコマンドを実行してください: kubectl version.

コンテナの環境変数を定義する

Podを作成するとき、そのPodで実行するコンテナに環境変数を設定することができます。環境変数を設定するには、設定ファイルに env または envFrom フィールドを含めます。

この演習では、1つのコンテナを実行するPodを作成します。Podの設定ファイルには、名前 DEMO_GREETING、値 "Hello from the environment"を持つ環境変数が定義されています。Podの設定マニフェストを以下に示します:

apiVersion:v1kind:Podmetadata:name:envar-demolabels:purpose:demonstrate-envarsspec:containers:- name:envar-demo-containerimage:gcr.io/google-samples/node-hello:1.0env:- name:DEMO_GREETINGvalue:"Hello from the environment"- name:DEMO_FAREWELLvalue:"Such a sweet sorrow"
  1. マニフェストに基づいてPodを作成します:

    kubectl apply -f https://k8s.io/examples/pods/inject/envars.yaml 
  2. 実行中のPodを一覧表示します:

    kubectl get pods -l purpose=demonstrate-envars 

    出力は以下のようになります:

    NAME READY STATUS RESTARTS AGE envar-demo 1/1 Running 0 9s 
  3. Podで実行しているコンテナのシェルを取得します:

    kubectl exec -it envar-demo -- /bin/bash 
  4. シェルでprintenvコマンドを実行すると、環境変数の一覧が表示されます。

    # コンテナ内のシェルで以下のコマンドを実行しますprintenv 

    出力は以下のようになります:

    NODE_VERSION=4.4.2 EXAMPLE_SERVICE_PORT_8080_TCP_ADDR=10.3.245.237 HOSTNAME=envar-demo ... DEMO_GREETING=Hello from the environment DEMO_FAREWELL=Such a sweet sorrow 
  5. シェルを終了するには、exitと入力します。

設定の中で環境変数を使用する

Podの設定で定義した環境変数は、Podのコンテナに設定したコマンドや引数など、設定の他の場所で使用することができます。以下の設定例では、環境変数GREETINGHONORORIFICNAMEにそれぞれ Warm greetings toThe Most HonorableKubernetesを設定しています。これらの環境変数は、env-print-demoコンテナに渡されるCLI引数で使われます。

apiVersion:v1kind:Podmetadata:name:print-greetingspec:containers:- name:env-print-demoimage:bashenv:- name:GREETINGvalue:"Warm greetings to"- name:HONORIFICvalue:"The Most Honorable"- name:NAMEvalue:"Kubernetes"command:["echo"]args:["$(GREETING) $(HONORIFIC) $(NAME)"]

作成されると、コンテナ上でecho Warm greetings to The Most Honorable Kubernetesというコマンドが実行されます。

次の項目