Kubernetes 설정
클러스터 구성
Kubernetes 클러스터는 다양한 환경에서 구성할 수 있습니다:
- GKE (Google Kubernetes Engine)
- EKS (Amazon Elastic Kubernetes Service)
- AKS (Azure Kubernetes Service)
- 온프레미스 (kubeadm, Rancher 등)
- 로컬 개발 (Minikube, Kind, k3s)
환경별 클러스터 구성 예시
development → 2 nodes (2 CPU, 8GB RAM per node)
staging → 3 nodes (4 CPU, 16GB RAM per node)
production → 5+ nodes (8 CPU, 32GB RAM per node)노드 수와 스펙은 애플리케이션 요구사항에 따라 조정합니다.
네임스페이스 구조
마이크로서비스 아키텍처에서는 서비스별로 네임스페이스를 분리하는 것이 일반적입니다.
| |
네임스페이스 확인:
| |
Deployment 매니페스트
기본 Deployment
Spring Boot 애플리케이션을 위한 기본 Deployment 구성 예시입니다.
| |
Service
| |
ConfigMap
| |
Secret
| |
HPA (Horizontal Pod Autoscaler)
| |
Ingress
외부에서 클러스터 내부 서비스에 접근하기 위한 Ingress 설정 예시입니다.
| |
주요 명령어
| |
배포 전략
Rolling Update (기본)
| |
Blue-Green Deployment
| |
JVM Warm-up 설정
Cold start 문제 해결을 위한 설정:
| |
자세한 내용은 블로그 포스트를 참고하세요.
리소스 최적화
CPU/Memory Requests vs Limits
| |
권장 사항:
- requests는 실제 사용량의 80-90% 수준
- limits는 피크 사용량 기준
- CPU limits는 throttling 발생 가능하므로 신중히 설정
트러블슈팅
Pod가 시작하지 않는 경우
| |
OOMKilled 발생 시
메모리 부족으로 Pod가 종료된 경우:
| |
보안 (Security)
1. RBAC (Role-Based Access Control)
최소 권한 원칙 적용:
| |
2. Pod Security Standards
Pod 보안 정책 적용:
| |
3. Secret 암호화 및 관리
| |
4. Network Policy
기본 거부 + 명시적 허용:
| |
5. Image Pull Policy 및 검증
| |
성능 (Performance)
1. Resource Requests/Limits 최적화
| |
2. HPA (Horizontal Pod Autoscaler) 설정
| |
3. Node Affinity 및 Pod Topology
| |
4. 효율적인 Probe 설정
| |
안정성 (Reliability)
1. PDB (Pod Disruption Budget)
| |
2. Rolling Update 전략
| |
3. 모니터링 및 알림
| |
체크리스트
보안
- RBAC로 최소 권한만 부여했는가?
- Pod Security Standards가 적용되어 있는가?
- Secret을 External Secret Manager로 관리하는가?
- Network Policy로 트래픽을 제한하는가?
- 비-root 사용자로 컨테이너를 실행하는가?
- 이미지 다이제스트를 사용하는가?
성능
- Resource Requests/Limits가 적절히 설정되어 있는가?
- HPA가 설정되어 있는가?
- Node Affinity가 적절히 구성되어 있는가?
- Probe 설정이 최적화되어 있는가?
안정성
- PDB가 설정되어 있는가?
- Rolling Update 전략이 적절한가?
- Replica가 최소 3개 이상인가?
- 모니터링 및 알림이 설정되어 있는가?
- Revision History를 유지하는가?