הגדרת מחברים בפרויקט המארח של VPC משותף

אם הארגון שלכם משתמש ב-VPC משותף, אתם יכולים להגדיר מחבר Serverless VPC Access בפרויקט השירות או בפרויקט המארח. במדריך הזה מוסבר איך להגדיר מחבר בפרויקט המארח.

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

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

  1. בודקים את התפקידים בניהול הזהויות והרשאות הגישה (IAM) בחשבון שבו אתם משתמשים כרגע. לחשבון הפעיל צריכים להיות התפקידים הבאים בפרויקט המארח:

  2. בוחרים את פרויקט המארח בסביבה המועדפת.

המסוף

  1. עוברים אל מרכז הבקרה של מסוף Google Cloud .

    כניסה ללוח הבקרה של המסוף Google Cloud

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

gcloud

מגדירים את פרויקט ברירת המחדל ב-CLI של gcloud לפרויקט המארח על ידי הרצת הפקודה הבאה במסוף:

gcloud config set project HOST_PROJECT_ID

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

  • HOST_PROJECT_ID: המזהה של פרויקט המארח של ה-VPC המשותף

יצירת מחבר של חיבור לרשת (VPC) מאפליקציית serverless

כדי לשלוח בקשות לרשת ה-VPC ולקבל את התשובות המתאימות, צריך ליצור מחבר של Serverless VPC Access. אפשר ליצור מחבר באמצעות מסוף Google Cloud , Google Cloud CLI או Terraform:

המסוף

  1. מפעילים בפרויקט את Serverless VPC Access API.

    הפעלת ה-API

  2. עוברים לדף הסקירה הכללית של חיבור לרשת (VPC) מאפליקציית serverless.

    עוברים אל חיבור לרשת (VPC) מאפליקציית serverless

  3. לוחצים על יצירת מחבר.

  4. בשדה Name, מזינים שם למחבר. השם צריך להיות בהתאם למוסכמות למתן שמות ב-Compute Engine, ואורכו צריך להיות פחות מ-21 תווים. מקפים (-) נספרים כשני תווים.

  5. בשדה אזור, בוחרים אזור למחבר. האזור הזה צריך להיות זהה לאזור של השירות ללא שרת.

    אם השירות שלכם נמצא באזור us-central או europe-west, צריך להשתמש ב-us-central1 או ב-europe-west1.

  6. בשדה רשת, בוחרים את רשת ה-VPC שאליה רוצים לצרף את המחבר.

  7. לוחצים על התפריט הנפתח רשת משנה:

    בוחרים רשת משנה /28 שלא נמצאת בשימוש.

    • רשתות המשנה צריכות לשמש אך ורק את המחבר. אי אפשר להשתמש בהם במשאבים אחרים כמו מכונות וירטואליות, Private Service Connect או מאזני עומסים.
    • כדי לוודא שרשת המשנה לא משמשת ל-Private Service Connect או ל-Cloud Load Balancing, מריצים את הפקודה הבאה ב-CLI של gcloud כדי לבדוק שרשת המשנה purpose היא PRIVATE:
      gcloud compute networks subnets describe SUBNET_NAME
      
      מחליפים את SUBNET_NAME בשם של רשת המשנה.
  8. (אופציונלי) כדי להגדיר אפשרויות שינוי גודל לשליטה נוספת במחבר, לוחצים על הצגת הגדרות שינוי גודל כדי להציג את טופס שינוי הגודל.

    1. מגדירים את מספר המכונות המינימלי והמקסימלי למחבר, או משתמשים בערכי ברירת המחדל: 2 (מינימום) ו-10 (מקסימום). המחבר מתרחב עד למקסימום שצוין ככל שהתנועה גדלה, אבל הוא לא מצטמצם כשהתנועה פוחתת. הערכים צריכים להיות בין 2 ל-10, והערך של MIN צריך להיות קטן מהערך של MAX.
    2. בתפריט הנפתח Instance Type, בוחרים את סוג המכונה שבה ישתמש המחבר, או משתמשים בברירת המחדל e2-micro. שימו לב לסרגל הצד של העלויות בצד שמאל כשבוחרים את סוג האירוע, שבו מוצגות הערכות של רוחב הפס והעלויות.
  9. לוחצים על יצירה.

  10. כשמחבר מוכן לשימוש, יופיע סימן וי ירוק ליד השם שלו.

gcloud

  1. מעדכנים את הרכיבים של gcloud לגרסה האחרונה:

    gcloud components update
    
  2. מפעילים בפרויקט את Serverless VPC Access API:

    gcloud services enable vpcaccess.googleapis.com
    
  3. יוצרים מחבר של חיבור לרשת (VPC) מאפליקציית serverless:

    gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
    --region=REGION \
    --subnet=SUBNET \
    --subnet-project=HOST_PROJECT_ID \
    # Optional: specify minimum and maximum instance values between 2 and 10, default is 2 min, 10 max.
    --min-instances=MIN \
    --max-instances=MAX \
    # Optional: specify machine type, default is e2-micro
    --machine-type=MACHINE_TYPE

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

    • CONNECTOR_NAME: שם לחיבור. השם צריך לעמוד במוסכמות למתן שמות ב-Compute Engine, ואורכו צריך להיות פחות מ-21 תווים. מקפים (-) נספרים כשני תווים.
    • REGION: אזור למחבר. האזור הזה צריך להיות זהה לאזור של השירות בלי שרת (serverless). אם השירות נמצא באזור us-central או europe-west, צריך להשתמש ב-us-central1 או ב-europe-west1.
    • SUBNET: השם של תת-רשת /28 שלא נמצאת בשימוש.
      • רשתות המשנה צריכות לשמש אך ורק את המחבר. אי אפשר להשתמש בהם במשאבים אחרים כמו מכונות וירטואליות, Private Service Connect או מאזני עומסים.
      • כדי לוודא שרשת המשנה לא משמשת ל-Private Service Connect או ל-Cloud Load Balancing, מריצים את הפקודה הבאה ב-CLI של gcloud כדי לבדוק שרשת המשנה purpose היא PRIVATE:
        gcloud compute networks subnets describe SUBNET_NAME
        
        מחליפים את מה שכתוב בשדות הבאים:
        • SUBNET_NAME: השם של תת-הרשת
    • HOST_PROJECT_ID: המזהה של פרויקט המארח
    • MIN: מספר המכונות המינימלי שייעשה בהן שימוש עבור המחבר. צריך להשתמש במספר שלם בין 2 ל-9. ברירת המחדל היא 2. מידע נוסף על שינוי גודל המחבר זמין במאמר תפוקה ושינוי גודל.
    • MAX: המספר המקסימלי של מופעים לשימוש במחבר. צריך להשתמש במספר שלם בין 3 ל-10. ברירת המחדל היא 10. אם התנועה דורשת זאת, המחבר מתרחב ל-[MAX] מופעים, אבל לא מצטמצם. מידע על שינוי גודל המחבר זמין במאמר קצב העברת נתונים ושינוי גודל.
    • MACHINE_TYPE: f1-micro,‏ e2-micro או e2-standard-4. מידע על קצב העברת הנתונים של המחבר, כולל סוג המכונה והתאמת קנה מידה, זמין במאמר קצב העברת נתונים והתאמת קנה מידה.

    פרטים נוספים וארגומנטים אופציונליים מופיעים במאמר gcloud.

  4. לפני שמשתמשים במחבר, מוודאים שהוא במצב READY:

    gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \
    --region=REGION

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

    • CONNECTOR_NAME: השם של מחבר הנתונים. זהו השם שציינתם בשלב הקודם
    • REGION: האזור של המחבר. זהו האזור שציינתם בשלב הקודם

    הפלט צריך לכלול את השורה state: READY.

Terraform

אפשר להשתמש במשאב של Terraform כדי להפעיל את vpcaccess.googleapis.com API.

resource "google_project_service" "vpcaccess-api" {
  project = var.project_id # Replace this with your project ID in quotes
  service = "vpcaccess.googleapis.com"
}

אתם יכולים להשתמש במודולים של Terraform כדי ליצור רשת VPC ותת-רשת, ואז ליצור את המחבר.

module "test-vpc-module" {
  source       = "terraform-google-modules/network/google"
  version      = "~> 16.0"
  project_id   = var.project_id # Replace this with your project ID in quotes
  network_name = "my-serverless-network"
  mtu          = 1460

  subnets = [
    {
      subnet_name   = "serverless-subnet"
      subnet_ip     = "10.10.10.0/28"
      subnet_region = "us-central1"
    }
  ]
}

module "serverless-connector" {
  source     = "terraform-google-modules/network/google//modules/vpc-serverless-connector-beta"
  version    = "~> 16.0"
  project_id = var.project_id
  vpc_connectors = [{
    name        = "central-serverless"
    region      = "us-central1"
    subnet_name = module.test-vpc-module.subnets["us-central1/serverless-subnet"].name
    # host_project_id = var.host_project_id # Specify a host_project_id for shared VPC
    machine_type  = "e2-standard-4"
    min_instances = 2
    max_instances = 7
    }
    # Uncomment to specify an ip_cidr_range
    #   , {
    #     name          = "central-serverless2"
    #     region        = "us-central1"
    #     network       = module.test-vpc-module.network_name
    #     ip_cidr_range = "10.10.11.0/28"
    #     subnet_name   = null
    #     machine_type  = "e2-standard-4"
    #     min_instances = 2
    #   max_instances = 7 }
  ]
  depends_on = [
    google_project_service.vpcaccess-api
  ]
}

מתן גישה למחבר

כדי לספק גישה למחבר, צריך להעניק את תפקיד ה-IAM‏ Serverless VPC Access User (משתמש בחיבור לרשת (VPC) מאפליקציית serverless) בפרויקט המארח לחשבון המשתמש שמבצע את הפריסה של שירות App Engine.

המסוף

  1. פותחים את דף IAM.

    כניסה לדף IAM

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

  3. לוחצים על הוספה.

  4. בשדה New principals, מוסיפים את חשבון המשתמש שפורס את שירות App Engine.

  5. בשדה תפקיד, בוחרים באפשרות משתמש של חיבור לרשת (VPC) מאפליקציית serverless.

  6. לוחצים על Save.

gcloud

מריצים את הפקודה הבאה בטרמינל:

gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
--member=PRINCIPAL \
--role=roles/vpcaccess.user

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

  • HOST_PROJECT_ID: המזהה של פרויקט המארח של ה-VPC המשותף
  • PRINCIPAL: חשבון המשתמש שפרס את שירות App Engine. מידע נוסף על הדגל --member

הגדרת המחבר כך שיהיה ניתן לגלות אותו

כדי שהמחברים יופיעו כשמשתמשים בעלי הרשאות צופים במחברים הזמינים במסוף Google Cloud או מהטרמינל שלהם, צריך להוסיף תפקידי IAM למשתמשים בעלי הרשאות שפורסים שירותי App Engine.

הקצאת תפקידי IAM בפרויקט המארח

בפרויקט המארח, מעניקים לחשבונות משתמש שמבצעים פריסה של שירותי App Engine את התפקיד Serverless VPC Access Viewer (vpcaccess.viewer).

המסוף

  1. פותחים את דף IAM.

    כניסה לדף IAM

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

  3. לוחצים על הוספה.

  4. בשדה New principals, מזינים את כתובת האימייל של חשבון המשתמש שצריכה להיות לו אפשרות לראות את המחבר מפרויקט השירות. אפשר להזין כמה כתובות אימייל בשדה הזה.

  5. בשדה Role (תפקיד), בוחרים באפשרות Serverless VPC Access Viewer (בעל הרשאת צפייה בחיבור לרשת (VPC) מאפליקציית serverless).

  6. לוחצים על Save.

gcloud

מריצים את הפקודה הבאה בטרמינל:

gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
--member=PRINCIPAL \
--role=roles/vpcaccess.viewer

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

  • HOST_PROJECT_ID: המזהה של פרויקט המארח של ה-VPC המשותף
  • PRINCIPAL: חשבון המשתמש שפורס שירותי App Engine. מידע נוסף על הדגל --member

הקצאת תפקידי IAM בפרויקט השירות

בפרויקט השירות, מעניקים לגורמים המרכזיים שמבצעים פריסה של שירותי App Engine את התפקיד צפייה ברשת Compute‏ (compute.networkViewer).

המסוף

  1. פותחים את דף IAM.

    כניסה לדף IAM

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

  3. לוחצים על הוספה.

  4. בשדה New principals, מזינים את כתובת האימייל של חשבון המשתמש שצריכה להיות לו אפשרות לראות את המחבר מפרויקט השירות. אפשר להזין כמה כתובות אימייל בשדה הזה.

  5. בשדה Role, בוחרים באפשרות Compute Network Viewer.

  6. לוחצים על Save.

gcloud

מריצים את הפקודה הבאה בטרמינל:

gcloud projects add-iam-policy-binding SERVICE_PROJECT_ID \
--member=PRINCIPAL \
--role=roles/compute.networkViewer

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

הגדרת השירות לשימוש במחבר

לכל שירות App Engine שנדרשת לו גישה ל-VPC המשותף, צריך לציין את המחבר של השירות. בשלבים הבאים מוסבר איך להגדיר את השירות כך שישתמש במחבר.

  1. מוסיפים את vpc_access_connector לקובץ app.yaml של השירות:

    vpc_access_connector:
    name: projects/HOST_PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

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

    • HOST_PROJECT_ID: המזהה של פרויקט המארח של ה-VPC המשותף
    • REGION: האזור של המחבר
    • CONNECTOR_NAME: השם של המחבר
  2. פורסים את השירות:

    gcloud app deploy

אחרי הפריסה, השירות יכול לשלוח בקשות לרשת ה-VPC המשותפת ולקבל את התשובות המתאימות.

השלבים הבאים