Kubernetes/Kubernetes Best Practices

[Scenario Playbook Ep.1] 🚀 POD 편 #1 | 기본 실행 & 환경 변수 설정

ygtoken 2025. 3. 15. 13:12
728x90

 

쿠버네티스에서 애플리케이션을 실행하는 가장 기본적인 방법은 Pod을 활용하는 것입니다.

이번 글에서는 기본적인 애플리케이션 실행환경 변수를 설정하는 방법을 다룹니다.

 


📌 글에서 다루는 상황들

 

1️⃣ 기본적인 애플리케이션 실행 (단일 컨테이너 Pod)

2️⃣ 환경 변수를 활용한 Pod 실행

 

각 문제를 실무에서 바로 활용할 수 있도록 Manifest 템플릿과 예상 결과 값을 제공합니다.

 


1️⃣ 기본적인 애플리케이션 실행 (단일 컨테이너 Pod)

 

📍 상황 설명

 

운영팀에서 새로운 정적 웹 서버를 배포하려 합니다.

테스트 목적으로 Nginx 컨테이너를 실행하는 가장 기본적인 Pod을 생성해야 합니다.

Pod의 이름은 nginx-pod이어야 합니다.

nginx:latest 이미지를 실행해야 합니다.

컨테이너가 80번 포트에서 요청을 받을 수 있도록 설정해야 합니다.

추가적인 설정 없이 기본 동작을 확인하는 것이 목적입니다.

 


🛠️ 해결 방법

 

1. Pod을 정의하고 Nginx 컨테이너를 실행해야 합니다.

spec.containersnginx:latest 이미지를 설정하여 실행합니다.

2. Nginx가 정상적으로 실행되도록 포트를 설정해야 합니다.

containerPort: 80을 설정하여 컨테이너 내부에서 80번 포트를 사용할 수 있도록 합니다.

단, 이 설정은 외부에서 접근할 수 있도록 노출하는 것이 아니라, 컨테이너 내부 포트 설정임을 주의해야 합니다.

 


✅ 정답 Manifest (단일 컨테이너 Pod)

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod  # Pod의 이름
spec:
  containers:
  - name: nginx  # 실행할 컨테이너 이름
    image: nginx:latest  # 최신 버전의 Nginx 컨테이너 사용
    ports:
    - containerPort: 80  # 컨테이너 내부에서 80번 포트를 사용하도록 설정

 

 


📌 적용 후 예상 결과 값

 

1) Pod 생성 확인

kubectl get pods

 

예상 출력 값

NAME         READY   STATUS    RESTARTS   AGE
nginx-pod    1/1     Running   0          5s

 

2) Pod 상세 정보 확인

kubectl describe pod nginx-pod

 

예상 출력 값 (일부)

Name:         nginx-pod
Namespace:    default
Status:       Running
Containers:
  nginx:
    Image:         nginx:latest
    Ports:         80/TCP

 

 


2️⃣ 환경 변수를 활용한 Pod 실행

 

📍 상황 설명

 

백엔드 개발팀이 환경 변수로 설정 값을 주입하는 애플리케이션을 배포하려 합니다.

이 애플리케이션은 환경 변수를 통해 데이터베이스 연결 정보를 가져와야 합니다.

Pod의 이름은 app-with-env이어야 합니다.

my-app:latest 컨테이너를 실행해야 합니다.

환경 변수 DB_HOST="mysql-service", DB_PORT="3306"을 설정해야 합니다.

애플리케이션이 실행될 때 환경 변수를 읽을 수 있도록 구성해야 합니다.

 


🛠️ 해결 방법

 

1. Pod 내부에서 환경 변수를 설정해야 합니다.

spec.containers.env 항목을 사용하여 환경 변수를 설정할 수 있습니다.

2. 환경 변수 값을 직접 설정해야 합니다.

namevalue 필드를 사용하여 각각 DB_HOST, DB_PORT 값을 지정합니다.

3. 애플리케이션이 실행될 때 환경 변수를 읽을 수 있도록 설정해야 합니다.

Pod이 실행되면 내부 환경 변수 값이 자동으로 주입됩니다.

 


✅ 정답 Manifest (환경 변수를 설정한 Pod)

apiVersion: v1
kind: Pod
metadata:
  name: app-with-env  # Pod의 이름
spec:
  containers:
  - name: my-app
    image: my-app:latest  # 애플리케이션 컨테이너
    env:
    - name: DB_HOST  # 환경 변수 설정 (데이터베이스 호스트)
      value: "mysql-service"
    - name: DB_PORT  # 환경 변수 설정 (데이터베이스 포트)
      value: "3306"

 

 


📌 적용 후 예상 결과 값

 

1) Pod 생성 확인

kubectl get pods

 

예상 출력 값

NAME           READY   STATUS    RESTARTS   AGE
app-with-env   1/1     Running   0          5s

 

2) 환경 변수 확인

kubectl exec -it app-with-env -- env | grep DB

 

예상 출력 값

DB_HOST=mysql-service
DB_PORT=3306

 

728x90