כדי להאיץ את הפיתוח המקומי ב-Cloud Code ל-IntelliJ, כדאי להשתמש בסנכרון קבצים וטעינה מחדש של קבצים, פריסה אוטומטית בשמירה, ולהשתמש במודולים כדי לפתח חלקים של אפליקציה בנפרד.
הפעלה של סנכרון קבצים וטעינה מחדש של קבצים
כדי לשפר את היעילות של תהליך העבודה של הפיתוח המקומי ולמנוע את הצורך לבנות מחדש, לפרוס מחדש ולהפעיל מחדש את ה-pods, Cloud Code תומך בהעתקת קבצים שהשתנו למאגר שנפרס. כלומר, כשמבצעים שינויים בקבצים סטטיים ובקבצי קוד מקור, אפשר לראות את השינויים תוך שניות, וכך לקבל משוב מהר יותר.
כשמדובר בקבצים סטטיים (כמו קובצי HTML ו-CSS), התנהגות העתקת הקבצים הזו נקראת סנכרון קבצים.
במקרה של קובצי קוד מקור, ההתנהגות הזו נקראת טעינה מחדש בזמן ריצה והיא תומכת בסוגי הקבצים הבאים:
- Go: *.go
- Java: *.java, *.kt, *.scala, *.groovy, *.clj
- NodeJS: *.js, *.mjs, *.coffee, *.litcoffee, *.json
אם הגדרתם טעינה מחדש בזמן אמת, Cloud Code מזהה שינויים בקבצים נתמכים ומסנכרן את השינויים האלה עם הקונטיינר הפועל באשכול. שינויים בסוגי קבצים שלא תומכים בטעינה מחדש של קבצים גורמים לבנייה מחדש של תמונה ולהפעלה מחדש של ה-pod.
כשעובדים עם Buildpacks ככלי הבנייה המועדף, סנכרון קבצים אוטומטי וטעינה מחדש של קבצים מופעלים כברירת מחדל. ב-builders אחרים כמו Docker, אפשר לציין קטע sync בקובץ skaffold.yaml בשביל הארטיפקט שרוצים להתאים אישית.
הגדרת הסנכרון יכולה להיות אחת מהאפשרויות הבאות (לפי סדר העדיפות):
-
auto: Cloud Code מגדיר את הסנכרון באופן אוטומטי. (רק לארטיפקטים של Jib ו-Buildpacks). זוהי הגדרת ברירת המחדל עבור Buildpacks. -
infer: היעדים של כל קובץ שמשתנה מוסקים מה-builder. -
manual: צריך לציין את הקבצים בסביבת העבודה המקומית ואת היעד שלהם בקונטיינר הפועל.
בדוגמה הבאה מוצג קטע sync בקובץ skaffold.yaml שמציין סנכרון manual כדי לסנכרן את כל קובצי ה-HTML של /static-html לתיקייה static במאגר:
build: artifacts: - image: gcr.io/k8s-skaffold/node-example context: node sync: manual: - src: 'static-html/*.html' dest: static
למידע מפורט על סנכרון קבצים ועל הגדרת כללי סנכרון, אפשר לעיין במדריך Skaffold בנושא סנכרון קבצים.
הוספת תכונות חדשות במהלך פיתוח ב-Kubernetes
אחרי שמגדירים סנכרון קבצים וטעינה מחדש של קוד, מתחילים מחזור איטרציה ומוסיפים עוד תכונות לפרויקט. השינויים שלכם נפרסים באשכול Kubernetes בלי לעצור ולהסיר את הפריסה, לבנות ולתייג את התמונה באופן ידני או לעדכן את האשכול.
מחזור איטרציה רגיל נראה כך:
מבצעים שינוי בפרויקט. לדוגמה, אם משתמשים באפליקציית Cloud Code Java Guestbook, מוסיפים נקודת קצה חדשה למחלקה
FrontendControllerבאופן הבא:פותחים את הקובץ
FrontendController.javaמתוךsrc/main/java/cloudcode/guestbook/frontendומוסיפים את השורות הבאות:@RequestMapping("/greeting") @ResponseBody public String greeting(@RequestParam(value="name", defaultValue="World") String name) { return String.format("Hello from Kubernetes with IntelliJ, %s!", name); }מוסיפים את ההצהרות הנדרשות לייבוא של ההערות החדשות,
RequestMappingו-ResponseBody.
שומרים את השינויים (
Ctrl/Cmd+S) או בונים את הפרויקט.אפשר לצפות בהתקדמות וברישומי הפריסה בחלון המסוף. אחרי שהשינויים יופעלו, תצטרכו לאשר את העדכונים.
כדי לסיים את סשן הפיתוח הרציף, לוחצים על סמל ההפסקה.
Cloud Code מוחק את כל משאבי Kubernetes שנעשה בהם שימוש במהלך סשן הפיתוח.
פיתוח אפליקציות של מיקרו-שירותים באמצעות הגדרות skaffold.yaml
כשמפתחים אפליקציות של מיקרו-שירותים, כדאי לעבוד על חלקים נפרדים באופן עצמאי כדי לפשט את ניפוי הבאגים והפריסה.
אתם יכולים לפתח ולנפות באגים בחלקים של האפליקציה באופן עצמאי על ידי פיצול האפליקציה למודולים. לדוגמה, Bank of Anthos הוא אפליקציה לדוגמה שמכילה עשרה מיקרו-שירותים. בקובץ skaffold.yaml של הדוגמה, השירותים האלה מקובצים לחמישה מודולים בשמות setup, db, frontend, backend ו-loadgenerator.
הגדרת מודולים ויחסי תלות בהגדרות
כדי להגדיר מודולים ויחסי תלות בהגדרות:
פותחים את הפרויקט שבו רוצים להגדיר את המודולים.
פותחים את הקובץ
skaffold.yaml.אם בקובץ
skaffold.yamlיש כמה הגדרות, כדי להפוך הגדרה למודול, מציינים את השורה הבאה:metadata: name: MODULE_NAME_1לדוגמה, במודול
dbשל Bank of Anthosskaffold.yamlמוגדרות פריסות של מסדי נתונים:אם יש הגדרות שתלויות בהגדרות אחרות שצריך לפרוס לפני שניתן לפרוס את ההגדרה הנוכחית, צריך להוסיף את ההגדרה לתלות. כדי לציין תלות בהגדרות, מוסיפים רשימה של
configsלקטעrequiresבקובץskaffold.yaml.לדוגמה, קובץ
skaffold.yamlBank of Anthos כולל את תלות התצורהsetup.כדי להגדיר תלות, מוסיפים את השורה הבאה לקובץ
skaffold.yaml, כאשר DEPENDENCY_NAME הוא שם התלות.requires: - configs: DEPENDENCY_NAMEההגדרות שמופיעות בדרך הזו יכולות להפנות לתלות שהוגדרה באותו קובץ או בקובצי
skaffold.yamlאחרים בפרויקט הנוכחי.כדי לבדוק את התלות בהגדרות, צריך ליצור כל אחד מהמודולים בנפרד כדי לוודא שהם נפרסים עם התלות שלהם. לשם כך, פועלים לפי השלבים במאמר יצירת מודולים ספציפיים והתלות שלהם.
בניית מודולים ספציפיים והתלויות שלהם
אחרי שמגדירים את המודולים ואת התלות שלהם, אפשר לציין אילו מודולים רוצים להפעיל בכרטיסייה Build / Deploy כשבוחרים באפשרות Run > Edit configurations.מתקינים את גרסאות ה-build האחרונות של Insiders.
עוברים אל Run > Edit configurations ופותחים את הכרטיסייה Build / Deploy.
בקטע Skaffold configuration (הגדרת Skaffold), בוחרים באפשרות skaffold.yaml.
צריך לבחור אחת מהאפשרויות:
- פיתוח ופריסה עם כל המודולים והתלויות
- Build and deploy with (פיתוח ופריסה באמצעות) (אם יש מודולים זמינים) ובוחרים את המודולים שרוצים לפתח ולפרוס.
הבחירה שלכם נשמרת לפריסות הבאות. אם בוחרים קבוצת משנה של מודולים, Cloud Code מציג אזהרה לגבי פריסה של קבוצת משנה של מודולים ולא של המערכת כולה.
פיתוח רציף ב-Kubernetes
אחרי שמגדירים את יעד ההרצה עם האפשרויות הרצויות, אפשר לבחור בהרצה רגילה של האפליקציה או להתחיל מחזור איטרציה של פיתוח בסביבת הפיתוח המשולבת כדי להפיץ את השינויים שבוצעו במקור ובקובצי התלות לאפליקציה הפעילה.
יעד ההרצה Develop on Kubernetes (פיתוח ב-Kubernetes) מתחיל את מחזור הפיתוח באשכול Kubernetes. אחרי שמתחילים את מחזור הפיתוח, Cloud Code יוצר אימג' לפרויקט, מתייג אותו, מעלה אותו למאגר שהוגדר ומשתמש ב-kubectl כדי לפרוס את מניפסטים של Kubernetes בפרויקט.
- לוחצים על הסמל Develop on Kubernetes ואז על Edit Configurations כדי לפתוח את תיבת הדו-שיח Run/Debug Configurations.
- אפשר להתאים אישית את הפריסה באמצעות אפשרויות ההגדרה הזמינות.
- אם רוצים ש-Cloud Code יפרוס מחדש את האפליקציה באופן אוטומטי אחרי ששומרים את השינויים, בוחרים באפשרות On file save (בזמן שמירת הקובץ) בקטע Watch mode - rebuild and redeploy (מצב צפייה – בנייה מחדש ופריסה מחדש). באפליקציות חדשות של Kubernetes, האפשרות על פי דרישה מסומנת כברירת מחדל. מידע נוסף על מצבי שעון זמין במאמר מצבי שעון.
- אם האפליקציה שלכם מוגדרת להשתמש במודולים, אתם יכולים לבחור לבנות או לפרוס רק מודולים ספציפיים.
- אחרי שסיימתם לקבוע את ההגדרות, לוחצים על אישור ואז על סמל ההפעלה.
המאמרים הבאים
- משתמשים באשכול minikube המובנה ב-Cloud Code לפיתוח מקומי.
- ניפוי באגים באפליקציה ב-Cloud Code
- כדאי לקרוא את הפרטים על תכונת סנכרון הקבצים