Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- scraping
- CI/CD
- linkerd
- eks
- 스크레이핑
- DevOps
- Crawling
- docker
- helm
- Jenkins
- deploy
- Grafana
- Service Mesh
- argocd
- CD
- 웹 취약점
- gitlab cd
- Kubernetes
- 웹 해킹
- 크롤링
- opentelemetry
- CI
- GitLab
- sonarqube
- Monitoring
- Prometheus
- 모의해킹
- Resource
- ECR
- gitlab ci
Archives
- Today
- Total
ㅡ.ㅡ
[Gitlab] CI/ECR 본문
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 |