HomeAbout
[DevOps] Rancher 기반의 ArgoCD의 Kubernetes CI/CD 배포 파이프라인 자동화: 단계별 구성 (Jenkins & GitLab 통합)
DevOps
[DevOps] Rancher 기반의 ArgoCD의 Kubernetes CI/CD 배포 파이프라인 자동화: 단계별 구성 (Jenkins & GitLab 통합)
NASA1515
NASA1515
August 06, 2021
1 min

목차

01
✔ 환경구성
02
✔ Rancher Argo-CD Plugin을 설치

사용 할 툴은 다음과 같습니다.

  • Rancher (GKE)
  • Argo-cd

✔ 환경구성

  • 환경구성의 경우 이전 포스트에서 모두 완료했습니다!!
    다만 클러스터 내부에 직접 들어가 Argo-CD를 설치하는게 아닌 Rancher의 카탈로그를 사용해서 자동 Helm 배포를 진행합니다

✔ Rancher Argo-CD Plugin을 설치

  • 구축중인 파이프라인의 전제적인 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 탭에 접속

aaaa


Argo-CD Plugin 검색 후 각 노드에 배포

스크린샷, 2020-10-13 14-42-08


이런 설정들은 기본으로 두어도 됩니다.


그럼 아래와 같이 Rancher 대쉬보드에서 배포된 Apps에 대해서 확인 할 수 있습니다

스크린샷, 2020-10-13 14-43-49


배포가 모두 완료된 후 ARGO-CD APPS에 들어가면 아래와 같이 Endpoint 주소를 띄웁니다. 해당 주소로 접속!!


그럼 다음과 같은 Argo-CD의 대쉬보드에 접속이 가능합니다.


하지만 관리자 PASSWORD는 서버명으로 설정되기 때문에 아래 POD에 접속합니다


아래 POD의 전체 ID가 현재 관리자(ADMIN) 계정의 패스워드입니다. 입력 후 접속!!


정상적으로 접속이 되었다면 아래와 같이 배포 파이프라인을 설정 할 수 있는 창이 나오게 됩니다.


설정 -> 저장소 탭에서 연동할 GITALB의 주소를 등록해줍니다.

스크린샷, 2020-10-13 15-17-13


New APP을 눌러 새로운 파이프라인을 설정해줍니다


그럼 아래와 같은 PipeLINE App이 하나 만들어집니다!!

스크린샷, 2020-10-13 14-56-40


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를 누르게 되면

스크린샷, 2020-10-13 14-59-49


다음과 같이 배포파일을 읽어와 노드에 배포합니다!!


실제 Rancher에서의 로그를 보면 다음과 같이 Argo-cd에서의 배포 로그를 확인가능합니다


추가적으로 Rancher에서 확인해보면 배포가 정상적이고 서비스 중임을 확인 가능합니다.


Tags

#DevOps#ArgoCD
NASA1515

NASA1515

Data Engineer

Hello I'M Wonseok aka NASA1515

Expertise

Public Cloud
k8s/Docker
Python

Social Media

instagramwebsitelinkedingithub

Related Posts

[DevOps] Maven을 사용한 Java Application 빌드 및 배포 & DevSecOps Pipeline 통합 및 자동화 고도화
[DevOps] Maven을 사용한 Java Application 빌드 및 배포 & DevSecOps Pipeline 통합 및 자동화 고도화
2021-08-20
1 min

Topics

CloudDevelop

Social Media