AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

GitLab CI + Kubernetes: 자동 확장 및 무중단 배포의 마법 🚀

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

DevOps

대상자

- DevOps 엔지니어 및 클라우드 아키텍트

- 무중단 배포, 자동 확장, 인프라 코드화(IaC)에 관심 있는 개발자

- 중간~고급 수준의 기술 이해도 필요

핵심 요약

  • GitLab CI/CD + Kubernetes 연동으로 Zero Downtime Deployments자동 확장(Horizontal Pod Autoscaler)을 구현할 수 있음.
  • GitOps 패턴을 통해 인프라를 코드로 관리하며, GitLab Agent를 활용한 보안한 클러스터 연결 가능.
  • .gitlab-ci.yml 파이프라인을 통해 Docker 빌드 → 배포 → 자동 확장까지 하나의 흐름으로 처리.

섹션별 세부 요약

  1. Kubernetes 클러스터 연결 설정
  • GitLab의 Infrastructure > Kubernetes 메뉴에서 클러스터 추가.
  • kubeconfig 파일 직접 입력 또는 GitLab이 자동 생성 가능.
  • GitLab Agent 설치 명령어:

```bash

helm upgrade --install gitlab-agent gitlab/gitlab-agent \

--namespace gitlab-agent \

--set image.tag=v16.0.0 \

--set config.token=YOUR_AGENT_TOKEN

```

  1. CI/CD 파이프라인 구성
  • .gitlab-ci.yml에서 Docker 빌드 → Kubernetes 배포 → HPA 적용 순서로 구성.
  • 예시 스크립트:

```yaml

deploy:

stage: deploy

script:

- kubectl apply -f kubernetes/deployment.yaml

- kubectl apply -f kubernetes/hpa.yaml

```

  1. Horizontal Pod Autoscaler(HPA) 설정
  • hpa.yaml 파일을 통해 CPU 사용률 50% 기준으로 2~10개 Pod 자동 확장 설정.
  • 예시 설정:

```yaml

metrics:

- type: Resource

resource:

name: cpu

target:

type: Utilization

averageUtilization: 50

```

  1. 클라우드 클러스터 자동 확장
  • AWS/GCP 클러스터에서 Cluster Autoscaler 사용 시, Pod 스케줄 불가 시 자동 노드 추가.
  • 롤백 테스트:

```bash

kubectl rollout undo deployment/myapp

```

  1. 실무 사례: Acme Corp의 성공
  • Black Friday 트래픽 폭주 시 10배 증가 처리.
  • Canary DeploymentsSpot 인스턴스 사용으로 비용 절감.
  • GitLab 모니터링으로 메모리 누수 사전 감지.

결론

- GitLab CI/CD + Kubernetes는 자동 확장, 무중단 배포, GitOps를 통해 운영 부담을 최소화함.

- 실무 적용 시 .gitlab-ci.yml 파이프라인과 hpa.yaml 설정 파일을 그대로 활용하고, RBAC 권한 제한으로 보안 강화.

- Slack과 연동한 ChatOps를 통해 채팅으로 배포 트리거 가능.