들어가며
이전 포스팅에 이어 ArcoCD 구축하는 내용을 포스팅하고자 한다.
https://hwannny.tistory.com/113
3. ArgoCD 구축
ArgoCD Apply
# ArgoCD 네임스페이스 생성
kubectl create namespace argocd
# ArgoCD 배포용 메니페스트 다운로드
curl -o argo-cd.yaml https://raw.githubusercontent.com/argoproj/argo-cd/v1.4.2/manifests/ha/install.yaml
# ArgoCD를 외부에서 접속할 수 있도록 arcocd service를 띄우기전 argo-cd.yaml 내 type을 NodePort로 변경.
---
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/component: server
app.kubernetes.io/name: argocd-server
app.kubernetes.io/part-of: argocd
name: argocd-server
spec:
type: NodePort # 여기를 변경한다.
ports:
- name: http
port: 80
protocol: TCP
targetPort: 8080
- name: https
port: 443
protocol: TCP
targetPort: 8080
selector:
app.kubernetes.io/name: argocd-server
---
# ArgoCD apply
kubectl apply -f argo-cd.yaml -n argocd
ArgoCD 대시보드 설정
아래의 내용{floating IP}:{Node port} 으로 대시보드를 접근하면 초기 대시보드 ID/PW는 admin/argocd-server-cbd74f7fd-86k4t 이다.
# argocd-server service의 node port와 argocd-server-cbd74f7fd-86k4t(뒤에 랜덤문자열은 매번다름) pod가 생성된 worker-node 인스턴스의 floating IP를 사용해 ArgoCD 대시보드에 접근한다.
kubectl get svc -n argocd
kubectl get pods -n argocd -o wide
password도 접근할 때 편하도록 변경해주자.
# ArgoCD CLI 설치
VERSION=$(curl --silent "https://api.github.com/repos/argoproj/argo-cd/releases/latest" | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/')
curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/download/$VERSION/argocd-linux-amd64
chmod +x /usr/local/bin/argocd
# ArgoCD CLI로 password update
argocd login {floating IP}:{argocd-server svc의 node port} --grpc-web
argocd account update-password
Github Repository 설정
ArgoCD가 바라볼 Github Repository를 설정한다.
# private, public key 생성
ssh-keygen -t rsa -f ~/.ssh/id_rsa
1. id_rsa.pub 은 github 내 Settigns > Deploy keys에 등록.
2. id_rsa 는 위 SSH private key data에 기입.
Application 설정 및 생성
argocd login {Floating IP}:{Node Port} --grpc-web
argocd repo add git@github.com:best-branch/k8s-manifest.git --ssh-private-key-path id_rsa --upsert
위 커맨드로 세팅 후 아래의 내용으로 application을 생성한다.
SYNC POLICY : Automatic은 자동으로 GitHub Repository의 변경사항을 k8s 클러스터에 반영하고 Manual은 사용자가 Sync 버튼 클릭을 통해 직접 Sync가 수행되도록 한다.
아래처럼 Sync OK 됐다면 정상적으로 배포된것으로 볼 수 있으니, kubectl로 확인해보자.
'🤵🏻 CI, CD' 카테고리의 다른 글
원격 서버 내 파일을 손쉽게 다운로드하기 (0) | 2021.10.24 |
---|---|
Jenkins pipeline, ArgoCD로 K8S배포 자동화 하기 - 1 (1) | 2021.10.18 |
[Jenkins] Spring 프로젝트 jar 배포환경 구성하기 (0) | 2021.09.05 |
[Jenkins] Jenkins에서 원격서버내에 shell script 실행 시키기 (0) | 2021.03.14 |
[Jenkins] Jenkins로 자동 빌드 배포 환경 구축하기 (0) | 2021.01.31 |