IT/쿠버네티스 / / 2020. 2. 3.

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

포스팅 목차

    # 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
    

    • 네이버 블로그 공유
    • 네이버 밴드 공유
    • 페이스북 공유
    • 카카오스토리 공유