במדריך הזה מוסבר איך לפרוס את אפליקציית הדוגמה Python Bookshelf באמצעות Cloud Deployment Manager.
Deployment Manager מאפשר ליצור אתCloud de Confiance by S3NS המשאבים הנדרשים לפריסה בשלב אחד, באמצעות תהליך הצהרתי שניתן לחזור עליו. באמצעות Deployment Manager, אתם יכולים לעדכן את הפריסות, לעקוב אחרי השינויים שביצעתם לאורך זמן, ליצור תבניות באמצעות Jinja או Python, ולהגדיר פרמטרים לתבניות, כך שפריסות דומות ישתמשו באותה תבנית.
מטרות
- משכפלים ומגדירים את אפליקציית המדף לדוגמה.
- יצירת תצורות ותבניות של Deployment Manager.
- יצירת פריסות של Deployment Manager.
- פורסים את האפליקציה לדוגמה Bookshelf באמצעות Deployment Manager.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Cloud de Confiance by S3NS, והשימוש בהם כרוך בתשלום:
כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים. מידע נוסף זמין בקטע הסרת המשאבים.
לפני שמתחילים
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance 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 Cloud de Confiance project.
Enable the Datastore API, Cloud Storage API, Pub/Sub API APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
Configure the gcloud CLI to use your federated identity.
For more information, see Sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
מתקינים את Python,
pipו-virtualenvבמערכת. הוראות מפורטות זמינות במאמר הגדרת סביבת פיתוח בשפת Python ל- Cloud de Confiance by S3NS.
יצירת קטגוריה של 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כדי להגדיר את הזהות.יוצרים מאגר במסוף Cloud de Confiance :
לאחר מכן, דוחפים את קוד האפליקציה למאגר של הפרויקט, כאשר
[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 מהרשימה.
האפליקציה פועלת עכשיו ב- Cloud de Confiance.
הסבר על הקוד
הגדרת הפריסה
אפשר לראות את הגדרות הפריסה ב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 בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
מחיקת הפרויקט
הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך הזה.
כדי למחוק את הפרויקט:
- במסוף Cloud de Confiance , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
מחיקת הפריסה
כדי למחוק את הפריסה, מזינים את הפקודה הבאה. הפקודה הזו מוחקת את איזון העומסים ואת כל המכונות של Compute Engine שמשויכות לפריסה:
gcloud deployment-manager deployments delete my-deployment
המאמרים הבאים
איך מריצים את האפליקציה לדוגמה Bookshelf ב-Python ב-Google Kubernetes Engine
איך מריצים את אפליקציית Bookshelf לדוגמה ב-Python בסביבה הגמישה של App Engine
כדאי להעמיק את הקריאה ולהכיר דוגמאות לארכיטקטורות, תרשימים ושיטות מומלצות בנושאי Google Cloud. כל אלה זמינים במרכז הארכיטקטורה של Cloud.
אפשר לעיין בCloud de Confiance שירותים נוספים.