본 계획은 하이브리드 클라우드 기반 DR 시스템을 위한 애플리케이션 및 인프라 CI/CD 파이프라인 구축을 목표로 합니다. 웹 소스 코드 변경 시 자동으로 Docker 이미지를 빌드하여 Docker Hub에 푸시하고, ArgoCD가 바라보는 gitops-repo를 업데이트하여 자동 배포를 수행합니다. 또한, AWS EKS 인프라를 원클릭으로 가동할 수 있는 Terraform Apply 자동화 워크플로우를 구성합니다.
목표: 애플리케이션 코드가 업데이트되면 자동으로 새 이미지가 생성되고, 온프레미스 및 AWS의 ArgoCD를 통해 무중단 배포되도록 구성.
Websource/Dockerfile)
php:8.0-apache 이미지를 베이스로 사용하고, sam_main_web.php를 /var/www/html/index.php로 복사하여 서비스하도록 구성.Websource/.github/workflows/ci.yml)
main 브랜치에 push 이벤트 발생 시.DOCKER_USERNAME, DOCKER_PASSWORD)를 사용해 로그인 후, [DOCKER_USERNAME]/hybrid-dr-web:[GITHUB_SHA] 형태로 이미지를 푸시.PAT_TOKEN Secret)를 사용하여 gitops-repo를 체크아웃.my_web_chart/aws/values.yaml 및 my_web_chart/OnPremise/values.yaml 내부의 phpApp.image 값을 방금 푸시한 새 이미지 태그로 변경 (sed 또는 yq 사용).gitops-repo에 Commit 및 Push.gitops-repo가 업데이트되면 ArgoCD가 이를 감지하고 파드를 재시작하여 자동 적용.목표: 재해 또는 필요 시 AWS EKS를 포함한 클라우드 인프라를 깃허브 액션에서 버튼 한 번으로 전체 프로비저닝할 수 있도록 구성.
provider.tf 수정)
backend "s3" 블록 추가.Infra_terraform/.github/workflows/provision.yml)
workflow_dispatch)aws-actions/configure-aws-credentials) 활용.terraform init (Remote Backend 초기화 포함)terraform planterraform apply -auto-approve 를 차례대로 실행하여 인프라 생성.이 파이프라인이 동작하기 위해 각 GitHub 리포지토리의 Settings -> Secrets and variables -> Actions에 다음 값들이 등록되어야 합니다.
Websource 레포지토리:
DOCKER_USERNAME: Docker Hub 계정명DOCKER_PASSWORD: Docker Hub 비밀번호 또는 Access TokenPAT_TOKEN: gitops-repo에 접근 및 푸시 권한이 있는 GitHub Personal Access TokenInfra_terraform 레포지토리:
AWS_DEPLOY_ROLE_ARN: AWS 접근을 위한 IAM Role