ConfigMap

이 페이지에서는 Kubernetes의 ConfigMap 객체와 Google Kubernetes Engine(GKE)에서 이를 사용하는 방법을 설명합니다.

개요

ConfigMap은 구성 파일, 명령줄 인수, 환경 변수, 포트 번호, 기타 구성 아티팩트를 런타임에서 Pod의 컨테이너와 시스템 구성요소에 결합합니다. ConfigMap을 사용하면 Pod와 구성요소에서 구성을 분리할 수 있어 워크로드를 포팅 가능하게 유지할 수 있고, 구성을 쉽게 변경 및 관리할 수 있으며, 구성 데이터가 pod 사양에 하드코딩되는 것을 방지합니다.

ConfigMap은 민감하지 않고 암호화되지 않은 구성 정보를 저장 및 공유하는 데 유용합니다. 클러스터에서 민감한 정보를 사용하려면 보안 비밀을 사용해야 합니다.

ConfigMap 만들기

다음 명령어를 사용하여 ConfigMap을 만듭니다.

kubectl create configmap name data

각 항목의 의미는 다음과 같습니다.

  • name은 ConfigMap 객체의 이름입니다.
  • 다음은 data의 예입니다.

    • --from-file 플래그를 통해 표시된 구성 파일이 한 개 이상 포함된 디렉터리의 경로
    • 각각 --from-literal 플래그를 통해 지정되는 키-값 쌍

kubectl create에 대한 자세한 내용은 참조 문서를 확인하세요.

또한 YAML 매니페스트 파일에 ConfigMap 객체를 정의하고 kubectl create -f filename으로 객체를 배포하여 ConfigMap을 만들 수 있습니다.

파일에서

파일 한 개 이상에서 ConfigMap을 만들려면 --from-file을 사용합니다. 파일에 키-값 쌍이 포함되어 있으면 .properties, .txt 또는 .env와 같은 일반 텍스트 형식으로 파일을 지정할 수 있습니다.

Git에 ConfigMap 파일을 저장하는 것이 좋습니다. 이를 통해 지속적 CI/CD(통합 및 전송) 파이프라인을 활용할 수 있습니다. 이 워크플로 사용에 대한 자세한 내용은 Cloud Build를 사용한 GitOps 스타일의 지속적 배포 가이드를 확인하세요.

파일을 한 개 또는 여러 개 전달할 수 있습니다.

kubectl create configmap name --from-file path/to/file.properties --from-file path/to/file2.properties

또한 여러 파일이 포함된 디렉터리를 전달할 수도 있습니다.

kubectl create configmap name --from-file path/to/directory

파일을 기반으로 ConfigMap을 만들면 키의 기본값은 파일의 기본 이름이 되고 값의 기본값은 파일의 콘텐츠가 됩니다. 대체 키를 지정할 수도 있습니다.

디렉터리 기반 ConfigMap에서는 기본 이름이 디렉터리에 있는 유효한 키인 각 파일이 ConfigMap으로 패키징됩니다. symlink, 기기, 파이프와 같은 일반적이지 않은 파일은 kubectl에서 무시됩니다. 하위 디렉터리도 무시됩니다. kubectl create configmap은 하위 디렉터리에서 재귀적으로 실행되지 않습니다.

예를 들어 다음 명령어는 game-configs 디렉터리에서 game-data라는 ConfigMap을 만듭니다. 이 디렉터리에는 game.propertiesui.properties라는 2개의 properties 파일이 있습니다.

kubectl create configmap game-data --from-file game-configs/

kubectl get configmap game-data -o yaml을 실행하면 다음 출력이 반환됩니다.

apiVersion: v1
data:
  game.properties: |
    enemies=aliens
    lives=3
    ...
  ui.properties: |
    color.good=purple
    color.bad=yellow
    allow.textmode=true
    ...
kind: ConfigMap
metadata:
  creationTimestamp: ...
  name: game-data
  namespace: default
  resourceVersion: ...
  selfLink: /api/v1/namespaces/default/configmaps/game-data
  uid: ...

리터럴 값에서

리터럴 값에서 ConfigMap을 만들려면 --from-literal을 사용합니다.

예를 들어 다음 명령어는 키-값 쌍 두 개가 있는 literal-data라는 ConfigMap을 만듭니다.

kubectl create configmap literal-data --from-literal key1=value1 --from-literal key2=value2

각 키-값 쌍에 --from-literal을 지정합니다.

kubectl get configmap literal-data -o yaml을 실행하면 다음 출력이 반환됩니다.

apiVersion: v1
data:
  key1: value1
  key2: value2
kind: ConfigMap
metadata:
  creationTimestamp: ...
  name: literal-data
  namespace: default
  resourceVersion: ....
  selfLink: /api/v1/namespaces/default/configmaps/literal-data
  uid: ...

ConfigMap 사용

워크로드에서 ConfigMap을 사용하려면 ConfigMap 값을 참조하거나 ConfigMap이 포함된 볼륨을 마운트하는 환경 변수를 지정하면 됩니다.

ConfigMap 사용에 대한 자세한 내용은 ConfigMap을 사용하도록 pod 구성을 참조하세요.

다음 단계