본문 바로가기

인프런 복습 - 쿠버네티스 어나더 클래스

[Sprint2] ArgoCD 설치 및 Application 생성해보기

 

 

왜 ArgoCD를 사용하는가?

배포를 좀 더 쉽게 만들어줌 

Blue/green, Canary 배포 기능 지원 (Argo 주요 사용 이유)

그래서 요즘은 Jenkins로 빌드까지만 하고 배포는 ArgoCD를 많이 사용하는 추세이다

근데 그렇다고 해서 Level3로도 내 App을 배포하는데 문제가 없다면, 굳이 다음 단계로 넘어갈 필요 없음

(ArgoCD도 유지보수 부담이 생긴다) 

=> 이번 강의를 잘 들으면 그에 대한 판단도 할 수 있을 것!! 

 

Rollouts

편의기능은 나중에 실력이 올라갈 수록 내 눈에 보이지 않는 동작들을 파악해야하는 불편함도 있다. 

Rollouts의 배포 전략은 우리가 직접 만드는 것보다 훨신 좋음 

 

 

실습과 정리 강조 

강사님은 인터넷만 보지 말고 직접 설치해보는 편

그리고 한번 해본 것은 시간이 걸리더라도 잘 정리해놓기 

프로젝트에서 명확한 사실만 말하게 되면서 신뢰가 올라가고 월급도 올라감. 

강의도 만들 수 있게 되었다! 

 

 


 

ArgoCD 설명 

 

ArgoCD 솔루션

ArgoCD

- 반드시 변경 관리 저장소 Git 사용 

Image Updater

- 컨테이너 이미지 변경 관리

Rollouts

- 고급 배포 지원 

Events

- 이벤트 버스 아키텍처 도구(Kafka와 같은 역할)

- 시스템들 간의 이벤트를 주고 받는 메인 통로 역할 

Workflow

- Airflow나 Cubeflow같은 역할

- 이벤트의 내부 값에 따른 작업 실 순서도 

 

 

ArgoCD 구조

강사님 자료

Server : Nodeport처럼 ArgoCD에 UI로 접속, argocd 툴로 CLI 보내기 가능 

Application Controller: Git과 내용이 다르면, Git의 내용으로 배포 진행 

Kube API : kubernetes로 리소스 생성 명령어 날림 

Notification: ArgoCD에서 발생하는 이벤트를 외부로 트리거 

Dex: IAM 솔루션이랑 연결해서 외부 인증 관리 (Single Sign-On)

ApplicationSet Controller: Helm이나 Kustomize처럼 템플릿을 제공해줌 

 

 

 

 


실습

사전에 작업한 내용 (helm이 설치된 서버에서 )

- ArtifactHUB의 helm charts를 이용해 argo-cd, argo-image-updater, argo-rollouts 구성요소 설치 

- helm package를 Github로 업로드 

내용 확인 

ls argo*

 

 

 

ArgoCD 설치

 

 

 

 

 

 

 

 

 

ArgoCD 접속 및 초기설정

https://192.168.56.30:30002/login

# values-dev.yaml
server:
  service:
    type: NodePort
    nodePortHttps: 30002

 

# Jenkins 초기 비밀번호 확인 
kubectl get -n argo secret argocd-initial-admin-secret -o jsonpath='{.data.password}' | base64 -d

User info > UPDATE PASSWORD에서 변경 가능 

 

 

 

 

ArgoCD Application 생성하기 

 

강사님 카페 글

▲ 이 Path의 파일들을 모두 배포 대상으로 간주함 

▲ url: kube API 서버로 가는 도메인 이름 (ArgoCD가 설치된 클러스터에 속한 API 서버) 

 

 

 

 

Helm 배포하기

Application Name : api-tester-2232

Project Name : default

SYNC POLICY : Manual

Repository URL : https://github.com/<Github-Username>/kubernetes-anotherclass-sprint2.git

Revision : main

Path : 2232/deploy/helm/api-tester

Cluster URL : https://kubernetes.default.svc

Namespace : anotherclass-223

VALUES FILES : values-dev.yaml [입력 후 엔터]

 

 

 

[ENABLE_AUTO-SYNC]