Kubernetes의 구성 맵
이 페이지에서
- 전제 조건
- 무엇을 할 것인가?\n
- Configmap을 만들고 해당 데이터에 액세스합니다.\n
- 결론
ConfigMap은 기밀이 아닌 데이터를 저장하는 데 사용됩니다. 데이터는 키-값 쌍입니다. Pod는 ConfigMap을 명령줄 인수, 환경 변수 또는 볼륨의 구성 파일로 사용할 수 있습니다.
ConfigMap을 사용하여 컨테이너 이미지에서 환경별 구성을 분리할 수 있습니다. 이는 휴대용 애플리케이션을 만드는 데 도움이 될 수 있습니다. ConfigMap은 암호화를 제공하지 않으므로 항상 Configmap에 기밀 정보를 저장하지 않는 것이 좋습니다. 구성을 사용하는 대신 비밀을 사용하여 기밀 정보나 보안 키 또는 암호를 저장할 수 있습니다.
Pod 내에서 사용할 수 있는 ConfigMap 데이터를 사용하는 방법은 다음과 같습니다.
- 컨테이너에 대한 명령줄 인수\n
- 컨테이너의 환경 변수\n
- 읽기 전용 볼륨에 파일을 추가합니다.\n
- ConfigMap을 읽기 위해 Kubernetes API를 사용하는 포드 내에서 실행할 코드를 작성합니다.\n
Configmap에 대해 자세히 알아보려면 여기에서 Kubernetes 공식 페이지를 방문하세요.
이 기사에서는 configmaps에서 데이터에 액세스하는 두 가지 예를 볼 것입니다. 한 예에서는 pod 명령에서 환경 변수로 구성 맵을 사용하고 다른 예에서는 ConfigMap에 저장된 데이터로 볼륨을 채웁니다.
전제 조건
- 워커 노드가 1개 이상 있는 Kubernetes 클러스터.
Kubernetes 클러스터를 만드는 방법을 알아보려면 여기를 클릭하세요. 이 안내서는 AWS Ubuntu 18.04 EC2 인스턴스에서 1개의 마스터와 2개의 노드가 있는 Kubernetes 클러스터를 생성하는 데 도움이 됩니다.\n
우리는 무엇을 할 것인가?
- 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 데이터에 액세스하는 단계를 확인했습니다.