[kubenetes] 7-2-1. 컨피그맵
kubenetes
Author
Date
2022-07-25 21:28
Views
1518
컨피그맵 생성하는법, --from-literal을 복수로 사용하여 설정할수도있다.
root@Kube-master1:~# kubectl create configmap log-level-configmap --from-literal LOG_LEVEL=DEBUG configmap/log-level-configmap created root@Kube-master1:~# kubectl create configmap start-k8s --from-literal k8s=kubernetes --from-literal container=docker configmap/start-k8s created
다음의 명령들로 확인가능하다.
root@Kube-master1:~# kubectl get cm root@Kube-master1:~# kubectl get configmap NAME DATA AGE kube-root-ca.crt 1 7d15h log-level-configmap 1 61s start-k8s 2 18s root@Kube-master1:~# kubectl describe configmap log-level-configmap Name: log-level-configmap Namespace: default Labels: Annotations: Data ==== LOG_LEVEL: ---- DEBUG Events: root@Kube-master1:~# kubectl get configmap log-level-configmap -o yaml apiVersion: v1 data: LOG_LEVEL: DEBUG kind: ConfigMap metadata: creationTimestamp: "2021-04-27T10:48:46Z" name: log-level-configmap namespace: default resourceVersion: "1001762" uid: 1cfdf197-6434-4e5d-97bd-86c98ce4b40c
컨피그맵의 데이터를 컨테이너의 환경 변수로 가져오기
root@Kube-master1:~# cat all-env-from-configmap.yaml apiVersion: v1 kind: Pod metadata: name: container-env-example spec: containers: - name: my-container image: busybox args: ['tail','-f','/dev/null'] envFrom: - configMapRef: name: log-level-configmap - configMapRef: name: start-k8s
Pod 생성 후 환경변수 확인
root@Kube-master1:~# kubectl apply -f all-env-from-configmap.yaml pod/container-env-example created root@Kube-master1:~# kubectl exec container-env-example 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=container-env-example LOG_LEVEL=DEBUG container=docker k8s=kubernetes …
위는 키값쌍이 2개있는것도 전부 환경변수로 입력이되었다.
아래의 명령을 이용하면 key값마다 환경변수를 하나하나 대입이 가능하다.
root@Kube-master1:~# cat select-env-from-configmap.yaml apiVersion: v1 kind: Pod metadata: name: container-selective-env-example spec: containers: - name: my-container image: busybox args: ['tail','-f','/dev/null'] env: - name: ENV_KEYNAME_1 valueFrom: configMapKeyRef: name: log-level-configmap key: LOG_LEVEL - name: ENV_KEYNAME_2 valueFrom: configMapKeyRef: name: start-k8s key: k8s root@Kube-master1:~# kubectl apply -f select-env-from-configmap.yaml pod/container-selective-env-example created root@Kube-master1:~# kubectl exec container-selective-env-example -- env | grep ENV ENV_KEYNAME_2=kubernetes ENV_KEYNAME_1=DEBUG
envFrom: 컨피그맵이 존재하는 모든 키-값 쌍을 가져옵니다.
valueFrom과 configMapKeyRef: 컨피그맵에 존재하는 키-값 쌍 중에서 원하는 데이터만 선택적으로 져옵니다.
컨피그맵의 내용을 파일로 포드 내부에 마운트하기
root@Kube-master1:~# cat volume-mount-configmap.yaml apiVersion: v1 kind: Pod metadata: name: configmap-volume-pod spec: containers: - name: my-container image: busybox args: ["tail","-f","/dev/null"] volumeMounts: - name: configmap-volume mountPath: /etc/config volumes: - name: configmap-volume configMap: name: start-k8s root@Kube-master1:~# kubectl apply -f volume-mount-configmap.yaml pod/configmap-volume-pod created root@Kube-master1:~# kubectl exec configmap-volume-pod -- ls /etc/config container k8s root@Kube-master1:~# kubectl exec configmap-volume-pod -- cat /etc/config/k8s kubernetes
위의 환경변수로 만들기처럼 이것도 모든 키-값 쌍 데이터를 포드에 마운트하는것이 ㄴ아닌 원하는 키-값 쌍 데이터만 선택해서 포드에 파일로 가져올 수도 있다.
root@Kube-master1:~# cat selective-volume-configmap.yaml apiVersion: v1 kind: Pod metadata: name: selective-cm-volume-pod spec: containers: - name: my-container image: busybox args: ["tail","-f","/dev/null"] volumeMounts: - name: configmap-volume mountPath: /etc/config volumes: - name: configmap-volume configMap: name: start-k8s items: - key: k8s path: k8s_fullname root@Kube-master1:~# kubectl apply -f selective-volume-configmap.yaml pod/selective-cm-volume-pod created root@Kube-master1:~# kubectl exec selective-cm-volume-pod -- ls /etc/config k8s_fullname root@Kube-master1:~# kubectl exec selective-cm-volume-pod -- cat /etc/config/k8s_fullname kubernetes
파일로부터 컨피그맵 생성하기
root@Kube-master1:~# echo Hello, world! >> index.html root@Kube-master1:~# kubectl create cm index-file --from-file index.html configmap/index-file created root@Kube-master1:~# kubectl describe cm index-file Name: index-file Namespace: default Labels: Annotations: Data ==== index.html: ---- Hello, world! Events:
또한 --from-env-file 옵션으로 여러 개의 키-값 형태의 내용으로 구성된 설정 파일을 한꺼번에 컨피그맵으로 가져올 수도 있다.
root@Kube-master1:~# cat multiple-keyvalue.env mykey1=myvalue1 mykey2=myvalue2 mykey3=myvalue3 root@Kube-master1:~# kubectl create configmap from-envfile --from-env-file multiple-keyvalue.env configmap/from-envfile created root@Kube-master1:~# kubectl get cm from-envfile -o yaml apiVersion: v1 data: mykey1: myvalue1 mykey2: myvalue2 mykey3: myvalue3 kind: ConfigMap metadata: creationTimestamp: "2021-04-27T12:14:58Z" name: from-envfile namespace: default resourceVersion: "1009945" uid: e55e3707-ac26-4742-9be9-27771ea6c16f
yaml 파일로 컨피그맵 정의하기
--dry-run, -o yaml을 이용해 yaml파일을 만들수있다.
root@Kube-master1:~# kubectl create cm my-configmap --from-literal mykey=myvalue --dry-run -o yaml apiVersion: v1 data: mykey: myvalue kind: ConfigMap metadata: creationTimestamp: null name: my-configmap
root@Kube-master1:~# kubectl create cm my-configmap --from-literal mykey=myvalue --dry-run -o yaml > my-configmap.yaml root@Kube-master1:~# kubectl apply -f my-configmap.yaml configmap/my-configmap created
--dry-run이란 특정 작업의 실행가능 여부를 검토하는 명령어 또는 api를 의미한다..
실행가능 여부를 확인하며, 실제 리소스를 생산하지 않는다.
Total Reply 0