목차

k8s Configmap

특징

Nginx의 SSL/TLS 암호 설정 파일: tls.conf

nginx-conf 디렉터리의 설정 파일을 일괄로 컨피그맵에 등록

$ kubectl create configmap nginx-conf --from-file=tls.conf
 
$ kubectl get configmap nginx-conf
 
$ kubectl describe configmap nginx-conf
Name:         nginx-conf
Namespace:    default
Labels:       <none>
Annotations:  <none>
 
Data
====
tls.conf:
----
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
server {
    listen 443 ssl;
    server_name www.sample.com;
    ssl_certificate /etc/cert/tls.crt;
    ssl_certificate_key /etc/cert/tls.key;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}
 
 
BinaryData
====
 
Events:  <none>

컨피그맵에 데이터를 등록하는 매니페스트: cm-env.yml

apiVersion: v1
kind: ConfigMap
metadata:
  name: env-config
data:
  log_level: INFO

컨피그맵을 환경 변수로 읽는 파드의 매니페스트: cm-env-read.yml

apiVersion: v1
kind: Pod
metadata:
  name: web-apl
spec:
  containers:
  - name: web
    image: nginx
    env:
    - name: LOG_LEVEL ## 컨테이너 환경 변수명
      valueFrom:
        configMapKeyRef:
          name: env-config ## 컨피그맵명
          key: log_level ## 키 항목

파드에서 컨피그맵의 값을 환경 변수로 읽기

$ kubectl apply -f cm-env.yml

$ kubectl apply -f cm-env-read.yml

$ kubectl exec -it web-apl env

kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=web-apl
TERM=xterm
LOG_LEVEL=INFO
KUBERNETES_SERVICE_PORT=443
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
KUBERNETES_SERVICE_HOST=10.96.0.1
NGINX_VERSION=1.21.3
NJS_VERSION=0.6.2
PKG_RELEASE=1~buster
HOME=/root


관련 문서