•20 min read

ArgoCD GitOps: Các mô hình triển khai đa cụm

ArgoCD GitOps: Các mô hình triển khai đa cụm

Việc quản lý các hoạt động triển khai Kubernetes trên nhiều cụm phân tán đòi hỏi một mặt phẳng điều khiển tập trung để loại bỏ sự sai lệch môi trường, đơn giản hóa việc quản lý quyền truy cập và đảm bảo đối chiếu khai báo liên tục. Khi các tổ chức kỹ thuật mở rộng từ một cụm Kubernetes duy nhất lên hàng chục cụm đích cụ thể theo môi trường hoặc phân tán theo địa lý, việc quản lý trạng thái cụm thủ công hoặc thông qua các tập lệnh CI rời rạc sẽ dẫn đến lỗi triển khai và bỏ sót bảo mật. Bằng cách triển khai các mẫu GitOps đa cụm với ArgoCD, bạn thiết lập kiến trúc Hub-and-Spoke thống nhất tự động đối chiếu các manifest ứng dụng được lưu trữ trong Git trên tất cả các môi trường đích.

Audio Briefing
0:00 / 0:00

Kiến trúc Hub-and-Spoke hoạt động như thế nào trong thiết lập ArgoCD đa cụm?

Kiến trúc Hub-and-Spoke hoạt động trong thiết lập ArgoCD đa cụm bằng cách triển khai các thành phần mặt phẳng điều khiển ArgoCD cốt lõi lên một cụm trung tâm quản lý chuyên dụng duy nhất trong khi đăng ký các cụm spoke thông qua tài khoản dịch vụ Kubernetes và thông tin xác thực bí mật TLS. Cụm trung tâm chạy bộ điều khiển Application, máy chủ API và bộ điều khiển ApplicationSet, liên tục giám sát các kho lưu trữ Git để tìm các thay đổi khai báo. Các cụm đích spoke không yêu cầu cài đặt ArgoCD đầy đủ, thay vào đó hoạt động như các điểm cuối được quản lý nhận các manifest tài nguyên ứng dụng trực tiếp từ cụm trung tâm thông qua các kết nối API an toàn.

Kiến trúc cụm Hub và Spoke

Cụm trung tâm quản lý duy trì một tập hợp các Kubernetes Secret trong không gian tên argocd, trong đó mỗi secret đại diện cho một điểm cuối cụm spoke đích chứa URL API cụm đích, chứng chỉ TLS CA và mã thông báo bearer tài khoản dịch vụ. Khi các nhà phát triển commit các bản cập nhật cấu hình vào Git, bộ điều khiển ArgoCD Application trung tâm sẽ đánh giá các manifest đích và giao tiếp trực tiếp với các điểm cuối API cụm spoke từ xa. Thiết kế tập trung này đơn giản hóa việc quản lý cụm bằng cách loại bỏ chi phí cài đặt, cập nhật và giám sát các phiên bản ArgoCD riêng biệt trong mỗi môi trường đích.

Để đăng ký một cụm spoke từ xa với trung tâm quản lý trung tâm của bạn, bạn sử dụng lệnh CLI argocd cluster add hoặc khai báo trực tiếp một Secret cụm trong Kubernetes:

apiVersion: v1
kind: Secret
metadata:
  name: spoke-cluster-us-east-1
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: cluster
    environment: production
    region: us-east-1
type: Opaque
stringData:
  name: production-us-east-1
  server: https://api.prod-useast1.k8s.example.com:6443
  config: |
    {
      "bearerToken": "eyJhbGciOiJSUzI1NiIs...",
      "tlsClientConfig": {
        "insecure": false,
        "caData": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t..."
      }
    }

Lưu ý cách các nhãn như environment: production và region: us-east-1 được áp dụng trực tiếp vào siêu dữ liệu bí mật của cụm. Các nhãn này cho phép bộ điều khiển ArgoCD ApplicationSet truy vấn các mục tiêu cụm một cách linh hoạt, tự động triển khai các ứng dụng đến các cụm spoke mới tham gia mà không cần cập nhật thủ công các tệp manifest ứng dụng.

                                +---------------------------+
                                | Git Repository            |
                                | (Declarative State)       |
                                +---------------------------+
                                              |
                                              | 1. Watches Commits
                                              v
+-----------------------------------------------------------------------------------+
| Management Hub Cluster (ArgoCD Control Plane)                                    |
| +-------------------------+   +------------------------+   +--------------------+ |
| | Application Controller  |   | ApplicationSet Engine  |   | Cluster Secrets    | |
| +-------------------------+   +------------------------+   +--------------------+ |
+-----------------------------------------------------------------------------------+
       | 2. Reconciles Spoke A         | 3. Reconciles Spoke B        | 4. Reconciles Spoke C
       v                               v                              v
+--------------------+       +--------------------+        +--------------------+
| Spoke Cluster A    |       | Spoke Cluster B    |        | Spoke Cluster C    |
| (Dev / US-East)    |       | (Prod / US-East)   |        | (Prod / EU-West)   |
+--------------------+       +--------------------+        +--------------------+
Advertisement

Bộ điều khiển ApplicationSet tự động hóa việc triển khai đa cụm như thế nào?

Bộ điều khiển ApplicationSet tự động hóa việc triển khai đa cụm bằng cách tạo nhiều tài nguyên tùy chỉnh ArgoCD Application một cách linh hoạt bằng cách sử dụng các thuật toán tạo khai báo như Cluster, List, Git và Matrix generators. Thay vì viết và duy trì thủ công các manifest YAML Application riêng biệt cho mỗi cụm đích, một tài nguyên ApplicationSet duy nhất giám sát các bí mật cụm hoặc cây thư mục Git và tự động tạo, cập nhật hoặc cắt tỉa các ứng dụng con khi cơ sở hạ tầng của bạn mở rộng.

Bộ điều khiển ApplicationSet và các trình tạo cụm

Trình tạo Cluster đánh giá tất cả các Secret cụm được đăng ký trong không gian tên argocd khớp với các bộ chọn nhãn cụ thể. Đối với mỗi cụm khớp, trình tạo điền các tham số mẫu như {{name}}, {{server}} và các giá trị siêu dữ liệu nhãn vào khối template của đặc tả ApplicationSet. Nếu một bí mật cụm spoke mới được đăng ký, bộ điều khiển sẽ phát hiện sự kiện và cung cấp một đối tượng Application tương ứng nhắm mục tiêu đến cụm mới trong vòng vài giây.

Hãy để tôi chỉ cho bạn một manifest ApplicationSet hoàn chỉnh, sẵn sàng sản xuất sử dụng trình tạo Cluster kết hợp với các lớp phủ Kustomize:

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: payment-service-multi-cluster
  namespace: argocd
spec:
  generators:
    - clusters:
        selector:
          matchLabels:
            environment: production
  template:
    metadata:
      name: 'payment-service-{{name}}'
    spec:
      project: default
      source:
        repoURL: 'https://github.com/company-org/payment-service-gitops.git'
        targetRevision: HEAD
        path: 'overlays/{{metadata.labels.region}}'
      destination:
        server: '{{server}}'
        namespace: payment-system
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
        syncOptions:
          - CreateNamespace=true

Trong manifest sản xuất này, trình tạo lọc các cụm đã đăng ký để khớp với environment: production. Đối với mỗi cụm khớp, nó tính toán đường dẫn kho lưu trữ Git một cách linh hoạt là overlays/{{metadata.labels.region}} và đặt đích triển khai thành {{server}}. Mẫu này đảm bảo rằng một cụm được gắn thẻ region: us-east-1 tự động kéo cấu hình lớp phủ Kustomize của nó từ overlays/us-east-1 mà không cần viết các vòng lặp tập lệnh CI/CD tùy chỉnh.

Khi kết hợp nhiều chiến lược lựa chọn, trình tạo Matrix cho phép bạn tham chiếu chéo nhiều trình tạo con, chẳng hạn như ghép nối trình tạo Cluster với trình tạo thư mục Git. Sự kết hợp ma trận này cho phép bạn triển khai hàng chục microservice riêng biệt trên năm mươi cụm đích đồng thời bằng cách sử dụng một định nghĩa ApplicationSet hợp nhất duy nhất.

Bạn kiểm soát thứ tự triển khai và trình tự bằng cách sử dụng Sync Waves như thế nào?

Bạn kiểm soát thứ tự triển khai và trình tự bằng cách sử dụng Sync Waves bằng cách thêm chú thích argocd.argoproj.io/sync-wave vào các manifest Kubernetes để chỉ định thứ tự chính xác mà các tài nguyên được tạo, cập nhật hoặc xác thực. Theo mặc định, ArgoCD áp dụng tất cả các tài nguyên trong một ứng dụng đồng thời, điều này có thể gây ra lỗi triển khai nếu các pod ứng dụng khởi động trước khi quá trình di chuyển cơ sở dữ liệu hoàn tất hoặc các Định nghĩa tài nguyên tùy chỉnh (CRD) được đăng ký. Sync Waves tổ chức các tài nguyên thành các giai đoạn thực thi có thứ tự, từ các giá trị số nguyên âm đến dương.

Sync Waves và các Hook giai đoạn triển khai

ArgoCD đánh giá các sóng đồng bộ theo thứ tự số tăng dần bắt đầu bằng số sóng thấp nhất (ví dụ: sóng -5). Bộ điều khiển áp dụng tất cả các tài nguyên thuộc sóng hiện tại, đợi cho đến khi mọi tài nguyên trong sóng đó đạt trạng thái khỏe mạnh, và chỉ sau đó mới tiếp tục đánh giá các tài nguyên thuộc sóng cao hơn tiếp theo (ví dụ: sóng 0). Nếu một tài nguyên trong sóng -2 không vượt qua kiểm tra sức khỏe hoặc đi vào vòng lặp sự cố, hoạt động đồng bộ hóa sẽ dừng ngay lập tức, ngăn chặn các bước triển khai tiếp theo thực thi.

Dưới đây là một ví dụ về việc áp dụng các chú thích sóng đồng bộ để sắp xếp các công việc di chuyển cơ sở dữ liệu trước khi triển khai:

# Step 1: Database Migration Job (Sync Wave -2)
apiVersion: batch/v1
kind: Job
metadata:
  name: schema-migration-v2
  namespace: production
  annotations:
    argocd.argoproj.io/sync-wave: "-2"
    argocd.argoproj.io/hook: Sync
    argocd.argoproj.io/hook-delete-policy: HookSucceeded
spec:
  template:
    spec:
      containers:
        - name: migrate
          image: ghcr.io/company-org/db-migrator:v2.1.0
restartPolicy: Never
---
# Step 2: Main Application Deployment (Sync Wave 0)
apiVersion: apps/v1
kind: Deployment
metadata:
  name: payment-api
  namespace: production
  annotations:
    argocd.argoproj.io/sync-wave: "0"
spec:
  replicas: 5
  template:
    spec:
      containers:
        - name: api
          image: ghcr.io/company-org/payment-api:v2.1.0

Kết hợp Sync Waves với ArgoCD Resource Hooks (PreSync, Sync, PostSync và SyncFail) mang lại cho các kỹ sư hệ thống toàn quyền kiểm soát các sự kiện vòng đời triển khai. Chú thích một công việc di chuyển cơ sở dữ liệu với argocd.argoproj.io/hook: Sync khiến ArgoCD thực thi công việc trong giai đoạn đồng bộ hóa, trong khi argocd.argoproj.io/hook-delete-policy: HookSucceeded tự động dọn dẹp các tài nguyên pod di chuyển đã hoàn thành sau khi thực thi thành công.

Đối với các triển khai đa cụm phức tạp trên môi trường staging và production, hãy kết hợp Sync Waves với các công cụ phân phối lũy tiến như Argo Rollouts. Argo Rollouts mở rộng khả năng triển khai với các chiến lược canary và blue-green, cho phép bạn định tuyến năm phần trăm lưu lượng truy cập production trực tiếp đến các pod cụm spoke mới được triển khai trong khi tự động phân tích các số liệu tỷ lệ lỗi Prometheus trước khi hoàn thành việc quảng bá trên toàn cụm.

Bạn quản lý cấu hình dành riêng cho môi trường bằng Kustomize và Helm Overlays như thế nào?

Bạn quản lý các cấu hình dành riêng cho môi trường bằng cách cấu trúc kho lưu trữ Git của mình thành một thư mục manifest cơ sở chứa các định nghĩa tài nguyên chung, kết hợp với các thư mục lớp phủ môi trường bằng cách sử dụng các tệp giá trị Kustomize hoặc Helm. Việc duy trì sự tách biệt rõ ràng giữa các mẫu cơ sở hạ tầng và các tham số dành riêng cho môi trường đảm bảo rằng các đặc tả ứng dụng cốt lõi vẫn DRY (Don't Repeat Yourself) trong khi cho phép các cụm spoke riêng lẻ ghi đè số lượng bản sao, miền ingress và giới hạn tài nguyên.

Kustomize và Helm Environment Overlays

Khi sử dụng cấu trúc lớp phủ Kustomize, thư mục base/ định nghĩa các manifest Deployment, Service và ConfigMap chung được chia sẻ trên tất cả các cụm. Mỗi thư mục lớp phủ môi trường (ví dụ: overlays/staging, overlays/prod-us-east, overlays/prod-eu-west) chứa một tệp kustomization.yaml nhập cơ sở chung và áp dụng các sửa đổi vá lỗi như điều chỉnh hạn ngạch tài nguyên, số lượng bản sao hoặc biến môi trường tùy chỉnh.

Dưới đây là cấu trúc thư mục kho lưu trữ Git điển hình cho việc triển khai Kustomize đa cụm trong môi trường sản xuất:

payment-service-gitops/
├── base/
│   ├── deployment.yaml
│   ├── service.yaml
│   └── kustomization.yaml
└── overlays/
    ├── dev/
    │   ├── replica_patch.yaml
    │   └── kustomization.yaml
    ├── prod-us-east-1/
    │   ├── configmap_patch.yaml
    │   ├── ingress_patch.yaml
    │   └── kustomization.yaml
    └── prod-eu-west-1/
        ├── configmap_patch.yaml
        └── kustomization.yaml

Kiểm tra nội dung kustomization.yaml cho một mục tiêu lớp phủ sản xuất:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
metadata:
  name: prod-us-east-1-overlay

resources:
  - ../../base

patchesStrategicMerge:
  - replica_patch.yaml

configMapGenerator:
  - name: app-config
    behavior: merge
    literals:
      - REGION=us-east-1
      - LOG_LEVEL=warn
      - DB_MAX_CONNECTIONS=100

Nếu tổ chức của bạn ưa thích đóng gói biểu đồ Helm hơn Kustomize, ArgoCD hỗ trợ nguyên bản việc truyền các tệp giá trị Helm tùy chỉnh hoặc ghi đè các giá trị tham số riêng lẻ trực tiếp trong đặc tả Application. Sử dụng mảng valueFiles bên trong các mẫu Application của bạn cho phép bạn xâu chuỗi nhiều tệp giá trị lại với nhau, áp dụng một đường cơ sở values-prod.yaml được chia sẻ theo sau là một tệp ghi đè values-us-east-1.yaml dành riêng cho cụm.

Advertisement

Bạn thực thi cách ly và bảo mật đa người thuê thông qua kiểm soát AppProject như thế nào?

Bạn thực thi cách ly và bảo mật đa người thuê bằng cách định nghĩa các tài nguyên tùy chỉnh ArgoCD AppProject để hạn chế các kho lưu trữ Git nguồn, đích cụm mục tiêu, ranh giới không gian tên và các loại tài nguyên Kubernetes được phép truy cập bởi các nhóm kỹ thuật cụ thể. Theo mặc định, các ứng dụng ArgoCD thuộc về dự án default, cấp quyền truy cập không hạn chế để triển khai bất kỳ loại tài nguyên nào vào bất kỳ cụm mục tiêu được kết nối nào. Việc tạo các manifest AppProject chuyên dụng thiết lập các ranh giới RBAC nghiêm ngặt giữa các nhóm người thuê.

Bảo mật RBAC đa người thuê của AppProject

Một tài nguyên AppProject hoạt động như một ranh giới bảo mật logic bao gồm một nhóm các ứng dụng liên quan. Đặc tả định nghĩa các mảng danh sách trắng rõ ràng cho sourceRepos (kho lưu trữ Git nào có thể cung cấp manifest), destinations (máy chủ API cụm và không gian tên nào có thể chấp nhận triển khai) và clusterResourceWhitelist (tài nguyên phạm vi cụm nào như Namespaces hoặc CRD có thể được quản lý).

Dưới đây là một manifest AppProject sản xuất cô lập một nhóm kỹ thuật người thuê:

apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: checkout-team-project
  namespace: argocd
spec:
  description: "Isolated project boundary for Checkout service team"
  sourceRepos:
    - 'https://github.com/company-org/checkout-*.git'
  destinations:
    - server: 'https://api.prod-useast1.k8s.example.com:6443'
      namespace: checkout-production
    - server: 'https://api.staging.k8s.example.com:6443'
      namespace: checkout-staging
  clusterResourceWhitelist:
    - group: ''
      kind: Namespace
  namespaceResourceBlacklist:
    - group: ''
      kind: ResourceQuota
  roles:
    - name: developer
      description: "Developer read-only and sync access"
      policies:
        - p, proj:checkout-team-project:developer, applications, get, checkout-team-project/*, allow
        - p, proj:checkout-team-project:developer, applications, sync, checkout-team-project/*, allow
      groups:
        - "github-org:checkout-developers"

Trong đặc tả bảo mật này, các nhà phát triển thuộc nhóm tổ chức GitHub checkout-developers chỉ có thể kích hoạt các hoạt động đồng bộ hóa đối với các ứng dụng được gán cho checkout-team-project. Hơn nữa, các ứng dụng trong dự án này bị cấm nghiêm ngặt ghi vào các không gian tên khác ngoài checkout-production hoặc checkout-staging, bảo vệ các khối lượng công việc người thuê liền kề đang chạy trên các cụm spoke được chia sẻ khỏi các sửa đổi xuyên không gian tên trái phép.

Để ngăn chặn các cấu hình độc hại sửa đổi cài đặt bảo mật cấp cụm, hãy sử dụng khối namespaceResourceBlacklist để hạn chế các loại tài nguyên Kubernetes nhạy cảm. Việc đưa vào danh sách đen các tài nguyên như ResourceQuota, LimitRange hoặc ClusterRoleBinding ngăn các nhóm người thuê sửa đổi các chính sách bảo mật cụm hoặc vượt quá giới hạn tài nguyên được phân bổ.

Bạn giám sát tình trạng và số liệu đồng bộ hóa đa cụm như thế nào?

Bạn giám sát tình trạng đồng bộ hóa đa cụm bằng cách thu thập các số liệu Prometheus được xuất bởi Bộ điều khiển ứng dụng ArgoCD, cấu hình bảng điều khiển Grafana và gửi cảnh báo Slack hoặc PagerDuty tự động bằng cách sử dụng Thông báo ArgoCD. Việc tập trung giám sát từ xa trên tất cả các cụm spoke đảm bảo các kỹ sư nền tảng phát hiện lỗi đồng bộ hóa, sai lệch cấu hình không đồng bộ và mất kết nối API ngay lập tức.

ArgoCD xuất các số liệu Prometheus mở rộng trên cổng 8082 của triển khai bộ điều khiển ứng dụng. Các số liệu như argocd_app_info ghi lại trạng thái đồng bộ hóa hoạt động, trạng thái sức khỏe và đích cụm mục tiêu cho mọi ứng dụng được quản lý, trong khi argocd_app_reconcile_count theo dõi hiệu suất đối chiếu bộ điều khiển trên các điểm cuối cụm spoke từ xa.

Dưới đây là các truy vấn PromQL chính để giám sát tình trạng ArgoCD đa cụm trong sản xuất:

# 1. Count of Applications currently Out of Sync across all spoke clusters
sum(argocd_app_info{sync_status!="Synced"}) by (dest_server, name)

# 2. Count of Applications in Degraded Health state
sum(argocd_app_info{health_status="Degraded"}) by (dest_server, name)

# 3. Average reconciliation latency for spoke cluster API calls (seconds)
rate(argocd_app_reconcile_bucket{le="10"}[5m]) / rate(argocd_app_reconcile_count[5m])

Triển khai bộ điều khiển ArgoCD Notifications cho phép bạn kích hoạt cảnh báo tự động dựa trên các sự kiện vòng đời ứng dụng theo thời gian thực. Bằng cách chú thích các manifest Application hoặc ApplicationSet với recipients: slack:devops-alerts, ArgoCD sẽ gửi thông báo Slack ngay lập tức chứa siêu dữ liệu commit git, liên kết diff và nhật ký lỗi bất cứ khi nào một hoạt động đồng bộ hóa thất bại trên một cụm spoke từ xa.

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: payment-service-prod
  annotations:
    notifications.argoproj.io/subscribe.on-sync-failed.slack: devops-alerts
    notifications.argoproj.io/subscribe.on-health-degraded.slack: devops-alerts

Việc tích hợp cảnh báo chủ động với trực quan hóa bảng điều khiển Grafana đảm bảo độ tin cậy hoạt động cao trên các triển khai GitOps đa cụm. Các nhóm nền tảng có thể xác định các đỉnh độ trễ mạng kết nối với các khu vực đám mây từ xa, giải quyết thời gian chờ xác thực git và giải quyết các hook đồng bộ hóa bị lỗi trước khi hiệu suất ứng dụng ảnh hưởng đến trải nghiệm người dùng cuối.

Các câu hỏi thường gặp về triển khai đa cụm ArgoCD là gì?

ArgoCD xác thực với các cụm spoke từ xa một cách an toàn như thế nào?

ArgoCD xác thực với các cụm spoke từ xa bằng cách sử dụng mã thông báo bearer của Tài khoản dịch vụ Kubernetes hoặc chứng chỉ máy khách X.509 được lưu trữ an toàn bên trong Kubernetes Secrets trên cụm trung tâm quản lý. Khi đăng ký một cụm spoke bằng cách sử dụng argocd cluster add, máy khách CLI sẽ tạo một ServiceAccount argocd-manager chuyên dụng bên trong không gian tên kube-system của cụm spoke, tạo một mã thông báo bearer API có thời gian tồn tại dài và lưu thông tin xác thực cụm đích dưới dạng một Secret được mã hóa trên cụm trung tâm.

Điều gì xảy ra với các khối lượng công việc đang chạy trên các cụm spoke nếu cụm trung tâm ArgoCD bị lỗi?

Nếu cụm trung tâm ArgoCD bị lỗi hoặc mất kết nối mạng, các khối lượng công việc ứng dụng đang chạy trên các cụm spoke vẫn tiếp tục chạy hoàn toàn không bị ảnh hưởng. ArgoCD hoạt động như một công cụ đối chiếu không đồng bộ chứ không phải là một proxy thời gian chạy nội tuyến. Các pod, dịch vụ và quy tắc ingress của cụm spoke vẫn hoạt động đầy đủ. Khi cụm trung tâm phục hồi, ArgoCD tiếp tục giám sát các kho lưu trữ Git và đối chiếu mọi thay đổi trạng thái xảy ra trong thời gian ngừng hoạt động.

Bạn xử lý việc quản lý bí mật một cách an toàn trong các quy trình làm việc GitOps đa cụm như thế nào?

Bạn xử lý việc quản lý bí mật một cách an toàn bằng cách sử dụng các công cụ mã hóa bí mật như Bitnami Sealed Secrets, Mozilla SOPS, hoặc các toán tử bí mật bên ngoài như External Secrets Operator (ESO) kết hợp với AWS Secrets Manager hoặc HashiCorp Vault. Không bao giờ commit các giá trị bí mật văn bản thuần túy vào kho lưu trữ Git. Với External Secrets Operator, bạn commit các manifest ExternalSecret khai báo vào Git, và ESO chạy trên mỗi cụm spoke sẽ lấy các payload bí mật thô trực tiếp từ Vault hoặc AWS Secrets Manager tại thời gian chạy.

Sự khác biệt giữa cắt tỉa tự động và tự phục hồi trong các chính sách đồng bộ hóa ArgoCD là gì?

Cắt tỉa tự động (prune: true) hướng dẫn ArgoCD tự động xóa các tài nguyên Kubernetes khỏi các cụm spoke khi các tệp manifest tương ứng của chúng bị xóa khỏi kho lưu trữ Git. Tự phục hồi (selfHeal: true) hướng dẫn ArgoCD tự động ghi đè hoặc hoàn nguyên các thay đổi thủ công được thực hiện trực tiếp đối với các tài nguyên cụm spoke thông qua kubectl, buộc trạng thái cụm trở lại phù hợp với nguồn sự thật khai báo trong Git.

Bạn nên chạy một ApplicationSet lớn duy nhất hay nhiều ApplicationSet nhỏ hơn?

Bạn nên chạy nhiều ApplicationSet nhỏ hơn được nhóm hợp lý theo miền ứng dụng, tầng dịch vụ hoặc trách nhiệm của nhóm kỹ thuật thay vì quản lý tất cả các khối lượng công việc của tổ chức trong một manifest ApplicationSet khổng lồ duy nhất. Việc chia ApplicationSet làm giảm phạm vi ảnh hưởng trong quá trình thay đổi cấu hình, đơn giản hóa việc khắc phục sự cố và cho phép các nhóm khác nhau cấu hình các chính sách đồng bộ hóa, nhãn chọn cụm và quyền RBAC riêng biệt.

Bạn ngăn ArgoCD làm quá tải các máy chủ API cụm spoke từ xa trong quá trình đồng bộ hóa hàng loạt như thế nào?

Bạn ngăn chặn quá tải máy chủ API bằng cách điều chỉnh các cờ --app-resync-period và --status-processors trên Bộ điều khiển ứng dụng ArgoCD, và bằng cách cấu hình cài đặt syncOptions: Limit=1 hoặc maxConcurrency bên trong các trình tạo đặc tả ApplicationSet. Tăng khoảng thời gian đồng bộ hóa lại từ mặc định 3 phút lên 10-15 phút làm giảm tải truy vấn đọc liên tục trên các máy chủ API spoke từ xa trong khi vẫn duy trì tần suất đối chiếu đáng tin cậy.

Mẫu khởi động App-of-Apps là gì và nó so sánh với ApplicationSets như thế nào?

Mẫu App-of-Apps là một mẫu khởi động khai báo trong đó một Application ArgoCD master duy nhất trỏ đến một thư mục kho lưu trữ Git chứa các manifest YAML cho nhiều tài nguyên Application con. Mặc dù mẫu App-of-Apps hoạt động tốt cho các cấu trúc liên kết cụm tĩnh, ApplicationSets cung cấp các khả năng vượt trội cho các môi trường đa cụm động vì ApplicationSets sử dụng các trình tạo chương trình để khám phá các điểm cuối cụm một cách linh hoạt dựa trên nhãn bí mật và cấu trúc nhánh Git.

Bạn cũng có thể thích

Share this article:

Stay Updated

Get the latest posts delivered straight to your inbox.

Free Developer Utilities

Free In-Browser Developer Tools

Clean AI CLI logs, build cron expressions, decode JWTs, and calculate chmod permissions offline.

Explore Tools
Advertisement