קודם את העננים וה-Kubernetes שלך עם Crossplane ו-IaC

כשארגונים מקבלים את Kubernetes עבור יישומים ענן-נייטיביים, ניהול התשתיות ביעילות מהווה אתגר. כלים מסורתיים לתשתיות כקוד (IaC) כמו Terraform, Pulumi ואחרים מספקים תצורות דקלרטיביות אך חסרי שילוב חלקי בזרימות העבודה הנייטיביות של Kubernetes.

Crossplane גשרים בין Kubernetes ותשתית ענן במצב זה. בבלוג זה, נחקור כיצד Crossplane מאפשר IaC עבור Kubernetes ומעבר.

מהו Crossplane?

Crossplane הוא תוסף Kubernetes מקורי המאפשר לך להפעיל ולנהל תשתיות ענן באמצעות הגדרות משאבי מותאמות (CRDs) של Kubernetes ו-API של Kubernetes. להבדיל מכלים קיימים ל-IaC שדורשים ביצוע חיצוני, כמו סקריפטים של Terraform שמופעלים בצורה חיצונית, Crossplane משתלב בניהול התשתית לתוך Kubernetes. זה עושה אותו אכן דקלרטיבי וידידותי ל-GitOps.

מקרי שימוש: Terraform נגד Crossplane

מתי להשתמש ב-Terraform?

  • מתאים ביותר לניהול תשתיות מחוץ ל-Kubernetes
  • אידיאלי לפיתוחים מרובי עננים ומכונות וירטואליות מסורתיים
  • אקוסיסטמה חזקה עם מודולים וספקים נרחבים
  • עובד טוב עם כלים כמו Ansible, Packer ו-Vault לאוטומציה

מתי להשתמש ב-Crossplane?

  • הכי טוב עבור סביבות ממוקדות Kubernetes
  • אידיאלי עבור זרימות עבודה של GitOps (ArgoCD, Flux)
  • מאפשר פריסה עצמית באמצעות CRDs של Kubernetes
  • טוב לשליטה על Kubernetes מרובה עננים (ניהול שירותי ענן באמצעות API של K8s)

התחלת עבודה עם Crossplane

בדוגמה זו, נשתמש ב-minikube. אך ניתן ליישם את אותם צעדים על כל Kubernetes.

צעד 1: פריסת MySQL ב-Kubernetes

1. פרוס את MySQL כפריסה עם שירות להגדרה באמצעות Crossplane. ניתן גם להשתמש ב-MySQL שנפרס ממקום אחר. 

2. הגדר mysql-deployment.yaml, שיוצר את הסוד, הפריסה והשירות הנדרשים להרצת MySQL.

YAML

 

3. החל את ה-YAML באמצעות הפקודה kubectl apply -f mysql-deployment.yaml.

4. ודא שהפודים פעילים באמצעות הפקודה kubectl get pods.

5. בדוק את חיבור ה-MySQL על ידי הפעלת פוד SQL זמני כדי לבדוק את פריסת MySQL. צור את הלקוח באמצעות הפקודה kubectl run mysql-client --image=mysql:8.0 -it --rm -- bash.

6. התחבר ל-MySQL בתוך הפוד באמצעות הפקודה mysql -h mysql-service.default.svc.cluster.local -uroot -ppassword.

שלב 2:התקן את Crossplane על Kubernetes

1. התקן את Crossplane באמצעות Helm:

Shell

 

הערה: ייקח זמן מה עד ש-Crossplane יתחיל לעבוד. 

2. ודא את ההתקנה של Crossplane באמצעות הפקודה kubectl get pods -n crossplane-system.

שלב 3: התקן את ספק ה-SQL של Crossplane

1. הגדר ספק MySQL באמצעות תוכן ה-YAML שלמטה.

YAML

 

2. צור את הספק באמצעות הפקודה kubectl apply -f provider.yaml.

3. ודא את הספק באמצעות הפקודות הבאות: kubectl get pods -n crossplane-system ו-kubectl get providers

הערה: ספקי SQL ייקחו זמן עד שיתחילו לפעול.

שלב 4: הגדר את ספק MySQL של Crossplane

ההגדרות של הספק מגדירות ל-Crossplane כיצד לאמת עם MySQL. הגדר את הסודות שיהיו נחוצים לשימוש בספק. עדכן את stringData בהתאם בקובץ ה-YAML שלמטה. יישם את ה-YAML באמצעות kubectl apply -f mysql-secret.yaml.

YAML

 

יש להחיל את ההגדרות של הספק עבור Crossplane, אשר משתמשות בסודות מעלה. יישם אותן באמצעות הפקודה kubectl apply -f providerconfig.yaml.

YAML

 

וודא את יצירת ההגדרה של הספק באמצעות הפקודות — kubectl get providerconfigs.mysql.sql.crossplane.io ו-kubectl get crds | grep providerconfig.

שלב 5. צור מסד נתונים MySQL באמצעות Crossplane

עכשיו, השתמש ב־Crossplane כדי לספק מסד נתונים חדש. השתמש ב־YAML הבא ובצע את זה באמצעות kubectl apply -f mysqlinstance.yaml.

YAML

 

שלב 6: אמת את יצירת בסיס הנתונים

אמת את יצירת בסיס הנתונים באמצעות הפקודה kubectl get database.mysql.sql.crossplane.io/my-database.

השתמש באותם שלבי אימות שנאמרו בשלב 1 כדי להתחבר ל־MySQL ולאמת את יצירת בסיס הנתונים.

עם השלבים הנ"ל, התקנת את Crossplane, הגדרת את ספק MySQL, והשתמשת ב־Crossplane כדי לספק בסיס נתונים.

האם Terraform ו־Crossplane יכולים לעבוד ביחד?

כן, Terraform ו־Crossplane יכולים להיות משומשים ביחד לתרחישים רבים.

תרחיש 1

בתרחיש IaC מלא, ניתן להשתמש ב־Terraform כדי להפעיל את אשכולות ה־Kubernetes, ולאחר מכן ניתן להשתמש ב־Crossplane כדי לנהל משאבי ענן מתוך Kubernetes. Terraform גם יכול להפעיל את Crossplane עצמו. דוגמה זו לזרימת עבודה היברידית יכולה להיות

  • Terraform מאזין ל־קרש ה־Kubernetes בכל ספק ענן.
  • Crossplane מנהל שירותי ענן (בסיסי נתונים, אחסון ורשת) באמצעות CRDs של Kubernetes.

תרחיש 2

Crossplane תומך גם בספק Terraform, שניתן להשתמש בו כדי להפעיל תסריטי Terraform כחלק מדגם ה-IaC של Crossplane. הפעלת ספק Terraform עבור Crossplane עשויה להיות שימושית במספר תרחישים שונים שבהם ספקי המקור הטבעיים של Crossplane עדיין לא תומכים במשאבי ענן מסוימים או פונקציונליות מסוימת. הבאים הם הסיבות להפעלת ספק Terraform עבור Crossplane:

  • Terraform כולל אקוסיסטמה רחבה של ספקים, התומכת בשירותי ענן רבים שלא נתמכים עדיין על ידי ספקים טבעיים של Crossplane.
  • כאשר ארגון כבר משתמש ב-Terraform לניהול התשתיות, אין צורך לכתוב הכל מחדש ב-CRDs של Crossplane.
  • Crossplane תומך בניהול רב-עננים, אך ספקי המקור הטבעיים שלו עשויים לא לכסות כל אינטגרציה באשפוז או SaaS.
  • לארגונים שמחפשים לעבור בהדרגה מ-Terraform ל-Crossplane, השימוש בספקי Terraform בתוך Crossplane יכול לשמש כפתרון היברידי לפני המעבר המלא.
  • הפעלת Terraform בתוך Crossplane מביאה את Terraform תחת דגם ה-GitOps הדקלרטיבי של Kubernetes.

שלבים ליצירת מסד נתונים Cloudant של IBM באמצעות Crossplane

שלב 1. הגדרת ספק ה-Terraform.

YAML

 

שלב 2. הגדרת הספק.

YAML

 

שלב 3. פריסת מסד נתונים Cloudant ב-IBM Cloud על ידי שימוש בתסריטי Terraform כחלק מה-Crossplane.

YAML

 

פעולה זו מבצעת פריסת מסד נתונים Cloudant בשם crossplanecloudant ב-IBM Cloud.

איך Crossplane מתאים להנדסת פלטפורמות

הנדסת פלטפורמה מתמקדת בבניית ותחזוקת פלטפורמות פיתוח פנימיות (IDPs) המפשטות ניהול תשתיות והפצת אפליקציות. Crossplane משמש תפקיד חשוב בכך שהוא מאפשר גישה קוברנטית טבעית.

Crossplane מבטיח תפעול דקלרטיבי, שירות עצמי והצפתה מבוססת מדיניות של משאבי ענן. תכונות של Crossplane כמו תשתיות דקלרטיביות עם API של K8s, הפשטות מותאמות אישית עבור תשתיות ואפליקציות, קווים מנחים לאבטחה והתאמה וכוחות, הפצות בקרת גרסאות ואוטומציה, ותיקון של תפילה מתמד עוזרים להנדסת פלטפורמה.

מסקנה

Crossplane משנה את דרך ניהול התשתיות בענן על ידי הבאת IaC אל תוך הקוברנטיס כלכלה. API של קוברנטיס מאפשרים גישה דקלרטיבית אמיתית והתקשרות שמורת גיטאופס לתהליכי תפעול וניהול של משאבים בענן. אם אתה כבר משתמש בקוברנטיס ומחפש למודרניז את אסטרטגיית ה-IaC שלך, Crossplane בהחלט שווה לחקור.

Source:
https://dzone.com/articles/codify-cloud-kubernetes-crossplane-iac