Home [kubernetes-실습] Volumes and Data : ConfigMap 간단 테스트
Post
Cancel

[kubernetes-실습] Volumes and Data : ConfigMap 간단 테스트

ConfigMap에 대해 간단하게 테스트 해보자

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
# 주요 색들을 포함한 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
This post is licensed under CC BY 4.0 by the author.

[kubernetes-실습] Service Resource

[kubernetes-실습] PV 와 PVC 생성