GitHub 작업을 사용하여 AWS ECR에 컨테이너 이미지 배포

4263 단어
이 블로그 게시물에서는 GitHub의 기본 브랜치에 대한 병합이 있을 때 GitHub Action을 사용하여 새 컨테이너 이미지를 AWS ECR에 자동으로 배포하는 방법을 보여드리겠습니다.

전제 조건:


  • 기본 GitHub 작업 지식
  • AWS CLI

  • 1단계: ECR 리포지토리 생성



    AWS CLI를 사용하여 AWS에서 리소스를 생성하거나 관리하려면 프로그래밍 방식 액세스 권한이 있는 IAM 사용자 계정을 사용해야 합니다. 그러기 위해서는 retrieve your access key ID and secret access key을 한 다음 아래와 같이 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 환경 변수를 설정해야 합니다.

    export AWS_ACCESS_KEY_ID=<YOUR_ACCESS_KEY_ID>
    
    export AWS_SECRET_ACCESS_KEY=<YOUR_SECRET_ACCESS_KEY>
    
    


    AWS CLI에서 ECR에 리포지토리를 생성하려면 AWS CLI가 구성된 머신에서 다음을 입력하여 리포지토리를 생성합니다.

     aws ecr create-repository --repository-name name-of- repository --region name-of-region
    
    


    예를 들어:

     aws ecr create-repository --region eu-west-1 --repository-name node-repo
    
    


    모든 것이 잘 진행되면 다음과 같은 결과가 표시됩니다.

    {
        "repository": {
            "repositoryArn": "arn:aws:ecr:eu-west-1:XXXXXXXXXX:repository/test",
            "registryId": "790783553687",
            "repositoryName": "test",
            "repositoryUri": "XXXXXXXXXX.dkr.ecr.eu-west-1.amazonaws.com/test",
            "createdAt": "2022-09-28T14:01:20+01:00",
            "imageTagMutability": "MUTABLE",
            "imageScanningConfiguration": {
                "scanOnPush": false
            },
            "encryptionConfiguration": {
                "encryptionType": "AES256"
            }
        }
    }
    
    


    출력에서 repositoryName를 기록해 둡니다. 프로세스 후반에 필요합니다.

    2단계: AWS 자격 증명을 비밀로 추가합니다.


  • 저장소 이름 아래에서 설정을 클릭합니다.
  • 왼쪽 사이드바에서 비밀을 클릭합니다.
  • 새 저장소 암호를 클릭합니다.

  • 위의 env 변수로 내보낸 것과 동일한 자격 증명을 사용하여 두 개의 새로운 보안 비밀AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY,를 만듭니다.



    3단계: GitHub Action First 워크플로 만들기



    GitHub 리포지토리의 작업 탭으로 이동하고 이 워크플로 설정 버튼을 클릭하여 워크플로를 생성합니다.

    main.yml이라는 새 워크플로 파일이 .github/workflows 디렉터리 아래에 자동으로 생성됩니다. 채워진 콘텐츠를 아래 내용으로 바꿉니다.

       name: "Build and push to ECR"
    on:
      push:
        branches:
        - master
      pull_request:
    jobs:
      BuildAndPushImageToECR:
        name: "Build and Push to ECR"
        runs-on: ubuntu-latest
    
        steps:
          - name: Checkout Repository
            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: eu-west-1 // region you want to push the image to
    
          - name: Login to Amazon ECR
            id: login-ecr
            uses: aws-actions/amazon-ecr-login@v1
    
          - name: Build, tag, and push image to Amazon ECR 🏷
            id: build-image
            env:
              ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
              ECR_REPOSITORY: "your-ecr-repo-name"
              IMAGE_TAG: v1
            run: |
              docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
              docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
              echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG"
    
    

    ECR_REPOSITORY를 이전에 생성한 리포지토리의 이름으로 바꿉니다.



    축하합니다! 메인 브랜치에 대한 풀 요청이 있을 때마다 컨테이너 이미지를 빌드하고 AWS ECR에 푸시하는 GitHub를 성공적으로 생성했습니다.

    다음 시간까지 🖤

    좋은 웹페이지 즐겨찾기