이 문서는 연구실 운영 클러스터에 처음 들어오는 사람이 k3s, 쿠버네티스 리소스, GitOps 배포 흐름이 어떻게 연결되는지 빠르게 잡기 위한 입문 가이드다.
먼저 잡을 그림
- 연구실 서비스는
k3s기반 쿠버네티스 클러스터 위에서 동작한다. - 클러스터 상태는
namespace,deployment,service,ingress,secret같은 쿠버네티스 리소스로 표현된다. - 실제 반영 기준은
gitops레포이고,ArgoCD가 그 레포를 읽어 클러스터를 원하는 상태로 수렴시킨다. - 인프라 계층은 ingress, 모니터링, 시크릿 관리, 관측성을 먼저 올리고, 그 위에 서비스가 각 namespace에서 동작한다.
즉 초보자가 먼저 잡아야 하는 순서는 클러스터 구조 -> GitOps 반영 단위 -> 인프라 계층 -> 서비스 계층이다.
이 문서의 역할
이 문서는 입문자가 아래 질문에 답할 수 있게 만드는 것이 목적이다.
k3s와 쿠버네티스는 이 운영 환경에서 어떤 관계인가ArgoCD app,namespace,overlay,base는 각각 무엇을 뜻하는가- 문제가 생겼을 때 앱 코드보다 먼저 어느 계층을 봐야 하는가
- 서비스 하나가 GitOps 레포에서 어디에 매핑되는가
실제 접속, 명령 실행, 배포 확인, 되돌리기 같은 절차는 Manual에서 관리한다.
운영 구조를 이해할 때 보는 단위
클러스터
- 운영 환경 전체를 담는 실행 기반이다.
- 노드, 네트워크, 스토리지, 시스템 namespace 같은 공통 기반이 여기 포함된다.
GitOps
- 원하는 운영 상태를 레포로 선언하는 방식이다.
- 누가 무엇을 배포할지보다, 레포에 정의된 상태가 무엇인지가 기준이 된다.
ArgoCD 애플리케이션
- GitOps 동기화 단위다.
- 인프라 하나 또는 서비스 하나가 보통 하나 이상의
ArgoCD app으로 관리된다.
Namespace
- 쿠버네티스 리소스가 실제로 모여 있는 실행 단위다.
- 운영 중에는 서비스별 또는 인프라 성격별로 namespace를 나눠서 본다.
Overlay
- 환경별 최종 조합이다.
- 운영 환경은 보통
overlays/prod같은 위치가 최종 반영 기준이 된다.
초보자가 자주 헷갈리는 포인트
| 헷갈리는 것 | 실제 의미 |
|---|---|
ArgoCD app 이름 |
GitOps 동기화 단위다 |
namespace 이름 |
쿠버네티스 리소스가 실제로 실행되는 위치다 |
overlay |
환경별 최종 조합이다 |
base |
환경 공통 리소스다 |
OutOfSync |
Git 기준과 live 리소스가 다르다는 뜻이지 즉시 장애라는 뜻은 아니다 |
Degraded |
현재 live 상태가 기대한 상태로 수렴하지 않았다는 신호다 |
인프라 계층을 보는 순서
앱 문제가 보여도 초보자는 바로 애플리케이션 코드부터 보지 않는 편이 좋다.
먼저 아래 순서로 구조를 본다.
- ingress가 외부 요청을 정상적으로 받는가
- service가 올바른 backend를 가리키는가
- deployment 또는 statefulset이 정상적으로 떠 있는가
- secret, config 같은 실행 의존성이 들어와 있는가
- 그 다음에 앱 로그와 서비스 내부 동작을 본다
이 순서가 중요한 이유는, 많은 장애가 애플리케이션 코드보다 배포 계층이나 실행 의존성 계층에서 먼저 드러나기 때문이다.
GitOps 레포는 왜 보나
GitOps 레포는 현재 운영이 어떤 상태로 선언돼 있는지 확인하는 기준이다.
초보자가 레포를 볼 때는 아래 수준만 먼저 이해하면 충분하다.
| 경로 축 | 의미 |
|---|---|
terraform/cluster |
클러스터 생성과 초기 bootstrap 관점 |
k8s/bootstrap/argocd |
ArgoCD가 어디서 시작되는지 보는 관점 |
k8s/clusters/... |
특정 클러스터에 어떤 애플리케이션을 올릴지 보는 관점 |
k8s/infra/... |
ingress, monitoring, infisical, observability 같은 공통 인프라 관점 |
k8s/apps/... |
서비스별 매니페스트와 overlay 관점 |
즉 서비스 하나를 이해하려면 보통 clusters에서 app을 찾고, 거기서 apps/.../overlays/...로 내려가는 흐름을 따르면 된다.
서비스 계층은 어떻게 이어지나
서비스는 보통 아래 단위로 이해하면 된다.
- GitOps에서 하나의 서비스 애플리케이션이 정의된다.
- 그 애플리케이션은 특정 namespace로 배포된다.
- namespace 안에는 deployment, service, ingress, secret 같은 리소스가 모인다.
- 사용자는 ingress를 통해 서비스에 들어오고, 운영자는 ArgoCD와 관측 도구를 통해 상태를 본다.
따라서 서비스 이름 -> ArgoCD app -> namespace -> overlay 순서로 관계를 잡아두면 이후 문서를 읽기 쉬워진다.
인프라 스택은 어디까지 알고 시작하면 되나
초보자 기준 최소한 아래 정도의 역할 구분은 알고 시작하면 된다.
| 스택 | 왜 필요한가 |
|---|---|
| ingress-nginx | 외부 HTTP 요청을 클러스터 서비스로 보낸다 |
| monitoring | 메트릭과 대시보드를 본다 |
| infisical | 운영 시크릿을 중앙에서 관리한다 |
| infisical-operator | 시크릿을 쿠버네티스 실행 환경으로 전달한다 |
| observability | 로그와 트레이스를 수집하고 조회한다 |
각 스택의 세부 구조와 운영 관점은 해당 가이드 문서에서 따로 읽는 편이 좋다.
이 문서를 읽은 뒤 다음으로 볼 것
입문자는 보통 아래 순서로 이어서 보면 된다.
k3s와 쿠버네티스의 관계를 먼저 이해한다.GitOps와ArgoCD가 어떤 단위로 상태를 맞추는지 본다.Infisical,Monitoring,Observability처럼 공통 인프라 역할을 본다.- 마지막으로 서비스별 가이드와 운영 매뉴얼로 내려간다.
즉 이 문서는 "지도를 펴는 문서"이고, 실제 작업 문서는 별도 가이드와 매뉴얼에서 이어진다.