4.7. Argo CD로 Spring Boot 애플리케이션 배포
Argo CD를 사용하면 Argo CD 대시보드를 사용하거나 oc
툴을 사용하여 애플리케이션을 OpenShift 클러스터에 배포할 수 있습니다.
사전 요구 사항
- Red Hat OpenShift GitOps가 클러스터에 설치되어 있습니다.
- Argo CD 인스턴스에 로그인했습니다.
4.7.1. Argo CD 대시보드를 사용하여 애플리케이션 생성
Argo CD는 애플리케이션을 만들 수 있는 대시보드를 제공합니다.
이 샘플 워크플로에서는 Argo CD를 구성하여 cluster
디렉터리의 콘텐츠를 cluster-configs
애플리케이션과 반복적으로 동기화하는 프로세스를 보여줍니다. 디렉터리는 웹 콘솔의
메뉴에 있는 Red Hat 개발자 블로그에 링크를 추가하는 OpenShift Container Platform 웹 콘솔 클러스터 구성을 정의하고 클러스터에 spring-petclinic
네임스페이스를 정의합니다.
절차
- Argo CD 대시보드에서 NEW APP 를 클릭하여 새 Argo CD 애플리케이션을 추가합니다.
이 워크플로의 경우 다음 구성을 사용하여 cluster-configs 애플리케이션을 생성합니다.
- 애플리케이션 이름
-
cluster-configs
- 프로젝트
-
default
- 동기화 정책
-
수동
- 리포지터리 URL
-
https://github.com/redhat-developer/openshift-gitops-getting-started
- 버전
-
HEAD
- 경로
-
cluster
- 대상
-
https://kubernetes.default.svc
- 네임스페이스
-
spring-petclinic
- 디렉토리 반복
-
checked
이 워크플로의 경우 다음 구성을 사용하여 Spring-petclinic 애플리케이션을 생성합니다.
- 애플리케이션 이름
-
spring-petclinic
- 프로젝트
-
default
- 동기화 정책
-
자동
- 리포지터리 URL
-
https://github.com/redhat-developer/openshift-gitops-getting-started
- 버전
-
HEAD
- 경로
-
app
- 대상
-
https://kubernetes.default.svc
- 네임스페이스
-
spring-petclinic
- CREATE 를 클릭하여 애플리케이션을 생성합니다.
-
웹 콘솔의 관리자 화면을 열고 왼쪽 메뉴에 있는 관리
네임스페이스 로 이동합니다. -
레이블을 검색하고 선택한 다음 라벨 필드에
argocd.argoproj.io/managed-by=openshift-gitops
를 입력하여openshift-gitops
네임스페이스의 Argo CD 인스턴스를 관리할 수 있습니다.
4.7.2. oc
툴을 사용하여 애플리케이션 생성
oc
툴을 사용하여 터미널에서 Argo CD 애플리케이션을 생성할 수 있습니다.
프로세스
샘플 애플리케이션을 다운로드합니다.
$ git clone git@github.com:redhat-developer/openshift-gitops-getting-started.git
애플리케이션을 생성합니다.
$ oc create -f openshift-gitops-getting-started/argo/app.yaml
$ oc create -f openshift-gitops-getting-started/argo/app.yaml
oc get
명령을 실행하여 생성된 애플리케이션을 검토합니다.$ oc get application -n openshift-gitops
openshift-gitops
네임스페이스의 Argo CD 인스턴스가 이를 관리할 수 있도록 애플리케이션이 배포된 네임스페이스에 레이블을 추가합니다.$ oc label namespace spring-petclinic argocd.argoproj.io/managed-by=openshift-gitops
$ oc label namespace spring-petclinic argocd.argoproj.io/managed-by=openshift-gitops
4.7.3. Argo CD 자동 복구 동작 확인
Argo CD는 배포된 애플리케이션의 상태를 지속적으로 모니터링하고, Git에서 지정된 매니페스트와 클러스터의 실시간 변경 사항 간의 차이점을 감지한 다음 자동으로 수정합니다. 이 동작을 자동 복구라고 합니다.
Argo CD에서 자동 복구 동작을 테스트하고 관찰할 수 있습니다.
사전 요구 사항
-
샘플
app-spring-petclinic
애플리케이션이 배포 및 구성되어 있습니다.
프로세스
-
Argo CD 대시보드에서 애플리케이션에
Synced
상태가 있는지 확인합니다. -
Argo CD 대시보드에서
app-spring-petclinic
타일을 클릭하여 클러스터에 배포된 애플리케이션 리소스를 확인합니다. - OpenShift Container Platform 웹 콘솔에서 개발자 화면으로 이동합니다.
Spring PetClinic 배포를 수정하고 Git 리포지토리의
app/
디렉터리에 대한 변경 사항을 커밋합니다. Argo CD는 클러스터에 변경 사항을 자동으로 배포합니다.- OpenShift GitOps 시작하기 리포지토리를 포크합니다.
-
deployment.yaml
파일에서failureThreshold
값을5
로 변경합니다. 배포 클러스터에서 다음 명령을 실행하여
failureThreshold
필드의 변경된 값을 확인합니다.$ oc edit deployment spring-petclinic -n spring-petclinic
OpenShift Container Platform 웹 콘솔에서 애플리케이션을 모니터링하면서 클러스터에서 배포를 수정하고 2개의 pod로 확장하여 자동 복구 동작을 테스트합니다.
다음 명령을 실행하여 배포 상태를 확인합니다.
$ oc scale deployment spring-petclinic --replicas 2 -n spring-petclinic
- OpenShift Container Platform 웹 콘솔에서 배포는 두 개의 pod로 확장되었다가 즉시 하나의 pod로 축소됩니다. Argo CD는 Git 리포지토리와 차이점을 감지하고 OpenShift Container Platform 클러스터에서 애플리케이션을 자동 복구했습니다.
-
Argo CD 대시보드에서 app-spring-petclinic 타일
APP DETAILS jenkinsfileENTS를 클릭합니다. jenkinsfile ENT S 탭에는 다음 이벤트가 표시됩니다. Argo CD에서 클러스터의 동기화되지 않은 배포 리소스를 감지한 다음 Git 리포지토리를 다시 동기화하여 수정합니다.