본문 바로가기

DevOps/쿠버네티스(Kubernetes)

[CKA] 쿠버네티스 ConfigMap 구성하기

애플리케이션에서 configmap 구성하기

Kubernetes에서 configmap으로 작업하는 방법에 대해 알아보자. Pod 정의 파일이 많으면 쿼리의 파일에 저장된 환경 데이터를 관리하는 것이 어려워진다. 이 정보를 Pod 정의 파일에서 가져와 구성 맵을 사용 하여 중앙에서 관리할 수 있다.

configmap은 Kubernetes에서 키 값 쌍의 형태로 구성 데이터를 전달하는 데 사용된다. Pod가 생성되면 configmap을 Pod에 적용하여 키 값 쌍을 Pod의 컨테이너 내부에서 호스팅되는 애플리케이션의 환경 변수로 사용할 수 있도록 한다. configmap 구성에는 두 단계가 포함된다. 먼저 configmaps을 만들고 두 번째로 Pod에 적용한다.

다른 Kubernetes 개체와 마찬가지로 configmaps을 만드는 두 가지 방법이 있다. configmaps 정의 파일을 사용하지 않는 명령형 방법 및 configmaps 정의 파일을 사용하는 선언적 방법이다. configmaps 정의 파일을 만들지 않으려면 Kubectl을 사용하여 configmap 명령을 만들고 필요한 인수를 지정할 수 있다. 우선 명령형 방법부터 살펴보자. 이 방법을 사용하면 명령줄에서 키 값 쌍을 직접 지정할 수 있다.

 지정된 값의 configmap을 만들려면 Kubectl create config map 명령을 실행한다. 명령 뒤에 구성 이름 및 literal 옵션을 사용한다. —from-literal 옵션은 명령 자체에서 키 값 쌍을 지정하는 데 사용된다. app config라는 이름으로 구성 맵을 만들고 있다. 키 값 쌍을 추가하려면 literal 옵션을 여러 번 지정하면 된다. 그러나 구성 항목이 너무 많으면 이 작업이 복잡해진다. 구성 데이터를 입력하는 또 다른 방법은 파일을 이용한다. —from-file 옵션을 사용하여 필요한 데이터가 포함된 파일의 경로를 지정한다. 이 파일의 데이터가 읽히고 파일 이름으로 저장된다.

이제 선언적 접근 방식을 살펴보자. 이를 위해 정의 파일을 만든다. 그 파일에는 apiVersion, 종류 메타데이터가 있으며, 여기에 스펙 대신 데이터가 있다. apiVersion은 V1이고 종류는 ConfigMap이다. metadata 에서 구성 맵의 이름을 지정한다. 우리는 그것을 app-config이라고 부를 것이다. data 아래에 키 값 형식의 구성 데이터를 적는다. kubectl 실행하고 명령을 생성하고 구성 파일 이름을 지정한다. 그러면 app-config configmap이 우리가 지정한 값과 함께 생성된다. 다양한 용도로 동일한 방법으로 필요한 만큼 구성 맵을 만들 수 있다.

여기 응용프로그램 중 하나가 있다. 다른 하나는 mysql용이고 다른 하나는 Redis용이다. 나중에 Configmap을 Pod와 연결할 때 이러한 이름을 사용하게 되므로 Configmap의 이름을 적절하게 지정하는 것이 중요하다.

구성 맵을 보려면 kubectl get configmaps 명령을 실행한다. app- config라는 이름의 새로 생성된 구성 맵이 나열된다. kubectl describe configmaps 명령은 데이터 섹션 아래에 구성 데이터를 나열한다.

configmaps이 생성되었으니 pod에 적용해보자. 여기 간단한 웹 애플리케이션을 실행하는 간단한 포드 정의 파일이 있다. 환경 변수를 적용하려면 컨테이너에 envForm이라는 새 속성을 추가한다. envForm은 list이다. 따라서 필요한 만큼 많은 환경 변수를 전달할 수 있다. 목록의 각 항목은 configmaps 항목에 해당한다. 이전에 만든 configmaps의 이름을 지정하자. Pod 정의 파일로 Pod를 만들면 파란색 배경의 웹 응용 프로그램이 만들어진다.

구성 데이터를 Pod에 적용하는 다른 방법이 있다. 단일 환경 변수로 적용하거나 전체 데이터를 볼륨의 파일로 적용할 수 있다.

 

 

 

 

출처 : https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/learn/lecture/14298876#announcements