일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Prometheus install
- blue-green
- 쿠버네티스 컴포넌트
- SAA 합격 후기
- terraform
- EFS CSI Driver
- 그라파나 시각화
- 로드밸런서 컨트롤러
- Kubernetes
- Solution Architecture
- helm
- 깃허브 액션
- 쿠버네티스
- 딥레이서 보상함수
- Firelens
- livenessPorbe
- 딥레이서
- 메탈LB
- Kubernets on Jenkins
- github action 사용법
- LoadBalancer Controller
- 그라파나 대시보드
- EKS 클러스터
- jenkins
- Aurora cluster
- grafana on kubernetes
- 솔데스크
- AWS 딥레이서
- kubernetes 동작 원리
- headless service
Archives
mingming
Github Action ArgoCD CI/CD 파이프라인 구축 (1) - ECR Push 본문
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 |