[DevOps] CI/CD 자동화 배포

illilili·2025년 6월 24일

DevOps

목록 보기
12/12
post-thumbnail

  1. CI 파이프라인 (Product-CI)

    • 코드 변경 → 빌드 → 아티팩트 생성
  2. CD 파이프라인 (Product-CD)

    • 릴리즈 트리거 → YAML 배포 스크립트 실행 → AKS 배포 완료

✅ Azure DevOps Toolchain 구성도

  • Repos: Git 저장소
  • Pipelines
    • CI: Product-CI 빌드 파이프라인 (YAML로 정의됨)
    • CD: Product-CD 릴리즈 파이프라인 (GUI 방식으로 배포 정의)
  • Artifacts: 빌드 결과물 저장 및 공유
  • AKS: 실제 서비스가 배포되는 대상 클러스터

✅ Product-CI (CI 파이프라인)

📍 Azure DevOps > Pipelines > Pipelines
📍 트리거: main 브랜치에 push 발생 시 자동 실행

🔹 작업 흐름

🔸 Docker 이미지 빌드 및 ACR(Azure Container Registry)에 푸시

  • Dockerfile을 기준으로 컨테이너 이미지 생성
  • 생성된 이미지에 태그 latest 혹은 $(Build.BuildId) 적용
  • Azure DevOps에 구성된 Service Connection을 통해 ACR에 푸시

🔸 아티팩트 생성

  • 빌드 결과물로 deploy.yaml 파일 포함
  • Azure DevOps 아티팩트 저장소(drop/kubernetes/deploy.yaml)에 저장

🔸 출력 결과

drop/kubernetes/deploy.yaml 생성


✅ Product-CD (CD 파이프라인)

📍 Azure DevOps > Pipelines > Releases

📍 트리거: Product-CI 성공 시 자동 릴리즈 또는 수동 실행

🔹 작업 흐름

🔸 Bash Script Task

  • AKS 인증: Service Connection 사용

  • deploy.yaml 내부의 image: latestimage: <Build.BuildId>로 치환

    sed -i "s/latest/$(Build.BuildId)/g" $(System.DefaultWorkingDirectory)/_Product-CI/drop/azure/deploy.yaml

🔸 kubectl apply

  • kubectl apply -f $(System.DefaultWorkingDirectory)/_Product-CI/drop/azure/deploy.yaml
  • 필요 시 namespace 지정 옵션 추가: -n <namespace>

🔸 배포 결과 확인

  • Azure DevOps 로그 확인
  • Release-1 생성됨
  • Dev Stages에서 Succeeded

  • AKS에서 리소스 생성 여부 확인: kubectl get all -n [namespace]
profile
코코딩딩

0개의 댓글