도커 이미지를 AWS ECR로 푸시 - Bitbucket Pipeline

우리는 다음을 할 것입니다
  • Bitbucket 리포지토리 생성
  • Bitbucket에서 ECR로 Docker 이미지 푸시
  • Bitbucket 파이프라인을 구성합니다.

  • Bitbucket 리포지토리 만들기



    1: ssh 키를 생성했습니다.

    ssh-keygen -t rsa -C [email protected]
    


    2: bitbucket에 pub 키를 추가합니다.

    3: 원격을 설정하지만... 암호가 필요합니까?

    git remote add origin [email protected]:xxx/yyy.git
    git push origin master
    
    Password for 'https://[email protected]': 
    # ????
    


    4: 원격 URL 가져오기

    git config --get remote.origin.url
    
    https://[email protected]/bbb/ccc.git
    


    5: 이것은 https가 아니어야 합니다... git이어야 합니다.

    git remote set-url origin [email protected]:xxxx/yyyy.git
    


    오류..

    6: ssh 키 지정

    https://qiita.com/sonots/items/826b90b085f294f93acf


    Bitbucket에서 ECR로 Docker 이미지 푸시





    OIDC의 IAM 역할을 생성해야 합니다.

    Bitbucket의 ID 공급자를 가져옵니다.



    Bitbucket에서 정보를 얻을 수 있습니다.
    {Your repository settings} > Pipelines > OpenID Connect
    다음을 얻으십시오.
  • ID 공급자 URL
  • 청중

  • AWS IAM 설정.



    공급자 만들기


  • IAM > Identity providers > Add provider로 이동합니다.
  • Identity provider URLAudience를 입력합니다.

  • 정책 만들기




    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "GetAuthorizationToken",
                "Effect": "Allow",
                "Action": [
                    "ecr:GetAuthorizationToken"
                ],
                "Resource": "*"
            },
            {
                "Sid": "AllowPushImage",
                "Effect": "Allow",
                "Action": [
                    "ecr:BatchCheckLayerAvailability",
                    "ecr:InitiateLayerUpload",
                    "ecr:UploadLayerPart",
                    "ecr:CompleteLayerUpload",
                    "ecr:PutImage"
                ],
                "Resource": "arn:aws:ecr:ap-northeast-1:{AWS Account ID}:repository/*"
            }
        ]
    }
    


    역할 만들기


  • IAM > Role > Create role로 이동합니다.
  • Web identity를 선택합니다.
  • 이전 단계에서 생성한 Identity provider URLAudience를 선택합니다.
  • 이전 단계에서 생성한 정책을 선택합니다.



  • bitbucket 파이프라인을 구성합니다.



    Official

    최소 구성

    image: atlassian/default-image:2
    
    definitions:
      script: &ecrScript
        - docker build -t $REPO_NAME .
        - pipe: atlassian/aws-ecr-push-image:1.5.0
          variables:
            AWS_OIDC_ROLE_ARN: $OIDC_ROLE_ARN
            IMAGE_NAME: $IMAGE_NAME
            TAGS: "${BITBUCKET_TAG} build-$BITBUCKET_BUILD_NUMBER latest"
    
    pipelines:
      custom:
        build-custom:
          - step:
              name: Deploy to ECR
              services:
                - docker
              oidc: true
              script: *ecrScript
    


    노트
    AWS_DEFAULT_REGION는 변수로 구성해야 합니다. 그렇지 않으면 ValueError: Invalid endpoint: https://api.ecr..amazonaws.com 오류가 발생합니다. 공식문서를 확인해주세요.

    좋은 웹페이지 즐겨찾기