LoginSignup
3
0

More than 5 years have passed since last update.

Kubernetes 環境変数とSecretの設定

Posted at

「Kubernetes完全ガイド」 を元に、環境変数とSecretの設定確認を行った結果をまとめます。

実行環境

Kubernetes / kubectl version : 1.5.2
CentOS 7.4

構築手順1構築手順2

環境変数の設定

Kubernetesで環境変数を設定するには、Podテンプレートに、envまたはenvFromを指定

静的設定

spec.containers.envに値を設定

sample-env.yaml
apiVersion: v1
kind: Pod
metadata:
  name: sample-env
  labels:
    app: sample-app
spec:
  containers:
    - name: nginx-container
      image: nginx:1.12
      env:
        - name: MAX_CONNECTION
          value: "100"

作成したPod/コンテナに、環境変数が設定されている

[root@master ~]# kubectl exec -it sample-env env | grep MAX_CONNECTION
MAX_CONNECTION=100

Podに関する情報(Podのアドレス、起動時間等)は、fieldRefを使って参照可能。参照可能な値はkubectl get pods -o yamlで見えたもの  
例)稼働ノード

[root@master ~]# kubectl get pods sample-env -o yaml
中略
spec:
 nodeName: worker
sample-env-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: sample-env-pod
  labels:
    app: sample-app
spec:
  containers:
    - name: nginx-container
      image: nginx:1.12
      env:
        - name: K8S_NODE
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName

稼働しているPodに、自身の情報(稼働ノード情報)が環境変数として、埋め込まれている事が確認出来る

[root@master ~]# kubectl get pods -o wide
NAME                                 READY     STATUS    RESTARTS   AGE       IP             NODE
sample-env-pod                       1/1       Running   0          9s        172.17.0.4     worker

[root@master ~]# kubectl exec -it sample-env-pod env | grep K8S_NODE
K8S_NODE=worker

Secret

データベース接続用のユーザ名、パスワード等の機密情報のPod外部への格納機能(base64エンコード)。一般的なスキーマレスのGenericを作成

#Secretに埋め込む値をファイルに書き出す
[root@master ~]# echo -n "root" > ./username
[root@master ~]# echo -n "rootpassword" > ./password

作成したファイルを元にSecretを作成

[root@master ~]# kubectl create secret generic --save-config sample-db-auth --from-file=./username --from-file=./password
secret "sample-db-auth" created

作成したSecretを確認 kubectl get

[root@master ~]# kubectl get secrets sample-db-auth -o json
{
    "apiVersion": "v1",
    "data": {
        "password": "cm9vdHBhc3N3b3Jk",
        "username": "cm9vdA=="
    },
    中略

base64からのデコード

[root@master ~]# kubectl get secrets sample-db-auth -o json |jq -r .data.username | base64 --decode
root
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0