Jenkins pipeline, ArgoCD로 K8S배포 자동화 하기 - 2

 

 

들어가며

 

이전 포스팅에 이어 ArcoCD 구축하는 내용을 포스팅하고자 한다.

https://hwannny.tistory.com/113

 

Jenkins pipeline, ArgoCD로 K8S배포 자동화 하기 - 1

들어가며 개념만 익혔던 k8s를 실제 프로젝트에 적용해보고자 한다. 사용된 환경은 다음과 같다. Spring boot Maven Jenkins-Pipeline ArcoCD GitHub DockerHub K8S 시나리오 구축하고자하는 배포 플로우의 시작점.

hwannny.tistory.com

 

 

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로 확인해보자.