במדריך הזה מוסבר איך לפרוס את אפליקציית הדוגמה Python Bookshelf באמצעות Cloud Deployment Manager.
Deployment Manager מאפשר ליצור אתGoogle Cloud המשאבים הנדרשים לפריסה בשלב אחד, באמצעות תהליך הצהרתי שניתן לחזרה. באמצעות Deployment Manager, אתם יכולים לעדכן את הפריסות, לעקוב אחרי השינויים לאורך זמן, ליצור תבניות באמצעות Jinja או Python, ולהגדיר פרמטרים לתבניות, כך שפריסות דומות ישתמשו באותה תבנית.
מטרות
- משכפלים ומגדירים את אפליקציית מדף הספרים לדוגמה.
- יצירת תצורות ותבניות של Deployment Manager.
- יצירת פריסות של Deployment Manager.
- פורסים את אפליקציית הדוגמה Bookshelf באמצעות Deployment Manager.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.
כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים. מידע נוסף זמין בקטע הסרת המשאבים.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Datastore API, Cloud Storage API, Pub/Sub API APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Datastore API, Cloud Storage API, Pub/Sub API APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
מתקינים את Python,
pipו-virtualenvבמערכת. הוראות מפורטות זמינות במאמר הגדרת סביבת פיתוח בשפת Python ל- Google Cloud.
יצירת קטגוריה של Cloud Storage
בהוראות הבאות מוסבר איך ליצור קטגוריה של Cloud Storage. קטגוריות הן הקונטיינרים הבסיסיים ששומרים את הנתונים שלכם ב-Cloud Storage.
בחלון המסוף, יוצרים קטגוריה של Cloud Storage, כאשר YOUR_BUCKET_NAME מייצג את שם הקטגוריה:
gcloud storage buckets create gs://YOUR_BUCKET_NAME
כדי לראות תמונות שהועלו באפליקציית מדף הספרים, צריך להגדיר את מדיניות ניהול הזהויות והרשאות הגישה (IAM) של הקטגוריה כך שתוענק הרשאת
legacyObjectReaderלתפקידallUsers:gcloud storage buckets add-iam-policy-binding gs://YOUR_BUCKET_NAME --member=allUsers --role=roles/storage.legacyObjectReader
שיבוט של האפליקציה לדוגמה
אפליקציית הדוגמה זמינה ב-GitHub בכתובת
GoogleCloudPlatform/getting-started-python.
משכפלים את המאגר:
git clone https://github.com/GoogleCloudPlatform/getting-started-python.git -b stepsעוברים לספריית הדוגמאות:
cd getting-started-python/7-gce
הגדרת האפליקציה
פותחים את
config.pyלעריכה.מגדירים את הערך של
PROJECT_IDלמזהה הפרויקט.מגדירים את הערך
CLOUD_STORAGE_BUCKETלשם של הקטגוריה ב-Cloud Storage.
שמירה וסגירה
config.py.
הפעלת האפליקציה במחשב המקומי
יוצרים סביבת Python מבודדת ומתקינים יחסי תלות:
Linux/macOS
virtualenv -p python3 env source env/bin/activate pip install -r requirements.txtWindows
virtualenv -p python3 env env\scripts\activate pip install -r requirements.txtמריצים את האפליקציה:
python main.pyבדפדפן, מזינים את הכתובת הבאה:
כדי לעצור את שרת האינטרנט המקומי, מקישים על Control+C. כדי לצאת מהסביבה הווירטואלית, מזינים deactivate.
פריסת האפליקציה לדוגמה
העברת הקוד למאגר
יש כמה דרכים להעביר את הקוד למכונה פעילה של Compute Engine. אחת הדרכים היא להשתמש ב-Cloud Source Repositories. כל פרויקט כולל מאגר Git שזמין למכונות של Compute Engine. לאחר מכן, המופעים שולפים את הגרסה העדכנית של קוד האפליקציה במהלך ההפעלה. השימוש במאגר Git נוח כי כדי לעדכן את האפליקציה לא צריך להגדיר תמונות או מופעים חדשים, אלא רק להפעיל מחדש מופע קיים או ליצור מופע חדש.
בפעם הראשונה שמשתמשים ב-Git, צריך להשתמש ב-
git config --globalכדי להגדיר את הזהות.יוצרים מאגר במסוף Google Cloud :
לאחר מכן מעבירים את קוד האפליקציה למאגר של הפרויקט, כאשר
[YOUR_PROJECT_ID]הוא מזהה הפרויקט ו-[YOUR_REPO]הוא שם המאגר:git commit -am "Updating configuration" git config credential.helper gcloud.sh git remote add cloud https://source.developers.google.com/p/[YOUR_PROJECT_ID]/r/[YOUR_REPO] git push cloud master
יצירת הפריסה
אחרי ששומרים את ההגדרות ומעלים את הקוד אל Cloud Source Repositories, אפשר להשתמש ב-Deployment Manager כדי ליצור את הפריסה:
עוברים לספרייה
deployment_manager:cd getting-started-python/7-gce/gce/deployment_managerיוצרים את הפריסה:
gcloud deployment-manager deployments create my-deployment --config config.yamlצפייה ברשימה של כל הפריסות:
gcloud deployment-manager deployments listלקבל תיאור של הפריסה והמשאבים שהיא יצרה:
gcloud deployment-manager deployments describe my-deployment
צפייה באפליקציה
אחרי שיוצרים את כלל ההעברה, יכולות לחלוף כמה דקות עד שההגדרה תופץ ועד שתנועת הגולשים תנותב למופעים.
כדי לבדוק את ההתקדמות:
gcloud compute backend-services get-health bookshelf-my-deployment-frontend --globalאם לפחות אחד מהמופעים מדווח על
HEALTHY, צריך לקבל את כתובת ה-IP להעברה של מאזן העומסים:gcloud compute forwarding-rules list --globalכתובת ה-IP של כלל ההעברה מופיעה בעמודה
IP_ADDRESS.בדפדפן, מזינים את כתובת ה-IP מהרשימה.
האפליקציה שלך פועלת עכשיו ב Google Cloud.
הסבר על הקוד
הגדרת הפריסה
אפשר לראות את הגדרות הפריסה בconfig.yaml:
קובץ התצורה מייבא את קובץ התבנית כמשאב ומשתמש בו כדי להגדיר משאב בשם bookshelf. התבנית מקבלת כמה מאפיינים כפרמטרים. מידע נוסף על יצירת קובצי הגדרה של Deployment Manager זמין במאמר בנושא יצירת הגדרה.
הגדרת הסכימה של תבנית הפריסה
מעיינים בקובץ הסכימה bookshelf.jinja.schema, שבו מוגדרים הפרמטרים שהפריסה צריכה לספק בקובץ ההגדרות שלה, ומתועדים הפרמטרים האלה. מידע נוסף על סכימות הגדרה זמין במאמר שימוש בסכימות.
הגדרת תבנית הפריסה
התבנית מגדירה כמה משאבים שנדרשים ליצירת קבוצת מופעי מכונה מנוהלים עם שינוי גודל אוטומטי ומאזן עומסים. תיאור מלא של המשאבים שנוצרו מופיע בהערות בתבנית ובמדריך מדף הספרים ב-Compute Engine.
חשוב לזכור ש-Deployment Manager מספק דרך להגדיר משאבים באופן הצהרתי, אבל רוב ההגדרות של משאב מסוים מוגדרות על ידי ה-API שלו. לדוגמה, רוב אפשרויות ההגדרה של משאב תבנית של הגדרות מכונה מופיעות בהגדרת משאב תבנית של הגדרות מכונה במסמכי העזרה של Compute Engine API.
התבנית כתובה באמצעות שפת התבניות Jinja. כשכותבים תבניות של Deployment Manager, אפשר להשתמש ב-Jinja או ב-Python. היתרון של Jinja הוא שהיא יותר הצהרתית, ולכן קל יותר לקרוא אותה ולהבין אותה בהשוואה ל-Python. בפריסות מורכבות מסוימות, יכול להיות שיהיה פשוט יותר להשתמש בכל האפשרויות של Python. במקרה כזה, Jinja מספיקה כדי ליצור את המשאבים הנדרשים.
בתבנית, משתני סביבה מסוימים מוגדרים באופן אוטומטי, ואפשר לגשת למשתנים האלה באמצעות המילון env. במקרה הזה, שם הפריסה מצוין כשם שאפשר לעשות בו שימוש חוזר כשמקצים שמות למשאבים שנוצרים. מידע נוסף על משתני סביבה זמין במאמר שימוש במשתני סביבה במסמכי התיעוד של Deployment Manager.
התבנית משתמשת באותו סקריפט לטעינה בזמן ההפעלה שמשמש במדריך Compute Engine. התוכן של הסקריפט מוכנס לתבנית, והוראת ההזחה של Jinja מזחיחה את התוכן בצורה נכונה:
בתבנית Jinja של Deployment Manager, אפשר גם להפנות למשאבים שנוצרו במקום אחר בתבנית. בדוגמה הבאה, שירות לקצה העורפי משתמש בהפניה לקבוצת מופעי מכונה מנוהלים כדי לקבל את קבוצת המופעים שאליה הוא צריך להפנות:
אפשר להשתמש בתבנית במאפיינים שצוינו ב-config.yaml:
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
מחיקת הפרויקט
הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך הזה.
כדי למחוק את הפרויקט:
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
מחיקת הפריסה
כדי למחוק את הפריסה, מזינים את הפקודה הבאה. הפקודה הזו מוחקת את מאזן העומסים ואת כל המכונות ב-Compute Engine שמשויכות לפריסה:
gcloud deployment-manager deployments delete my-deployment
המאמרים הבאים
איך מריצים את אפליקציית הדוגמה Python Bookshelf ב-Google Kubernetes Engine
איך מריצים את אפליקציית הדוגמה של מדף הספרים ב-Python בסביבה הגמישה של App Engine
כדאי להעמיק את הקריאה ולהכיר דוגמאות לארכיטקטורות, תרשימים ושיטות מומלצות בנושאי Google Cloud. כל אלה זמינים במרכז הארכיטקטורה של Cloud.
אפשר לעיין בGoogle Cloud שירותים אחרים.