소개
이 랩에서는 Kubernetes 에서 ConfigMap 을 사용하여 애플리케이션을 구성하는 방법을 배우게 됩니다. ConfigMap 은 애플리케이션 코드에서 구성 데이터를 분리하여 애플리케이션 자체를 수정하지 않고도 애플리케이션 구성을 쉽게 관리하고 업데이트할 수 있는 방법을 제공합니다.
이 랩에서는 Kubernetes 에서 ConfigMap 을 사용하여 애플리케이션을 구성하는 방법을 배우게 됩니다. ConfigMap 은 애플리케이션 코드에서 구성 데이터를 분리하여 애플리케이션 자체를 수정하지 않고도 애플리케이션 구성을 쉽게 관리하고 업데이트할 수 있는 방법을 제공합니다.
리소스를 생성하기 전에 실행 중인 Kubernetes 클러스터가 필요합니다. Minikube 는 로컬 머신에서 실행되는 가벼운 Kubernetes 환경입니다.
작업 디렉토리로 이동:
터미널을 열고 기본 프로젝트 폴더로 이동합니다.
cd /home/labex/project
Minikube 시작:
Kubernetes 클러스터를 초기화하기 위해 Minikube 를 시작합니다.
minikube start
Minikube 가 실행 중인지 확인:
Minikube 클러스터의 상태를 확인합니다.
minikube status
kubelet 및 apiserver와 같은 구성 요소가 Running으로 나열되어 있는지 확인합니다.minikube start를 다시 실행합니다.Minikube 를 시작하는 데 문제가 발생하면 필요에 따라 minikube delete를 사용하여 환경을 재설정하십시오.
이 단계에서는 애플리케이션의 구성 데이터를 포함하는 ConfigMap 을 생성합니다.
/home/labex/project/ 디렉토리에 다음 내용으로 configmap.yaml이라는 파일을 생성합니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
DATABASE_URL: postgres://user:password@host:port/dbname
이 ConfigMap 은 DATABASE_URL을 키로 하고 PostgreSQL 데이터베이스 연결 문자열을 값으로 하는 단일 키 - 값 쌍을 포함합니다.
ConfigMap 을 생성하려면 다음 명령을 실행합니다.
kubectl apply -f configmap.yaml
이 단계에서는 애플리케이션에서 ConfigMap 을 사용합니다.
/home/labex/project/ 디렉토리에 다음 내용으로 deployment.yaml이라는 파일을 생성합니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: nginx:latest
env:
- name: DATABASE_URL
valueFrom:
configMapKeyRef:
name: my-config
key: DATABASE_URL
이 배포는 PostgreSQL 데이터베이스에 연결하기 위해 DATABASE_URL 환경 변수를 사용하는 애플리케이션을 실행하는 단일 컨테이너를 지정합니다. DATABASE_URL의 값은 my-config ConfigMap 에서 가져옵니다.
배포를 생성하려면 다음 명령을 실행합니다.
kubectl apply -f deployment.yaml
이 단계에서는 구성이 애플리케이션에 적용되었는지 확인합니다.
먼저, 다음 명령을 실행하여 애플리케이션을 실행하는 파드의 이름을 찾습니다.
kubectl get pods -l app=my-app
애플리케이션을 실행하는 단일 파드가 표시됩니다. 파드의 이름을 기록해 둡니다.
다음으로, 다음 명령을 실행하여 애플리케이션을 실행하는 컨테이너에서 셸 세션을 엽니다.
kubectl exec -it pod-name -- /bin/sh
<pod-name>을 앞에서 기록한 파드의 이름으로 바꿉니다.
셸 세션에 들어가면 다음 명령을 실행하여 DATABASE_URL 환경 변수의 값을 출력합니다.
echo $DATABASE_URL
ConfigMap 에서 설정한 데이터베이스 연결 문자열이 표시됩니다.
이 단계에서는 ConfigMap 을 업데이트하고 애플리케이션에 미치는 영향을 확인합니다.
configmap.yaml 파일을 DATABASE_URL 키의 새 값으로 업데이트합니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
DATABASE_URL: postgres://newuser:newpassword@newhost:newport/newdbname
이렇게 하면 DATABASE_URL 키가 새 값으로 업데이트됩니다.
ConfigMap 을 업데이트하려면 다음 명령을 실행합니다.
kubectl apply -f configmap.yaml
이 단계에서는 ConfigMap 에 대한 업데이트가 애플리케이션에 적용되었는지 확인합니다.
먼저, 다음 명령을 실행하여 애플리케이션을 실행하는 파드의 이름을 찾습니다.
kubectl get pods -l app=my-app
애플리케이션을 실행하는 단일 파드가 표시됩니다. 파드의 이름을 기록해 둡니다.
다음으로, 다음 명령을 실행하여 애플리케이션을 실행하는 컨테이너에서 셸 세션을 엽니다.
kubectl exec -it pod-name -- /bin/sh
<pod-name>을 앞에서 기록한 파드의 이름으로 바꿉니다.
셸 세션에 들어가면 다음 명령을 실행하여 DATABASE_URL 환경 변수의 값을 출력합니다.
echo $DATABASE_URL
구성 변경 사항이 적용되지 않았고, 이전과 동일한 데이터임을 확인할 수 있습니다. 다음 명령을 사용하여 Deployment 를 다시 시작해야 합니다.
kubectl rollout restart deployment my-app
재부팅이 완료되면 다시 컨테이너 내부로 들어가 위의 명령을 사용하여 구성을 확인합니다.
업데이트된 데이터베이스 연결 문자열을 확인할 수 있습니다.
이 랩에서는 애플리케이션을 구성하기 위해 Kubernetes 에서 ConfigMap 을 사용하는 방법을 배웠습니다. 구성 데이터를 포함하는 ConfigMap 을 생성하고, 애플리케이션에서 ConfigMap 을 사용했으며, 애플리케이션에 미치는 영향을 확인하기 위해 ConfigMap 을 업데이트했습니다. 또한 구성이 애플리케이션에 적용되었는지 확인하고 랩에서 생성된 리소스를 정리하는 방법도 배웠습니다.