このセクションでは、Pod に環境変数を渡す方法について紹介します。Kubernetes では、環境変数やファイルが置かれた領域をマウントして渡すことで個別のコンテナに対する設定をすることが一般的であり、ここでは環境変数について触れます。
サンプルのマニフェストファイルを新規作成し、以下コードを記述します。
[root@kube-master sample-env]# vi sample-env.yaml
spec の containters の env に静的な値として環境変数を定義します。ここでは、TESTという名前の環境変数に “hoge” という値を渡す定義をしています。
apiVersion: v1 kind: Pod metadata: name: sample-env labels: app: sample-app spec: containers: - name: nginx-container image: nginx:1.12 env: - name: TEST value: "hoge"
Master サーバーから 作成したマニフェストを実行し、Kubernetes クラスタ上にリソースを作成します。
[root@kube-master sample-env]# kubectl apply -f sample-env.yaml pod/sample-env created [root@kube-master sample-env]#
Master サーバーから Kubernetes クラスタ上の Pod リソースを確認します。 Pod が起動していることが確認できます。
[root@kube-master sample-env]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES sample-env 1/1 Running 0 3s 10.244.1.153 kube-work1 <none> <none> [root@kube-master sample-env]#
Masterサーバーから Pod のコンテナ内の環境変数を確認します。ここでは、TESTという環境変数に “hoge”という値が登録されていることが確認できます。
[root@kube-master sample-env]# kubectl exec -it sample-env env | grep TEST TEST=hoge [root@kube-master sample-env]#
Masterサーバーから Pod のコンテナのタイムゾーンを確認してみます。ここでは、タイムゾーンが UTC であることが確認できます。
[root@kube-master sample-env]# kubectl exec -it sample-env date Fri Feb 1 17:58:12 UTC 2019 [root@kube-master sample-env]#
今度は、コンテナのタイムゾーンを JST にしてみます。まず、作成した Pod リソースを削除します。
[root@kube-master sample-env]# kubectl delete pod sample-env pod "sample-env" deleted [root@kube-master sample-env]#
サンプルのマニフェストファイルを編集し、以下コードに変更します。
[root@kube-master sample-env]# vi sample-env.yaml
spec の containters の env にある環境変数の定義を変更します。ここでは、TZ という名前の環境変数に “Asia/Tokyo” という値を渡す定義をしています。
apiVersion: v1 kind: Pod metadata: name: sample-env labels: app: sample-app spec: containers: - name: nginx-container image: nginx:1.12 env: - name: TZ value: Asia/Tokyo
Master サーバーから 変更したマニフェストを実行し、Kubernetes クラスタ上にリソースを作成します。
[root@kube-master sample-env]# kubectl apply -f sample-env.yaml pod/sample-env created [root@kube-master sample-env]#
Master サーバーから Kubernetes クラスタ上の Pod リソースを確認します。 Pod が起動していることが確認できます。
[root@kube-master sample-env]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES sample-env 1/1 Running 0 2s 10.244.1.155 kube-work1 <none> <none> [root@kube-master sample-env]#
Masterサーバーから Pod のコンテナのタイムゾーンを確認してみます。ここでは、タイムゾーンが JST になっていることが確認できます。
[root@kube-master sample-env]# kubectl exec -it sample-env date Sat Feb 2 03:03:57 JST 2019 [root@kube-master sample-env]#
Master サーバーから 作成した Pod リソースを削除します。
[root@kube-master sample-env]# kubectl delete pod sample-env pod "sample-env" deleted [root@kube-master sample-env]#
Master サーバーから Kubernetes クラスタ上の Pod リソースを確認します。ここでは、リソースが削除されていることが確認できます。
[root@kube-master sample-env]# kubectl get pods -o wide No resources found. [root@kube-master sample-env]#