👋👋👋 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:
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ênserver
- 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é:
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.