תארו לעצמכם: הצוות שלכם כבר משתמש ב-Kubernetes, אבל משאבי ענן—RDS, S3, תורים—עדיין נוצרים דרך Terraform, סקריפטים או קונסולת הענן. כל שירות חדש דורש PR נפרד, אישור והרצת plan/apply. מצב ה-Terraform חי ב-S3, ושינויים מקבילים גורמים להתנגשויות ושגיאות. אנחנו מכירים את הכאב הזה: בפרויקט אחד עם ארכיטקטורת מיקרוסרוויסים (>50 שירותים), הקצאת מסד נתונים ארכה יומיים עד שלושה. הפתרון הוא Crossplane, אופרטור Kubernetes שהופך את הקלאסטר שלכם למישור בקרה יחיד. כעת מפתחים מתארים מסד נתונים כ-Custom Resource ב-namespace שלהם, בעוד שצוות התשתית מנהל הפשטות ומדיניות דרך GitOps. התקנת Crossplane בקלאסטר אורכת 15 דקות ומעניקה לכם גישה לניהול משאבי ענן דרך Kubernetes.
"Crossplane מרחיב את ה-API של Kubernetes לניהול משאבים חיצוניים" — תיעוד Crossplane
במה Crossplane שונה מ-Terraform?
Terraform הוא כלי אימפרטיבי עם תחביר דקלרטיבי. הוא רץ, משווה את התוכנית למצב, מחיל שינויים ויוצא. המצב מאוחסן חיצונית (S3, Terraform Cloud). ריצות מקבילות נעולות באמצעות state locking. אם הוא קורס באמצע, המצב עלול להישאר שונה חלקית.
Crossplane רץ כקונטרולר Kubernetes: לולאת reconciliation מנטרת ברציפות את המצב הרצוי והמצב בפועל. אם מישהו מוחק מופע RDS בקונסולת AWS, Crossplane יוצר אותו מחדש. זיהוי סטייה מובנה בזכות ה-reconciliation של Kubernetes. המצב חי ישירות ב-etcd כ-Custom Resources.
| קריטריון | Terraform | Crossplane |
|---|---|---|
| מצב | חיצוני (S3 וכו') | etcd (Kubernetes) |
| ניהול | ביצוע מבוסס טריגר | reconciliation רציף |
| זיהוי סטייה | plan ידני | אוטומטי |
| אינטגרציית GitOps | דרך Atlantis/CI | טבעי (CRD) |
| התאמה | זרימות עבודה מורכבות מרובות שלבים | אקוסיסטם Kubernetes |
זה לא אומר ש-Crossplane עדיף על Terraform בכל דבר. Terraform בוגר יותר, יש לו אקוסיסטם ספקים עשיר יותר (1000+) והוא טוב יותר לזרימות הקצאה מורכבות מרובות שלבים. Crossplane הוא הבחירה הנכונה כשכבר יש לכם Kubernetes ואתם רוצים מישור בקרה יחיד להכל.
איך Crossplane עובד עם GitOps?
Managed Resources, XRDs, Compositions, ProviderConfigs—כל אלה הם משאבי Kubernetes שחיים במאגר GitOps. ArgoCD מסנכרן אותם כמו כל manifest אחר. מסד נתונים חדש פירושו PR למאגר התצורה שמוסיף Claim. מבנה מאגר לדוגמה:
gitops-config/
└── infrastructure/
└── crossplane/
├── providers/
│ ├── provider-aws-rds.yaml
│ └── provider-aws-s3.yaml
├── compositions/
│ └── postgresql-instance.yaml
└── xrds/
└── postgresql-instance-xrd.yaml
ארכיטקטורת Crossplane
Provider — תוסף שמיישם ניהול לענן ספציפי. לדוגמה, התקנת Provider AWS RDS נעשית עם gitops-config/ └── infrastructure/ └── crossplane/ ├── providers/ │ ├── provider-aws-rds.yaml │ └── provider-aws-s3.yaml ├── compositions/ │ └── postgresql-instance.yaml └── xrds/ └── postgresql-instance-xrd.yaml . ProviderConfig מאחסן אישורי ענן. Managed Resource הוא משאב ענן ספציפי, למשל מופע RDS:
---
apiVersion: rds.aws.upbound.io/v1beta1
kind: Instance
metadata:
name: myapp-postgres
annotations:
crossplane.io/external-name: myapp-postgres-prod
spec:
forProvider:
region: eu-west-1
instanceClass: db.t3.medium
engine: postgres
engineVersion: "15.4"
dbName: myapp
username: myapp
passwordSecretRef:
namespace: myapp-prod
name: db-password
key: password
allocatedStorage: 50
storageType: gp3
multiAz: true
backupRetentionPeriod: 7
skipFinalSnapshot: false
finalSnapshotIdentifierPrefix: myapp-postgres-final
vpcSecurityGroupIdSelector:
matchLabels:
app: myapp
writeConnectionSecretToRef:
namespace: myapp-prod
name: myapp-db-conn
kubectl apply הוא תכונה מרכזית: Crossplane יוצר אוטומטית Kubernetes Secret עם פרטי חיבור (endpoint, port, username, password). האפליקציה קוראת מה-Secret—ללא העתקה ידנית של אישורים.
משאבים מרוכבים (XR) ו-Claims
משאבים מנוהלים גולמיים הם הפשטה ברמה נמוכה. מפתחים לא צריכים לדעת על apiVersion: rds.aws.upbound.io/v1beta1 kind: Instance metadata: name: myapp-postgres annotations: crossplane.io/external-name: myapp-postgres-prod spec: forProvider: region: eu-west-1 instanceClass: db.t3.medium engine: postgres engineVersion: "15.4" dbName: myapp username: myapp passwordSecretRef: namespace: myapp-prod name: db-password key: password allocatedStorage: 50 storageType: gp3 multiAz: true backupRetentionPeriod: 7 skipFinalSnapshot: false finalSnapshotIdentifierPrefix: myapp-postgres-final vpcSecurityGroupIdSelector: matchLabels: app: myapp writeConnectionSecretToRef: namespace: myapp-prod name: myapp-db-conn או writeConnectionSecretToRef. Crossplane פותר זאת דרך Compositions—תבניות המורכבות ממספר משאבים מנוהלים עם API ברמה גבוהה.
CompositeResourceDefinition (XRD) מגדיר סוג משאב חדש; Composition ממפה את ה-XRD למשאבים מנוהלים. כעת מפתח יוצר Claim ב-namespace שלו:
---
apiVersion: platform.example.com/v1alpha1
kind: PostgreSQLInstance
metadata:
name: my-database
namespace: myapp-prod
spec:
parameters:
storageGB: 50
tier: medium
compositionSelector:
matchLabels:
provider: aws
writeConnectionSecretToRef:
name: my-database-conn
---אין צורך בידע ב-AWS API, סוגי מופעים או אזורים. Crossplane יוצר הכל ומכניס אישורים ל-db.t3.medium.
היתרונות של Crossplane לתשתית שלכם
- מישור בקרה יחיד: Kubernetes הופך לנקודת השליטה גם לאפליקציות וגם לתשתית. מאגר GitOps אחד, pipeline אחד.
- האצת הקצאת משאבים: יצירת מופע RDS דרך Claim אורכת פחות מ-5 שניות לאחר החלת ה-manifest. זמן ההקצאה יורד מימים לדקות.
- זיהוי סטייה אוטומטי: כל שינוי במשאב מחוץ ל-Kubernetes—Crossplane מחזיר למצב הרצוי. אין צורך בהתערבות ידנית.
- הפחתה של עד 40% בעלויות תפעול: באמצעות אוטומציה ואיחוד כלים. לפי הערכותינו, החיסכון הממוצע משמעותי ומחזיר את ההשקעה בתוך שישה חודשים לפרויקטים עם 20 מסדי נתונים או יותר.
מה כלול בעבודה
- ביקורת תשתית: מלאי של משאבי ענן, בחירת סדרי עדיפויות להעברה.
- התקנה ותצורה של Crossplane, ספקים ו-ProviderConfigs.
- פיתוח Compositions מותאמים לצרכים שלכם, לפי שיטות עבודה מומלצות.
- אינטגרציה עם GitOps (ArgoCD/Flux) והגדרת pipeline.
- ייבוא משאבים קיימים באמצעות
storageType: gp3. - תיעוד והדרכת צוות: איך ליצור Claims, לשנות זרימת עבודה.
- תמיכה לאחר היישום (חודש אחד).
שלבי יישום
| שלב | תוכן | משך |
|---|---|---|
| ביקורת תשתית | מלאי של משאבי ענן, קביעת סדרי עדיפויות להעברה | 3-5 ימים |
| התקנת Crossplane | ספקים, ProviderConfigs, RBAC | 2-3 ימים |
| ייבוא משאבים קיימים | crossplane import לתשתית קיימת | 3-5 ימים |
| פיתוח Compositions | הפשטות לצרכי הצוות | 1-2 שבועות |
| אינטגרציית GitOps | הצבה במאגר התצורה, ArgoCD Application | 2-3 ימים |
| הדרכת צוות | איך ליצור Claims, לשנות זרימת עבודה | 1-2 ימים |
יישום מלא אורך בין שבועיים לשלושה חודשים, תלוי במורכבות התשתית ובמספר המשאבים המנוהלים. אנו מבטיחים האצה פי 5 בהקצאת משאבים והפחתה של עד 40% בעלויות תפעול. עלות הפרויקט מחושבת באופן אישי, אך ההשקעה בדרך כלל מחזירה את עצמה תוך 3-6 חודשים.
איך להתחיל במהירות עם Crossplane?
- התקינו את Crossplane בקלאסטר שלכם:
apiVersion: platform.example.com/v1alpha1 kind: PostgreSQLInstance metadata: name: my-database namespace: myapp-prod spec: parameters: storageGB: 50 tier: medium compositionSelector: matchLabels: provider: aws writeConnectionSecretToRef: name: my-database-conn(או דרך Helm). - הגדירו ספק: צרו ProviderConfig עם אישורי הענן שלכם.
- צרו Composition: הגדירו תבנית משאב (למשל PostgreSQL).
- מפתח יוצר Claim:
my-database-conn—המשאב מופיע תוך שניות.
דוגמה מלאה זמינה בתיעוד הרשמי של Crossplane.
טיפ: לסביבת ייצור, השתמשו בלפחות 3 רפליקות של Crossplane ו-RBAC עם הגבלות.
Crossplane הוא רכיב קריטי, לכן ודאו סובלנות לתקלות ובקרת גישה.בחנו את היעילות של Crossplane בפרויקט שלכם—קבעו הדגמה. צרו קשר לביקורת תשתית וקבלו הצעה ליישום.







