지난 글에서 말씀드린 것처럼, 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로 바꿔줘야겠습니다.ㅎㅎ
답글 남기기