2.9. 구성 맵 생성 및 사용
다음 섹션에서는 구성 맵과 이를 생성하고 사용하는 방법을 정의합니다.
2.9.1. 구성 맵 이해 링크 복사링크가 클립보드에 복사되었습니다!
많은 애플리케이션은 구성 파일, 명령줄 인수, 환경 변수를 조합하여 구성해야 합니다. OpenShift Container Platform에서 컨테이너화된 애플리케이션을 이식하기 위해 이러한 구성 아티팩트는 이미지 콘텐츠와 분리됩니다.
ConfigMap
오브젝트는 컨테이너를 OpenShift Container Platform과 무관하게 유지하면서 구성 데이터를 사용하여 컨테이너를 삽입하는 메커니즘을 제공합니다. 구성 맵은 개별 속성 또는 전체 구성 파일 또는 JSON Blob과 같은 세분화된 정보를 저장하는 데 사용할 수 있습니다.
ConfigMap
오브젝트에는 Pod에서 사용하거나 컨트롤러와 같은 시스템 구성 요소의 구성 데이터를 저장하는 데 사용할 수 있는 구성 데이터의 키-값 쌍이 있습니다. 예를 들면 다음과 같습니다.
ConfigMap
오브젝트 정의
이미지와 같은 바이너리 파일에서 구성 맵을 생성할 때 binaryData
필드를 사용할 수 있습니다.
다양한 방법으로 Pod에서 구성 데이터를 사용할 수 있습니다. 구성 맵을 다음과 같이 사용할 수 있습니다.
- 컨테이너에서 환경 변수 값 채우기
- 컨테이너에서 명령줄 인수 설정
- 볼륨에 구성 파일 채우기
사용자 및 시스템 구성 요소는 구성 데이터를 구성 맵에 저장할 수 있습니다.
구성 맵은 보안과 유사하지만 민감한 정보가 포함되지 않은 문자열 작업을 더 편리하게 지원하도록 설계되었습니다.
구성 맵 제한 사항
Pod에서 콘텐츠를 사용하기 전에 구성 맵을 생성해야 합니다.
컨트롤러는 누락된 구성 데이터를 허용하도록 작성할 수 있습니다. 상황에 따라 구성 맵을 사용하여 구성된 개별 구성 요소를 참조하십시오.
ConfigMap
오브젝트는 프로젝트에 있습니다.
동일한 프로젝트의 Pod에서만 참조할 수 있습니다.
Kubelet은 API 서버에서 가져오는 Pod에 대한 구성 맵만 지원합니다.
여기에는 CLI를 사용하거나 복제 컨트롤러에서 간접적으로 생성되는 모든 Pod가 포함됩니다. OpenShift Container Platform 노드의 --manifest-url
플래그, --config
플래그 또는 해당 REST API를 사용하여 생성한 Pod를 포함하지 않으며 이는 Pod를 생성하는 일반적인 방법이 아니기 때문입니다.
2.9.2. OpenShift Container Platform 웹 콘솔에서 구성 맵 생성 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Container Platform 웹 콘솔에서 구성 맵을 생성할 수 있습니다.
절차
클러스터 관리자로 구성 맵을 생성하려면 다음을 수행합니다.
-
관리자 관점에서
Workloads
Config Maps
을 선택합니다. - 페이지 오른쪽 상단에서 구성 맵 생성을 선택합니다.
- 구성 맵의 콘텐츠를 입력합니다.
- 생성을 선택합니다.
-
관리자 관점에서
개발자로 구성 맵을 생성하려면 다음을 수행합니다.
-
개발자 관점에서
Config Maps
을 선택합니다. - 페이지 오른쪽 상단에서 구성 맵 생성을 선택합니다.
- 구성 맵의 콘텐츠를 입력합니다.
- 생성을 선택합니다.
-
개발자 관점에서
2.9.3. CLI를 사용하여 구성 맵 만들기 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 사용하여 디렉토리, 특정 파일 또는 리터럴 값에서 구성 맵을 생성할 수 있습니다.
절차
구성 맵 생성:
oc create configmap <configmap_name> [options]
$ oc create configmap <configmap_name> [options]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.9.3.1. 디렉토리에서 구성 맵 생성 링크 복사링크가 클립보드에 복사되었습니다!
--from-file
플래그를 사용하면 디렉토리에서 구성 맵을 만들 수 있습니다. 이 방법을 사용하면 디렉토리 내 여러 파일을 사용하여 구성 맵을 생성할 수 있습니다.
디렉토리의 각 파일은 구성 맵에 키를 채우는 데 사용됩니다. 여기서 키의 이름은 파일 이름이고, 키의 값은 파일의 내용입니다.
예를 들어, 다음 명령은 example-files
디렉토리의 내용을 사용하여 구성 맵을 만듭니다.
oc create configmap game-config --from-file=example-files/
$ oc create configmap game-config --from-file=example-files/
구성 맵에서 키를 확인하세요.
oc describe configmaps game-config
$ oc describe configmaps game-config
출력 예
맵의 두 키가 명령에 지정된 디렉토리의 파일 이름에서 생성되는 것을 확인할 수 있습니다. 해당 키의 내용은 클 수 있으므로 oc describe
의 출력은 키의 이름과 크기만 표시합니다.
사전 요구 사항
구성 맵을 채우려는 데이터가 포함된 파일이 있는 디렉토리가 있어야 합니다.
다음 절차에서는
game.properties
및ui.properties
예제 파일을 사용합니다.cat example-files/game.properties
$ cat example-files/game.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat example-files/ui.properties
$ cat example-files/ui.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
color.good=purple color.bad=yellow allow.textmode=true how.nice.to.look=fairlyNice
color.good=purple color.bad=yellow allow.textmode=true how.nice.to.look=fairlyNice
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
프로세스
다음 명령을 입력하여 이 디렉토리의 각 파일의 내용을 보관하는 구성 맵을 만듭니다.
oc create configmap game-config \ --from-file=example-files/
$ oc create configmap game-config \ --from-file=example-files/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
키 값을 보려면
-o
옵션을 사용하여 오브젝트에 대한oc get
명령을 입력합니다.oc get configmaps game-config -o yaml
$ oc get configmaps game-config -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.9.3.2. 파일에서 구성 맵 만들기 링크 복사링크가 클립보드에 복사되었습니다!
--from-file
플래그를 사용하면 파일에서 구성 맵을 만들 수 있습니다. --from-file
옵션을 CLI에 여러 번 전달할 수 있습니다.
--from-file
옵션에 key=value
표현식을 전달하여 파일에서 가져온 콘텐츠에 대한 구성 맵에서 설정할 키를 지정할 수도 있습니다. 예를 들면 다음과 같습니다.
oc create configmap game-config-3 --from-file=game-special-key=example-files/game.properties
$ oc create configmap game-config-3 --from-file=game-special-key=example-files/game.properties
파일에서 구성 맵을 생성하는 경우 UTF8이 아닌 데이터를 손상시키지 않고 이 필드에 배치된 UTF8이 아닌 데이터가 포함된 파일을 포함할 수 있습니다. OpenShift Container Platform에서는 바이너리 파일을 감지하고 파일을 MIME
로 투명하게 인코딩합니다. 서버에서 MIME
페이로드는 데이터 손상 없이 디코딩되어 저장됩니다.
사전 요구 사항
구성 맵을 채우려는 데이터가 포함된 파일이 있는 디렉토리가 있어야 합니다.
다음 절차에서는
game.properties
및ui.properties
예제 파일을 사용합니다.cat example-files/game.properties
$ cat example-files/game.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat example-files/ui.properties
$ cat example-files/ui.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
color.good=purple color.bad=yellow allow.textmode=true how.nice.to.look=fairlyNice
color.good=purple color.bad=yellow allow.textmode=true how.nice.to.look=fairlyNice
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
프로세스
특정 파일을 지정하여 구성 맵을 만듭니다.
oc create configmap game-config-2 \ --from-file=example-files/game.properties \ --from-file=example-files/ui.properties
$ oc create configmap game-config-2 \ --from-file=example-files/game.properties \ --from-file=example-files/ui.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 키-값 쌍을 지정하여 구성 맵을 만듭니다.
oc create configmap game-config-3 \ --from-file=game-special-key=example-files/game.properties
$ oc create configmap game-config-3 \ --from-file=game-special-key=example-files/game.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
-o
옵션과 함께 객체에 대한oc get
명령을 입력하면 파일의 키 값을 볼 수 있습니다.oc get configmaps game-config-2 -o yaml
$ oc get configmaps game-config-2 -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -o
옵션과 함께 객체에 대한oc get
명령을 입력하면 키-값 쌍의 키 값을 확인할 수 있습니다.oc get configmaps game-config-3 -o yaml
$ oc get configmaps game-config-3 -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 이전 단계에서 설정한 키입니다.
2.9.3.3. 리터럴 값에서 구성 맵 생성 링크 복사링크가 클립보드에 복사되었습니다!
구성 맵에 리터럴 값을 제공할 수 있습니다.
--from-literal
옵션은 키=값
구문을 사용하는데, 이를 통해 리터럴 값을 명령줄에 직접 제공할 수 있습니다.
프로세스
리터럴 값을 지정하여 구성 맵을 만듭니다.
oc create configmap special-config \ --from-literal=special.how=very \ --from-literal=special.type=charm
$ oc create configmap special-config \ --from-literal=special.how=very \ --from-literal=special.type=charm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
키 값을 보려면
-o
옵션을 사용하여 오브젝트에 대한oc get
명령을 입력합니다.oc get configmaps special-config -o yaml
$ oc get configmaps special-config -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.9.4. 사용 사례: Pod에서 구성 맵 사용 링크 복사링크가 클립보드에 복사되었습니다!
다음 섹션에서는 Pod에서 ConfigMap
오브젝트를 사용할 때 몇 가지 사용 사례에 대해 설명합니다.
2.9.4.1. 구성 맵을 사용하여 컨테이너에서 환경 변수 채우기 링크 복사링크가 클립보드에 복사되었습니다!
구성 맵을 사용하여 컨테이너의 개별 환경 변수를 채우거나 유효한 환경 변수 이름을 형성하는 모든 키에서 컨테이너의 환경 변수를 채울 수 있습니다.
예를 들어 다음 구성 맵을 고려하십시오.
두 개의 환경 변수가 있는 ConfigMap
하나의 환경 변수가 있는 ConfigMap
절차
configMapKeyRef
섹션을 사용하여 Pod에서 이ConfigMap
의 키를 사용할 수 있습니다.특정 환경 변수를 삽입하도록 구성된 샘플
Pod
사양Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 Pod가 실행되면 Pod 로그에 다음 출력이 포함됩니다.
SPECIAL_LEVEL_KEY=very log_level=INFO
SPECIAL_LEVEL_KEY=very log_level=INFO
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
SPECIAL_TYPE_KEY=charm
은 예제 출력에 나열되지 않습니다. optional: true
가 설정되어 있기 때문입니다.
2.9.4.2. 구성 맵을 사용하여 컨테이너 명령의 명령줄 인수 설정 링크 복사링크가 클립보드에 복사되었습니다!
Kubernetes 대체 구문 $(VAR_NAME)을
사용하여 컨테이너의 명령이나 인수 값을 설정하기 위해 구성 맵을 사용할 수 있습니다.
예를 들어 다음 구성 맵을 고려하십시오.
프로세스
컨테이너의 명령에 값을 주입하려면 환경 변수로 사용할 키를 사용해야 합니다. 그런 다음
$(VAR_NAME)
구문을 사용하여 컨테이너의 명령에서 참조할 수 있습니다.특정 환경 변수를 주입하도록 구성된 샘플 포드 사양
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 환경 변수로 사용할 키를 사용하여 컨테이너의 명령에 값을 삽입합니다.
이 Pod가 실행되면 test-container 컨테이너에서 실행되는 echo 명령의 출력은 다음과 같습니다.
very charm
very charm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.9.4.3. 구성 맵을 사용하여 볼륨에 콘텐츠 삽입 링크 복사링크가 클립보드에 복사되었습니다!
구성 맵을 사용하여 볼륨에 콘텐츠를 삽입할 수 있습니다.
예제 ConfigMap
사용자 정의 리소스(CR)
프로세스
구성 맵을 사용하여 볼륨에 콘텐츠를 삽입하는 몇 가지 다른 옵션이 있습니다.
구성 맵을 사용하여 콘텐츠를 볼륨에 삽입하는 가장 기본적인 방법은 키가 파일 이름이고 파일의 콘텐츠가 키의 값인 파일로 볼륨을 채우는 것입니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 키가 포함된 파일입니다.
이 Pod가 실행되면 cat 명령의 출력은 다음과 같습니다.
very
very
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 볼륨 내에서 구성 맵 키가 투영되는 경로를 제어할 수도 있습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 구성 맵 키의 경로입니다.
이 Pod가 실행되면 cat 명령의 출력은 다음과 같습니다.
very
very
Copy to Clipboard Copied! Toggle word wrap Toggle overflow