ConfigMap 으로 앱 구성하기

KubernetesBeginner
지금 연습하기

소개

이 랩에서는 Kubernetes 에서 ConfigMap 을 사용하여 애플리케이션을 구성하는 방법을 배우게 됩니다. ConfigMap 은 애플리케이션 코드에서 구성 데이터를 분리하여 애플리케이션 자체를 수정하지 않고도 애플리케이션 구성을 쉽게 관리하고 업데이트할 수 있는 방법을 제공합니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 100%입니다.학습자들로부터 97%의 긍정적인 리뷰율을 받았습니다.

Minikube 클러스터 시작

리소스를 생성하기 전에 실행 중인 Kubernetes 클러스터가 필요합니다. Minikube 는 로컬 머신에서 실행되는 가벼운 Kubernetes 환경입니다.

  1. 작업 디렉토리로 이동:

    터미널을 열고 기본 프로젝트 폴더로 이동합니다.

    cd /home/labex/project
  2. Minikube 시작:

    Kubernetes 클러스터를 초기화하기 위해 Minikube 를 시작합니다.

    minikube start
    • 이 명령은 로컬 머신에 단일 노드 Kubernetes 클러스터를 설정합니다.
    • Minikube 는 시스템 성능에 따라 시작하는 데 몇 분 정도 걸릴 수 있습니다.
  3. Minikube 가 실행 중인지 확인:

    Minikube 클러스터의 상태를 확인합니다.

    minikube status
    • kubeletapiserver와 같은 구성 요소가 Running으로 나열되어 있는지 확인합니다.
    • 클러스터가 실행 중이지 않으면 minikube start를 다시 실행합니다.

Minikube 를 시작하는 데 문제가 발생하면 필요에 따라 minikube delete를 사용하여 환경을 재설정하십시오.

Configmap 생성

이 단계에서는 애플리케이션의 구성 데이터를 포함하는 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 사용하기

이 단계에서는 애플리케이션에서 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 을 업데이트하고 애플리케이션에 미치는 영향을 확인합니다.

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 을 업데이트했습니다. 또한 구성이 애플리케이션에 적용되었는지 확인하고 랩에서 생성된 리소스를 정리하는 방법도 배웠습니다.