Published on

ArgoCD 로 monorepo 프로젝트 배포하기 2 (Application 구성)

1. Docker 빌드 설정

Dockerfile 준비

Docker build & push CI 스크립트 작성

  1. monorepo 에서 PR merge시 affected 를 체크하여 matrix (phase * affected app) 로 deploy 를 수행한다.

    • release-dev.yml
    • 열려있는 PR list 중 branch를 확인하여 release branch가 있는 경우 affected에서 제외합니다.
    • dockerfile 이 없는 apps가 대상일 경우 build를 실행하지 않고 정상 종료합니다.
    • github action에서 branch, app, phase 를 선택하여 수동으로 deploy 할때는 release-manual.yml 를 사용한다.
  2. 다음과 같이 Docker build & push 를 수행하는 deploy action 실행

실행 완료 후 harbor에 이미지가 업로드가 되었는지 확인
manifest 설정에 docker tag 정보가 업데이트 되었는지 확인

2. Manifest 구성

  • github 저장소에 Application에 대한 k8s 설정을 입력합니다.
  • 대표적으로 적용해야하는 설정은 다음과 같습니다 ({} 내용을 동적으로 채워 넣습니다)
  • image tag는 위의 CI script docker tag 과정에서 자동으로 업데이트된다.
# values.{phase}.yaml
application:
  name: {app name}
image:
  name: harbor.com/web/{project name}/{phase}
  tag: 43ecce48ee49c5b3c0ca7ce59e4e0c713f2eeb1b # bot이 자동 업데이트 예정
  imagePullPolicy: Always
  harborUser: harbor-user
ingress:
  hosts:
    - host: {host}
      port: 80
      path: {path}
      pathType: Prefix
  tlsSecretName: tls-secret
deployment:
  containerPort: {port}
  livenessProbePath: {l7check url}
hpa:
  minReplicas: {minimum pod number}
  maxReplicas: {maximum pod number}
  cpuAverage: {cpu %}
  memoryAverage: {memory %}

helm 차트 설정에 대해서 다음을 참고한다.

3. ArgoCD Application 설정

그 외

필요한 설정 내용들