저번 포스팅에 올렸던 간단한 helm을 체험한 후 이번엔 minikube에 argocd를 통해 CI/CD 자동 배포화가 가능하도록 해보았습니다.
이번 포스팅의 배포 아키텍처입니다. 로컬에 docker 이미지를 빌드 후 github에 변경된 코드(helm)를 커밋합니다. Push 함과 동시에 helm chart에 버전 업데이트를 진행한다. 그러면 Argo에 등록된 Helm Chart 저장소에서 yaml resource를 읽게 되고 코드에 맞춰 쿠버네티스에 배포가 진행된다.
1. argocd install
$ kubectl create namespace argocd
$ kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
$ kubectl get pod
argocd의 pod가 생성된것을 확인할수 있습니다. (간단합니다.)
2. 설정
argocd-server의 svc를 LoadBalancer로 변경합니다
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'
포트 포워딩
Kubectl 포트 포워딩은 서비스를 노출하지 않고 API 서버에 연결하는 데에도 사용할 수 있다.
$ kubectl port-forward svc/argocd-server -n argocd 8080:443
https://127.0.0.1:8080/ 로 접속하면 argocd 의 로그인 화면을 볼수 있습니다.
argocd cmd를 통해 임시 비번 생성 할 수 있습니다.
$ kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo
# 3jslpwswXoJuY6lM
admin // 임시 비번으로 로그인 성공!
일단 argocd 성공
-----------------------------------------------------------------------------------------------------
저번 시간에 만들었던 fastapi를 argocd로 띄우는 작업을 해보겠습니다.
해당 소스는 다음 레포에 있습니다.
https://github.com/uiandwe/fastapi_k8s
1. new app 클릭
2. App 설정
Application Name : 사용할 aplication 이름을 넣어줍니다. (ex: fastapi-k8s)
project name : application을 그룹핑 단위가 project입니다. 기본값인 default로 합니다.
Sync policy : 동기화 정책을 디폴트인 Manual 그대로 둡니다
repository URL : 저장소 URL을 github 저장소 URL로 설정합니다. https://github.com/uiandwe/fastapi_k8s.git
Revision : 저장소를 Argo CD에 연결 하고 HEAD branches 설정하고
path : helm 정보가 있는 폴더인 fastapi_chart로 지정합니다.
네임스페이스를 지정합니다. 모두 기본값으로 지정해줍니다.
create 버튼을 눌러주면 설정해준 git의 helm 파일을 가지고 리소스를 생성하게 된다.
몇분 기다리면 정상적으로 올라온것을 확인할수 있다.
svc를 확인하면 아래와 같이 올라와 있으며 계속 pending 상태를 볼수 있다.
앞써 minikube에서 svc를 연결하기 위해서 service 명령어를 통해 프로비저닝을 해줘야 했습니다.
서비스 이름을 확인해 보면 다음과 같습니다.
$ kubectl get svc
다음의 명령어로 외부로 프로비저닝 해줍니다.
$ minikube service <svc 이름>
정상적으로 동작하는것을 확인할수 있다.
리소스 삭제
먼저 어플리케이션은 delete로 쉽게 삭제가 가능하다
argocd 는 설치했던 명령어인 insert에서 delete로 바꿔주면 된다.
$ kubectl delete -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
생성했던 네임스페이스도 삭제해주자.
kubectl delete namespace argocd
끝!
https://argo-cd.readthedocs.io/en/stable/getting_started/
https://umi0410.github.io/blog/devops/declarative-argocd-helm-app-of-app/
'server > k8s' 카테고리의 다른 글
[k8s] nginx pod * 200개를 띄울수 있나요? (1) | 2024.05.22 |
---|---|
[k8s] fastapi + helm (minikube에 올려보기) (0) | 2024.03.06 |