Thursday, November 21, 2024

[ArgoCD] Triển khai ArgoCD lên Kubernetes

-

Ở 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.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories