웹사이트 검색

Kubernetes의 구성 맵


이 페이지에서

  1. 전제 조건
  2. 무엇을 할 것인가?\n
  3. Configmap을 만들고 해당 데이터에 액세스합니다.\n
  4. 결론

ConfigMap은 기밀이 아닌 데이터를 저장하는 데 사용됩니다. 데이터는 키-값 쌍입니다. Pod는 ConfigMap을 명령줄 인수, 환경 변수 또는 볼륨의 구성 파일로 사용할 수 있습니다.

ConfigMap을 사용하여 컨테이너 이미지에서 환경별 구성을 분리할 수 있습니다. 이는 휴대용 애플리케이션을 만드는 데 도움이 될 수 있습니다. ConfigMap은 암호화를 제공하지 않으므로 항상 Configmap에 기밀 정보를 저장하지 않는 것이 좋습니다. 구성을 사용하는 대신 비밀을 사용하여 기밀 정보나 보안 키 또는 암호를 저장할 수 있습니다.

Pod 내에서 사용할 수 있는 ConfigMap 데이터를 사용하는 방법은 다음과 같습니다.

  1. 컨테이너에 대한 명령줄 인수\n
  2. 컨테이너의 환경 변수\n
  3. 읽기 전용 볼륨에 파일을 추가합니다.\n
  4. ConfigMap을 읽기 위해 Kubernetes API를 사용하는 포드 내에서 실행할 코드를 작성합니다.\n

Configmap에 대해 자세히 알아보려면 여기에서 Kubernetes 공식 페이지를 방문하세요.

이 기사에서는 configmaps에서 데이터에 액세스하는 두 가지 예를 볼 것입니다. 한 예에서는 pod 명령에서 환경 변수로 구성 맵을 사용하고 다른 예에서는 ConfigMap에 저장된 데이터로 볼륨을 채웁니다.

전제 조건

  1. 워커 노드가 1개 이상 있는 Kubernetes 클러스터.
    Kubernetes 클러스터를 만드는 방법을 알아보려면 여기를 클릭하세요. 이 안내서는 AWS Ubuntu 18.04 EC2 인스턴스에서 1개의 마스터와 2개의 노드가 있는 Kubernetes 클러스터를 생성하는 데 도움이 됩니다.\n

우리는 무엇을 할 것인가?

  1. Configmap 생성 및 데이터 액세스

Configmap을 만들고 해당 데이터에 액세스합니다.

다음 config-map 정의로 파일을 생성합니다.

vim my-configmap-demo1.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: my-configmap-demo1
data:
  variable_one: one
  variable_two: two

Configmap은 다음 명령을 사용하여 만들 수 있습니다.

kubectl create -f my-configmap-demo1.yaml

우리가 만든 구성 맵의 세부 정보를 가져옵니다.

kubectl get configmaps
kubectl describe configmaps my-configmap-demo1

위의 스크린샷에서 우리가 만든 구성 맵에서 사용할 수 있는 데이터 "variable_one" 및 "variable_two"가 있음을 볼 수 있습니다.

이제 포드에서 이 구성 맵에 액세스할 수 있습니다.

포드 명령에서 환경 변수로 configmap 데이터에 액세스하기 위해 다음 콘텐츠로 포드 정의 파일을 생성할 수 있습니다.

vim my-pod-with-configmaps-as-environment-variables.yml
apiVersion: v1
kind: Pod
metadata:
  name: my-pod-configmap-demo
spec:
  containers:
    - name: my-container-configmap-demo
      image: k8s.gcr.io/busybox
      command: [ "/bin/sh", "-c", "echo $(variable_one_env) $(variable_two_env)" ]
      env:
        - name: variable_one_env
          valueFrom:
            configMapKeyRef:
              name: my-configmap-demo1
              key: variable_one
        - name: variable_two_env
          valueFrom:
            configMapKeyRef:
              name: my-configmap-demo1
              key: variable_two
  restartPolicy: Never

이제 환경 변수로 configmap의 데이터에 액세스할 수 있는 포드를 만들 준비가 되었습니다.

kubectl get podss
kubectl create -f my-pod-with-configmaps-as-environment-variables.yml
kubectl get pod

Pod가 성공적으로 실행을 완료했고 Pod를 활성 상태로 유지할 수 있는 프로세스가 없기 때문에 Pod에서 configmap이 사용 가능한지 여부를 로그에서 확인할 수 있습니다. 이를 확인하기 위해 포드에서 변수 값을 인쇄하는 echo 명령을 사용했습니다.

kubectl get pods
kubectl logs my-pod-configmap-demo

위 스크린샷에서 포드에서 configmap 데이터에 액세스할 수 있었고 echo 명령을 사용하여 "one" 및 "two"로 값을 인쇄한 것을 볼 수 있습니다.

Configmap 데이터는 볼륨의 파일로도 제공됩니다.

볼륨을 통해 configmap 데이터에 액세스하려면 다음 콘텐츠를 사용하여 팟(Pod) 정의를 작성하십시오.

vim my-pod-with-configmaps-added-to-volume.yml
apiVersion: v1
kind: Pod
metadata:
  name: my-pod-configmap-demo2
spec:
  containers:
    - name: my-container-configmap-demo2
      image: k8s.gcr.io/busybox
      command: [ "/bin/sh", "-c", "ls /etc/myconfig/" ]
      volumeMounts:
      - name: my-config-volume
        mountPath: /etc/myconfig
  volumes:
    - name: my-config-volume
      configMap:
        name: my-configmap-demo1
  restartPolicy: Never

이제 "my-config-volume" 볼륨에서 파일로 사용할 수 있는 configmap 데이터를 포함할 수 있는 포드를 생성해 보겠습니다. 이 configmap 데이터는 포드의 "/etc/myconfig" 디렉토리에서 사용할 수 있습니다.

kubectl get pods
kubectl create -f my-pod-with-configmaps-added-to-volume.yml
kubectl get pods

이번에도 포드를 활성 상태로 유지하는 프로세스가 없으므로 포드가 성공적으로 종료되었습니다.

그러나 "/etc/myconfig" 디렉토리의 내용을 나열하는 "ls /etc/myconfig" 명령을 사용했습니다.

kubectl get pods

로그에서 configmap 데이터가 "/etc/myconfig" 아래의 파일로 사용 가능한 것을 볼 수 있습니다.

kubectl logs my-pod-configmap-demo2

위 스크린샷에서 포드에서 "variable_one" 및 "variable_two" 파일로 configmap 데이터를 사용할 수 있음을 확인할 수 있습니다.

결론

이 기사에서는 configmap을 작성하고 두 가지 방법으로 액세스하는 방법을 배웠습니다. 포드 명령 및 포드의 볼륨에 있는 파일에 대한 환경 변수로 configmap 데이터에 액세스하는 단계를 확인했습니다.