- vừa được xem lúc

[ArgoCD] Phần 8: Multi-Clusters management với ArgoCD

0 0 1

Người đăng: Nguyễn Hữu Kim

Theo Viblo Asia

👋👋👋 Hello hello, xin chào tất cả anh em. Anh em nào đã lỡ vào đây rồi thì comment chào nhau một cái nhé cho đông vui nhé!

Multi-clusters và cách thức hoạt động

Trong phần này, mình sẽ đề cập tới một tính năng cực kỳ hay trong ArgoCD đó chính là khả năng quản lý đa cụm (multi-clusters). Nghĩa là anh em chỉ cần deploy ArgoCD lên một cụm K8s duy nhất rồi kết nối ArgoCD tới nhiều clusters khác nhau. Quá trình deploy sẽ được xử lý bởi ArgoCD tới tất cả các cụm.

Phía trên đây là sơ đồ minh họa gồm 3 Kubernetes cluster chạy ở 3 cloud khác nhau gồm:

  • in-cluster: K8s cluster dùng để deploy ArgoCD, sử dụng LKE (Linode Kubernetes Engine).
  • production-cluster: K8s cluster dùng để deploy các ứng dụng chạy cho môi trường production, sử dụng AKS (Azure Kubernetes Service).
  • staging-cluster: K8s cluster dùng để deploy các ứng dụng chạy cho môi trường kiểm thử, sử dụng EKS (Elastic Kubernetes Service).

Setup multi-clusters với ArgoCD

Sau khi cài đặt ArgoCD (Phần 1: Giới thiệu và cài đặt ArgoCD), mặc định cluster đó sẽ được ArgoCD định danh với các thông tin:

  • Cluster Name: in-cluster
  • Cluster API URL: https://kubernetes.deafault.svc

Cluster này đóng vai trò như cluster in-cluster trong sơ đồ mình tạo ở bên trên. Bây giờ, mình sẽ hướng dẫn các bạn cách để kết nối thêm 1 cluster khác (external cluster) với ArgoCD bằng cách sử dụng ArgoCD CLI.

Bước số 1: Login

Đầu tiên, các bạn cần dùng CLI để login vào ArgoCD. ArgoCD server của mình đang chạy ở domain cd.teguru.com. Do vấn đề bảo mật nên thường mình sẽ tắt đăng nhập bằng password, thay vào đó là dùng Google. Mình thực hiện chạy câu lệnh login với cờ --sso để đăng nhập qua Google:

argocd login cd.teguru.com --grpc-web --sso

Nếu bạn quan tâm tới việc login ArgoCD bằng Google mà chưa biết setup như nào, comment xuống phía dưới bài viết này nhé. Nhiều bạn quan tâm mình sẽ viết về phần đó.

Performing authorization_code flow login: https://cd.teguru.com/api/dex/auth?access_type=offline&client_id=argo-cd-cli&code_challenge=xxx&code_challenge_method=S256&redirect_uri=http%3A%2F%2Flocalhost%3A8085%2Fauth%2Fcallback&response_type=code&scope=openid+profile+email+groups+offline_access&state=yyy
Opening system default browser for authentication

Trình duyệt được mở ra tới trang đăng nhập của Google Accounts, hoàn tất quá trình xác thực thành công sẽ có màn hình như ảnh sau:

image.png

Authentication successful
'xxx@gmail.com' logged in successfully
Context 'cd.teguru.com' updated

Login xong các bạn có thể tắt cái tab trên trình duyệt vừa nãy đi. Kiểm tra lại bằng cách list thử danh sách Applications với lệnh:

argocd app list

Hiện ra danh sách Applications là OK nhé. Bạn có thể đăng nhập vào nhiều ArgoCD khác nhau. Dưới đây là một số command hữu ích:

# xem danh sách argocd server đã đăng nhập:
argocd context # chuyển sang một context khác:
argocd context <another_context>

Bước số 2: Thêm cluster vào ArgoCD

Để kết nối k8s cluster khác vào trong ArgoCD, các bạn chạy command dưới đây, với điều kiện máy thực hiện đã kết nối kubectl tới cluster đó đồng thời phải có quyền admin của cluster nha. Kiểm tra bằng lệnh:

kubectl config get-contexts

Tiện các bạn có thể kiểm tra luôn danh sách cluster đang kết nối với ArgoCD:

argocd cluster list
SERVER NAME VERSION STATUS MESSAGE PROJECT
https://kubernetes.default.svc in-cluster 1.32 Successful

Giả sử cluster mình muốn thêm cluster có k8s context là teguru-labs vào ArgoCD với tên là stg, mình sẽ chạy lệnh như sau:

argocd cluster add teguru-labs --name stg

Các bạn nên đặt lại cluster name với cờ --name sao cho thật ngắn gọn, dễ hiểu nhé.

Mình sẽ điền y trên terminal để đồng ý tạo thêm ServiceAccount có tên argocd-manager trên cluster đang cần kết nối teguru-labs (Namespace: kube-system). ServiceAccount này sẽ được cấp toàn quyền để cho ArgoCD có thể thực hiện quản lý cluster.

WARNING: This will create a service account `argocd-manager` on the cluster referenced by context `teguru-labs` with full cluster level privileges. Do you want to continue [y/N]? y
INFO[0002] ServiceAccount "argocd-manager" created in namespace "kube-system"
INFO[0002] ClusterRole "argocd-manager-role" created
INFO[0002] ClusterRoleBinding "argocd-manager-role-binding" created
INFO[0002] Created bearer token secret for ServiceAccount "argocd-manager"
Cluster 'https://****' added

Kiểm tra lại danh sách cluster bằng lệnh sau để xem thông tin về các cluster đã kết nối vào ArgoCD:

argocd cluster list
SERVER NAME VERSION STATUS MESSAGE PROJECT
https://kubernetes.default.svc in-cluster 1.32 Successful
https://*** stg 1.32 Successful

Các bạn chạy vài lần đợi cột STATUS chuyển giá trị Successful là xong rồi nhé! 😉

Common Error: FATA[0003] rpc error: code = Unknown desc = error getting server version: Get "https://xxx/version?timeout=32s": dial tcp xxx: connect: connection refused

Thường thì lỗi này xảy ra trong một số trường hợp sau:

  • Bị chặn bởi Firewall khi sử dụng EKS, AKS, .etc. => Cần config lại firewall.
  • K8s API URL là local cluster hoặc là Private IP address nên không thể truy cập => Cần setup proxy, VPN, .etc. Miễn làm sao để container trong cluster in-cluster có thể access được tới external cluster.

Bước số 3: Deploy ứng dụng vào cluster mới

Đọc tới phần này thì chắc bạn cũng nắm được cách deploy với ArgoCD rồi. Khi muốn thay đổi cluster stg thì chỉ cần thay tên cluster trong trường application.spec.destination.name là được.

destination: namespace: shope name: stg # Thay tên cluster mới của bạn vào đây

Setup multi-clusters thủ công với Helm

Như các bạn đã biết, series này mình sử dụng Helm Chart để deploy ArgoCD. Trong values.yaml của ArgoCD cũng có trường giá trị cho phép chúng ta cấu hình multi-clusters. Tương tự như khi setup tự động với CLI, mình cũng cần tạo ServiceAccount và cấp quyền quản lý toàn bộ cluster cho nó. Sau đó, đưa thông tin của ServiceAccount cho ArgoCD để thực hiện kết nối.

Bước số 1: Tạo ServiceAccount và cấp quyền

Dưới đây là manifest tạo ServiceAccount, ClusterRole, ClusterRoleBinding và cả Secret để tạo ServiceAccount Token nữa. All-In-One:

apiVersion: v1
kind: ServiceAccount
metadata: name: argocd-manager namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata: name: argocd-manager
rules: - apiGroups: - "*" resources: - "*" verbs: - "*" - nonResourceURLs: - "*" verbs: - "*"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata: name: argocd-manager
roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: argocd-manager
subjects: - kind: ServiceAccount name: argocd-manager namespace: kube-system
---
apiVersion: v1
kind: Secret
metadata: annotations: kubernetes.io/service-account.name: argocd-manager name: argocd-manager-token namespace: kube-system
type: kubernetes.io/service-account-token
kubectl apply --context teguru-labs -n kube-system -f argocd-manager.yaml

Bước số 2: Lấy thông tin về ServiceAccount Token

Đầu tiên, lấy thông tin bearer token - đóng vai trò làm API Token:

kubectl get secret argocd-manager-token \ --context teguru-labs \ -n kube-system \ -ojsonpath={..token} | base64 --decode
eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhcmdvY2QtbWFuYWdlci10b2tlbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJhcmdvY2QtbWFuYWdlciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjA5ZDQwNTQwLTNiOGMtNGZlOS04M2FiLTExNDQwY2JkOTRiYyIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTphcmdvY2QtbWFuYWdlciJ9.BOFfugQEVe7F_IgV_gQ3tZ9nrxaEHoLtL9zjwsqjDsRmdZzgsUMRhrRZLIkbMp8_2gpLXj8vO1MfO2GN61JxAaDPVYsIfrtG0vlvQoQ7F1RBk4JwJZMr8ALQLTTfa_sPdVJICkeib5pei0a36NohPIkeNV-1AjrwPpZYedbtpkp55ROB_z4gHM8Iq0Fma5xTvx-ue-Ot2zQh1gEBA-Y6wx4qi4r-U6FQabBl45fYhXu8sG7diZfodziLa3FU9LAxo8_TsWw-lfk1u5zhjrOVgPVM1U_YussxtMcbt8ASemfKU3iVwxhPGYuSi_ojFi5xlaNXX-tqSGSrL0lNywd3NQ

Tiếp theo, lấy ra CA Certificate của nó, phần này các bạn giữ nguyên encode ở dạng base64 nhé:

 --context teguru-labs \ -n kube-system \ -ojsonpath={.."ca\.crt"}
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lJSjNEU0RZVkg4amt3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TkRBNU1qRXdOekEzTlROYUZ3MHpOREE1TVRrd056RXlOVE5hTUJVeApFekFSQmdOVkJBTVRDbXQxWW1WeWJtVjBaWE13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLCkFvSUJBUURScnl1TTZPN1lsQmdseEgxQnRiTFJvWUs0a0I0WlF0dlF3cFNXZURKeEE0OXpuOVdVVUlKWFNsS3UKQmRzUFZrci9CbWd1b1JCOHl1VFBBTzlLQXRDbHBjZ0dvUUFHcjVmK3c0ckxEYzRUaXNKRWF4ZHpPa3pRS2VWZApTNzhmVTRjR1NEUmZ5ZmJLNDk2Q2N4NG9vN25UUkxyWi9BTGszNDFrQVNxRlJEQ1U3WGFocnFYZ3Fubk1aUHU1CmpsNThrY1Nmck0rL1pwMzB0VnN1cjNIV1pBckNMVyttd1JySVA2L1Bqa3hlU1ZXK0hXZE9WdENGRjI2cTBZZkoKVnVORWFlVzNrVmtyVSthUXg0WVJXckdaOGo5Q0w3SS85REg2Nk5obUZ3RmpUZmg4anpDcDFrdUZ0QXZVWDhnMgplVlJydEJ4SUhEeTJrK1E2M2hIZFFrRktoTzU3QWdNQkFBR2pXVEJYTUE0R0ExVWREd0VCL3dRRUF3SUNwREFQCkJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJUVDZCVnRIL29pZUVuQTROT2JXNHh1cXF6aTNUQVYKQmdOVkhSRUVEakFNZ2dwcmRXSmxjbTVsZEdWek1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQUp4ME5NcU40RApkdmdPUjJPcGFEdlphSGNjUEt5N0Iyb21VOVNVT0hkU0VlWXZxUTM4ZjJQQ1JCRUlBSUpBNDlKVU5oVy91aDJGCnBqcXBCdE9xS0NOWUFQOWZiV3I5NDdUR0lSeVU1VHcweHdMN09iRXZoOUdVUXdMNlp3d2ZDMG45L1ppaWl6ZnYKMml0dUxPajBiQjVXZVBOWlBtOGNObG9VYU9qVDUwZ3FuaGlUbGNEOURCNlM1S053UFovUkNKMXR0Tk5kdDRjMgpRK1BRMFpjUFltZXhUMmtVelhzYkVYUXlpdERSRDBxZFkveGswdVkzcVJ6UlFtYW82ZWZkcHZxYVdwc2ZDVHF0CmZXVHU1dzR2S3pRbmlpbldaSEN0OUM2Z1pmU0p0NHJGYzRFTGVsYVZoUDBSUUh0LzBaUDB6b1kreFJzaGsvZlUKZGFIUnN6SWdmdWNyCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K

Từ phiên bản Kubernetes v1.24 trở lên, ServiceAccount token không còn được tạo tự động khi ServiceAccount được tạo nhằm tăng cường bảo mật và hợp lý hóa việc quản lý token. Thay vào đó, bạn cần request hoặc tạo các token này một cách rõ ràng bằng cách sử dụng TokenRequest API hoặc bằng cách tạo Secret với annotations.

Bước số 3: Deploy ArgoCD

Các bạn sẽ tìm thấy nó tại trường configs.clusterCredentials dạng object, hãy điền giá trị theo mẫu sau:

 # -- Provide one or multiple [external cluster credentials] # @default -- `{}` (See [values.yaml]) ## Ref: ## - https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/#clusters ## - https://argo-cd.readthedocs.io/en/stable/operator-manual/security/#external-cluster-credentials ## - https://argo-cd.readthedocs.io/en/stable/user-guide/projects/#project-scoped-repositories-and-clusters clusterCredentials: stg: server: https://**** config: bearerToken: eyJhbGciOiJSUzI1NiIsImtpZCI6ImIxWGsxT2F4VWZSMGN5eElPZ3BzZHU3Tl8xSjlPNFFLXzM0MnZJSTBnRGcifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhcmdvY2QtbWFuYWdlci10b2tlbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJhcmdvY2QtbWFuYWdlciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjA5ZDQwNTQwLTNiOGMtNGZlOS04M2FiLTExNDQwY2JkOTRiYyIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTphcmdvY2QtbWFuYWdlciJ9.BOFfugQEVe7F_IgV_gQ3tZ9nrxaEHoLtL9zjwsqjDsRmdZzgsUMRhrRZLIkbMp8_2gpLXj8vO1MfO2GN61JxAaDPVYsIfrtG0vlvQoQ7F1RBk4JwJZMr8ALQLTTfa_sPdVJICkeib5pei0a36NohPIkeNV-1AjrwPpZYedbtpkp55ROB_z4gHM8Iq0Fma5xTvx-ue-Ot2zQh1gEBA-Y6wx4qi4r-U6FQabBl45fYhXu8sG7diZfodziLa3FU9LAxo8_TsWw-lfk1u5zhjrOVgPVM1U_YussxtMcbt8ASemfKU3iVwxhPGYuSi_ojFi5xlaNXX-tqSGSrL0lNywd3NQ tlsClientConfig: serverName: teguru-stg-control-plane caData: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lJSjNEU0RZVkg4amt3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TkRBNU1qRXdOekEzTlROYUZ3MHpOREE1TVRrd056RXlOVE5hTUJVeApFekFSQmdOVkJBTVRDbXQxWW1WeWJtVjBaWE13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLCkFvSUJBUURScnl1TTZPN1lsQmdseEgxQnRiTFJvWUs0a0I0WlF0dlF3cFNXZURKeEE0OXpuOVdVVUlKWFNsS3UKQmRzUFZrci9CbWd1b1JCOHl1VFBBTzlLQXRDbHBjZ0dvUUFHcjVmK3c0ckxEYzRUaXNKRWF4ZHpPa3pRS2VWZApTNzhmVTRjR1NEUmZ5ZmJLNDk2Q2N4NG9vN25UUkxyWi9BTGszNDFrQVNxRlJEQ1U3WGFocnFYZ3Fubk1aUHU1CmpsNThrY1Nmck0rL1pwMzB0VnN1cjNIV1pBckNMVyttd1JySVA2L1Bqa3hlU1ZXK0hXZE9WdENGRjI2cTBZZkoKVnVORWFlVzNrVmtyVSthUXg0WVJXckdaOGo5Q0w3SS85REg2Nk5obUZ3RmpUZmg4anpDcDFrdUZ0QXZVWDhnMgplVlJydEJ4SUhEeTJrK1E2M2hIZFFrRktoTzU3QWdNQkFBR2pXVEJYTUE0R0ExVWREd0VCL3dRRUF3SUNwREFQCkJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJUVDZCVnRIL29pZUVuQTROT2JXNHh1cXF6aTNUQVYKQmdOVkhSRUVEakFNZ2dwcmRXSmxjbTVsZEdWek1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQUp4ME5NcU40RApkdmdPUjJPcGFEdlphSGNjUEt5N0Iyb21VOVNVT0hkU0VlWXZxUTM4ZjJQQ1JCRUlBSUpBNDlKVU5oVy91aDJGCnBqcXBCdE9xS0NOWUFQOWZiV3I5NDdUR0lSeVU1VHcweHdMN09iRXZoOUdVUXdMNlp3d2ZDMG45L1ppaWl6ZnYKMml0dUxPajBiQjVXZVBOWlBtOGNObG9VYU9qVDUwZ3FuaGlUbGNEOURCNlM1S053UFovUkNKMXR0Tk5kdDRjMgpRK1BRMFpjUFltZXhUMmtVelhzYkVYUXlpdERSRDBxZFkveGswdVkzcVJ6UlFtYW82ZWZkcHZxYVdwc2ZDVHF0CmZXVHU1dzR2S3pRbmlpbldaSEN0OUM2Z1pmU0p0NHJGYzRFTGVsYVZoUDBSUUh0LzBaUDB6b1kreFJzaGsvZlUKZGFIUnN6SWdmdWNyCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K prod: server: https://*** config: bearerToken: eyJhbGciOiJSUzI1NiIsImtpZCI6ImY4Z1FKUFdZTFVBT2E3NWpqTjhQZVpsYTF2VVA3LXJDbnpiOEJ5UkgweU0ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhcmdvY2QtbWFuYWdlci10b2tlbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJhcmdvY2QtbWFuYWdlciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6Ijg2YmE2OWFkLTYwMzItNDljNS1iMGNkLWQ4YzkzMTMwMWI4OSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTphcmdvY2QtbWFuYWdlciJ9.rwejil0t6CsfN23CpzLN40eXntrN9wkfcePLDJ5hx4j6WVvsnqWidU7AP69rbDBPAY_WOmaGPm2bqxqH0-0La1Ilfx5E8WaanXlVvQm78x5o0BaK_qcgskeWa3MHuUAiB9KkJ6IRt5AL-x_NrSuzp1Zmm1phsDw0Ch-IRHbdl57Z_gB1w7ggvexn49zHxFYkzparbtxFhNhGE4GgcqD5o9K2gg45Ta6msXZJt-qdXpIKMny5H5DAs7-hadNmuGgYCN0yIlsvy3gXrGruQyL8egv-oUX1e71J2PwoC0EW02cEDZh6MMv67V8JHZTkxox53rCzT87AfY15awcS79ZBmQ tlsClientConfig: serverName: teguru-prod-control-plane caData: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lJUFpPR0JxQ1dHUjh3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TkRBNU1qRXdOekE1TUROYUZ3MHpOREE1TVRrd056RTBNRE5hTUJVeApFekFSQmdOVkJBTVRDbXQxWW1WeWJtVjBaWE13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLCkFvSUJBUURVRVFYNVJKb0ppRVdaMjdNM0c0KzliMzY2c0xkWXc1WWtaRzdGbERxUHJRTHpsUHY2OWdVRmxxdC8KUk0wSVpQckhYTzB4ejNzVXhJUytHandqdXQ4U2FubnFtTTI5bnFwT3M5MVkzZDdmOGhBY0xBNmdQL2xUUTkrUgplR2hURDFYRjJRNkg4VVNJaDVsTFA0aXFrT1FEUmNRSUZFc0VyZyt2SXI0K3g2SVd6QjFrUjNRcXRlSlZvT1ZLCmRvaDg3bkp6S3J4by9kMkZVS1V4cGU4RlRFblRlUURLZHJ4c1BkbGowN1ZmNC9RNjZIVFpWeXlubkpqK1hYbXUKT2x3OXlCVWI2ZXA2NzR0TUVaQlJVQlFXM1pGMThtdE9BSkNaMmpRcUJTQVJyRXZpRnZIbUUwcFJJOW9jdmhrMwpVeVFHTjJab0tQQURDN2krNUdEZFZKK2pxKzFiQWdNQkFBR2pXVEJYTUE0R0ExVWREd0VCL3dRRUF3SUNwREFQCkJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJTUVVSZXdSSjRFeC9TbTAwaFdTQ0xsVDV6Z0R6QVYKQmdOVkhSRUVEakFNZ2dwcmRXSmxjbTVsZEdWek1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQXRna01zU2FJZgplc1VmbVR3a1pjRkFRdnJZQ1RrMk5waEtFbU9zVUUvcW9ERnZaRGRWNGI2V0xvZWEwcHlDSndDa21XY1J4STFuCkRnV1oreUVPak8zMDF3S0VXQUVHK2tZS3hYeU5ma09lckdyZVBQSWFnY21FVFFsWnVPVC9PY24xMjRabHJIZmoKL1RlK3FxblVTcmx2WENHZHFacE5yRVdjWTV5clNQUWJJUzNNc1h3V1FHYktRS28rcEN2eFZQMWxLdDc3a1lWcgp0MWgzRllCRDBDUEs3NkNwa0ozalB5aWNrRlpjWTNibWF1RkMyNW5ZVlgrbllxUjRycUlHb1hVTmN3TXAzTzA5Cm5SUm1tMWlkdEFyM3lZZHRvbngyRE4zV0xvOUVlbWVJVkF3V2N1dEthTjE0blU3ZVBDU3dmYm44eWpVTVlSL1cKVTBUd3J6WGtGS0tECi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K

Các trường dữ liệu cần thay vào trong file values trên gồm:

  • stg, prod: Là tên cluster bạn muốn đặt.
  • server: K8s API URL của cluster.
  • bearerToken: Chính là bearer token của ServiceAccount trong cluster (ServiceAccount token).
  • tlsClientConfig.caData: Là thông tin về CA Certificate ứng với ServiceAccount token đang cung cấp.
  • tlsClientConfig.serverName (optional): Ghi đè lại thông tin tên server - dùng trong trường hợp khi K8s API URL đang cung cấp đi là proxy server.

Mà các thông tin trên thì chúng ta đã lấy ra ở bước trước đó, giờ chỉ cần điền vào và deploy lại ArgoCD bằng Helm thôi.

Ngoài ra, các bạn cũng có thể kiểm tra danh sách cluster đã thêm vào ArgoCD trên UI tại trang Settings > Clusters nhé:

image.png

Tổng kết

Như vậy, trong bài viết này mình cũng đã chia sẻ tới các bạn về cách để triển khai GitOps CD trên nhiều cluster với ArgoCD. Nếu các bạn có thắc mắc nào khác có thể comment xuống phía dưới để mình cùng thảo luận nha. Cảm ơn các bạn đã đọc bài!

Đừng quên cho cho bài viết này một lượt upvote, follow mình để đón chờ những bài viết tiếp theo về ArgoCD nha. 👋 👋 👋

Bình luận

Bài viết tương tự

- vừa được xem lúc

Deploying A Containerized Web Application On Kubernetes

1. Overview. Kubernetes is an open source project (available on kubernetes.io) which can run on many different environments, from laptops to high-availability multi-node clusters; from public clouds to on-premise deployments; from virtual machines to bare metal.

0 0 73

- vừa được xem lúc

Kubernetes - Học cách sử dụng Kubernetes Namespace cơ bản

Namespace trong Kubernetes là gì. Tại sao nên sử dụng namespace.

0 0 127

- vừa được xem lúc

[Kubernetes] Kubectl và các command cơ bản

Mở đầu. Kubectl là công cụ quản trị Kubernetes thông qua giao diện dòng lệnh, cho phép bạn thực thi các câu lệnh trong Kubernetes cluster.

0 0 71

- vừa được xem lúc

Triển khai EFK Stack trên Kubernetes

EFK stack on K8S. Giới thiệu. Một hệ thống có thể chạy nhiều dịch vụ hoặc ứng dụng khác nhau, vì vậy việc. theo dõi hệ thống là vô cùng cần thiết.

0 0 84

- vừa được xem lúc

Thực hành Kubernetes (K8S) bằng cách sử dụng lệnh Command

Bài hướng dẫn hôm nay sẽ hướng dẫn sử dụng K8S bằng cách sử dụng câu lệnh thay vì UI trên web. Có 2 lựa chọn để thực hiện:. . Sử dụng Cloud Shell.

0 0 67

- vừa được xem lúc

Kubernetes best practices - Liveness và Readiness Health checks

Mở đầu. Kubernetes cung cấp cho bạn một framework để chạy các hệ phân tán một cách mạnh mẽ.

0 0 65