쿠버네티스에서 애플리케이션을 실행하는 가장 기본적인 방법은 Pod을 활용하는 것입니다.
이번 글에서는 기본적인 애플리케이션 실행과 환경 변수를 설정하는 방법을 다룹니다.
📌 글에서 다루는 상황들
1️⃣ 기본적인 애플리케이션 실행 (단일 컨테이너 Pod)
2️⃣ 환경 변수를 활용한 Pod 실행
각 문제를 실무에서 바로 활용할 수 있도록 Manifest 템플릿과 예상 결과 값을 제공합니다.
1️⃣ 기본적인 애플리케이션 실행 (단일 컨테이너 Pod)
📍 상황 설명
운영팀에서 새로운 정적 웹 서버를 배포하려 합니다.
테스트 목적으로 Nginx 컨테이너를 실행하는 가장 기본적인 Pod을 생성해야 합니다.
• Pod의 이름은 nginx-pod이어야 합니다.
• nginx:latest 이미지를 실행해야 합니다.
• 컨테이너가 80번 포트에서 요청을 받을 수 있도록 설정해야 합니다.
• 추가적인 설정 없이 기본 동작을 확인하는 것이 목적입니다.
🛠️ 해결 방법
1. Pod을 정의하고 Nginx 컨테이너를 실행해야 합니다.
• spec.containers에 nginx: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. 환경 변수 값을 직접 설정해야 합니다.
• name과 value 필드를 사용하여 각각 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
'Kubernetes > Kubernetes Best Practices' 카테고리의 다른 글
[Scenario Playbook Ep.6] 🚀 Deployment 편 #1 | 배포 전략 및 롤링 업데이트 (0) | 2025.03.15 |
---|---|
[Scenario Playbook Ep.5] 🚀 POD 편 #5 | Pod 스케줄링 & 실행 전략 (0) | 2025.03.15 |
[Scenario Playbook Ep.4] 🚀 POD 편 #4 | 스토리지 & 데이터 유지 (0) | 2025.03.15 |
[Scenario Playbook Ep.3] 🚀 POD 편 #3 | 다중 컨테이너 & 초기화 설정 (0) | 2025.03.15 |
[Scenario Playbook Ep.2] 🚀 POD 편 #2 | 리소스 제한 & 특정 노드 실행 (0) | 2025.03.15 |