티스토리 뷰
728x90
✅ GitOps + HelmChart + k3s = 자동화된 GitOps 운영
GitOps 스타일 운영이란:
"모든 인프라/애플리케이션 설정을 Git에 선언적으로 관리하고, 변경사항이 자동으로 클러스터에 반영되도록 하는 방식"
k3s는 HelmChart CRD를 지원하므로 GitOps 방식에 아주 잘 맞습니다.
즉, HelmChart 리소스를 Git에 저장하고, 이를 k3s에 자동 반영되도록 구성하면 GitOps 스타일 운영이 완성됩니다.
🧩 GitOps 구성 흐름
[ Git 저장소 ]
│
│ (HelmChart, HelmChartConfig YAML 파일)
▼
[ GitOps Agent ]
(예: Fleet, ArgoCD, FluxCD)
│
▼
[ k3s 클러스터 ]
(HelmChart CRD가 자동 적용됨)
✅ 구성 방법 예시: k3s + Fleet 사용
k3s의 공식 GitOps 도구는 Fleet입니다. Rancher가 만든 도구로, 가볍고 빠르며 HelmChart CRD와 잘 연동됩니다.
1. Fleet 설치 (k3s에 내장 가능)
k3s 설치 시 Fleet 자동 설치:
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--disable traefik --disable servicelb --disable local-storage --disable metrics-server --disable-cloud-controller --disable-network-policy --disable=helm-controller" sh -
Fleet은 보통 Rancher와 함께 쓰이지만, 독립 실행도 가능하며 아래와 같이 설치할 수도 있습니다:
kubectl apply -f https://github.com/rancher/fleet/releases/latest/download/fleet-crd.yaml
kubectl apply -f https://github.com/rancher/fleet/releases/latest/download/fleet-agent.yaml
2. Git 저장소 준비
Git 저장소 예시 구조:
git-repo/
└── helmcharts/
└── my-nginx/
├── helmchart.yaml
└── helmchartconfig.yaml
helmchart.yaml 예:
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
name: my-nginx
namespace: kube-system
spec:
chart: bitnami/nginx
repo: https://charts.bitnami.com/bitnami
version: 15.5.2
targetNamespace: default
3. Fleet GitRepo 리소스 작성
이 리소스를 k3s에 배포하면, Fleet이 Git을 주기적으로 동기화합니다:
apiVersion: fleet.cattle.io/v1alpha1
kind: GitRepo
metadata:
name: helmchart-demo
namespace: fleet-default
spec:
repo: https://github.com/your-org/your-gitops-repo.git
branch: main
paths:
- ./helmcharts/
targets:
- clusterSelector:
matchLabels:
name: local
이제 Git에 변경 사항을 push하면 → Fleet이 HelmChart CR을 자동 적용 → Helm 차트 설치됨. 🚀
✅ 요약
HelmChart | Helm 차트를 선언적으로 정의 |
Git 저장소 | GitOps의 소스 오브 트루스 (truth) |
Fleet / ArgoCD / FluxCD | Git과 k3s를 연결하는 GitOps 에이전트 |
k3s | HelmChart CR을 감지하고 차트를 자동 배포 |
728x90
'쿠버네티스' 카테고리의 다른 글
Traefik의 주요 특징 (0) | 2025.03.29 |
---|---|
쿠버네티스환경에 Config Server 없이 중앙 집중형 설정 관리 방법 (0) | 2025.03.27 |
k3s helm-crd Helm Chart 기반의 애드온 자동 설치 (0) | 2025.03.26 |
쿠버네티스에서 eBPF를 사용하는 이유: 관측성, 보안, 네트워크의 진화 (1) | 2025.03.23 |
동적 Kubeconfig 생성 (Dynamic Kubeconfig Generation) (0) | 2025.03.23 |