product-composite-service CI/Cd 파이프라인 설정
1. 파이프라인에서 사용할 ArgoCD Admin 암호 Secrets Manager에 저장
ArgoCD Admin 암호 Secrets Manager에 저장
cd ~/environment/eks-workshop/cloud9
# 파이프라인에서 참조할 ArgoCD 암호를 AWS Secrets Manager에 저장합니다.
# ArgoCD Admin 암호는 `테라폼을 통한 아마존 EKS 프로비저닝` 단계에서 설정한 암호를 사용합니다.
./set-argocd-admin-password-secrets-manager.sh "Abraca00#1" product-composite-service-ci-argocd-admin-password2. product-composite-service Helm Chart 의존성 빌드
product-composite-service Helm Chart 의존성 빌드
product-composite-service 마이크로서비스 Helm Chart의 의존성을 빌드하여 이후 ArgoCD 애플리케이션을 생성할 수 있도록 준비합니다.
이 작업은 초기에 한번만 수행하면 되고 이후에는 빌드 파이프라인이 Helm 리포지터리를 변경하면 ArgoCD에 의해 자동으로 Sync되게 됩니다.
# 작업을 도와주는 어플리케이션 Makefile 경로로 이동합니다.
cd ~/environment/eks-workshop/microservices-cicd-pipeline/product-composite-service
# Helm 의존성을 업데이트합니다.
make helm-dep-up-all ENV=prod
# Helm 의존성을 업데이트한 템플릿 결과를 확인합니다.
make helm-template-env ENV=prod3. product-composite-service의 Helm 리포지터리 설정
product-composite-service의 Helm 리포지터리 설정
# 어플리케이션 Helm 경로로 이동합니다.
cd ~/environment/eks-workshop/microservices-cicd-pipeline/product-composite-service/kubernetes/helm
# CodeCommit GitOps 리포지터리와 연결합니다.
# 우리는 Git 리포지터리를 초기화하지 않았으므로, 아래와 같이 하면 Outer git 저장소 내에 Inner git 저장소를 Tracking하게 됩니다. 이와 유사하지만 Git 저장소 내에서 Nested Git 저장소를 좀 더 체계적으로 운영하는 방법은 Git Submodule이 있습니다.
git init
git branch -M main
export HELM_CODECOMMIT_URL=$(aws codecommit get-repository --repository-name product-composite-service-configuration --region ap-northeast-2 | grep -o '"cloneUrlHttp": "[^"]*' | grep -o '[^"]*$')
echo $HELM_CODECOMMIT_URL
git remote add ccorigin $HELM_CODECOMMIT_URL
# Git 스테이징 영역에 파일을 추가합니다.
git add .
# Commit 및 배포 리포지터리에 Push합니다.
git commit -am "First commit."
git push --set-upstream ccorigin main3. ArgoCD 애플리케이션 설정
ArgoCD 애플리케이션 설정
ArgoCD접속에 필요한 정보릃 확인하고 접속합니다.
테라폼을 통해서 이미 배포한 EKS 클러스터에는 ArgCD가 설치되어 있으며, 또한 AWS ELB (Elastic Load Balancer)를 통하여 외부에서 접속할 수 있습니다.
아래와 같이 ArgoCD 접속에 필요한 URL을 확인합니다.
# ArgoCD 접속 주소를 확인합니다.
kcp
export ARGOCD_SERVER=`kubectl get ingress/argocd-server -n argocd -o json | jq --raw-output '.status.loadBalancer.ingress[0].hostname'`
echo https://$ARGOCD_SERVER확인한 접속 주소와 앞서 미리 설정한 패스워드를 사용하여 ArgoCD Web UI에 접속해 봅니다.

ArgoCD가 GitOps 배포 (Helm) 리포지터리에 접속할 수 있도록 IAM 사용자 및 Git Credentials을 생성하고 메모해 둡니다 (CLI 사용).
# IAM User 생성
aws iam create-user --user-name argocd
# AWSCodeCommitPowerUser 관리형 권한 정책 연결 (arn:aws:iam::aws:policy/AWSCodeCommitPowerUser)
aws iam attach-user-policy --user-name argocd --policy-arn arn:aws:iam::aws:policy/AWSCodeCommitPowerUser
# CodeCommit 접근을 위한 Specific Credential 생성
# (중요) 결과로서 반환되는 "ServiceUserName"과 "ServicePassword"를 기록해 둡니다.
aws iam create-service-specific-credential --user-name argocd --service-name codecommit.amazonaws.comArgoCD애플리케이션을 생성합니다.
로그인 이후에 좌측의
Settings메뉴를 클릭한 뒤 Repositories 항목을 클릭합니다.
Connect Repo버튼을 클릭하고Method는VIA HTTPS, Project는default를 입력합니다.Repository URL에는 앞서 확인한 배포CodeCommit Repository의 HTTPS 주소를 (혹은 아래 명령으로 다시 확인 가능합니다),Username및Password에는 메모해 둔 정보를 입력합니다.export HELM_CODECOMMIT_URL=$(aws codecommit get-repository --repository-name product-composite-service-configuration --region ap-northeast-2 | grep -o '"cloneUrlHttp": "[^"]*'|grep -o '[^"]*$') echo $HELM_CODECOMMIT_URL

Application텝에서NewApp버튼을 클릭합니다.Application Name에는product-composite-service를,Project는default를 입력합니다.Sync Policy에는 "Manual"을,Repository URL에는 앞서 설정한 배포 리포지터리를,PATH에는environment/prod-env을 각각 입력합니다.Destination섹션의 Cluster URL에는https://kubernetes.default.svc,Namespace에는hands-on를 입력하고 상단의Create를 클릭합니다.
(참고) Application 생성 시 화면 하단에 Helm Setting 값들이 정상적으로 표시되는지 확인합니다.
이렇게
ArgoCD에서 어플리케이션을 생성하기만 하고Sync하지 않은 채로 두어도 됩니다.ArgoCD파이프라인이 이후에Sync를 수행하게 됩니다.
4. product-composite-service 빌드 및 켄테이너 이미지 전달
product-composite-service 빌드 및 켄테이너 이미지 전달
이제 어플리케이션의 빌드 및 전달 파이프라인이 시작될 수 있도록 애플리케이션 소스를 소스 리포지터리에 연결하고 푸시합니다.
# 어플리케이션 소스 경로로 이동합니다.
cd ~/environment/eks-workshop/microservices-cicd-pipeline/product-composite-service/app-src
# Git에 연결합니다.
# 우리는 Git 리포지터리를 초기화하지 않았으므로, 아래와 같이 하면 Outer git 저장소 내에 Inner git 저장소를 Tracking하게 됩니다. 이와 유사하지만 Git 저장소 내에서 Nested Git 저장소를 좀 더 체계적으로 운영하는 방법은 Git Submodule이 있습니다.
git init
git branch -M main
# AWS CLI를 통해서도 HTTPS URL을 바로 확인할 수 있습니다.
export APP_CODECOMMIT_URL=$(aws codecommit get-repository --repository-name product-composite-service-application --region ap-northeast-2 | grep -o '"cloneUrlHttp": "[^"]*' | grep -o '[^"]*$')
echo $APP_CODECOMMIT_URL
# CodeCommit 소스 리포지터리와 연결
git remote add ccorigin $APP_CODECOMMIT_URL
# 3. Git 스테이징 영역에 파일을 추가합니다.
git add .
# 4. Commit 및 배포 리포지터리에 Push합니다.
git commit -am "First commit."
git push --set-upstream ccorigin main빌드 파이프라인이 성공적으로 수행되는지 확인합니다.

진행자의 안내를 받아 파이프라인의 각 단계를 둘러보면서 어떤 작업이 수행되는지 확인합니다.
Last updated