יצירת ענן פרטי ב-VMware Engine

ענן פרטי הוא מחסנית VMware מבודדת שמורכבת ממארחי ESXi,‏ vCenter,‏ vSAN,‏ NSX ו-HCX. אתם יכולים לנהל עננים פרטיים דרך מסוףGoogle Cloud . כשיוצרים ענן פרטי, מקבלים אשכול vSphere יחיד וכל המכונות הווירטואליות לניהול שנוצרות באשכול הזה.

‫VMware Engine פורס רכיבי ניהול ברשת שבחרתם עבור תת-רשתות vSphere/vSAN. במהלך הפריסה, טווח כתובות ה-IP הפנימיות מחולק לתת-רשתות שונות.

לפני שמתחילים

לפני שמבצעים את המשימות שבדף הזה, צריך לבצע את השלבים המקדימים הבאים.

מרחב הכתובות של תת-הרשת vSphere/vSAN לא יכול לחפוף לרשתות שיקשרו לענן הפרטי, כמו רשתות מקומיות ורשתות שלGoogle Cloud ענן וירטואלי פרטי (VPC). מידע נוסף על רשתות משנה של vSphere או vSAN זמין במאמר רשתות VLAN ורשתות משנה ב-VMware Engine.

הדרישות של Google Cloud CLI ו-API

כדי להשתמש בכלי gcloud של שורת הפקודה או ב-API לניהול המשאבים של VMware Engine, מומלץ להגדיר את הכלים כמו שמתואר בהמשך.

gcloud

  1. מגדירים את מזהה פרויקט ברירת המחדל:

    gcloud config set project PROJECT_ID
    
  2. הגדרת אזור ואזור זמן כברירת מחדל:

    gcloud config set compute/region REGION
    
    gcloud config set compute/zone ZONE
    

מידע נוסף על הכלי gcloud vmware זמין במאמרי העזרה של Cloud SDK.

API

בדוגמאות ל-API שמופיעות במאמרי העזרה האלה נעשה שימוש בכלי שורת הפקודה cURL כדי לשלוח שאילתות ל-API. חובה לציין טוקן גישה תקין כחלק מהבקשה cURL. יש הרבה דרכים לקבל אסימון גישה תקף. בשלבים הבאים נשתמש בכלי gcloud כדי ליצור אסימון גישה:

  1. התחברות אל Google Cloud:

    gcloud auth login
    
  2. כדי ליצור אסימון גישה ולייצא אותו ל-TOKEN:

    export TOKEN=`gcloud auth print-access-token`
    
  3. מוודאים שהאסימון מוגדר בצורה תקינה:

    echo $TOKEN
    

עכשיו אפשר להשתמש בטוקן ההרשאה בבקשות ל-API. לדוגמה:

curl -X GET -H "Authorization: Bearer \"$TOKEN\"" -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations

Python

בדוגמאות הקוד ב-Python שבמסמך הזה נעשה שימוש בספריית VMware Engine כדי לתקשר עם ה-API. כדי להשתמש בגישה הזו, צריך להתקין את הספרייה ולהגדיר את Application Default Credentials.

  1. מורידים ומתקינים את ספריית Python:

    pip install google-cloud-vmwareengine
    
  2. מגדירים את פרטי ADC על ידי הרצת הפקודות האלה במעטפת:

    gcloud auth application-default login
    

    לחלופין, אפשר להשתמש בקובץ מפתח של חשבון שירות:

    export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
    

מידע נוסף על הספרייה זמין בדף העזר או בדוגמאות קוד ב-GitHub.

יצירת ענן פרטי רגיל

המסוף

כדי ליצור ענן פרטי רגיל באמצעות Google Cloud המסוף, פועלים לפי השלבים הבאים:

  1. נכנסים לדף Private clouds במסוף Google Cloud .

    כניסה ל-Private clouds

  2. לוחצים על בחירת פרויקט ואז בוחרים את הארגון, התיקייה או הפרויקט שבהם רוצים ליצור את הענן הפרטי.

  3. לוחצים על יצירה.

  4. מזינים שם לענן הפרטי.

  5. בוחרים באפשרות Standard private cloud בשביל סוג הענן הפרטי.

  6. בוחרים את המיקום שבו רוצים לפרוס את הענן הפרטי.

  7. מזינים שם לאשכול הראשי.

  8. בוחרים את סוג הצומת של האשכול הראשי.

  9. בוחרים את מספר הצמתים לענן הפרטי. לעומסי עבודה בסביבת ייצור, צריך ליצור את הענן הפרטי עם 3 צמתים לפחות. ‫VMware Engine מוחק עננים פרטיים שמכילים רק צומת אחד אחרי 60 יום.

  10. אופציונלי: לוחצים על המתג התאמה אישית של ליבות אם רוצים להקטין את מספר הליבות הזמינות לכל צומת באשכול הניהול. מידע נוסף זמין במאמר בנושא מספר ליבות בהתאמה אישית.

  11. מזינים טווח CIDR לרשת הניהול של VMware. מידע על ההגבלות בנוגע לטווח הזה זמין בקטע לפני שמתחילים.

  12. לוחצים על בדיקה ויצירה.

  13. בודקים את ההגדרות. כדי לשנות הגדרות, לוחצים על הקודם.

  14. לוחצים על יצירה כדי להתחיל בהקצאת הענן הפרטי.

ברשימה הבאה מפורט כל שדה במהלך יצירת ענן פרטי:

  • שם: מזהה ייחודי קבוע של הענן הפרטי.
  • תיאור: מידע נוסף שמוצג בדף הפרטים של הענן הפרטי.
  • אזור: אזור גיאוגרפי שבו VMware Engine מארח את הענן הפרטי שלכם.
  • תחום (zone): קבוצת משנה של אזור שמבודדת פיזית מתחומים אחרים באותו אזור. תחום הוא דומיין כשל יחיד בתוך אזור.
  • שם האשכול הראשי: השם שניתן לאשכול vSphere הראשוני בענן הפרטי. מכשירי ניהול של VMware בענן הפרטי שלכם פועלים באשכול הזה.
  • סוג הצומת: הגדרת החומרה של הצמתים באשכול הראשי.
  • צמתים: מספר הצמתים באשכול הראשי.

  • טווח כתובות IP לניהול: טווח כתובות IP שמשמש ל-vCenter Server, ל-NSX Manager, למארחי ESXi ולחלקים אחרים בתשתית של הענן הפרטי. הטווח הזה לא משמש למכונות וירטואליות של עומסי עבודה, ואסור שתהיה חפיפה בין הטווח הזה לבין חלק כלשהו ברשת ה-VPC או ברשת אחרת שאתם מתכננים לחבר אליה את הענן הפרטי.
  • רשת VMware Engine: משאב רשת שמטפל בחיבורים לענן פרטי בהתאם למדיניות הרשת. לכם ולמשאבים שמחוברים לרשת הזו של VMware Engine יש גישה לענן הפרטי מתוך Google Cloud.

gcloud

כדי ליצור ענן פרטי רגיל באמצעות Google Cloud CLI, מבצעים את השלבים הבאים:

  1. אופציונלי: כדי לראות את האזורים והתחומים הזמינים בפרויקט, מריצים את הפקודה gcloud vmware locations list:

    gcloud vmware locations list \
        --project=PROJECT_ID
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט של הבקשה הזו
  2. כדי ליצור רשת לענן הפרטי, מריצים את הפקודה gcloud vmware networks create:

    gcloud vmware networks create NETWORK_NAME \
        --location=global \
        --type=STANDARD \
        --description="DESCRIPTION"

    מחליפים את מה שכתוב בשדות הבאים:

    • NETWORK_NAME: השם של הרשת הזו ב-VMware Engine
    • DESCRIPTION: תיאור של רשת VMware Engine

    הבקשה מחזירה מזהה פעולה.

  3. כדי לבדוק את הסטטוס של הפעולה, מריצים את הפקודה gcloud vmware operations describe: כשהפעולה מחזירה את הערך DONE, בודקים את התגובה כדי לראות אם הפעולה הצליחה:

    gcloud vmware operations describe OPERATION_ID \
        --location=global

    מחליפים את מה שכתוב בשדות הבאים:

    • OPERATION_ID: המזהה מהשלב הקודם
  4. כדי ליצור ענן פרטי עם שלושה צמתים, מריצים את הפקודה gcloud vmware private-clouds create:

    gcloud vmware private-clouds create PRIVATE_CLOUD_ID \
      --location=ZONE \
      --cluster=CLUSTER_ID \
      --node-type-config=type=NODE_TYPE,count=NODE_COUNT \
      --management-range=`IP_ADDRESS` \
      --vmware-engine-network=NETWORK_NAME
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PRIVATE_CLOUD_ID: השם של הענן הפרטי.
    • ZONE: האזור של הענן הפרטי.
    • CLUSTER_ID: השם של האשכול החדש בענן הפרטי הזה.
    • NODE_TYPE: סוג הצומת. מידע נוסף זמין במאמר סוגי צמתים.
    • NODE_COUNT: מספר הצמתים. מציינים ערך של שלוש או יותר.
    • IP_ADDRESS: כתובת ה-IP, לדוגמה 192.168.0.0/24, של הבקשה הזו.
    • NETWORK_NAME: השם של הרשת בענן הזה.

    הבקשה מחזירה מזהה פעולה שבו אפשר להשתמש כדי לבדוק את התקדמות הפעולה.

  5. כדי לבדוק את סטטוס הפעולה, מריצים את הפקודה gcloud vmware operations describe: כשהפעולה מחזירה את הערך DONE, בודקים את התגובה כדי לראות אם הפעולה הצליחה.

    gcloud vmware operations describe OPERATION_ID \
        --location=ZONE
    

    מחליפים את מה שכתוב בשדות הבאים:

    • OPERATION_ID: המזהה מהשלב הקודם
    • ZONE: האזור של הענן הפרטי.
  6. חיבור רשת VMware Engine ל-VPC באמצעות חיבורי VPC של רשתות שכנות.

  7. מריצים את הפקודות gcloud vmware private-clouds vcenter credentials describe ו-gcloud vmware private-clouds nsx credentials describe כדי לאחזר את פרטי הכניסה של vCenter ו-NSX.

    gcloud vmware private-clouds vcenter credentials describe \
        --private-cloud=PRIVATE_CLOUD_ID \
        --location=ZONE
    gcloud vmware private-clouds nsx credentials describe \
        --private-cloud=PRIVATE_CLOUD_ID \
        --location=ZONE

    מחליפים את מה שכתוב בשדות הבאים:

    • PRIVATE_CLOUD_ID: המזהה של הענן הפרטי
    • ZONE: האזור של הענן הפרטי

API

כדי ליצור ענן פרטי רגיל באמצעות VMware Engine API, צריך לבצע את השלבים הבאים:

  1. יוצרים רשת VMware Engine על ידי שליחת בקשת POST:

    curl -X POST -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/vmwareEngineNetworks?vmwareEngineNetworkId=NETWORK_NAME -d '{"type": "standard"}'
    

    מחליפים את מה שכתוב בשדות הבאים:

    • TOKEN: אסימון ההרשאה של הבקשה הזו
    • PROJECT_ID: הפרויקט של הבקשה הזו
    • NETWORK_NAME: שם הרשת של הענן הפרטי

    הבקשה מחזירה מזהה פעולה שבו אפשר להשתמש כדי לבדוק את התקדמות הפעולה.

  2. כדי לבדוק את סטטוס הפעולה, שולחים בקשת GET. כשהפעולה מחזירה DONE, בודקים את התגובה כדי לראות אם הפעולה הצליחה:

    curl -X GET -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/operations/OPERATION_ID
    

    מחליפים את OPERATION_ID במזהה מהשלב הקודם.

  3. יוצרים ענן פרטי עם שלושה צמתים על ידי שליחת בקשת POST:

    curl -X POST -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/privateClouds?privateCloudId=PRIVATE_CLOUD_ID -d "{
    "networkConfig":{
      "vmwareEngineNetwork":"projects/PROJECT_ID/locations/global/vmwareEngineNetworks/NETWORK_NAME",
      "managementCidr":"10.241.0.0/22"
       },
    "managementCluster":{
      "clusterId": "CLUSTER_ID",
      "nodeTypeConfigs": {
      "standard-72": {
        "nodeCount": NODE_COUNT
       }
      }
     }
    }"
    

    מחליפים את מה שכתוב בשדות הבאים:

    • TOKEN: אסימון ההרשאה של הבקשה הזו.
    • PROJECT_ID: מזהה הפרויקט של הבקשה הזו
    • ZONE: האזור של הענן הפרטי
    • PRIVATE_CLOUD_ID: המזהה של הענן הפרטי
    • NETWORK_NAME: שם הרשת של הענן הפרטי
    • CLUSTER_ID: המזהה של האשכול החדש בענן הפרטי הזה
    • NODE_COUNT: מספר הצמתים. מציינים ערך של שלוש או יותר.

    הבקשה מחזירה מזהה פעולה שבו אפשר להשתמש כדי לבדוק את התקדמות הפעולה.

  4. כדי לבדוק את סטטוס הפעולה, שולחים בקשת GET. כשהפעולה מחזירה DONE, בודקים את התגובה כדי לראות אם הפעולה הצליחה:

    curl -X GET -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/operations/OPERATION_ID
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט של הבקשה הזו
    • ZONE: האזור של הענן הפרטי
    • OPERATION_ID: המזהה מהשלב הקודם
  5. חיבור רשת VMware Engine ל-VPC באמצעות חיבורי VPC של רשתות שכנות.

  6. מאחזרים את פרטי הכניסה של vCenter ו-NSX באמצעות בקשות GET:

    curl -X GET -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" "https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/privateClouds/PRIVATE_CLOUD_ID:showVcenterCredentials"
    
    curl -X GET -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" "https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/privateClouds/PRIVATE_CLOUD_ID:showNsxCredentials"
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט של הבקשה הזו
    • ZONE: האזור של הענן הפרטי
    • PRIVATE_CLOUD_ID: המזהה של הענן הפרטי

Python

  1. ליצור רשת מדור קודם.

    from google.cloud import vmwareengine_v1
    
    TIMEOUT = 1200  # 20 minutes
    
    
    def create_legacy_network(
        project_id: str, region: str
    ) -> vmwareengine_v1.VmwareEngineNetwork:
        """
        Creates a new legacy network.
    
        Args:
            project_id: name of the project you want to use.
            region: name of the region you want to use. I.e. "us-central1"
    
        Returns:
            The newly created VmwareEngineNetwork object.
        """
        network = vmwareengine_v1.VmwareEngineNetwork()
        network.description = (
            "Legacy network created using vmwareengine_v1.VmwareEngineNetwork"
        )
        network.type_ = vmwareengine_v1.VmwareEngineNetwork.Type.LEGACY
    
        request = vmwareengine_v1.CreateVmwareEngineNetworkRequest()
        request.parent = f"projects/{project_id}/locations/{region}"
        request.vmware_engine_network_id = f"{region}-default"
        request.vmware_engine_network = network
    
        client = vmwareengine_v1.VmwareEngineClient()
        result = client.create_vmware_engine_network(request, timeout=TIMEOUT).result()
    
        return result
    
    
  2. יצירת ענן פרטי עם שלושה צמתים.

    from google.api_core import operation
    from google.cloud import vmwareengine_v1
    
    DEFAULT_MANAGEMENT_CIDR = "192.168.0.0/24"
    DEFAULT_NODE_COUNT = 3
    
    
    def create_private_cloud(
        project_id: str, zone: str, network_name: str, cloud_name: str, cluster_name: str
    ) -> operation.Operation:
        """
        Creates a new Private Cloud using VMware Engine.
    
        Creating a new Private Cloud is a long-running operation and it may take over an hour.
    
        Args:
            project_id: name of the project you want to use.
            zone: the zone you want to use, i.e. "us-central1-a"
            network_name: name of the VMWareNetwork to use for the new Private Cloud
            cloud_name: name of the new Private Cloud
            cluster_name: name for the new cluster in this Private Cloud
    
        Returns:
            An operation object representing the started operation. You can call its .result() method to wait for it to finish.
        """
        request = vmwareengine_v1.CreatePrivateCloudRequest()
        request.parent = f"projects/{project_id}/locations/{zone}"
        request.private_cloud_id = cloud_name
    
        request.private_cloud = vmwareengine_v1.PrivateCloud()
        request.private_cloud.management_cluster = (
            vmwareengine_v1.PrivateCloud.ManagementCluster()
        )
        request.private_cloud.management_cluster.cluster_id = cluster_name
    
        node_config = vmwareengine_v1.NodeTypeConfig()
        node_config.node_count = DEFAULT_NODE_COUNT
    
        # Currently standard-72 is the only supported node type.
        request.private_cloud.management_cluster.node_type_configs = {
            "standard-72": node_config
        }
    
        request.private_cloud.network_config = vmwareengine_v1.NetworkConfig()
        request.private_cloud.network_config.vmware_engine_network = network_name
        request.private_cloud.network_config.management_cidr = DEFAULT_MANAGEMENT_CIDR
    
        client = vmwareengine_v1.VmwareEngineClient()
        return client.create_private_cloud(request)
    
    

    הפונקציה create_private_cloud מחזירה אובייקט פעולות שאפשר להשתמש בו כדי לבדוק את התקדמות הפעולה.

  3. בודקים את הסטטוס של הפעולה. אחזור מידע עדכני על פעולה.

    from google.cloud import vmwareengine_v1
    from google.longrunning.operations_pb2 import GetOperationRequest
    
    
    def get_operation_by_name(operation_name: str) -> Operation:
        """
        Retrieve detailed information about an operation.
    
        Args:
            operation_name: name identifying an operation you want to check.
                Expected format: projects/{project_id}/locations/{region}/operations/{operation_id}
    
        Returns:
            Operation object with details.
        """
        client = vmwareengine_v1.VmwareEngineClient()
        request = GetOperationRequest()
        request.name = operation_name
        return client.get_operation(request)
    
    
    def get_operation(project_id: str, region: str, operation_id: str) -> Operation:
        """
        Retrieve detailed information about an operation.
    
        Args:
            project_id: name of the project running the operation.
            region: name of the region in which the operation is running.
            operation_id: identifier of the operation.
    
        Returns:
            Operation object with details.
        """
        return get_operation_by_name(
            f"projects/{project_id}/locations/{region}/operations/{operation_id}"
        )
    
    

    אפשר להשתמש בשיטת החברים .result() של אובייקט הפעולה כדי להמתין לסיום הפעולה.

  4. חיבור רשת VMware Engine ל-VPC באמצעות חיבורי VPC של רשתות שכנות.

  5. מאחזרים את פרטי הכניסה ל-vCenter ול-NSX.

    from google.cloud import vmwareengine_v1
    
    
    def get_vcenter_credentials(
        project_id: str, zone: str, private_cloud_name: str
    ) -> vmwareengine_v1.Credentials:
        """
        Retrieves VCenter credentials for a Private Cloud.
    
        Args:
            project_id: name of the project hosting the private cloud.
            zone: name of the zone hosting the private cloud.
            private_cloud_name: name of the private cloud.
    
        Returns:
            A Credentials object.
        """
        client = vmwareengine_v1.VmwareEngineClient()
        credentials = client.show_vcenter_credentials(
            private_cloud=f"projects/{project_id}/locations/{zone}/privateClouds/{private_cloud_name}"
        )
        return credentials
    
    
    from google.cloud import vmwareengine_v1
    
    
    def get_nsx_credentials(
        project_id: str, zone: str, private_cloud_name: str
    ) -> vmwareengine_v1.Credentials:
        """
        Retrieves NSX credentials for a Private Cloud.
    
        Args:
            project_id: name of the project hosting the private cloud.
            zone: name of the zone hosting the private cloud.
            private_cloud_name: name of the private cloud.
    
        Returns:
            A Credentials object.
        """
        client = vmwareengine_v1.VmwareEngineClient()
        credentials = client.show_nsx_credentials(
            private_cloud=f"projects/{project_id}/locations/{zone}/privateClouds/{private_cloud_name}"
        )
        return credentials
    
    

בזמן ש-VMware Engine יוצר את הענן הפרטי החדש, הוא פורס מספר רכיבי VMware ומחלק את טווח כתובות ה-IP שסופק לרשתות משנה. יצירת ענן פרטי יכולה להימשך בין 30 דקות לשעתיים. אחרי שההקצאה תסתיים, תקבלו אימייל.

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