포스팅 목차
# ConfigMap에 대해 간단하게 테스트 해보자
# 주요 색들을 포함한 ConfigMap을 생성해 보자.
# 먼저 primary라는 디렉토리를 만들고 색과 관련된 파일들을 생성해본다.
ps0107@k8smaster1:~$ mkdir primary
ps0107@k8smaster1:~$ echo c > primary/cyan
ps0107@k8smaster1:~$ echo m > primary/magenta
ps0107@k8smaster1:~$ echo y > primary/yellow
ps0107@k8smaster1:~$ echo k > primary/black
ps0107@k8smaster1:~$ echo "known as key" >> primary/black
ps0107@k8smaster1:~$ echo blue > favorite
# configMap을 생성하는 3가지 방법이 있다.
# 1. literal value
# 2. file
# 3. directory
ps0107@k8smaster1:~$ kubectl create configmap colors ₩
--from-literal=text=black ₩
--from-file=./favorite ₩
--from-file=./primary/
configmap/colors created
# configMap 생성 확인
ps0107@k8smaster1:~$ kubectl get configmap colors
NAME DATA AGE
colors 6 22s
ps0107@k8smaster1:~$ kubectl get configmap colors -o yaml
apiVersion: v1
data:
black: | #-> value 자체가 여러 라인일 경우 pipe로 주고 여러 라인 사용
k
known as key
cyan: |
c
favorite: |
blue
magenta: |
m
text: black
yellow: |
y
kind: ConfigMap
metadata:
creationTimestamp: "2020-02-03T07:39:51Z"
name: colors
namespace: default
resourceVersion: "691846"
selfLink: /api/v1/namespaces/default/configmaps/colors
uid: f555ef1d-cfd5-4ce4-bc19-4ef81bc51466
# configMap을 이용하여 pod를 생성해보자
ps0107@k8smaster1:~$ vi simpleshell.yaml
apiVersion: v1
kind: Pod
metadata:
name: shell-demo
spec:
containers:
- name: nginx
image: nginx
env: # -> colors라는 configmap에 favorite 라는 key에 대한 value를 ilike 라는 환경 변수에 저장
- name: ilike
valueFrom:
configMapKeyRef:
name: colors
key: favorite
# nginx pod 하나 생성
ps0107@k8smaster1:~$ kubectl create -f simpleshell.yaml
pod/shell-demo created
# 해당 pod에 환경변수 ilike를 조회해 본다.
ps0107@k8smaster1:~$ kubectl exec -it shell-demo -- /bin/bash -c 'echo $ilike'
blue
# 해당 pod 삭제
ps0107@k8smaster1:~$ kubectl delete pod shell-demo
pod "shell-demo" deleted
# 이번엔 envFrom를 사용하여 colors라는 configMap 전체를 참조하게 한다.
ps0107@k8smaster1:~$ vi simpleshell.yaml
apiVersion: v1
kind: Pod
metadata:
name: shell-demo
spec:
containers:
- name: nginx
image: nginx
# env:
# - name: ilike
# valueFrom:
# configMapKeyRef:
# name: colors
# key: favorite
envFrom:
- configMapRef:
name: colors
# 테스트를 위한 nginx pod 하나 생성
ps0107@k8smaster1:~$ kubectl create -f simpleshell.yaml
pod/shell-demo created
# 생성된 pod의 전체 env 설정 값들을 출력해본다.
ps0107@k8smaster1:~$ kubectl exec -it shell-demo -- /bin/bash -c 'env'
black=k
known as key
KUBERNETES_SERVICE_PORT_HTTPS=443
cyan=c
yellow=y
KUBERNETES_SERVICE_PORT=443
HOSTNAME=shell-demo
PWD=/
PKG_RELEASE=1~buster
HOME=/root
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
text=black
NJS_VERSION=0.3.8
TERM=xterm
favorite=blue
SHLVL=0
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
KUBERNETES_SERVICE_HOST=10.96.0.1
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_PORT=443
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
NGINX_VERSION=1.17.8
magenta=m
_=/usr/bin/env
# 확인 했으면 해당 pod를 삭제 한다.
ps0107@k8smaster1:~$ kubectl delete pod shell-demo
pod "shell-demo" deleted
# 이번엔 자동차 관련 ConfigMap을 생성해 보자. 먼저 아래와 같이 yaml파일을 생성한다.
ps0107@k8smaster1:~$ cat car-map.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: fast-car
namespace: default
data:
car.make: Ford
car.model: Mustang
car.trim: Shelby
# configMap을 생성한다.
ps0107@k8smaster1:~$ kubectl create -f car-map.yaml
configmap/fast-car created
# 생성된 configMap 객체에 대한 정보를 yaml형태로 확인해본다.
ps0107@k8smaster1:~$ kubectl get configmap fast-car -o yaml
apiVersion: v1
data:
car.make: Ford
car.model: Mustang
car.trim: Shelby
kind: ConfigMap
metadata:
creationTimestamp: "2020-02-03T07:45:24Z"
name: fast-car
namespace: default
resourceVersion: "692322"
selfLink: /api/v1/namespaces/default/configmaps/fast-car
uid: 2aaa4f19-37f7-44aa-a31c-ace3ae5fc289
# 자동차 configMap 를 테스트 하기 위해 아까 사용한 simpleshell.yaml파일을 수정한다.
ps0107@k8smaster1:~$ vi simpleshell.yaml
apiVersion: v1
kind: Pod
metadata:
name: shell-demo
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- name: car-vol
mountPath: /etc/cars
volumes:
- name: car-vol
configMap:
name: fast-car
# pod를 생성한다.
ps0107@k8smaster1:~$ kubectl create -f simpleshell.yaml
pod/shell-demo created
# 해당 pod 에 monutPath를 조회해본다.
ps0107@k8smaster1:~$ kubectl exec -it shell-demo -- /bin/bash -c 'df -ha | grep car'
/dev/sda1 9.7G 5.1G 4.6G 53% /etc/cars
# 해당 pod의 마운트 path에 configMap 에 대해 생성된 파일들을 조회해본다.
ps0107@k8smaster1:~$ kubectl exec -it shell-demo -- /bin/bash -c 'cat /etc/cars/car.trim'
Shelby
# 테스트가 끝났으니 리소스를 정리한다.
ps0107@k8smaster1:~$ kubectl delete pods shell-demo
pod "shell-demo" deleted
ps0107@k8smaster1:~$ kubectl delete configmap fast-car colors
configmap "fast-car" deleted
configmap "colors" deleted