open:k8s-configmap

k8s Configmap

  • 컨피그맵을 등록할 때는 시크릿처럼 값을 Base64로 인코드하지 않아도 된다.
  • kubectl describe secret에서는 등록된 내용이 표시되지 않으나, 컨피그맵의 경우 kubectl describe configmap으로 내용이 표시된다.
  • 시크릿과 컨피그맵은 정기적으로 갱신이 체크된다. 볼륨으로 마운트된 경우에도 kubelet의 갱신 주기에 따른 지연이 있기는 하지만 자동으로 갱신된다.
  • 클러스터 롤 view의 대상 리소스에 시크릿은 포함되지 않지만, 컨피그맵은 포함된다. 따라서 참조 권한만으로도 컨피그맵의 내용을 참조할 수 있다.

$ 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>

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

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


  • open/k8s-configmap.txt
  • 마지막으로 수정됨: 2021/10/07 10:29
  • 저자 127.0.0.1