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와 상호 작용할 수 있도록 합니다.