Kubernetes에서는 YAML 파일을 통해 클러스터 리소스를 선언적으로 정의한다.
다음 각 파일은 특정 목적과 역할을 가지고 있다.
- deployment.yml
- 애플리케이션의 배포를 정의하는 파일이다.
- 애플리케이션을 실행할 컨테이너 이미지, 포트, 환경 변수, 볼륨 등의 세부 사항을 명시한다.
- 복제본(Replica)을 지정하여 원하는 수의 포드를 항상 실행되도록 관리한다.
- 롤링 업데이트와 같은 배포 전략을 설정할 수 있다.
- hpa.yml
- Horizontal Pod Autoscaler(HPA)를 설정하는 파일이다.
- 클러스터의 리소스 사용률(예: CPU, 메모리 또는 사용자 정의 메트릭)을 모니터링하여 자동으로 포드 수를 조절한다.
- 부하에 따라 애플리케이션의 확장성과 효율성을 보장할 수 있다.
- ingress.yml
- 외부 트래픽이 클러스터 내부 서비스로 라우팅되는 방식을 정의하는 파일이다. nginx 등을 정의할 수 있다.
- URL 경로, 호스트 기반 라우팅 규칙, TLS 설정 등 외부 접근 정책을 설정한다.
- 리버스 프록시 역할을 하여, 여러 서비스에 대한 트래픽 분배를 효과적으로 처리하는 데 관여한다.
- secret-provider-class.yml
- 외부 비밀 관리 솔루션과의 연동을 위한 설정 파일도 필요하다.
- 예를 들어, CSI(컨테이너 스토리지 인터페이스) 드라이버와 함께 사용되어 Azure Key Vault, AWS Secrets Manager 등 외부 비밀 저장소와 통신한다.
- 필요한 자격 증명과 접근 방식을 정의하여 애플리케이션이 비밀 정보를 안전하게 가져올 수 있도록 한다.
- service.yaml
- 클러스터 내에서 포드를 외부 또는 내부 네트워크에 노출하기 위한 서비스를 정의하는 파일이다.
- 클러스터 IP, NodePort, LoadBalancer 등의 서비스 유형을 지정하여 네트워크 접근성을 제어한다.
- 특정 레이블을 가진 포드 집합에 대한 안정적인 접근 경로를 제공한다.
이렇듯 pod 의 다양한 측면을 yaml 로 관리하면서, 손쉽게 클러스터를 관리할 수 있다.
기회가 된다면 yml파일 리스트와 argocd, kubernetes가 어떻게 오케스트레이션되어서 CI/CD 와 더불어 pod 가 관리되는지 설명하도록 하겠다.
'개발 > TIL' 카테고리의 다른 글
Validation과 Exception Handling (2) | 2025.03.01 |
---|---|
spring webflux 에 대한 개요 (0) | 2025.02.27 |
java record 알차게 사용하기 (0) | 2025.02.25 |
@EntityGraph 어노테이션 (0) | 2025.02.24 |
로그인 시 refresh token 을 사용하는 이유와 frontend - backend에서 주의할 점 (3) | 2025.02.23 |