このセクションでは、設定情報などのデータを保存しておく ConfigMap リソースの作成について紹介します。 機密情報が含まれるデータは Secret リソースを使用し、機密情報の含まれたないデータは ConfigMap リソースが使用されます。
ファイルから値を参照し作成する場合( – – from-file )
参照するファイルを準備します。ここでは、nginx.conf ファイルを準備し ています。
[root@kube-master sample-configmap]# ls -la 合計 12 drwxr-xr-x. 2 root root 47 2月 3 19:46 . drwxr-xr-x. 18 root root 4096 2月 3 19:45 .. -rw-r--r--. 1 root root 643 2月 3 19:39 nginx.conf [root@kube-master sample-configmap]#
Master サーバーから nginx.conf ファイルから値を参照した ConfigMap リソースを作成します。
[root@kube-master sample-configmap]# kubectl create configmap --save-config sample-configmap --from-file nginx.conf configmap/sample-configmap created [root@kube-master sample-configmap]#
Master サーバーから Kubernetes クラスタ上に作成した ConfigMap リソースを確認します。 sample-configmap リソースが作成されていることが確認できます。
[root@kube-master sample-configmap]# kubectl get configmap NAME DATA AGE sample-configmap 1 24s [root@kube-master sample-configmap]#
Master サーバーから Kubernetes クラスタ上で作成した ConfigMap リソースの情報を yaml 形式で出力します。nginx.conf ファイルに記載されている値が読み込まれていることが確認できます。
[root@kube-master sample-configmap]# kubectl get configmap sample-configmap -o yaml apiVersion: v1 data: nginx.conf: |2 user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; } kind: ConfigMap metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"kind":"ConfigMap","apiVersion":"v1","metadata":{"name":"sample-configmap","creationTimestamp":null},"data":{"nginx.conf":"\nuser nginx;\nworker_processes 1;\n\nerror_log /var/log/nginx/error.log warn;\npid /var/run/nginx.pid;\n\n\nevents {\n worker_connections 1024;\n}\n\n\nhttp {\n include /etc/nginx/mime.types;\n default_type application/octet-stream;\n\n log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n '$status $body_bytes_sent \"$http_referer\" '\n '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n access_log /var/log/nginx/access.log main;\n\n sendfile on;\n #tcp_nopush on;\n\n keepalive_timeout 65;\n\n #gzip on;\n\n include /etc/nginx/conf.d/*.conf;\n}\n"}} creationTimestamp: "2019-02-03T11:45:03Z" name: sample-configmap namespace: default resourceVersion: "3561261" selfLink: /api/v1/namespaces/default/configmaps/sample-configmap uid: 252ba12e-27a9-11e9-94ad-525400bc2a02 [root@kube-master sample-configmap]#
kubectl で直接値を渡す場合( – – from-literal )
ファイルを参照して値を読み込ませるのではなく、kubectl を使って直接渡すこともできます。 Master サーバーから kubectl を使って直接値を渡すには、以下のようなコマンドを実行します。
kubectl create configmap --save-config sample2-configmap \ --from-literal=user=nagin \ --from-literal=worker_processes=1 \ --from-literal=error_log=/var/log/nginx/error.log configmap/sample2-configmap created [root@kube-master sample-configmap]#
Master サーバーから Kubernetes クラスタ上に作成した ConfigMap リソースを確認します。 sample2-configmap リソースが作成されていることが確認できます。
[root@kube-master sample-configmap]# kubectl get configmap NAME DATA AGE sample-configmap 1 20m sample2-configmap 3 44s [root@kube-master sample-configmap]#
Master サーバーから Kubernetes クラスタ上で作成した ConfigMap リソースの情報を yaml 形式で出力します。kubectl で直接渡した値が読み込まれていることが確認できます。
[root@kube-master sample-configmap]# kubectl get configmap sample2-configmap -o yamlapiVersion: v1 data: error_log: /var/log/nginx/error.log user: nagin worker_processes: "1" kind: ConfigMap metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"kind":"ConfigMap","apiVersion":"v1","metadata":{"name":"sample2-configmap","creationTimestamp":null},"data":{"error_log":"/var/log/nginx/error.log","user":"nagin","worker_processes":"1"}} creationTimestamp: "2019-02-03T12:04:51Z" name: sample2-configmap namespace: default resourceVersion: "3562931" selfLink: /api/v1/namespaces/default/configmaps/sample2-configmap uid: e90fe466-27ab-11e9-94ad-525400bc2a02 [root@kube-master sample-configmap]#
マニフェストから作成する場合
サンプルのマニフェストファイルを新規作成し、以下コードを記述します。
[root@kube-master sample-configmap]# vi sampled3-configmap.yaml
data に渡す値を記述します。Value が複数行に渡る場合は、YAML のブロックスタイルの文法に従って「 Key: | 」などのようにして次の行から定義します。また、数値に関してはダブルクォート(” “)で囲うようにします。
apiVersion: v1 kind: ConfigMap metadata: name: sample3-configmap data: thread: "16" connection.max: "100" connection.min: "10" sample.properties: | property.1=value-1 property.2=value-2 property.3=value-3 nginx.conf: | user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }
Master サーバーから 作成したマニフェストを実行し、Kubernetes クラスタ上にリソースを作成します。
[root@kube-master sample-configmap]# kubectl apply -f sample3-configmap.yaml configmap/sample-configmap configured [root@kube-master sample-configmap]#
Master サーバーから Kubernetes クラスタ上に作成した ConfigMap リソースを確認します。 sample3-configmap リソースが作成されていることが確認できます。
[root@kube-master sample-configmap]# kubectl get configmap NAME DATA AGE sample-configmap 5 61m sample2-configmap 3 41m sample3-configmap 5 4s [root@kube-master sample-configmap]#
Master サーバーから Kubernetes クラスタ上で作成した ConfigMap リソースの情報を yaml 形式で出力します。マニフェストから渡した値が読み込まれていることが確認できます。
[root@kube-master sample-configmap]# kubectl get configmap sample3-configmap -o yaml apiVersion: v1 data: connection.max: "100" connection.min: "10" nginx.conf: | user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; } sample.properties: | property.1=value-1 property.2=value-2 property.3=value-3 thread: "16" kind: ConfigMap metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"v1","data":{"connection.max":"100","connection.min":"10","nginx.conf":"user nginx;\nworker_processes auto;\nerror_log /var/log/nginx/error.log;\npid /var/run/nginx.pid;\nevents {\n worker_connections 1024;\n}\n\nhttp {\n include /etc/nginx/mime.types;\n default_type application/octet-stream;\n\n log_format main '$remote_addr - $remote_user [$time_local] \"$request\" '\n '$status $body_bytes_sent \"$http_referer\" '\n '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n access_log /var/log/nginx/access.log main;\n\n sendfile on;\n #tcp_nopush on;\n keepalive_timeout 65;\n #gzip on;\n include /etc/nginx/conf.d/*.conf;\n}\n","sample.properties":"property.1=value-1\nproperty.2=value-2\nproperty.3=value-3\n","thread":"16"},"kind":"ConfigMap","metadata":{"annotations":{},"name":"sample3-configmap","namespace":"default"}} creationTimestamp: "2019-02-03T12:46:16Z" name: sample3-configmap namespace: default resourceVersion: "3566424" selfLink: /api/v1/namespaces/default/configmaps/sample3-configmap uid: b2424adf-27b1-11e9-94ad-525400bc2a02 [root@kube-master sample-configmap]#
Master サーバーから Kubernetes クラスタ上に作成した ConfigMap リソースを削除します。
[root@kube-master sample-configmap]# kubectl delete configmap sample-configmap sample2-configmap sample3-configmap configmap "sample-configmap" deleted configmap "sample2-configmap" deleted configmap "sample3-configmap" deleted [root@kube-master sample-configmap]#
Master サーバーから Kubernetes クラスタ上の ConfigMap リソースが削除されていることを確認します。
[root@kube-master sample-configmap]# kubectl get configmap sample-configmap sample2-configmap sample3-configmap Error from server (NotFound): configmaps "sample-configmap" not found Error from server (NotFound): configmaps "sample2-configmap" not found Error from server (NotFound): configmaps "sample3-configmap" not found [root@kube-master sample-configmap]#