Published on

Deploy ArgoCD trên Kubernetes

Bài viết này, mình sẽ trình bày các bước để deploy ArgoCD trên Kubernetes cluster'

Muốn hợp tác? Vui lòng gửi mail đến: hello@nvienanh.info

Deploy ArgoCD manifest

Đầu tiên, chúng ta sẽ sử dụng manifest mà ArgoCD cung cấp để deploy. Mình deploy theo phương án Non-HA (Non High Availabolity). Việc này khá đơn giản chỉ cần chạy 2 câu lệnh là được.

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

Deploy ArgoCD ingress

Sau khi deploy từ manifest mặc định xong, chúng ta cần tạp Ingress để cho phép người dùng truy cập vào app. Trong bài viết này mình dùng Nginx

ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: argocd-server-ingress
  namespace: argocd
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
  ingressClassName: nginx
  rules:
  - host: argocd.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: argocd-server
            port:
              name: https
  tls:
  - hosts:
    - argocd.example.com
    secretName: argocd-server-tls # as expected by argocd-server

Lưu ý rằng trong line 7, mình dùng letsencrypt để tạo chứng chỉ SSL, chi tiết bạn có thể tham khảo bài viết Tạo chứng chỉ Let’s Encrypt trên Kubernetes

Sau đó chúng ta deploy ingress-nginx

kubectl apply -f ingress.yaml

Truy cập vào app

Sau khi mọi resouce đã deploy xong, bạn có thể truy cập vào phần quản lý tại: argocd.example.com, trong đó thông tin đăng nhập ban đầu:

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