Ở bài viết này mình sẽ hướng dẫn các bạn triển khai ArgoCD lên cụm Kubernetes, hi vọng bài viết này sẽ giúp các bạn triển khai 1 cách nhanh chóng công cụ này.
Đầu tiên ta vào kho Repository chứa các file manifest hỗ trợ triển khai ArgoCD https://github.com/argoproj/argo-cd
Ở đây mình đang demo nên mình sử dụng cách triển khai Non-HA
Ta tạo namespace argocd và apply file manifest như dưới
root@loadbalancer3:~# kubectl create namespace argocd
namespace/argocd created
root@loadbalancer3:~# kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v2.4.12/manifests/install.yaml
Xem các thành phần đã triển khai
root@loadbalancer3:~/learn-devops/argocd# kubectl get deploy -n argocd
NAME READY UP-TO-DATE AVAILABLE AGE
argocd-applicationset-controller 1/1 1 1 60m
argocd-dex-server 1/1 1 1 60m
argocd-notifications-controller 1/1 1 1 60m
argocd-redis 1/1 1 1 60m
argocd-repo-server 1/1 1 1 60m
argocd-server 1/1 1 1 60m
Sau khi apply file manifest, chúng ta verify lại kết quả.
root@loadbalancer3:~# kubectl get po,svc -n argocd
NAME READY STATUS RESTARTS AGE
pod/argocd-application-controller-0 1/1 Running 0 2m42s
pod/argocd-applicationset-controller-bf6bf659d-kw5kd 1/1 Running 0 2m43s
pod/argocd-dex-server-787dcc5fd7-l7xqp 1/1 Running 0 2m43s
pod/argocd-notifications-controller-78cffff85c-nfz5q 1/1 Running 0 2m43s
pod/argocd-redis-65596bf87-q6gp5 1/1 Running 0 2m43s
pod/argocd-repo-server-5444cd8878-6csd7 1/1 Running 0 2m43s
pod/argocd-server-6b567b5949-ffgp7 1/1 Running 0 2m43s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/argocd-applicationset-controller ClusterIP 10.111.82.56 <none> 7000/TCP,8080/TCP 2m43s
service/argocd-dex-server ClusterIP 10.104.24.46 <none> 5556/TCP,5557/TCP,5558/TCP 2m43s
service/argocd-metrics ClusterIP 10.105.188.183 <none> 8082/TCP 2m43s
service/argocd-notifications-controller-metrics ClusterIP 10.99.157.96 <none> 9001/TCP 2m43s
service/argocd-redis ClusterIP 10.109.110.154 <none> 6379/TCP 2m43s
service/argocd-repo-server ClusterIP 10.105.63.122 <none> 8081/TCP,8084/TCP 2m43s
service/argocd-server ClusterIP 10.108.186.16 <none> 80/TCP,443/TCP 2m43s
service/argocd-server-metrics ClusterIP 10.106.75.77 <none> 8083/TCP 2m43s
Theo kết quả trên chúng ta thấy service argocd-server đang được gắn port 80/TCP, 443/TCP nhưng type network đang là ClusterIP (ClusterIP chỉ các container thấy được nhau). Muốn các thiết bị ở ngoài kết nối được vào container thì chúng ta cần phải expose cổng này ra ngoài bằng cách đơn giản nhất là đổi type network từ ClusterIP sang NodePort là xong.
Ta tiến hành edit service/argocd-server và thay đổi type network từ ClusterIP sang NodePort như sau:
kubectl edit svc/argocd-server -n argocd
Kiểm tra lại service/argocd-server ta thấy port 80 đang được expose cổng 31395, và port 443 sang được expose cổng 31607.
root@loadbalancer3:~# kubectl get svc -n argocd
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/argocd-applicationset-controller ClusterIP 10.111.82.56 <none> 7000/TCP,8080/TCP 3h54m
service/argocd-dex-server ClusterIP 10.104.24.46 <none> 5556/TCP,5557/TCP,5558/TCP 3h54m
service/argocd-metrics ClusterIP 10.105.188.183 <none> 8082/TCP 3h54m
service/argocd-notifications-controller-metrics ClusterIP 10.99.157.96 <none> 9001/TCP 3h54m
service/argocd-redis ClusterIP 10.109.110.154 <none> 6379/TCP 3h54m
service/argocd-repo-server ClusterIP 10.105.63.122 <none> 8081/TCP,8084/TCP 3h54m
service/argocd-server NodePort 10.108.186.16 <none> 80:31395/TCP,443:31607/TCP 3h54m
service/argocd-server-metrics ClusterIP 10.106.75.77 <none> 8083/TCP 3h54m
Để ý hình dưới, service/argocd-server đang nằm ở worker2 và worker2 đang nắm ip address 192.168.13.211, vậy chúng ta dùng trình duyệt để login theo link https://192.168.13.211:31607 để xem kết quả.
Kết quả chúng ta đã truy cập được vào ArgoCD phiên bản giao diện web.
Sử dụng command sau để lấy mật khẩu
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath='{.data.password}' | base64 -d
xIpxgf7QNVsQGOXY -> đây là mật khẩu nhé
Sau khi lấy được mật khẩu, ta login theo thông tin sau
Username: admin
Password: xIpxgf7QNVsQGOXY
Và đây là kết quả cuối cùng. Chúc các bạn may mắn.