ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • kubernetes - Configmap
    개발 2022. 6. 8. 23:25

     

    쿠버네테스 상에서 Configmap 이라는 오브젝트는 어렵게 생각할 필요 없이 클러스터 내에서 Key-Value 쌍의 데이터를 저장하는데 사용하는 API 오브젝트다. 논리적 컴퓨터에 해당하는 Pod은 같은 클러스터 내의 다른 오브젝트의 볼륨에서 환경변수나 구성 파일을 Key-Value로 지정할 수 있는데 이때 사용하는 Object 가 Configmap 이다. 

     

    kubectl get configmaps 로 클러스터내에 존재하는 configmap 오브젝트를 검색할 수 있다. 

     

    ➜  ~  kubectl get configmaps
    NAME                                                        DATA   AGE
    aim-configmap                                               7      6s

     

    data: 내부에 있는 값이 configmap에서 key-value 로 저장하는 값이다. 아래 코드에서 enemies, enemies.cheat 이런 값이 키 값이고, aliens, "true" 가 Value에 해당한다

     

    ➜  ~  kubectl get configmap aim-configmap -o yaml
    apiVersion: v1
    data:
      enemies: aliens
      enemies.cheat: "true"
      enemies.cheat.level: noGoodRotten
      lives: "3"
      secret.code.allowed: "true"
      secret.code.lives: "30"
      secret.code.passphrase: UUDDLRLRBABAS
    kind: ConfigMap

     

    Configmap은 Container에 환경변수를 주입하는데 주로 사용한다. 클러스터 내부의 컨테이너에게 환경 변수를 넘기고 싶은 경우 "Pod이 생성 될 때 어떤 Configmap 의 어떤 Key 값을 참조해 이것을 환경변수로 써라"는 스크립트를 넣는다. 그러면 Container는 생성 될 때 해당 Configmap 의 value 값을 참조해서 환경변수로 넣어둔다.

     

    아래 yaml 파일은 demo라는 컨테이너 생성시 환경 변수 ENEMY_CHEAT_LEVEL이란 값을 만들때 aim-configmap 컨피그 맵에서 enemies.cheat.level 이란 키값을 사용하도록 주문한다. 

     

    apiVersion: v1
    kind: Pod
    metadata:
      name: configmap-demo-pod
    spec:
      containers:
        - name: demo
          image: alpine
          command: ["sleep", "3600"]
          env:
            - name: ENEMY_CHEAT_LEVEL # 환경변수의 이름
              valueFrom:
                configMapKeyRef:
                  name: aim-configmap           # configmap 이름
                  key: enemies.cheat.level      # key 값

     

    성공적으로 빌드가 됐다면 컨테이너 상에서 환경변수를 출력했을 때 컨피그맵에 입력한 값이 출력되는 것을 확인 할 수 있다

     

    $ printenv | grep ENEMY_CHEAT_LEVEL
    ENEMY_CHEAT_LEVEL=noGoodRotten

    '개발' 카테고리의 다른 글

    Kubernetes - Deployment vs StatefulSet  (0) 2022.06.17
    kubernetes - Configmap 생성하기  (0) 2022.06.10
    Kafka 용어 정리  (0) 2022.05.31
    golang 장단점 분석 (vs JAVA)  (0) 2022.03.10
    Flutter - Row, Column, Flexible, Expanded  (0) 2022.03.01

    댓글

Designed by Tistory.