목적

ArgoCD는 대표적인 kubernetes 용 GitOps tool이다. helm chart나 kustomize는 ArgoCD와 호환이 잘되지만 Terraform은 그렇지 않다. 하지만 Weave Terraform Controller를 이용하면 Github repository의 특정 경로에 변경이 생기면 알아서 감지해서 terraform plan, apply까지 할 수 있다.

참고

공식 Weave GitOps Terraform Controller 문서

Weave GitOps Terraform Controller

Flux 설치

Flux installation

방법 1: CLI

brew install fluxcd/tap/flux
. <(flux completion zsh)

cli 설치 후, 아래 명령어를 실행하면 현재 context에 있는 cluster에 flux 관련 리소스들을 설치해준다.

flux install

방법 2: kubectl

kubectl apply -f <https://github.com/fluxcd/flux2/releases/latest/download/install.yaml>

방법 3: Terraform

https://github.com/fluxcd/flux2/releases/latest/download/install.yaml 를 flux.yaml 파일로 저장한 후,

data "kubectl_file_documents" "flux" {
  content = file("../manifests/flux.yaml")
}

resource "kubectl_manifest" "flux" {
  count     = length(data.kubectl_file_documents.flux.documents)
  yaml_body = element(data.kubectl_file_documents.flux.documents, count.index)
}

GitOps CLI 설치

curl --silent --location "<https://github.com/weaveworks/weave-gitops/releases/download/v0.24.0/gitops-$(uname)-$>(uname -m).tar.gz" | tar xz -C /tmp
sudo mv /tmp/gitops /usr/local/bin
gitops version

Weave tf-controller 설치

방법 1: Helm Chart