Argo CD

Argo CD (1) - GitOps와 Argo CD의 역할

1. 개요 애플리케이션을 Kubernetes에 배포할 때 kubectl apply 를 직접 실행하면 빠르게 시작할 수 있다. 하지만 환경과 클러스터가 늘어나면 누가, 언제, 어떤 설정을 바꿨는지 추적하기 어렵고, Git에 저장된 설정과 실제 클러스터의 상태가 달라질 수…

·6분
Argo CD

Argo CD (2) - Helm으로 설치하고 Web UI 접속하기

1. 개요 이번 글에서는 Kubernetes 클러스터에 Argo CD를 설치하고, 초기 관리자 비밀번호로 Web UI에 접속한다. 실습에서는 외부 접속을 위해 argocd server Service를 NodePort로 변경한다. NodePort와 자체 서명 인증서는 학…

·5분
Argo CD

Argo CD (3) - Application으로 Helm 차트 배포하기

1. 개요 Argo CD의 Application 은 배포할 소스와 대상 클러스터를 연결하는 핵심 리소스다. 이번 글에서는 Bitnami NGINX Helm 차트를 예시로 Application을 만들고, 자동 동기화와 구성 드리프트 처리 옵션을 살펴본다. Helm을 직접…

·7분
Argo Rollouts

Argo Rollouts (1) - 개요와 설치하기

1. 개요 일반 Kubernetes Deployment를 수정하면 새 ReplicaSet을 만들고, 기본 RollingUpdate 전략에 따라 이전 Pod와 새 Pod를 점진적으로 교체한다. 이 전략은 간단하지만 새 버전을 얼마나 노출할지, 중간에 관찰을 위해 멈출지,…

·7분
Argo Rollouts

Argo Rollouts (2) - Canary 배포 실습하기

1. 개요 카나리 배포는 새 버전을 일부에 먼저 적용하고, 오류율·응답 시간·로그처럼 중요한 신호를 확인한 뒤 점차 배포 범위를 넓히는 방식이다. 이번 실습에서는 파란색( blue ) 버전을 먼저 5개 배포한 뒤, 노란색( yellow ) 버전을 20%부터 점진적으로…

·7분
Kubernetes

Kubernetes (39) - Helm Chart를 직접 만들어 MariaDB 배포하기

공개 Chart를 설치하는 데 익숙해지면 다음 질문이 생긴다. "내가 만든 애플리케이션도 이렇게 한 명령으로 설치할 수 있을까?" 답은 Chart를 직접 만드는 것이다. Chart를 만든다는 말은 대단해 보이지만, 실제로는 이미 쓰던 YAML에서 환경마다 달라지는 값만…

·9분
Kubernetes

Kubernetes (37) - Kustomize로 환경별 매니페스트 구성 관리하기

같은 애플리케이션을 개발 환경과 운영 환경에 배포하면 YAML 파일이 조금씩 달라진다. 개발 환경은 Pod를 1개만 실행하고, 운영 환경은 3개를 실행할 수 있다. Ingress 주소, 이미지 태그, 리소스 제한도 환경마다 다를 수 있다. 이 차이 때문에 YAML을 통…

·7분
Kubernetes

Kubernetes (36) - Blue-Green과 Canary로 배포 전략 선택하기

새 버전을 배포하는 일은 단순히 Pod 이미지를 바꾸는 것보다 넓은 문제다. 기존 버전과 새 버전을 얼마나 오래 함께 실행할지, 어떤 기준으로 트래픽을 넘길지, 문제가 생겼을 때 얼마나 빨리 되돌릴지를 함께 결정해야 한다. 이 글에서는 Deployment의 기본 업데이…

·10분
Kubernetes

Kubernetes (33) - VPA로 Pod 리소스 요청량 자동 조절하기

앞 글에서 HPA는 부하에 따라 Pod 개수 를 조절한다고 살펴봤다. 하지만 Pod의 CPU·메모리 requests 자체가 실제 워크로드에 맞지 않으면, Pod가 불필요하게 많이 배치되지 않거나 반대로 자원을 낭비할 수 있다. Vertical Pod Autoscaler…

·7분
Kubernetes

Kubernetes (32) - HPA로 Pod 개수 자동 확장하기

웹 요청이 늘어날 때 Pod를 사람이 직접 늘리고, 한가해지면 다시 줄이는 일은 반복적이고 늦기 쉽다. Horizontal Pod Autoscaler(HPA)는 관측한 지표를 바탕으로 Deployment 같은 워크로드의 복제본 수를 자동으로 조절한다. HPA는 컨테이너…

·9분
Kubernetes

Kubernetes (30) - Ephemeral Storage와 Pod Eviction 이해하기

컨테이너는 파일을 쓸 수 있다. 로그 파일, 압축 해제 파일, 임시 캐시처럼 컨테이너가 사용하는 로컬 디스크도 결국 Kubernetes 노드의 디스크 공간을 차지한다. 이런 임시 디스크 사용량을 관리하는 리소스가 ephemeral storage 다. 데이터를 오래 보존…

·6분
Kubernetes

Kubernetes (21) - Pod Volume으로 임시 데이터와 파일 연결하기

컨테이너 안에서 만든 파일은 별도 저장소를 연결하지 않았다면 컨테이너의 파일 시스템 안에 저장된다. 컨테이너가 교체되거나 Pod가 다시 만들어질 때 이 파일을 그대로 기대하면 안 된다. 하지만 모든 파일을 오래 보관할 필요는 없다. 캐시나 작업 중간 결과처럼 잠깐만 필…

·8분
Kubernetes

Kubernetes (20) - Secret으로 기밀 정보를 안전하게 주입하기

데이터베이스 비밀번호, API 토큰, TLS 개인 키처럼 이미지나 일반 설정 파일에 넣으면 안 되는 값이 있다. Kubernetes의 Secret은 이런 기밀 데이터를 별도 리소스로 관리하고, 필요한 Pod에만 환경 변수 또는 파일로 전달하는 기능이다. Secret을…

·12분
Kubernetes

Kubernetes (19) - ConfigMap으로 애플리케이션 설정 주입하기

실습 전 확인하기 : kubectl 이 실습용 클러스터를 가리키는지 먼저 확인한다. cat 파일명 으로 시작하는 블록은 터미널에 그대로 붙여넣으면 현재 디렉터리에 YAML 파일이 만들어지고, 이어지는 kubectl apply f 명령으로 적용한다. 필드 일부만 보여 주…

·11분
Kubernetes

Kubernetes (18) - Headless Service와 kube-proxy로 Pod 직접 발견하기

실습 전 확인하기 : kubectl 이 실습용 클러스터를 가리키는지 먼저 확인한다. cat 파일명 으로 시작하는 블록은 터미널에 그대로 붙여넣으면 현재 디렉터리에 YAML 파일이 만들어지고, 이어지는 kubectl apply f 명령으로 적용한다. 필드 일부만 보여 주…

·13분
Kubernetes

Kubernetes (16) - CronJob으로 주기적인 Batch 작업 실행하기

1. CronJob이 필요한 이유 Job은 한 번 실행해 완료하는 Batch 작업을 관리한다. 백업, 정기 보고서 생성, 이메일 발송, 오래된 데이터 정리처럼 같은 Job을 일정한 주기로 반복해야 한다면 매번 직접 Job을 만들기보다 CronJob을 사용한다. Cron…

·9분
Kubernetes

Kubernetes (14) - DaemonSet으로 노드별 Pod 실행하기

실습 전 확인하기 : kubectl 이 실습용 클러스터를 가리키는지 먼저 확인한다. cat 파일명 으로 시작하는 블록은 터미널에 그대로 붙여넣으면 현재 디렉터리에 YAML 파일이 만들어지고, 이어지는 kubectl apply f 명령으로 적용한다. 필드 일부만 보여 주…

·9분
Kubernetes

Kubernetes (13) - Deployment로 롤링 업데이트와 롤백 관리하기

실습 전 확인하기 : kubectl 이 실습용 클러스터를 가리키는지 먼저 확인한다. cat 파일명 으로 시작하는 블록은 터미널에 그대로 붙여넣으면 현재 디렉터리에 YAML 파일이 만들어지고, 이어지는 kubectl apply f 명령으로 적용한다. 필드 일부만 보여 주…

·9분
Kubernetes

Kubernetes (12) - ReplicaSet으로 원하는 Pod 수 유지하기

실습 전 확인하기 : kubectl 이 실습용 클러스터를 가리키는지 먼저 확인한다. cat 파일명 으로 시작하는 블록은 터미널에 그대로 붙여넣으면 현재 디렉터리에 YAML 파일이 만들어지고, 이어지는 kubectl apply f 명령으로 적용한다. 필드 일부만 보여 주…

·9분
Kubernetes

Kubernetes (9) - requests와 limits로 Pod 리소스 관리하기

실습 전 확인하기 : kubectl 이 실습용 클러스터를 가리키는지 먼저 확인한다. cat 파일명 으로 시작하는 블록은 터미널에 그대로 붙여넣으면 현재 디렉터리에 YAML 파일이 만들어지고, 이어지는 kubectl apply f 명령으로 적용한다. 필드 일부만 보여 주…

·9분
Kubernetes

Kubernetes (8) - Liveness, Readiness, Startup Probe로 상태 점검하기

실습 전 확인하기 : kubectl 이 실습용 클러스터를 가리키는지 먼저 확인한다. cat 파일명 으로 시작하는 블록은 터미널에 그대로 붙여넣으면 현재 디렉터리에 YAML 파일이 만들어지고, 이어지는 kubectl apply f 명령으로 적용한다. 필드 일부만 보여 주…

·9분
Kubernetes

Kubernetes (6) - 환경 변수로 Pod 실행 설정하기

실습 전 확인하기 : kubectl 이 실습용 클러스터를 가리키는지 먼저 확인한다. cat 파일명 으로 시작하는 블록은 터미널에 그대로 붙여넣으면 현재 디렉터리에 YAML 파일이 만들어지고, 이어지는 kubectl apply f 명령으로 적용한다. 필드 일부만 보여 주…

·6분
Kubernetes

Kubernetes (5) - Pod 실행 설정과 Multi-Container 디자인 패턴

실습 전 확인하기 : kubectl 이 실습용 클러스터를 가리키는지 먼저 확인한다. cat 파일명 으로 시작하는 블록은 터미널에 그대로 붙여넣으면 현재 디렉터리에 YAML 파일이 만들어지고, 이어지는 kubectl apply f 명령으로 적용한다. 필드 일부만 보여 주…

·8분
Kubernetes

Kubernetes (4) - Label과 Selector로 Kubernetes 리소스 연결하기

실습 전 확인하기 : kubectl 이 실습용 클러스터를 가리키는지 먼저 확인한다. cat 파일명 으로 시작하는 블록은 터미널에 그대로 붙여넣으면 현재 디렉터리에 YAML 파일이 만들어지고, 이어지는 kubectl apply f 명령으로 적용한다. 필드 일부만 보여 주…

·7분
Kubernetes

Kubernetes (3) - Pod 컨테이너와 Multi-Container Pod 이해하기

실습 전 확인하기 : kubectl 이 실습용 클러스터를 가리키는지 먼저 확인한다. cat 파일명 으로 시작하는 블록은 터미널에 그대로 붙여넣으면 현재 디렉터리에 YAML 파일이 만들어지고, 이어지는 kubectl apply f 명령으로 적용한다. 필드 일부만 보여 주…

·13분
Kubernetes

Kubernetes (2) - Namespace로 리소스 분리하고 context 전환하기

실습 전 확인하기 : kubectl 이 실습용 클러스터를 가리키는지 먼저 확인한다. cat 파일명 으로 시작하는 블록은 터미널에 그대로 붙여넣으면 현재 디렉터리에 YAML 파일이 만들어지고, 이어지는 kubectl apply f 명령으로 적용한다. 필드 일부만 보여 주…

·9분
Kubernetes

Kubernetes (1) - kubectl 기본 명령어로 Pod와 Deployment 다루기

실습 전 확인하기 : kubectl 이 실습용 클러스터를 가리키는지 먼저 확인한다. cat 파일명 으로 시작하는 블록은 터미널에 그대로 붙여넣으면 현재 디렉터리에 YAML 파일이 만들어지고, 이어지는 kubectl apply f 명령으로 적용한다. 필드 일부만 보여 주…

·6분