Deployment Manager Fundamentals

הרכיבים הבאים הם היסודות של Deployment Manager.

הגדרות אישיות

הגדרה מתארת את כל המשאבים שרוצים לפריסה יחידה. הגדרה היא קובץ שנכתב בתחביר YAML ומפרט את כל המשאבים שרוצים ליצור ואת מאפייני המשאבים הרלוונטיים. ההגדרה צריכה לכלול קטע resources: ואחריו רשימה של המשאבים שרוצים ליצור.

כל משאב חייב להכיל שלושה רכיבים:

  • name – מחרוזת שהוגדרה על ידי המשתמש לזיהוי המשאב הזה, כמו my-vm,‏ project-data-disk,‏ the-test-network.
  • type – סוג המשאב שנפרס, למשל compute.v1.instance,‏ compute.v1.disk. סוגי משאבי הבסיס מתוארים ומפורטים במסמך סוגי משאבים נתמכים.
  • properties – הפרמטרים של סוג המשאב הזה. הם צריכים להתאים למאפיינים של הסוג, כמו zone: asia-east1-a ו-boot: true.

זוהי הגדרה לדוגמה:

resources:
- name: the-first-vm
  type: compute.v1.instance
  properties:
    zone: us-central1-a
    machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/f1-micro
    disks:
    - deviceName: boot
      type: PERSISTENT
      boot: true
      autoDelete: true
      initializeParams:
        sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20150423
    networkInterfaces:
    - network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default
      accessConfigs:
      - name: External NAT
        type: ONE_TO_ONE_NAT

תבניות

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

קובץ תבנית נכתב ב-Python או ב-Jinja2. מערכת Deployment Manager תפרש כל תבנית באופן רקורסיבי ותוסיף את התוצאות בקובץ התצורה. לכן, הפרשנות של כל תבנית מובילה בסופו של דבר לתחביר YAML זהה למשאבים כמו זה שמוגדר למעלה עבור קובץ ההגדרות עצמו.

כדי ליצור תבנית פשוטה, קוראים את המאמר בנושא יצירת תבנית בסיסית.

ההגדרות מתוארות כהגדרות מורחבות או לא מורחבות. הגדרה מורחבת באופן מלא מתארת את כל המשאבים והמאפיינים של הפריסה, כולל תוכן מקבצי תבניות שיובאו. לדוגמה, אפשר לספק הגדרה לא מורחבת שמשתמשת בתבנית באופן הבא:

imports:
- path: vm_template.jinja

resources:
- name: vm-instance
  type: vm_template.jinja
  properties:
    zone: us-central1-a
    project: myproject

אחרי ההרחבה, קובץ התצורה יכיל את התוכן של כל התבניות, כך:

resources:
- name: the-first-vm
  type: compute.v1.instance
  properties:
    zone: us-central1-a
    machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/f1-micro
    disks:
    - deviceName: boot
      type: PERSISTENT
      boot: true
      autoDelete: true
      initializeParams:
        sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20150423
        networkInterfaces:
        - network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default
    accessConfigs:
    - name: External NAT
      type: ONE_TO_ONE_NAT

משאב

משאב מייצג משאב API יחיד. יכול להיות שזה משאב API שסופק על ידי סוג בסיס שמנוהל על ידי Google, או משאב API שסופק על ידי ספק סוגים. לדוגמה, מכונה ב-Compute Engine היא משאב יחיד, מכונה ב-Cloud SQL היא משאב יחיד וכן הלאה.

כדי לציין משאב, צריך לספק סוג למשאב הזה. מידע נוסף על סוגים מופיע בקטע 'סוגים' בהמשך.

סוגים

כדי ליצור משאב ב-Deployment Manager, צריך לציין type. סוג יכול לייצג משאב API יחיד, שנקרא סוג בסיסי, או קבוצה של משאבים, שנקראת סוג מורכב, שייווצרו כחלק מהפריסה.

לדוגמה, כדי ליצור מכונה וירטואלית ב-Compute Engine, מציינים את סוג הבסיס המתאים בהגדרה:

resources:
- name: the-first-vm
  type: compute.v1.instance # The type of resource to deploy
  ...

‫Deployment Manager מציע רשימה של סוגים בסיסיים שמתוחזקים על ידי Google, שאפשר להשתמש בהם באופן מיידי. רשימה של הסוגים האלה זמינה במסמך Supported resource types and properties.

סוגי בסיס וספקי סוגים

סוג בסיסי יוצר משאב פרימיטיבי יחיד. לדוגמה, סוגי בסיס בבעלות Google כוללים את compute.v1.instance,‏ storage.v1.bucket ו-sqladmin.v1beta4.database, שכולם מוגשים על ידי Compute Engine V1 API,‏ Cloud Storage V1 API ו-Cloud SQL v1beta4 Admin API.

סוגי הבסיס נתמכים על ידי RESTful API שתומך בפעולות Create,‏ Read,‏ Update ו-Delete (CRUD). אפשר גם ליצור סוגי בסיס נוספים על ידי הוספה של ספק סוגים אם הסוגים שבבעלות Google לא מספיקים לכם. כשיוצרים ספק סוגים, כל המשאבים של ה-API נחשפים כסוגים בסיסיים שאפשר להשתמש בהם. כדי ליצור ספק סוגים, צריך לספק מסמך תיאור API, שיכול להיות מפרט OpenAPI או Google Discovery, להתאים את מיפויי הקלט הנדרשים ל-API ולרשום את הסוג ב-Deployment Manager. אחרי שיוצרים את הסוגים, אתם ומשתמשים אחרים שיש להם גישה לפרויקט יכולים להשתמש בסוגים שסופקו על ידי הספק.

כשמוסיפים ספק סוגים, כל המשאבים שמסופקים על ידי ה-API ונתמכים על ידי ממשק RESTful עם פעולות יצירה, קריאה, עדכון ומחיקה (CRUD) נחשפים כסוגים שאפשר להשתמש בהם בפריסה.

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

במאמר שילוב עם Deployment Manager מוסבר איך ליצור ספק סוגים.

כשקוראים לסוג בסיסי בתבניות או בהגדרות, משתמשים באחד מהתחבירים הבאים, בהתאם לסוג.

  • לסוגי בסיס בניהול Google, משתמשים ב:

    type: [API].[VERSION].[RESOURCE]
    

    לדוגמה, compute.v1.instance.

  • עבור ספקי סוגים בניהול Google (בטא), משתמשים ב:

    type: gcp-types/[PROVIDER]:[RESOURCE]
    

    רשימה של ספקי סוגים נתמכים זמינה במאמר ספקי סוגים נתמכים. Google Cloud

  • כדי להשתמש בסוגים בסיסיים שסופקו על ידי ספק סוגים, משתמשים ב:

    type: [PROJECT_ID]/[TYPE_PROVIDER]:[COLLECTION]
    

    [COLLECTION] הוא הנתיב למשאב ה-API שרוצים לפרוס.

סוגים מורכבים

סוג מורכב מכיל תבנית אחת או יותר שהוגדרו מראש לפעולה משותפת. התבניות האלה מתרחבות לקבוצה של סוגים בסיסיים כשפורסים אותן בפריסה. סוגים מורכבים הם בעצם תבניות מתארחות שאפשר להוסיף ל-Deployment Manager. אתם יכולים ליצור סוגים מורכבים לפתרונות נפוצים כדי שתוכלו להשתמש בהם שוב בקלות, או ליצור הגדרות מורכבות שתוכלו להשתמש בהן שוב בעתיד.

לדוגמה, אפשר ליצור סוג מורכב שמבצע פריסה של קבוצת מופעי מכונה מנוהלים עם איזון עומסים ברשת. מאזן עומסים ברשת דורש כמהGoogle Cloud משאבים והגדרות מסוימות בין המשאבים, ולכן אפשר להגדיר את המשאבים האלה בהגדרה אחת ולרשום את הסוג ב-Deployment Manager. לאחר מכן, אתם ומשתמשים אחרים שיש להם גישה לפרויקט יכולים לקרוא לסוג הזה ולפרוס אותו בהגדרות עתידיות.

כדי לקרוא לסוג מורכב בהגדרות, משתמשים בפקודה:

type: [PROJECT_ID]/composite:[TYPE_NAME]

לדוגמה:

resources:
- name: my-composite-type
  type: myproject/composite:example-composite-type

כדי ללמוד איך ליצור סוג מורכב, אפשר לקרוא את המאמר הוספת סוג מורכב ל-Deployment Manager.

מניפסט

קובץ מניפסט הוא אובייקט לקריאה בלבד שמכיל את ההגדרה המקורית שסיפקתם, כולל תבניות שיובאו, וגם את רשימת המשאבים המלאה שנוצרה על ידי Deployment Manager. בכל פעם שמעדכנים פריסה, Deployment Manager יוצר קובץ מניפסט חדש שמשקף את המצב החדש של הפריסה. כשמנסים לפתור בעיה בהטמעה, כדאי לעיין במניפסט.

מידע נוסף זמין במאמר בנושא צפייה במניפסט.

פריסה

פריסה היא אוסף של משאבים שנפרסים ומנוהלים יחד באמצעות הגדרה.

מידע נוסף מופיע במאמר יצירת פריסה.

המאמרים הבאים