Post

Section 5-2. ConfigMaps and Secrets

udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의 및 쿠버네티스 인 액션 (마르코 룩샤)를 참고하여 정리한 글입니다.

Section05. Application Lifecycle Management

ConfigMaps

  • ConfigMap은 키-값 쌍으로 데이터를 저장하는 데 사용하는 API 오브젝트이다.
  • 이러한 리소스를 활용하여 쿠버네티스 컨테이너에 설정 정보를 전달할 수 있다.

ConfigMap 생성 방법

  • 명령어를 통해 ConfigMap을 생성하는 방식
    1
    2
    3
    4
    5
    
    kubectl create configmap <config-name> --from-literal=<key1>=<value1> \
                                           --from-literal=<key2>=<value2>
    
    kubectl create configmap app-config --from-literal=APP_COLOR=blue \
                                        --from-literal=APP_MODE=prod
    
  • 파일을 통해 ConfigMap을 생성하는 방식
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    # config-map.yaml
    
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: app-config
    data:
      APP_COLOR: blue
      APP_MODE: prod
    
    1
    
    kubectl create -f config-map.yaml
    

ConfigMap 조회하는 방법

  • kubectl get configmaps
  • kubectl describe configmaps

Pod에 생성한 ConfigMap을 적용하는 방법

  • ConfigMap 전체를 적용하는 방법 ``` apiVersion: v1 kind: Pod metadata: name: simple-webapp-color labels: name: simple-webapp-color spec: containers:
    • name: simple-webapp-color image: simple-webapp-color ports:
      • containerPort: 8080 envFrom:
      • configMapRef: name: app-config ```
    • configMapRef를 통해 ConfigMap을 참조할 수 있다.
  • single key-value를 적용하는 방법
    1
    2
    3
    4
    5
    6
    7
    8
    
    ... 생략
    
    env:
    - name: APP_COLOR
      valueFrom:
        configMapKeyRef:
          name: app-config
          key: APP_COLOR
    

Secrets

  • ConfigMap과 유사하지만 민감한 데이터일 경우 Secret을 이용하여 value의 값을 인코딩한 포맷으로 저장할 수 있다.

Secret 생성 방법

  • 명령어를 통해 Secret을 생성하는 방식
    1
    2
    3
    4
    
    kubectl create secret generic <secret-name> --from-literal=<key>=<value> 
                                                --from-literal=<key2>=<value2>
    
    kubectl create secret generic <secret-name> --from-file=<path-to-file>
    
  • 파일을 통해 Secret을 생성하는 방식
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    # secret-data.yaml
    
    apiVersion: v1
    kind: Secret
    metadata:
      name: app-secret
    data:
      DB_Host: <base64로 인코딩된 텍스트>
      DB_User: <base64로 인코딩된 텍스트>
      DB_Password: <base64로 인코딩된 텍스트>
    
    1
    
    kubectl create -f secret-data.yaml
    
    • 이 때 base64로 인코딩된 값은 echo -n <value> | base64 명령어를 통해 얻을 수 있다.

Secret 조회하는 방법

  • kubectl describe secrets 는 value를 보여주지 않는다.
  • kubectl get secret <secret-name> -o yaml 명령어를 통해 secret의 value를 확인할 수 있다.

Pod에 생성한 Secret을 적용하는 방법

  • Secret 전체를 적용하는 방법 ``` apiVersion: v1 kind: Pod metadata: name: simple-webapp-color labels: name: simple-webapp-color spec: containers:
    • name: simple-webapp-color image: simple-webapp-color ports:
      • containerPort: 8080 envFrom:
      • secretRef: name: app-config ```
    • secretRef 통해 Secret을 참조할 수 있다.
  • single key-value를 적용하는 방법
    1
    2
    3
    4
    5
    6
    7
    8
    
    ... 생략
    
    env:
    - name: APP_COLOR
      valueFrom:
        secretKeyRef:
          name: app-config
          key: DB_Password
    
This post is licensed under CC BY 4.0 by the author.