📂
Amazon EKS
  • Amazon EKS
  • 워크스페이스 생성하기
    • Cloud9 IDE 환경 구성
    • IAM 역할 생성
    • SSH & CMK Key 생성하기
  • EKS 클러스터 구축
    • EKS 클러스터 만들기
  • 쿠버네티스 대시보드 배포
    • Kubernetes 공식 대시보드 배포
  • 마이크로서비스 배포
    • 예제 애플리케이션 배포
    • 서비스 스케일(Scaling)
    • 애플리케이션 정리하기
  • 애플리케이션 배포 - Helm
    • HELM 설치
    • Helm으로 Nginx 배포
    • Helm을 사용하여 마이크로서비스 배포
    • 정리하기
  • 리소스 관리 - POD 배치
    • NodeSelector
    • Affinity and Anti-affinity
    • 더 실용적인 사용 사례
    • 정리하기
  • 리소스 관리 - Health Checks
    • Liveness 프로브 구성
    • Readiness 프로브 구성
    • 정리하기
  • 리소스 관리 - AutoScaling
    • HPA 구성하기
    • CA 구성하기
    • 정리하기
  • 네트워킹 - 서비스 노출
    • 서비스와 애플리케이션 연결
    • 서비스에 접근하기
    • 서비스 노출
    • Ingress
    • Ingress Controller
    • 정리하기
  • 네트워크 - Calico 정책
    • Calico 설치하기
    • Stars Policy Demo
    • 정리하기
  • Updating 권한설정 - RBAC
    • 테스트 POD 설치
    • 사용자 생성 및 맵핑
    • 역할과 바인딩
    • 정리하기
  • Updating 권한설정 - IAM 그룹
    • IAM Role, Group & User 생성하기
    • RBAC 설정하기
    • EKS 엑세스 테스트
    • 정리하기
  • Updating 권한설정 - Service account
    • OIDC 자격 증명 공급자 생성하기
    • IAM 역할 생성 및 지정
    • 샘플 POD 배포
    • 정리하기
  • Updating - 네트워크 - POD Security Group
    • SG 생성하기
    • RDS 생성하기
    • CNI 구성하기
    • SG 정책
    • Pod 배포하기
    • 정리하기
  • Updating - 모니터링 - Prometheus and Grafana
    • Prometheus 배포하기
    • Grafana 배포하기
    • 정리하기(Optional)
  • Updating 모니터링 - X-Ray
    • X-Ray DaemonSet 배포하기
    • 샘플 마이크로서비스 배포
    • X-Ray console 확인
    • 정리하기(Optional)
  • Updating 모니터링 - Container Insights
    • 사전 준비
    • Container Insights 구성하기
    • 부하 테스트
    • Container Insights 확인하기
    • 정리하기(Optional)
  • Updating CD - Gitops with Flux
    • 사전 준비
    • Codepipeline
    • EKS에 배포
    • 정리하기
  • Updating Argo Rollouts
  • Updating Service Mesh - AWS App Mesh
    • Fargate 및 OBSERVABILITY 구성
    • Product Catalog App 배포
    • APP MESH 설치
    • Porting to APP MESH
    • Virtual Gateway 구성
    • Canary
    • Observability
  • Updating 버전 업그레이드 - EKS Cluster
    • Upgrade EKS control Plane
    • Upgrade EKS CORE ADD-ONs
    • Upgrade Managed Node Group
Powered by GitBook
On this page
  • 1. 사전 환경 구성
  • 2. Github 구성
  • 3. Weave Flux 설치

Was this helpful?

  1. Updating CD - Gitops with Flux

사전 준비

PreviousUpdating CD - Gitops with FluxNextCodepipeline

Last updated 3 years ago

Was this helpful?

1. 사전 환경 구성

Weave Flux를 설치하기 위해서 가 설치되어 있어야 합니다.

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 기반 방법입니다.

Repository name 과 Description을 작성하고 아래와 같이 README로 리포지토리 초기화를 확인하고 리포지토리 만들기를 클릭합니다.

다시한번 위 절차를 반복하여 Kubernetes mainfasts repositories 를 생성합니다.

이 CodePipeline이 GitHub에서 callback 받을 수 있는 Personal access token을 만들 것입니다. Access 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에 배포합니다.

  1. URL : github.com/<username>/settings/profile

  2. SSH &GPG Key 클릭 > New SSH

  3. Name : Flux Deploy Key 입

  4. ssh key 붙어넣기

  5. Allow Write Access 클릭 <- Flux를 통해서 repo가 cluster의 현재 상태를 동기화 하는 것을 허용합니다.

  6. Add Key 클릭

를 클릭하여 샘플 응용 프로그램 저장소를 만듭니다.

Github에서 를 오픈합니다. passwork를 입력하고 login 후 Personal access tokens 를 클릭합니다. Generate new token 을 클릭합니다.

here
New personal access page
Helm Chart