ㅡ.ㅡ

[Gitlab] CI/ECR 본문

WorkFlow

[Gitlab] CI/ECR

ekwkqk12 2021. 9. 20. 23:51

ECR 주소 변수 생성

AWS CLI + Docker 이미지 생성
아래 이미지와 같이 ECR 내 저장소에 들어가면 푸시 명령어가 작성되어있다.

CI 작업 진행시 사용할 도커 이미지와 ECR에 로그인할 AWS-CLI 이미지를 병합한 이미지를 생성한다.

# Dockerfile
FROM amazon/aws-cli as initial
FROM docker.io/library/docker:19.03.15
COPY --from=initial / /

# 생성된 IMAGE ECR push(Dockerfile이 있는 경로에서 진행)
aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin <ECR주소>
docker build -t <ECR 주소>:<태그> .
docker push <ECR 주소>:<태그>

ECR 권한 등록
EKS를 생성한 AWS 계정과 ECR을 생성한 계정이 다를 경우 권한 문제가 발생한다.
아래 이미지와 같이 해당 저장소에 Permissions 메뉴에 접속하여 정책을 수정한다.

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AllowPushPull",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                  "arn 값(EKS 생성자))",
                  "arn 값(EKS Node)"
                ]
            },
            "Action": [
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage",
                "ecr:BatchCheckLayerAvailability",
                "ecr:PutImage",
                "ecr:InitiateLayerUpload",
                "ecr:UploadLayerPart",
                "ecr:CompleteLayerUpload"
            ]
        }
    ]
}

.gitlab-ci.yml

before_script:
  - export

# 스크립트에서 사용할 변수 설정
variables:
  DOCKER_REGISTRY: $CI_REGISTRY
  DOCKER_TLS_CERTDIR: ''
  DOCKER_HOST: tcp://localhost:2375
  ECR_TAG_LATEST: latest
  ECR_TAG_COMMIT: $CI_COMMIT_SHORT_SHA

# docker dind 방식을 통해 빌드
services:
  - name: docker:19.03.13-dind

# pipeline stage를 지정
stages:
  - package

# 변경된 소스코드 패키징하여 ECR에 저장
CI-ECR:
  stage: package
  image: $ER:docker-aws-cli
  script:
    - aws ecr get-login-password | docker login --username AWS --password-stdin https://$ER
    - docker build -t $ER:$ECR_TAG_LATEST -t $ER:$ECR_TAG_COMMIT .
    - docker push $ER:$ECR_TAG_LATEST
    - docker push $ER:$ECR_TAG_COMMIT
  when: manual
  only:
    - master
  tags:
    - test1

 

'WorkFlow' 카테고리의 다른 글

[Gitlab] CD/Helm  (0) 2021.09.25
[Gitlab] CD/Kubectl  (0) 2021.09.25
[Gitlab] CI/GitLab Container Registry  (0) 2021.09.20
[Gitlab] Gitlab Runner 연동  (0) 2021.09.19
[Gitlab] Gitlab - K8S 연동  (0) 2021.09.19