Search
📢

사내 기술 공유 — Kubernetes/Istio

개요

항목
내용
시기
2025년 초
대상
100명 규모 개발 조직 전체
공동 발표
웹개발 2팀 함석명 (시연 담당)
주제
쿠버네티스 배포 플로우: GitLab, Helm Chart, ArgoCD를 곁들인
다루는 범위
배포 플로우 전체, K8S 오브젝트, Helm Chart, ArgoCD, Istio 아키텍처

배경

사내에 Kubernetes가 처음 도입되는 시점이었습니다. 관련 내용이 여러 경로로 전달되었지만, 대부분의 개발자들이 K8S, Helm Chart, ArgoCD, Istio 등 처음 접하는 기술들에 대한 이해에 어려움을 겪고 있었습니다.
이에, 이 조직에서 커리어를 처음 시작한 신입 개발자의 시선에서 기술들을 해석하여, 간단하면서도 필요한 부분은 확실히 전달하는 것을 목표로 발표를 준비했습니다.

발표 구성

Part 1. 전체 배포 플로우

flowchart LR
    A[shopping 레포지토리<br>커밋 Push] --> B[GitLab 파이프라인]
    B --> C[앱 빌드 & 테스트]
    C --> D[Docker 이미지 빌드]
    D --> E[Harbor 푸쉬<br>태그: git commit hash]
    E --> F[Helm Chart의<br>이미지 태그 치환]
    F --> G[K8S 매니페스트<br>레포지토리 Push]
    G --> H[ArgoCD<br>변경 감지 & 배포]
Mermaid
복사
GitLab 파이프라인 → Docker 이미지 빌드(Harbor) → Helm Chart 태그 치환 → ArgoCD 자동 배포의 전체 흐름을 설명

Part 2. 쿠버네티스 핵심 개념

신입 개발자 관점에서 꼭 알아야 할 K8S 오브젝트를 단계적으로 설명:
컨테이너가 필요한 이유 — 서버 환경 차이를 넘어 배포를 용이하게
K8S가 필요한 이유 — 여러 서비스의 컨테이너 관리(오케스트레이션)
Pod — 배포의 최소 단위, 컨테이너의 그룹
ReplicaSet — Pod 복제 및 개수 관리
Deployment — 버전 관리, 롤백, 롤링 업데이트 전략
Service / EndpointSlice — L4 레이어 네트워크 라우팅

Part 3. Helm Chart

templates(오브젝트의 큰 틀)와 values(옵션 값)가 합쳐져 매니페스트가 되는 구조
관련 매니페스트들을 패키징하여 관리하는 필요성 설명
실제 HPA(HorizontalPodAutoscaler) 예시를 통한 template → values → 최종 매니페스트 매핑 시연

Part 4. ArgoCD

Helm Chart 변경을 감지해 자동 배포하는 역할
ArgoCD 시각화 화면 소개

Part 5. 실습 시연 (함석명)

실제 코드 Push부터 K8S 배포까지 라이브 시연

Part 6. Istio 서비스 메시

flowchart TD
    A[외부 트래픽] --> B[istio-ingressgateway]
    B --> C{VirtualService<br>라우팅 규칙}
    C --> D[Pod A]
    C --> E[Pod B]
    
    subgraph Pod A
        D --> F[istio-proxy<br>Envoy 사이드카]
        F --> G[앱 컨테이너]
    end
    
    H[Istiod<br>컨트롤 플레인] -->|규칙 전파| B
    H -->|규칙 전파| F
    I[Gateway &<br>VirtualService] -->|설정 읽기| H
Mermaid
복사
K8S Service의 L4 라우팅만으로는 부족한 이유 (HTTP 헤더/경로 기반 라우팅 불가)
Istio 데이터 플레인(Envoy Proxy, Sidecar 패턴) + 컨트롤 플레인(Istiod) 아키텍처
K8S 환경에서의 구체적 구현: istio-proxy 컨테이너, istio-ingressgateway, Gateway/VirtualService 오브젝트

결과

발표 후 많은 개발자들이 K8S에 대한 기초 개념을 잡고 학습을 해나가는 데 도움이 되었다는 평가
신입 개발자 관점에서 "왜 이 기술이 필요한가"부터 시작하는 구성이 기존에 단편적으로 전달된 정보를 하나의 흐름으로 연결하는 데 효과적이었음