90. FluxCD (플럭스) - ArgoCD의 양대 산맥 GitOps 도구

⚠️ 이 문서는 어제 배운 화려하고 무거운 UI 대시보드 강자 'ArgoCD'와 함께 전 세계 쿠버네티스(K8s) GitOps(Pull 기반 자동 배포) 시장을 양분하고 있는 영원한 라이벌이자, **UI 따위는 개나 줘버리고 오직 시커먼 터미널과 K8s 네이티브 철학 하나만 뚝심 있게 파고들어, 엄청나게 가볍고 터미널만 치는 찐(True) 코어 데브옵스 인프라 엔지니어들이 열광하는 극한의 마이크로서비스 배포 봇, 'FluxCD (플럭스)'**를 다룹니다.

핵심 인사이트 (3줄 요약)

  1. 본질: ArgoCD와 100% 동일하게 깃허브(Git)의 텍스트 파일(YAML)을 노려보다가 클러스터에 강제 동기화(Sync)시켜버리는 K8s 뱃속의 Pull 기반 에이전트 로봇이다.
  2. 가치: 거대하고 무거운 통짜(Monolithic) 로봇인 ArgoCD와 달리, Flux는 5개의 아주 가벼운 마이크로서비스(소스 컨트롤러, 헬름 컨트롤러 등)로 찢어져 있어 K8s 자원을 거의 안 먹으며, 터미널(CLI) 자동화 스크립트와 미친 듯이 잘 찰떡같이 융합된다.
  3. 기술 체계 (ArgoCD와의 차이): ArgoCD가 웹 화면(UI 대시보드)으로 관리자를 유혹한다면, Flux는 UI가 아예 없다. 모든 설정을 K8s 표준 언어(CRD yaml)와 터미널(flux CLI)로만 묵묵히 처리하는 뼛속까지 진성 K8s-Native 해커들을 위한 도구다.

Ⅰ. GitOps의 시조새: Weaveworks와 Flux의 탄생

GitOps라는 단어를 세상에 처음 외친 자들의 오리지널 마스터피스.

  1. GitOps의 원조 맛집:
    • 사실 깃옵스(GitOps)라는 미친 개념("Git이 곧 서버의 진리다")을 2017년에 세상에 처음 창시하고 단어를 만들어낸 회사가 바로 **Weaveworks(위브웍스)**다.
    • 그리고 그 위브웍스가 자신들의 철학을 100% 구현하기 위해 손수 깎아 만든 최초의 로봇이 바로 **Flux(버전 1)**다. (ArgoCD는 나중에 인튜이트(Intuit)라는 회사가 예쁘게 포장해서 만든 후발 주자다.)
  2. Flux v2의 등장 (GitOps Toolkit):
    • Flux v1은 너무 낡아서 하나의 통짜 덩어리로 돌았다.
    • 분노한 위브웍스 엔지니어들은 기계를 완전히 박살 내고 Flux v2를 내놓았다. 이 봇은 하나의 기계가 아니라, 5개의 초소형 봇(마이크로서비스)들의 연합체인 **'GitOps Toolkit'**으로 완전히 환골탈태했다.
  3. 핵심 5대 마이크로 봇 (Controllers):
    • Source Controller: 깃허브(Git) 쳐다보기 전담 봇. (Git, Helm 레포지토리에서 파일만 미친 듯이 긁어와서 압축 파일로 만듦)
    • Kustomize Controller: 긁어온 쌩얼 YAML에 운영망 변수 덧칠하기(빌드) 전담 봇.
    • Helm Controller: 남이 만든 차트 빵틀에 변수 부어서 찍어내기 전담 봇.
    • 이렇게 각자 자기 할 일만 하는 초경량 봇 5마리가 K8s 바닥에서 윙윙 돌며 클러스터를 지배한다. 무겁고 뚱뚱한 ArgoCD의 단일 서버보다 CPU/RAM을 극단적으로 적게 먹는 이유다.

📢 섹션 요약 비유: ArgoCD가 스위스 아미 나이프(맥가이버 칼)처럼 모든 기능(UI, 통신, 배포)이 하나의 무겁고 예쁜 칼자루 안에 몽땅 들어있는 만능 툴이라면, Flux는 목수의 공구함(GitOps Toolkit)입니다. 망치(Git 긁어오는 봇), 드라이버(Helm 찍어내는 봇), 톱(Kustomize 봇)이 완전히 가벼운 개별 도구로 쪼개져 있어서, 인프라 목수(엔지니어)가 자기가 필요한 도구만 쏙쏙 빼서 가볍게 휘두를 수 있는, 뼛속까지 장인들을 위한 분업화된 초경량 도구 상자입니다.


Ⅱ. Flux vs ArgoCD: 무엇을 선택할 것인가? (피 튀기는 라이벌전)

눈이 달린 자는 ArgoCD를, 손가락이 빠른 자는 Flux를 선택한다.

  1. 화면(UI)의 유무 - 대중성과 매니아의 갈림길:
    • ArgoCD의 무기: 미친 듯이 예쁘고 화려한 웹 UI 대시보드다. 녹색불(Sync), 빨간불(OutOfSync)이 시각적으로 번쩍거리고, 거미줄처럼 엮인 수십 개의 파드 트리를 마우스로 눌러서 껐다 켤 수 있다. 신입 사원이나 비개발자(PM)도 보고 10초 만에 이해한다. 그래서 시장 1등을 먹었다.
    • Flux의 똥고집: 웹 UI가 아예 없다(Zero). 오직 시커먼 터미널 화면에 flux get all 같은 키보드 명령어(CLI)만 쳐야 상태를 볼 수 있다. (최근 Weave GitOps라는 유료 UI가 생기긴 했으나, 여전히 철학은 터미널이다.)
  2. K8s-Native 사상의 극한 (CRD 몰빵):
    • ArgoCD는 자기만의 독자적인 세팅 방식(UI 클릭이나 AppProject 등)이 살짝 섞여 있다.
    • Flux는 무서울 정도로 **K8s의 순정 룰(yaml)**만 고집한다. 깃허브를 쳐다보게 명령할 때조차 무조건 순정 GitRepository.yaml 이라는 커스텀 문서(CRD)를 만들어서 K8s API 서버에 kubectl apply로 박아넣어야만 봇이 움직인다. K8s 터미널 좀 친다는 진성 고인물 엔지니어들이 Flux를 맹신하는 이유다.
  3. 멀티 테넌시 (Multi-Tenancy) 아키텍처 격리:
    • 클러스터 1개에 10개 부서가 들어와 살 때(어제 배운 네임스페이스 격리), ArgoCD 1대를 띄우고 10개 부서를 UI에서 권한 나누기 하는 건 가끔 보안 설정이 꼬여서 피곤하다.
    • Flux는 아예 너무 가벼워서, 10개 부서 네임스페이스 방마다 쪼만한 Flux 봇을 각각 1마리씩 통째로 10개를 띄워버려도(1팀 1봇 체제) 클러스터 메모리가 버텨낸다. 완벽한 물리적 보안 격리(Hard Isolation)가 1초 만에 달성된다.

📢 섹션 요약 비유: ArgoCD는 자동 변속기(오토) 스포츠카입니다. 화려한 계기판(UI 대시보드)과 네비게이션이 빵빵해서 초보 운전자도 엑셀만 밟으면 화려하게 클라우드를 질주할 수 있어 전 세계에서 제일 잘 팔립니다. 반면 Flux는 군용 수동(매뉴얼) 지프차입니다. 에어컨도 없고 계기판도 투박한 철판때기(터미널 CLI)뿐입니다. 하지만 기어를 내 마음대로 넣다 뺐다 할 수 있고, 진흙탕(멀티 테넌시 등 꼬인 아키텍처)에 빠졌을 때 고인물 운전사(인프라 엔지니어)가 자기 입맛대로 차를 개조해서 바퀴를 빼낼 수 있는 무시무시한 내구성과 커스텀 확장성을 지닌 상남자들의 머신입니다.


Ⅲ. Image Update Automation (도커 이미지 광속 감시)

개발자가 코드를 푸시하면, 깃허브 YAML 글씨마저 봇이 스스로 타이핑해서 고친다.

  1. 일반 GitOps의 귀찮은 단점:
    • 개발자가 Java 코드를 짜고 깃허브에 올렸다. 젠킨스가 그걸 빌드해서 myapp:v3.0 이라는 새로운 도커 이미지를 구워서 창고(ECR)에 던졌다.
    • 여기서 배포가 안 끝난다! 누군가 수동으로 인프라 저장소(Config Repo)에 들어가서 deployment.yaml 파일의 글씨를 v2.0에서 v3.0으로 백스페이스 누르고 수정 후 커밋(Commit)해 줘야만 ArgoCD든 Flux든 봇이 그걸 보고 배포를 시작한다.
  2. Flux의 기적 (Image Automation Controller):
    • Flux는 이 '마지막 타자 치기(Commit)' 노가다마저 인간에게서 뺏어버리는 6번째 봇(플러그인)을 갖고 있다.
    • 이 봇은 깃허브(Git)뿐만 아니라, 도커 이미지 창고(Docker Registry, ECR) 앞에도 숨어서 24시간 째려보고 있다.
    • 창고에 v3.0 이라는 새 도커 이미지가 툭 떨어지는 찰나의 순간!
    • 이 봇이 그걸 눈치채고, 지가 알아서 깃허브(Git) 서버로 날아가서 deployment.yaml 파일 텍스트를 v3.0으로 쓱 지우고 쓴 다음, 지 스스로 git commitgit push를 쾅 때려버린다! (봇이 깃허브 글씨를 수정함)
    • 깃허브 글씨가 바뀌었으니, Flux 본체 로봇은 평소처럼 그걸 보고 1초 만에 클러스터에 배포(Sync)해 버린다.

📢 섹션 요약 비유: 일반적인 깃옵스(ArgoCD)는 사장님(관리자)이 메뉴판(Git YAML)의 글씨를 "오늘의 메뉴: 3.0버전"으로 화이트로 지우고 새로 적어놔야만 주방 로봇이 3.0 찌개를 끓이기 시작합니다. Flux 이미지 자동화 봇은 미친 유령 비서입니다. 뒷구멍 창고(Docker Registry)에 고기(새 버전 이미지)가 박스로 들어오는 그 0.1초의 순간을 훔쳐보고, 자기가 몰래 사장님 방에 들어가 메뉴판 글씨를 3.0으로 고쳐 적고 사인(Git Commit)까지 지가 다 해버립니다. 인간은 그냥 코드(고기)만 던져놓으면 화면이 바뀌는 끝판왕 풀 오토메이션 컨베이어 벨트입니다.