- 환경구성의 경우 이전 포스트에서 모두 완료했습니다!!
다만 클러스터 내부에 직접 들어가 Argo-CD를 설치하는게 아닌 Rancher의 카탈로그를 사용해서 자동 Helm 배포를 진행합니다
- 구축중인 파이프라인의 전제적인 Service Flow는 다음과 같습니다
CI : Jenkins -> DockerHUB / CD : Gitlab -> Argo-CD -> Rancher Cluseter
\
Api를 통한 이미지 배포 (Rolling update) 진행 및 히스토리 관리 예정.
Docker Containor Restart
- Docker의 Container란 프로세스의 개념이다, GCP 인스턴스의 Docker로 실행한 Jenkins가 이로 인해 문제를 발생시켰다
[root@jenkins ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d8cbbb69e267 jenkins/jenkins:latest "/sbin/tini -- /usr/…" 18 hours ago Exited (143) 17 hours ago jenkins
[root@jenkins ~]#
- 이렇게 인스턴스를 재부팅하면 Container가 죽는다…
그럼 명령어로 해당 Container 아이디를 확인 후 Container restart 명령어로 되살리면 된다.
[root@jenkins ~]# docker container restart d8cbbb69e267
d8cbbb69e267
Rancher 대쉬보드 -> APP -> Launch 탭에 접속
Argo-CD Plugin 검색 후 각 노드에 배포
이런 설정들은 기본으로 두어도 됩니다.
그럼 아래와 같이 Rancher 대쉬보드에서 배포된 Apps에 대해서 확인 할 수 있습니다
배포가 모두 완료된 후 ARGO-CD APPS에 들어가면 아래와 같이 Endpoint 주소를 띄웁니다. 해당 주소로 접속!!
그럼 다음과 같은 Argo-CD의 대쉬보드에 접속이 가능합니다.
하지만 관리자 PASSWORD는 서버명으로 설정되기 때문에 아래 POD에 접속합니다
아래 POD의 전체 ID가 현재 관리자(ADMIN) 계정의 패스워드입니다. 입력 후 접속!!
정상적으로 접속이 되었다면 아래와 같이 배포 파이프라인을 설정 할 수 있는 창이 나오게 됩니다.
설정 -> 저장소 탭에서 연동할 GITALB의 주소를 등록해줍니다.
New APP을 눌러 새로운 파이프라인을 설정해줍니다
그럼 아래와 같은 PipeLINE App이 하나 만들어집니 다!!
GITLAB 저장소에는 아래와 같은 두 파일이 존재하고 내용을 다음과 같습니다
deploy.yaml 예제.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nasa1515-deploy
labels:
app: nasa1515-deploy
spec:
replicas: 2
selector:
matchLabels:
app: nasa1515-deploy
template:
metadata:
labels:
app: nasa1515-deploy
spec:
containers:
- image: nasa1415/devops:latest
name: nasa1515-app
ports:
- containerPort: 8000
service.yaml 예제.
apiVersion: v1
kind: Service
metadata:
name: nasa1515-svc
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8000
nodePort: 31111
selector:
app: nasa1515-deploy
이제 만들어둔 App에서 SYNC를 누르게 되면
다음과 같이 배포파일을 읽어와 노드에 배포합니다!!
실제 Rancher에서의 로그를 보면 다음과 같이 Argo-cd에서의 배포 로그를 확인가능합니다
추가적으로 Rancher에서 확인해보면 배포가 정상적이고 서비스 중임을 확인 가능합니다.