[Home-K8S] #22 FluxCD 계층과 분리 / 다중 클러스터 리소스 공유와 설정 분리
FluxCD - yaml 앞서 fluxcd 를 이용해서 helm chart 를 구성했습니다. 그 외에 일반적인 yaml
아무래도 Helm 을 이용한 배포가 가장 많이 쓰이고 있죠.
아무래도 저는 개인적으로 사용하다 보니 알려진 서비스들을 올리기에는 Helm 이 가장 편했습니다.
Helm 을 CLI 로 배포할 때처럼 Flux CD 에서도 Helm Repository 하고 Version 만 있으면 됩니다.
helm repository 하고 helm 배포 설정하고 서로 다른 파일로 작성합니다.
이전 포스트에서 작성했던 것처럼 폴더는 아무렇게나 설정해도 됩니다.
Repository 부분하고 Releases 폴더로 나눴습니다.

apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: ingress-nginx
namespace: flux-system
spec:
interval: 1h
url: https://kubernetes.github.io/ingress-nginx가장 많이 사용하는 https url 로 작성된 url 은 url 만 설정해 주면 됩니다.
interval 은 helm repo를 업데이트 하는 주기에요. 새롭게 release 된 chart를 찾습니다.
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: jetstack
namespace: flux-system
spec:
type: "oci"
interval: 1h
url: oci://quay.io/jetstack/chartsoci url 을 사용하는 경우에는 type 을 넣어줘야 합니다.
helm add / update 를 했으니 이제 install / upgrade 를 진행하면 됩니다.
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: ingress-nginx
namespace: ingress-nginx
spec:
interval: 1h
chart:
spec:
chart: ingress-nginx
version: "^4.13.1" # 4.13.1 이상 5.0.0 미만 버전
sourceRef:
kind: HelmRepository
name: ingress-nginx
namespace: flux-system
install:
createNamespace: true
remediation:
retries: 3
upgrade:
remediation:
retries: 3
rollback:
timeout: 5m
recreate: true
values:
controller:
admissionWebhooks:
enabled: false
allowSnippetAnnotations: true
service:
annotations:
lbipam.cilium.io/ips: 192.168.5.149
loadBalancerClass: io.cilium/l2-announcer
type: LoadBalancermetadata : 배포할 helm 의 이름과 namespace 입니다.
interval : 시간마다 helm repos 를 확인합니다. version 의 범위에 맞다면 자동 업데이트 합니다.
chart : sourceRef 에 helm repository와 chart 이름, 버전을 설정합니다.
install / upgrade / rollback : 각 과정의 값을 설정합니다. (자세한 건 gpt로)
values : helm chart의 values 값을 입력합니다. --set 으로 쓰이는 설정이죠.
Masterminds/semver 라이브러리를 사용해서 버전 범위를 해석한다고 합니다.
Comments