[CI/CD에 대한 정리]

시스템 팀에서 같이 봐주어서 현재 입학상담앱에 DevOps가 어느 정도 정착되었음.

  • 배포 순서
    1. BitBucket에 push
    2. Jenkins build 확인
    3. ArgoCD 에서 배포한 project (consulting-admin, consulting-admin-server 나눠져있음. - front,back 나눈것임) refresh > sync 맞춰줄 것. 소스 수정 시 Restart 해주면 된다.

DevOps 연동 관련

해당 페이지는 후에 있을 연동 작업 이 필요한 경우 작성한다. 우선 서버에 올리기에 앞서 bitbucket, jenkins, habor(아마 사용안함), argo의 경로에 대해 살펴보겠다.

Basic Concept

  1. BitBucket: 소스코드 형상관리 git으로 사용
  2. Jenkins : 도커 이미지를 빌드해주는 도구 (이 때 BitBucket에 Dockerfile이 있어야 해당 파일로 이미지를 읽어준다.)
  3. Horbor : 도커 이미지 레지스트리. (이미지 보관소)
  4. ArgoCD : 이미지 외부에 배포를 위한 도구

간략한 Flow는 다음과 같다.

  1. BitBucket에 Dockefile 세팅을 잘 해뒀는지 확인
  2. Jenkins에 BitBucket이 잘 연결되어 빌드 시 해당 소스들 바탕으로 Docker이미지 빌드되는지 확인
  3. Jenkins에서 Horbor로 도커 이미지를 push할 수 있다. (execute shell) 에서 쉘 스크립트를 실행시켜 옮겨준다. 명령어 : docker push harbor.jinhaksa.net:30003/k8s-apply/${JOB_NAME}:v$BUILD_NUMBER
  4. Horbor에 있는 도커 이미지를 배포에 사용할 것이다.
  5. Docker이미지를 배포하기 위해서는 yaml 파일이 필요하다. BitBucket에 (dockerbuild용)repo를 만들어 올린다. 필요한 yaml 파일은 3가지임. - deploy : 도커 이미지 배포를 위함. - service : 이미지를 외부와 연결하기 위한 전초작업 - ingress : 이미지 외부와 연결해줌
  6. ArgoCD에 접속하여 위의 (dockerbuild용)BitBucket Repository를 연결해준다.
  7. App 생성, 웬만한건 그냥 넣어주면 되는데, Namespace 생성을 수일파트장님이 해주셔야하고
  8. 만들어졌으면 sync 하여 위의 리포지토리의 deploy 파일을 읽어와 horbor의 이미지에 연결해준다.
  9. 서비스 yaml이 해당 리포지토리 path에 있으면 서비스까지 생성된다. (이 때 서비스 yaml 의 namespace가 사용하는 namespace와 같아야한다.)
  10. ingress 앱은 따로 만들어줘야한다. path새로 지정하여 설정 , sync
  11. ingress yaml 파일에 있는 domain 대로 domain이 따지고 완료
  12. 해당 도메인에 접근하여 접속을 확인한다.

경로

모두 권한이 필요하며 없을 경우 김수일 파트장님께 문의드려야 한다.

프로세스

  1. 본인의 Node Project를 도커를 통하여 로컬에서 돌려본 뒤 성공한다.
  2. bitbucket에 본인의 프로젝트를 올린다.
  3. Jenkins에 본인의 프로젝트를 올린다. Jenkins의 세팅은 아래와 맞춘다.
  4. 세팅을 마치고 빌드를 한다.
  5. 빌드 완료가 될 경우, 다음은 dockerbuild 파일들을 세팅해주어야 한다. 해당 파일 정보는 아래에서 참고하도록 하자.
  6. ARGO 페이지에 접속한다. AD계정이 아니기에 계정 관련 문의는 수일 파트장님께 드린다.
  7. dockerbuild 파일까지 적용하였으면 이제 ARGO 사이트로 들어간다. 이곳에서 앱 배포 관련 설정을 할 것이다.
  8. ARGO New App을 클릭하여 앱을 생성한다. 아래의 ARGO 세팅 정보를 참고한다.

Jenkins 세팅

Dockerbuild

  • 참고 Repository : http://bitbucket.jinhaksa.net:7990/projects/JAT/repos/dockerbuild/browse
  • 한 프로젝트에 3개의 파일을 세팅해주어야 한다. deploy, service, ingress 파일이다.
  • 단, 하나의 namespace에서 필요한 ingress 파일은 하나이다. 여러 개의 서비스 도메인을 하나의 ingress 파일에 입력한다.
  • namespace 설정은 수일 파트장님께 문의하도록 하자.

ARGO 세팅

  • General
    • Application Name: 앱 이름(consulting-admin)
    • Project: k8s-apply-deployment
    • SYNC POLICY: Manual
  • SOURCE
  • DESTINATION

내부망과 연관하여 (운영 서버 쿠버네티스 확인)

[내부망 접속] jenkins http://172.20.7.118:8080/

harbor 172.20.7.115 harbor.jinhaksa.net https://harbor.jinhaksa.net:30003

argocd https://172.20.7.115:30061/

그리고 Bitbucket에 연결 확인 필요