사전 준비
1. 사전 환경 구성
Weave Flux를 설치하기 위해서 Helm Chart가 설치되어 있어야 합니다.
helm version
AWS CodePipeline 및 AWS CodeBuild 모두 도커 이미지 빌드 파이프라인을 만들려면 AWS IAM(액세스 관리)의 service role 이 필요합니다.
이 단계에서는 IAM 역할을 생성하고 CodeBuild 단계에서 Kubectl을 통해 EKS 클러스터와 상호 작용하는 인라인 정책을 추가할 것입니다.
버킷 및 역할을 만듭니다.
mkdir ~/environment/gitops_flux
cd ~/environment/gitops_flux
# Use your account number below
ACCOUNT_ID=$(aws sts get-caller-identity | jq -r '.Account')
aws s3 mb s3://eksworkshop-${ACCOUNT_ID}-codepipeline-artifacts
wget https://eksworkshop.com/intermediate/260_weave_flux/iam.files/cpAssumeRolePolicyDocument.json
aws iam create-role --role-name eksworkshop-CodePipelineServiceRole --assume-role-policy-document file://cpAssumeRolePolicyDocument.json
wget https://eksworkshop.com/intermediate/260_weave_flux/iam.files/cpPolicyDocument.json
aws iam put-role-policy --role-name eksworkshop-CodePipelineServiceRole --policy-name codepipeline-access --policy-document file://cpPolicyDocument.json
wget https://eksworkshop.com/intermediate/260_weave_flux/iam.files/cbAssumeRolePolicyDocument.json
aws iam create-role --role-name eksworkshop-CodeBuildServiceRole --assume-role-policy-document file://cbAssumeRolePolicyDocument.json
wget https://eksworkshop.com/intermediate/260_weave_flux/iam.files/cbPolicyDocument.json
aws iam put-role-policy --role-name eksworkshop-CodeBuildServiceRole --policy-name codebuild-access --policy-document file://cbPolicyDocument.json
2. Github 구성
2개의 GitHub repository를 만들 것입니다. 하나는 도커 이미지 빌드를 트리거하는 샘플 애플리케이션에 사용됩니다. 또 다른 방법은 Weave Flux가 클러스터에 배포하는 쿠버네티스 매니페스트를 보관하는 데 사용됩니다. 이는 Kubernetes에 push하는 다른 연속 전개 툴에 비해 pull 기반 방법입니다.
here를 클릭하여 샘플 응용 프로그램 저장소를 만듭니다.
Repository name 과 Description을 작성하고 아래와 같이 README로 리포지토리 초기화를 확인하고 리포지토리 만들기를 클릭합니다.
다시한번 위 절차를 반복하여 Kubernetes mainfasts repositories 를 생성합니다.
이 CodePipeline이 GitHub에서 callback 받을 수 있는 Personal access token을 만들 것입니다. Access token을 만든 후에는 재사용할 수 있으므로 안전한 곳에 저장합니다. 이 단계는 처음 실행할 때나 새 키를 생성해야 할 때만 수행할 수 있습니다.
Github에서 New personal access page 를 오픈합니다. passwork를 입력하고 login 후 Personal access tokens
를 클릭합니다. Generate new token
을 클릭합니다.
아래와 같이 정보를 입력하고 Generate token
을 클릭합니다.

발생된 access token을 저장합니다.

3. Weave Flux 설치
이제 Helm을 사용하여 Weave Flux를 클러스터에 설치하고 Kubernetes 구성 GitHub repo와 상호 작용할 수 있도록 합니다.
먼저, Flux 사용자 정의 리소스 정의를 설치합니다.
kubectl apply -f https://raw.githubusercontent.com/fluxcd/helm-operator/master/deploy/crds.yaml
다음 단계에서는 Git 사용자 이름이 필요합니다. 이 정보가 없으면 결과 파이프라인이 예상대로 작동하지 않습니다. 이 값을 다음 명령로 환경 변수로 설정합니다.
YOURUSER=<git username>
flux
네임스페이스를 생성합니다.
kubectl create namespace flux
Flux chart repo 를 helm에 추가한 후 설치합니다. 아래 ${YOURUSER}
를 git user name으로 변경합니다.
helm repo add fluxcd https://charts.fluxcd.io
helm upgrade -i flux fluxcd/flux \
--set git.url=git@github.com:${YOURUSER}/k8s-config \
--set git.branch=main \
--set registry.pollInterval=1m \
--set git.pollInterval=1m \
--namespace flux
helm upgrade -i helm-operator fluxcd/helm-operator \
--set helm.versions=v3 \
--set git.ssh.secretName=flux-git-deploy \
--set git.pollInterval=1m \
--set chartsSyncInterval=1m \
--set git.branch=main \
--namespace flux
필요한 Pod 3개가 설치되어 있는지 확인합니다.
kubectl get pods -n flux

GitHub 쓰기 액세스를 허용하는 SSH 키를 얻으려면 fluxctl을 설치해야 합니다. 이를 통해 Flux는 GitHub의 구성이 클러스터에 배포된 구성과 동기화되도록 유지할 수 있습니다.
sudo wget -O /usr/local/bin/fluxctl $(curl https://api.github.com/repos/fluxcd/flux/releases/latest | jq -r ".assets[] | select(.name | test(\"linux_amd64\")) | .browser_download_url")
sudo chmod 755 /usr/local/bin/fluxctl
fluxctl version
fluxctl identity --k8s-fwd-ns flux
kubectl get secret flux-git-deploy -n flux --template={{.data.identity}} | base64 -d > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
제공되는 ssh key 값을 복사하여 Github repo에 배포합니다.
URL : github.com/<username>/settings/profile
SSH &GPG Key 클릭 > New SSH
Name :
Flux Deploy Key
입ssh key 붙어넣기
Allow Write Access 클릭 <- Flux를 통해서 repo가 cluster의 현재 상태를 동기화 하는 것을 허용합니다.
Add Key 클릭
Last updated
Was this helpful?