본문 바로가기
Cloud/K8S

[ArgoCD] K8S 환경에 ArgoCD 뿌리기!

by JunHeeLim 2024. 2. 9.

도입  목적

K8S에 배포되는 애플리케이션을 모니터링하기 위한 효과적인 웹 UI를 제공하는 동시에 더 빠르고 안전한 배포 지원을 하기 위해 도입하게 되었다.

 

Architecture of Argo CD

Argo CD는 실행 중인 애플리케이션을 지속적으로 모니터링하고 현재(라이브) 상태를 Git 리포지토리의 지정된 상태(원하는 대상 상태라고 함)와 비교하며 Kubernetes 컨트롤러로 구현되었습니다.

현재 상태가 대상 상태와 다른 배포된 응용 프로그램은 동기화되지 않은 것으로 간주됩니다.

Argo CD는 현재 상태를 원하는 대상 상태로 자동 또는 수동으로 다시 동기화하는 기능을 제공하면서 차이점을 보고하고 시각화합니다.

Git 리포지토리에서 원하는 대상 상태에 대한 변경 내용은 자동으로 적용되고 특정 대상 환경에 반영될 수 있습니다.

 

K8S 환경에 ArgoCd 설치하기

1. namespace 생성

kubectl create namespace argocd

 

2. ArgoCD 서비스  생성

kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

 

 

3. 서비스 배포 확인

kubectl get pods -n argocd

 

4. ClusterIP에서 NodePort로  변경

kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}'

 

5. Ingress 생성

kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
  name: alb-ingress-argocd
  namespace: argocd
  labels:
    app: alb-ingress-argocd
  annotations:
    alb.ingress.kubernetes.io/actions.ssl-redirect: |
      {"type":"redirection","redirection":{"port":
      "443","protocol":"HTTPS","statusCode":301}}
    alb.ingress.kubernetes.io/description: argocd alb ingress controller
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80},{"HTTPS":443}]'
    alb.ingress.kubernetes.io/ssl-certificate-no: '21306'
	alb.ingress.kubernetes.io/healthcheck-path: /login
	alb.ingress.kubernetes.io/backend-protocol: HTTPS
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /*
            pathType: Prefix
            backend:
              service:
                name: ssl-redirect
                port:
                  name: use-annotation
    - host: argocd.example.com
      http:
        paths:
          - path: /*
            pathType: Prefix
            backend:
              service:
                name: argocd-server
                port:
                  number: 443

 

SSL 적용시 해당 어노테이션과 port번호를 수정해야 리다이렉트 오류가 발생하지 않는다.
alb.ingress.kubernetes.io/healthcheck-path: /login
alb.ingress.kubernetes.io/backend-protocol: HTTPS
port.number: 443

 

 

6. LB와 DNS 설정 (cloud 벤더 사마다 설정 방법이 다름)

 

7. 서비스 접속  확인

 

8. argoCd helm 옵션 추가

k8s cluster configMap → argocd-cm 추가

data:
  kustomize.buildOptions: '--enable-helm'

 

9. 초기 비밀번호 확인

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d && echo

 

 

이로써 K8S 환경에 ArgoCD 구축이 완료 되었다. 

다음은  Kustomize와 Helm Chart 시스템을 구축하여 ArgoCD를 통해 배포될 템플릿을 만들어 보는 시간을 가져보겠다.

'Cloud > K8S' 카테고리의 다른 글

Kustomize, Helm Chart 시스템 구축  (0) 2024.02.09

댓글