הגדרת ArgoCD ApplicationSet לפריסה מרובת אשכולות

ניהול פריסות על פני מספר אשכולות Kubernetes באופן ידני פירושו מאות עותקים של קבצי manifest, כאשר שגיאה אחת מובילה לסטייה בכל הסביבות. אנו מגדירים ArgoCD ApplicationSet כדי לייצר אוטומטית Applications מתבנית, ובכך מבטלים כפילויות ועריכות ידניות. הצוות שלנו מספק את הפרויקט במפתח מלא—מהסקר ועד היישום והתמיכה השוטפת—ומבטיח פתרון אמין וניתן להרחבה.

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

ניהול פריסות על פני מספר אשכולות Kubernetes ידנית פירושו מאות עותקים של קבצי מניפסט. טעות אחת מסנכרנת הכל בצורה שגויה. אנו משתמשים ב-ApplicationSet — בקר ArgoCD שמייצר Applications מתבנית על ידי החלפת פרמטרים מגנרטורים. תוצאה: אוטומציה ללא כפילות.

כיצד ArgoCD ApplicationSet פותר פריסה מרובת אשכולות

יצירה ידנית של 100 מניפסטים של Application עבור 5 אשכולות עם 20 אפליקציות בכל אחד היא מאות שורות קוד שדורשות סנכרון ידני. ApplicationSet מפחית את נפח המניפסטים פי 10: תבנית אחת במקום מאה. בנוסף, יצירה אוטומטית עבור אשכולות ואפליקציות חדשים — ללא מאמץ נוסף. הפחתת שגיאות ב-95% — הוכח על 20+ פרויקטים.

מדוע ApplicationSet עדיף על הגישה הידנית

ללא ApplicationSet, כל שינוי במדיניות סנכרון דורש 100 עריכות. עם ApplicationSet — עריכה אחת בתבנית. עבור סביבות דינמיות, כמו סביבות תצוגה מקדימה לכל Pull Request, ApplicationSet יוצר ומוחק Applications בצורה הצהרתית: PR נפתח — Application מופיע, PR נסגר — נעלם. ללא סקריפטים ידניים של CI. זה מפחית את זמן ניהול הסביבה ב-90%.

כיצד פועל Pull Request Generator — הגדרת ArgoCD ApplicationSet

לסביבות תצוגה מקדימה:

---
generators:
  - pullRequest:
      github:
        owner: my-org
        repo: my-app
        appSecretName: github-token
      filters:
        - branchMatch: "feature-.*"
          requeueAfterSeconds: 30
      template:
        metadata:
          name: 'preview-{{.branch}}-{{.number}}'
        spec:
          source:
            repoURL: https://github.com/org/gitops-config
            targetRevision: HEAD
            path: apps/myapp/overlays/preview
            helm:
              parameters:
                - name: image.tag
                  value: 'pr-{{.number}}'
                - name: ingress.host
                  value: 'pr-{{.number}}.preview.example.com'
          destination:
            server: https://kubernetes.default.svc
            namespace: 'preview-{{.number}}'
          syncPolicy:
            automated:
              prune: true
            syncOptions:
              - CreateNamespace=true

Pull Request Generator מאיץ את יצירת סביבת התצוגה המקדימה פי 5 בהשוואה ליצירה ידנית. כאשר ה-PR נסגר, ה-Application נמחק אוטומטית. לשילוב עם GitHub, יש להגדיר webhook וטוקן עם גישה לריפוזיטורי. ArgoCD מעדכן אוטומטית את המצב כאשר ה-PR משתנה.

הרחבת פריסה עם ApplicationSet

Cluster Generator

הגנרטור הנפוץ ביותר. יוצר Application עבור כל אשכול הרשום ב-ArgoCD, עם סינון לפי תוויות:

---
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: guestbook
  namespace: argocd
spec:
  goTemplate: true
  generators:
    - clusters:
        selector:
          matchLabels:
            environment: production
  template:
    metadata:
      name: '{{.name}}-guestbook'
    spec:
      project: default
      source:
        repoURL: https://github.com/org/gitops-config
        targetRevision: main
        path: 'apps/guestbook/overlays/{{.metadata.labels.region}}'
      destination:
        server: '{{.server}}'
        namespace: guestbook
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
---

תוויות אשכול (generators: - pullRequest: github: owner: my-org repo: my-app appSecretName: github-token filters: - branchMatch: "feature-.*" requeueAfterSeconds: 30 template: metadata: name: 'preview-{{.branch}}-{{.number}}' spec: source: repoURL: https://github.com/org/gitops-config targetRevision: HEAD path: apps/myapp/overlays/preview helm: parameters: - name: image.tag value: 'pr-{{.number}}' - name: ingress.host value: 'pr-{{.number}}.preview.example.com' destination: server: https://kubernetes.default.svc namespace: 'preview-{{.number}}' syncPolicy: automated: prune: true syncOptions: - CreateNamespace=true , apiVersion: argoproj.io/v1alpha1 kind: ApplicationSet metadata: name: guestbook namespace: argocd spec: goTemplate: true generators: - clusters: selector: matchLabels: environment: production template: metadata: name: '{{.name}}-guestbook' spec: project: default source: repoURL: https://github.com/org/gitops-config targetRevision: main path: 'apps/guestbook/overlays/{{.metadata.labels.region}}' destination: server: '{{.server}}' namespace: guestbook syncPolicy: automated: prune: true selfHeal: true ) מאפשרות סינון וגם החלפה בנתיב — overlays שונים לאזורים שונים. החיסכון בזמן מכתיבת 20 מניפסטים ברור. בפרויקט אחד, השתמשנו ב-Cluster Generator עבור 8 אשכולות עם אזורים וסביבות שונים, והפחתנו את זמן הפריסה משעתיים ל-15 דקות — האצה פי 8.

Git Generator (Directory)

מייצר Application עבור כל תיקייה בריפוזיטורי — נוח לעלייה של אפליקציות חדשות. צור תיקייה environment: production — ArgoCD פורס אותה אוטומטית:

generators: - git: repoURL: https://github.com/org/gitops-config revision: main directories: - path: apps/*/overlays/prod - path: apps/legacy/* exclude: true 

Matrix Generator

מכפיל שני גנרטורים — למשל, אפליקציות ואשכולות. תוצאה: Application עבור כל אפליקציה על כל אשכול ייצור:

---
generators:
  - matrix:
      generators:
        - git:
            repoURL: https://github.com/org/gitops-config
            revision: main
            directories:
              - path: apps/*
        - clusters:
            selector:
              matchLabels:
                tier: production
פרמטר גישה ידנית ApplicationSet
נפח מניפסטים 100+ קבצים תבנית אחת
זמן להוספת אשכול שעות דקות
ניהול סטייה (Drift) ידני אוטומטי עם selfHeal
הסתברות לשגיאות גבוהה נמוכה

השוואת גנרטורים

גנרטור תרחיש מורכבות מתי להשתמש
Cluster פריסה מרובת אשכולות נמוכה כאשר אשכולות דומים אך שונים בתוויות
Git (Directory) עליית אפליקציות בינונית כאשר אפליקציות מתווספות דרך git
Matrix שילוב של אפליקציות × אשכולות גבוהה למטריצות סביבה מורכבות
Pull Request סביבות תצוגה מקדימה בינונית לסביבות דינמיות המבוססות על PRs

ניהול סטייה בפריסה מרובת אשכולות

בפריסה מרובת אשכולות, הסדר חשוב: קודם dev, אחר כך staging, ולבסוף production. ApplicationSet עצמו אינו מנהל סדר — לשם כך יש צורך ב-Progressive Sync (באמצעות Argo Rollouts + ApplicationSet) או הפרדה ידנית למספר ApplicationSets עם תלותים דרך SyncWave בתבנית App of Apps. בפועל, אנו משלבים את שתי הגישות: ApplicationSet לאפליקציות דומות, App of Apps לתלותים רגישים. שימוש ב-Argo Rollouts מפחית את זמן זיהוי השגיאות ב-70%.

טעויות נפוצות בהגדרת ApplicationSet

  • חסר region: eu — ApplicationSet דורס הערות (annotations) שנוצרו ידנית על ה-Application. כדי לשמר הערות מותאמות אישית, ציין:

    spec: preservedFields: annotations: - custom-annotation/key 

    בעיית goTemplate לעומת fastTemplate: בגרסאות ישנות של ApplicationSet, apps/new-service/ היה בשימוש. ב-ArgoCD 2.5+ עם generators: - git: repoURL: https://github.com/org/gitops-config revision: main directories: - path: apps/*/overlays/prod - path: apps/legacy/* exclude: true — תבנית Go סטנדרטית generators: - matrix: generators: - git: repoURL: https://github.com/org/gitops-config revision: main directories: - path: apps/* - clusters: selector: matchLabels: tier: production . לא ניתן לערבב ביניהם. בדוק את גרסת ArgoCD שלך לפני מעבר.

    RBAC לא מוגדר לגנרטורים: Pull Request Generator דורש טוקן GitHub עם גישה לריפוזיטורי. Cluster Generator דורש הרשאות קריאה לסודות אשכול. ללא זה, הגנרטורים לא יעבדו.

    מה כלול בהגדרת ApplicationSet

    אנו מציעים הגדרת ApplicationSet סוהר תוך 3–5 ימים. העבודה כוללת:

    1. ביקורת תשתית — הערכת אשכולות, ריפוזיטוריות ו-CI/CD קיימים.
    2. עיצוב תבניות — בחירת גנרטורים, כתיבת תבניות לאפליקציות.
    3. יישום — יצירת מניפסטים של ApplicationSet, הגדרת RBAC, יצירת תיעוד.
    4. בדיקות — פריסה ל-dev/staging, בדיקות תקינות, בדיקות אוטומטיות.
    5. תיעוד והדרכה — העברת ידע לצוות, מענה על שאלות.

    עם סיום, תקבל תבנית אחת לכל הסביבות, יצירה אוטומטית של Application בעת הוספת אשכול או אפליקציה, והבטחה לפעולה יציבה — אנו תומכים בפתרון למשך חודש לאחר המסירה. מהנדסי Kubernetes מוסמכים (ArgoCD Certified) מבטיחים אמינות.

    איך להתחיל?

    צור קשר להערכה חינמית של הפרויקט שלך. תוך 1–2 ימים נכין תוכנית מעבר ל-ApplicationSet תוך התחשבות באשכולות ובריפוזיטוריות שלך. התמחור אישי, בהתאם למורכבות ולמספר האשכולות. כבר אוטמטנו פריסה ל-20+ פרויקטים — אנחנו יכולים לעזור גם לך. בקש ייעוץ לדיון בפרטים. קבל הצעה מותאמת לתשתית שלך.

    לפרטים נוספים על יכולות ApplicationSet, ראה תיעוד ApplicationSet.