Kubernetes

ArgoCD Kubenetes Helm 구축

김 정출 2024. 9. 1. 14:46

ArgoCD Kubenetes Helm 구축

이번 글에서는 ArgoCD를 Kubernetes Cluster에 Helm을 활용해 구축해보겠습니다.

argocd 설치

curl -sSL -o argocd-linux-amd64 <https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64>

sudo install -m 555 argocd-linux-amd64 /usr/local/bin/argocd

rm argocd-linux-amd64

Namespace 생성

kubectl create ns argocd

Cert 등록

kubectl edit cert -nistio-system xxx-cert
---
argocd.xxx.net

Helm 설치

# Repo 추가
helm repo add argo <https://argoproj.github.io/argo-helm>

# Helm 가져오기
helm fetch argo/argo-cd --untar

cd argo-cd

ls

values.yaml을 수정합니다.

  • domain: ArgoCD Domain
vi values.yaml
---
## Globally shared configuration
global:
  # -- Default domain used by all components
  ## Used for ingresses, certificates, SSO, notifications, etc.
  domain: argocd.xxx.com

helm을 통해 배포를 진행합니다.

helm install argo -n argocd argo/argo-cd -f values.yaml

 

kubectl get all -nargocd

ArgoCD

Admin password

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

Port forwarding으로 테스트

kubectl port-forward service/argo-argocd-server -n argocd 38080:443

VS Code를 활용하여 38080 포트에 대해 포트포워딩을 진행합니다.

웹 브라우저로 이동하여 localhost:38080으로 이동합니다.

위의 비밀번호를 이용하여 로그인을 진행합니다.

Deployment

argocd server에 대해 insecure 모드를 지정해야 307 Redirect issue를 해결할 수 있습니다.

kubectl edit deployment -nargocd argo-argocd-server

Gateway

Istio 설정은 다음의 글을 참고해주세요.

https://jeongchul.tistory.com/720

 

Istio Kubernetes 구축 및 Nginx 테스트

Istio Kubernetes 구축 및 Nginx 테스트Istio 란?오픈소스 service mesh로 microservice를 보호, 연결, 모니터링할 수 있습니다.여기서 service mesh란 microservice의 네트워크와 트래픽을 관리할 수 있습니다.각 service

jeongchul.tistory.com

 

spec:
  selector:
    istio: ingressgateway
  servers:
  - hosts:
    - argocd.xxx.com
   ....

VirtualService

vi virtualservice.yaml
---
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: argocd-server
  namespace: argocd
spec:
  gateways:
  - default/cluster-gateway
  hosts:
  - argocd.xxx.com
  http:
  - corsPolicy:
      allowHeaders:
      - authorization
      - content-Type
      - accept
      allowMethods:
      - POST
      - GET
      - DELETE
      - PUT
      - OPTIONS
      allowOrigins:
      - regex: .*
      exposeHeaders:
      - authorization
      - location
      maxAge: 24h
    match:
    - uri:
        prefix: /
    route:
    - destination:
        host: argo-argocd-server.argocd.svc.cluster.local
        port:
          number: 80

ArgoCD

ArgoCD 도메인으로 웹브라우저를 통해 이동합니다.

Admin 유저의 비밀번호를 변경합니다.

완료하였습니다.
다음 글에서는 GitLab과 GitHub Actions을 통해 Application 배포를 CD를 통해 구축 진행하겠습니다.

감사합니다.