mingming

Github Action ArgoCD CI/CD 파이프라인 구축 (1) - ECR Push 본문

DevOps

Github Action ArgoCD CI/CD 파이프라인 구축 (1) - ECR Push

mingming_96 2023. 8. 12. 02:43

 

 

github action과 ArgoCD 로 CI/CD 파이프라인 구축

 

기본 시나리오 

 

github action은 CI(Continuos Integration) ArgoCD는 CD(Continuos Deploy) 역할을 맡게 됩니다.

 

github src repository 에서 변경사항이 push되면 githubaction workflow에서 빌드되고 ECR로 이미지가 푸쉬됩니다.

 

이때 Kustomize 를 통해 manifest repo에 image tag가 업데이트 됩니다. 

 

manifest repo를 지켜보던 ArgoCD가 변경사항을 감지하고 EKS cluster위에 구동중인 pod 이미지를 최신화하게 됩니다.

 

github action

ECR 에 이미지가 저장될 repository를 하나 생성해 줍니다.

 

src repo

먼저 github repo secret 을 이용해 aws 자격증명 정보와 github token 정보를 안전하게 저장합니다.

src repo 하위에 .github/workflows/build.yaml 파일을 생성해줍니다. 

name: Build Applications

on:
  push:
    branches:
      - main  

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repo
        uses: actions/checkout@v2

      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: ap-northeast-2

      - name: Login to Amazon ECR
        id: login-ecr
        uses: aws-actions/amazon-ecr-login@v1
        
      - name: Get image tag(verion)
        id: image
        run: |
          VERSION=$(echo ${{ github.sha }} | cut -c1-8)
          echo VERSION=$VERSION
          echo "::set-output name=version::$VERSION"
          
      - name: Build and push Docker images
        id : image-info
        env:
          ECR_REPOSITORY: my-app
          ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
          IMAGE_TAG: ${{ steps.image.outputs.version }}
          
        run: |
          echo "::set-output name=ecr_repository::$ECR_REPOSITORY"
          echo "::set-output name=image_tag::$IMAGE_TAG"
          docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
          docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG

코드가 main branch로 push되면 해당 작업이 실행됩니다. 

새로운 이미지 태그를 생성하고 어플리케이션 빌드 후 ECR로 이미지를 push 하게 됩니다. 

 

 

빌드가 정상적으로 완료되고 

새로운 이미지 태그가 붙은 이미지가 ECR에 push 된 것을 확인할 수 있습니다. 

 

 

manifest repo 와 kustomize , argocd는 다음 글에서 마저 마무리 하도록 하겠습니다.  

 

'DevOps' 카테고리의 다른 글

Jenkins Blue/Green Deployment  (0) 2023.09.14
Jenkins 메뉴 소개  (0) 2023.09.11
jenkins on kubernetes  (0) 2023.09.10
Github Action ArgoCD CI/CD 파이프라인 구축 (2) - Kustomize , ArgoCD  (0) 2023.08.12
Github Action 이란?  (0) 2023.08.11