[클라우드/쿠버네티스] ConfigMap

    728x90
    반응형

     

    출처

    1) Cloud Native DevOps with Kubernetes / 쿠버네티스를 활용한 클라우드 네이티브 데브옵스

     

     

    ConfigMap

    1) 애플리케이션 컨테이너에서 사용할 수 있는 설정 데이터를 저장하고 관리하기 위한 Kubernetes 객체

    2) ConfigMap을 사용하면 애플리케이션의 설정을 코드에서 분리하고, 환경에 따라 다르게 설정 가능

    3) 분리된 세부정보를 외부로 노출시키지 않고 Storage에 저장해서 사용하는 방법

    4) ConfigMap을 변경하더라도  Running상태의 Pod에 곧바로 적용되지 않음 > 재기동 필요

     

     

    ConfigMap 장점

    1) 설정 분리: 애플리케이션 코드와 설정을 분리함으로써 코드 변경 없이 설정을 수정
    2) 유연성: ConfigMap을 사용하면 여러 환경(개발, 테스트, 운영 등)에서 동일한 애플리케이션을 실행할 수 있으며, 환경별로 다른 설정을 적용 가능
    3) 형상 관리: ConfigMap은 YAML 또는 JSON 파일로 정의될 수 있으며, 소스 코드와 함께 버전 관리 시스템에 저장 가능

     

     

    ConfigMap 스펙

    1) 명령어를 사용해 생성된 ConfigMap의 스펙을 확인

    $ kubectl get configmap
    
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: my-config
      namespace: default
    data:
      DB_URL: localhost
      DB_USER: root

     

     

    ConfigMap 생성방법

    1) CMD

    $ kubectl create configmap <configmap-name> --from-literal=<key>=<value>
    
    예시>
    $ kubectl create configmap my-config --from-literal=key1=value1 --from-literal=key2=value2

     

    2) 파일을 통해 생성

    $ kubectl create configmap <configmap-name> --from-file=<filename>
    
    예시>
    kubectl create configmap my-config --from-file=config-file.conf

     

    3) yaml 을 사용해 생성

    yaml 설정
    
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: my-config
    data:
      key1: value1
      key2: value2
    
    
    yaml 설정으로 생성>
    $ kubectl apply -f configmap.yaml

     

     

    ConfigMap 사용 방법

    1) 환경변수

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod
    spec:
      containers:
      - name: my-container
        image: my-image
        envFrom: // 환경변수의 값을 동적으로 설정
        - configMapRef:
            name: my-config

     

    2) Volumn

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod
    spec:
      containers:
      - name: my-container
        image: my-image
        volumeMounts:
        - name: config-volume
          mountPath: /etc/config
      volumes: // Volumn으로 마운트
      - name: config-volume
        configMap:
          name: my-config

     

    3) configmap의 key를 참조하여 그 key-value를 적용

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod
    spec:
      containers:
      - name: my-container
        image: my-image
        env:
        - name: KEY1
          valueFrom: // configmap의 key를 참조하여 그 key-value를 적용
            configMapKeyRef:
              name: my-config
              key: key1 // name으로는 configmap의 이름이 오게 되고, 그 아래 참조하고 싶은 configmap의 key 작성
    728x90
    반응형

    댓글