지난 글에서 말씀드린 것처럼, Fleet은 통합을 잘못 이루고 있습니다.
현재 Fleet의 업데이트 내용을 보고 Fleet도 다시 적용해보고 있습니다

따라서 ArgoCD를 이용할 예정입니다.

바로 시작하겠습니다.

ArgoCD 배포

namespace 생성

apiVersion: v1
kind: Namespace
metadata:
  name: argocd

보통은 kubectl create namespace 같은 것으로 지정하는데, 저는 yaml을 통해 명시적으로 하는게 좋아요.ㅎㅎ

deploy ArgoCD manifest

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

아쉽게도 ArgoCD의 구성요소가 너무 많아서, 이것을 yaml로 적용하기가 힘듭니다.ㅠㅠ

ArgoCD running으로 변하는 것 확인

watch -n1 kubectl get po -n argocd

비밀번호 확인

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

Ingress 배포

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: argocd
  annotations:
    cert-manager.io/cluster-issuer: "clusterissuer"
  labels:
    {}
    #  key: string
  namespace: argocd
spec:
  rules:
    - host: <도메인>
      http:
        paths:
          - backend:
              service:
                port:
                  number: 80
                name: argocd-server
            path: /
            pathType: Prefix
  tls:
    - hosts:
        - "*.cola16.app"
      secretName: <인증서 secret>

HTTP 허용 설정

기본으로 argoCD는 HTTPS만 가능하게 되어있습니다.
그러나 이 설정은 ArgoCD manifest와 충돌이 있습니다.

Manifest에 존재하는 Service에는 https가 설정되어있지 않습니다.

컨테이너 이미지에는 8080포트와 8083포트가 expose 되어있어, service와 ingress를 컨테이너의 8083으로 접속 되도록 해봤습니다.
하지만 접속에 실패하더라구요.

결국 https 없이 연결 가능하게 해줬습니다.
어차피 ingress는 https이고, ingress에서 pod 사이가 http가 될 뿐이니까요.

apiVersion: v1
kind: ConfigMap
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: >

{"apiVersion":"v1","kind":"ConfigMap","metadata":{"annotations":{},"labels":{"app.kubernetes.io/name":"argo
cd-cmd-params-cm","app.kubernetes.io/part-of":"argocd"},"name":"argocd-cmd-params-cm","namespace":"argocd"}
}
  labels:
    app.kubernetes.io/name: argocd-cmd-params-cm
    app.kubernetes.io/part-of: argocd
  name: argocd-cmd-params-cm
  namespace: argocd
data:
  server.insecure: "true"

redeploy deployment: argocd-server

새로운 설정을 불러오도록 다시 배포합니다.

argocd-server 파드를 제거하거나, redeploy합니다.

Git 연동

ArgoCD에 접속하여 로그인 합니다.

ID는 admin이며, Password는 위에서 확인한 비밀번호로 로그인 합니다.

git repo 추가

바로 New App 버튼을 눌러서 git을 추가합니다.

제가 설정하는 옵션입니다.
이름과 프로젝트를 쓰고, 자동 동기화를 활성화 합니다.
그리고 Directory Recurse도 활성화 합니다.

마무리

이처럼 sync 상태도 모니터링 가능합니다.

yaml 파일에 namespace:가 설정되어있으면 app의 namespace는 무시됩니다.

나중에 yaml에서 namespace에 전부 주석 처리를 하던가, default로 바꿔줘야겠습니다.ㅎㅎ

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다


Ads Blocker Image Powered by Code Help Pro

광고 차단 감지됨!

닫기를 누르면 이용하실 수 있지만, 광고 차단은 해제해주시면 좋겠습니다.
Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock