קישוריות לרשת ב-Google Cloud VPC

בדף הזה מוסבר איך להגדיר קישוריות פרטית מ-Integration Connectors לשירות לקצה העורפי, כמו MySQL,‏ Postgres ו-SQL Server, שמארח ב-Google Cloud VPC.

בדף הזה אנחנו מניחים שאתם מכירים את המושגים הבאים:

קישוריות פרטית ל-VPC ב-Google Cloud יכולה להיות אחת מהאפשרויות הבאות:

  • שירות ה-Backend ונקודת החיבור לשירות PSC נמצאים באותו פרויקט Google Cloud או באותו VPC.
  • שירות לקצה העורפי ונקודת החיבור לשירות PSC נמצאים בפרויקטים שונים ב-Google Cloud או ברשתות VPC שונות.

לתשומת ליבכם

כשיוצרים קובץ מצורף לשירות PSC, חשוב לשים לב לנקודות העיקריות הבאות:

  • החיבור לשירות PSC ומאזן העומסים נוצרים בתתי-רשתות שונות באותו VPC. ובאופן ספציפי, קובץ ה-Service Attachment תמיד נוצר בתת-רשת NAT.
  • התנועה ממאזן העומסים ומבקשה לבדיקת תקינות צריכה להישלח לאותה יציאה.
  • מגדירים את כללי חומת האש כדי לאפשר את זרימת התנועה.

    כללי תעבורה נכנסת

    תעבורת נתונים מרשת המשנה של צירוף ה-PSC צריכה להגיע לשירות לקצה העורפי.

    כללים לתעבורת נתונים יוצאת (egress)

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

  • כל הרכיבים של Google Cloud, כמו קובץ השירות של PSC ומאזן העומסים, צריכים להיות באותו אזור.

קישוריות פרטית לשירות בק-אנד ב-VPC ב-Google Cloud

בקטע הזה מוסבר איך ליצור קישוריות פרטית כשגם שירות הקצה העורפי וגם קובץ ה-PSC נמצאים באותו פרויקט ב-Google Cloud.

בתמונה הבאה מוצגת הגדרת הקישוריות לרשת פרטית מ-Integration Connectors לשירות שמארח ב-VPC ב-Google Cloud:

כדי להגדיר קישוריות פרטית לשירות קצה עורפי ב-VPC ב-Google Cloud, צריך לבצע את השלבים הבאים:

יצירת קובץ מצורף של שירות PSC

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

  1. יוצרים בקשה לבדיקת תקינות ומאפשרים את התעבורה מהבקשה.
    1. יוצרים את בקשת בדיקת התקינות.
      gcloud compute health-checks create tcp HEALTH_CHECK_NAME --port BACKEND_SERVER_PORT --region=REGION

      בפקודה הזו, מגדירים את BACKEND_SERVER_PORT ל-3306, שהיא יציאת ברירת המחדל שבה שרת MySQL פועל.

    2. יוצרים כלל של חומת אש שמאפשר תעבורת נתונים מהבדיקה.
      gcloud compute firewall-rules create VPC_NETWORK-allow-health-check --direction=INGRESS --priority=1000 --network=VPC_NETWORK --allow=tcp:BACKEND_SERVER_PORT --source-ranges=35.191.0.0/16,130.211.0.0/22
  2. יוצרים מאזן עומסים פנימי ברמה 4 ומאפשרים תנועה ממאזן העומסים.
    1. יוצרים שירות לקצה העורפי.
      gcloud compute backend-services create BACKEND_SERVICE --load-balancing-scheme=internal --protocol=tcp --health-checks=HEALTH_CHECK_NAME --health-checks-region=REGION 
    2. הוספת קבוצת מכונות לשירות לקצה העורפי.
      gcloud compute backend-services add-backend BACKEND_SERVICE --instance-group=INSTANCE_GROUP_NAME --instance-group-zone=ZONE
    3. יוצרים כלל העברה.
      gcloud compute forwarding-rules create FORWARDING_RULE_NAME --load-balancing-scheme=internal --network=VPC_NETWORK --subnet=SUBNET_NAME_2 --ip-protocol=TCP --ports=BACKEND_SERVER_PORT --backend-service=BACKEND_SERVICE --backend-service-region=REGION
    4. יוצרים כלל חומת אש שמאפשר תעבורה פנימית ממאזן העומסים לקבוצת המופעים.
      gcloud compute firewall-rules create VPC_NETWORK-allow-internal --direction=INGRESS --priority=1000 --network=VPC_NETWORK --action=ALLOW --rules=all --source-ranges=SUBNET_RANGE_2
  3. יוצרים את קובץ השירות המצורף.
    1. יוצרים רשת משנה ל-NAT של PSC. הפקודה הבאה יוצרת רשת משנה בשם psc-nat-subnet1 והייעוד שלה הוא PRIVATE_SERVICE_CONNECT.
      gcloud compute networks subnets create psc-nat-subnet1 \
                --network=VPC_NETWORK --range=SUBNET_RANGE_1 \
                --purpose=PRIVATE_SERVICE_CONNECT
    2. יוצרים כלל חומת אש שמאפשר תעבורת נתונים מ-PSC NAT למאזן העומסים.
      gcloud compute network-firewall-policies rules create PRIORITY --firewall-policy FIREWALL_POLICY_NAME_SA \
          --direction=INGRESS  --network=VPC_NETWORK \
          --action=allow --allow=tcp:BACKEND_SERVER_PORT --src-ip-ranges=SUBNET_RANGE_1
    3. יצירת קובץ מצורף לשירות עם אישור מפורש.
      gcloud compute service-attachments create SERVICE_ATTACHMENT_NAME --producer-forwarding-rule=FORWARDING_RULE_NAME  --connection-preference=ACCEPT_MANUAL --consumer-accept-list=SERVICE_DIRECTORY_PROJECT_ID=LIMIT --nat-subnets=psc-nat-subnet1

      בפקודה הזו, LIMIT היא מגבלת החיבורים לפרויקט. מגבלת החיבור היא מספר נקודות הקצה (endpoints) של צרכן PSC שיכולות להתחבר לשירות הזה. כדי לקבל את SERVICE_DIRECTORY_PROJECT_ID, מבצעים את השלב הבא:

      • אפשר ליצור את קובץ השירות של PSC כך שהוא יקבל בקשות רק מהפרויקטים שצוינו ב-Google Cloud. עם זאת, כדי לעשות את זה, צריך את מזהה הפרויקט של ספריית השירותים שמשויכת לפרויקט בענן של Google. כדי לקבל את מזהה הפרויקט של ספריית השירותים, אפשר להשתמש ב-List Connections API כמו בדוגמה הבאה.

        תחביר

        curl -X GET \
            -H "authorization: Bearer $(gcloud auth print-access-token)" \
            -H "Content-Type: application/json" \
            "https://connectors.googleapis.com/v1/projects/CONNECTORS_PROJECT_ID/locations/-/connections"

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

        • CONNECTORS_PROJECT_ID: המזהה של הפרויקט בענן של Google שבו יצרתם את החיבור.

        דוגמה

        בדוגמה הזו מקבלים את מזהה הפרויקט של ספריית השירותים עבור פרויקט בענן של Google Cloud‏ connectors-test.

        curl -X GET \
            -H "authorization: Bearer $(gcloud auth print-access-token)" \
            -H "Content-Type: application/json" \
            "https://connectors.googleapis.com/v1/projects/connectors-test/locations/-/connections"

        הרצת הפקודה הזו במסוף מציגה פלט דומה לזה:

        .....
        {
          "connections": [
            {
              "name": "projects/connectors-test/locations/asia-northeast1/connections/big-query-iam-invalid-sa",
              "createTime": "2022-10-07T09:02:31.905048520Z",
              "updateTime": "2022-10-07T09:22:39.993778690Z",
              "connectorVersion": "projects/connectors-test/locations/global/providers/gcp/connectors/bigquery/versions/1",
              "status": {
                "state": "ACTIVE"
              },
              "configVariables": [
                {
                  "key": "project_id",
                  "stringValue": "connectors-test"
                },
                {
                  "key": "dataset_id",
                  "stringValue": "testDataset"
                }
              ],
              "authConfig": {},
              "serviceAccount": "564332356444-compute@developer.gserviceaccount.com",
              "serviceDirectory": "projects/abcdefghijk-tp/locations/asia-northeast1/namespaces/connectors/services/runtime",
              "nodeConfig": {
                "minNodeCount": 2,
                "maxNodeCount": 50
              }
            },
        ....
        

        בפלט לדוגמה, מזהה הפרויקט של ספריית השירותים בפרויקט Google Cloud‏ connectors-test הוא abcdefghijk-tp.

אחרי שיוצרים קובץ מצורף של שירות PSC, יוצרים קובץ מצורף של נקודת קצה כדי להשתמש בקובץ המצורף של שירות PSC. מידע נוסף זמין במאמר יצירת קובץ מצורף לנקודת קצה.

קישוריות פרטית לפרויקטים שונים ב-Google Cloud

בקטע הזה נסביר איך ליצור קישוריות פרטית כששירות לקצה העורפי וצירוף שירות ה-PSC נמצאים בפרויקטים שונים ב-Google Cloud או ברשתות VPC שונות.

בתמונה הבאה מוצגת הגדרת קישוריות לרשת פרטית שבה צירוף שירות ה-PSC ושירות הקצה העורפי נמצאים בפרויקטים שונים ב-Google Cloud:

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

הגדרת קישוריות פרטית

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

  1. יוצרים מאזן עומסים. אם כבר יש לכם מאזן עומסים, אפשר לדלג על השלב הזה.
    1. יוצרים NEG אזורי. מידע נוסף זמין במאמר בנושא יצירת NEG אזורי.
    2. מוסיפים את ה-NEG האזורי כקצה עורפי ויוצרים את הכללים הבאים:
      1. יוצרים כלל העברה.
        gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
        --load-balancing-scheme=internal --network=VPC_NETWORK --subnet=SUBNET_NAME_2 \
        --ip-protocol=TCP --ports=BACKEND_SERVER_PORT --backend-service=BACKEND_SERVICE \
        --backend-service-region=REGION
      2. יוצרים כלל חומת אש שמאפשר תעבורה פנימית ממאזן העומסים לקבוצת המופעים.
        gcloud compute firewall-rules create FIREWALL_RULE_NAME_INTERNAL \
        --direction=INGRESS --priority=1000 --network=VPC_NETWORK \
        --action=ALLOW --rules=all --source-ranges=SUBNET_RANGE_2
  2. יוצרים את קובץ השירות המצורף.
    1. יוצרים רשת משנה ל-NAT של PSC. הפקודה הבאה יוצרת רשת משנה בשם psc-nat-subnet1 והייעוד שלה הוא PRIVATE_SERVICE_CONNECT.
      gcloud compute networks subnets create psc-nat-subnet1 \
                --network=VPC_NETWORK --range=SUBNET_RANGE_1 \
                --purpose=PRIVATE_SERVICE_CONNECT
    2. יוצרים כלל חומת אש שמאפשר תעבורת נתונים מ-PSC NAT למאזן העומסים.
      gcloud compute network-firewall-policies rules create PRIORITY --firewall-policy FIREWALL_POLICY_NAME_SA \
          --direction=INGRESS  --network=VPC_NETWORK \
          --action=allow --allow=tcp:BACKEND_SERVER_PORT --src-ip-ranges=SUBNET_RANGE_1
    3. יצירת קובץ מצורף לשירות עם אישור מפורש.
      gcloud compute service-attachments create SERVICE_ATTACHMENT_NAME --producer-forwarding-rule=FORWARDING_RULE_NAME  --connection-preference=ACCEPT_MANUAL --consumer-accept-list=SERVICE_DIRECTORY_PROJECT_ID=LIMIT --nat-subnets=psc-nat-subnet1

      בפקודה הזו, LIMIT היא מגבלת החיבורים לפרויקט. מגבלת החיבור היא מספר נקודות הקצה (endpoints) של צרכן PSC שיכולות להתחבר לשירות הזה. כדי לקבל את SERVICE_DIRECTORY_PROJECT_ID, מבצעים את השלב הבא:

      • אפשר ליצור את קובץ השירות של PSC כך שהוא יקבל בקשות רק מהפרויקטים שצוינו ב-Google Cloud. עם זאת, כדי לעשות את זה, צריך את מזהה הפרויקט של ספריית השירותים שמשויכת לפרויקט בענן של Google. כדי לקבל את מזהה הפרויקט של ספריית השירותים, אפשר להשתמש ב-List Connections API כמו בדוגמה הבאה.

        תחביר

        curl -X GET \
            -H "authorization: Bearer $(gcloud auth print-access-token)" \
            -H "Content-Type: application/json" \
            "https://connectors.googleapis.com/v1/projects/CONNECTORS_PROJECT_ID/locations/-/connections"

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

        • CONNECTORS_PROJECT_ID: המזהה של הפרויקט בענן של Google שבו יצרתם את החיבור.

        דוגמה

        בדוגמה הזו מקבלים את מזהה הפרויקט של ספריית השירותים עבור פרויקט בענן של Google Cloud‏ connectors-test.

        curl -X GET \
            -H "authorization: Bearer $(gcloud auth print-access-token)" \
            -H "Content-Type: application/json" \
            "https://connectors.googleapis.com/v1/projects/connectors-test/locations/-/connections"

        הרצת הפקודה הזו במסוף מציגה פלט דומה לזה:

        .....
        {
          "connections": [
            {
              "name": "projects/connectors-test/locations/asia-northeast1/connections/big-query-iam-invalid-sa",
              "createTime": "2022-10-07T09:02:31.905048520Z",
              "updateTime": "2022-10-07T09:22:39.993778690Z",
              "connectorVersion": "projects/connectors-test/locations/global/providers/gcp/connectors/bigquery/versions/1",
              "status": {
                "state": "ACTIVE"
              },
              "configVariables": [
                {
                  "key": "project_id",
                  "stringValue": "connectors-test"
                },
                {
                  "key": "dataset_id",
                  "stringValue": "testDataset"
                }
              ],
              "authConfig": {},
              "serviceAccount": "564332356444-compute@developer.gserviceaccount.com",
              "serviceDirectory": "projects/abcdefghijk-tp/locations/asia-northeast1/namespaces/connectors/services/runtime",
              "nodeConfig": {
                "minNodeCount": 2,
                "maxNodeCount": 50
              }
            },
        ....
        

        בפלט לדוגמה, מזהה הפרויקט של ספריית השירותים בפרויקט Google Cloud‏ connectors-test הוא abcdefghijk-tp.

הוספת פרויקט Integration Connectors לרשימת ההיתרים בקובץ מצורף של שירות

אפשר ליצור את קובץ השירות של PSC כך שהוא יקבל בקשות רק מהפרויקטים שצוינו ב-Google Cloud. עם זאת, כדי לעשות את זה, צריך את מזהה הפרויקט של ספריית השירותים שמשויכת לפרויקט בענן של Google. כדי לקבל את מזהה הפרויקט של ספריית השירותים, אפשר להשתמש ב-List Connections API כמו בדוגמה הבאה.

תחביר

curl -X GET \
    -H "authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://connectors.googleapis.com/v1/projects/CONNECTORS_PROJECT_ID/locations/-/connections"

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

  • CONNECTORS_PROJECT_ID: המזהה של הפרויקט בענן של Google שבו יצרתם את החיבור.

דוגמה

בדוגמה הזו מקבלים את מזהה הפרויקט של ספריית השירותים עבור פרויקט בענן של Google Cloud‏ connectors-test.

curl -X GET \
    -H "authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://connectors.googleapis.com/v1/projects/connectors-test/locations/-/connections"

הרצת הפקודה הזו במסוף מציגה פלט דומה לזה:

.....
{
  "connections": [
    {
      "name": "projects/connectors-test/locations/asia-northeast1/connections/big-query-iam-invalid-sa",
      "createTime": "2022-10-07T09:02:31.905048520Z",
      "updateTime": "2022-10-07T09:22:39.993778690Z",
      "connectorVersion": "projects/connectors-test/locations/global/providers/gcp/connectors/bigquery/versions/1",
      "status": {
        "state": "ACTIVE"
      },
      "configVariables": [
        {
          "key": "project_id",
          "stringValue": "connectors-test"
        },
        {
          "key": "dataset_id",
          "stringValue": "testDataset"
        }
      ],
      "authConfig": {},
      "serviceAccount": "564332356444-compute@developer.gserviceaccount.com",
      "serviceDirectory": "projects/abcdefghijk-tp/locations/asia-northeast1/namespaces/connectors/services/runtime",
      "nodeConfig": {
        "minNodeCount": 2,
        "maxNodeCount": 50
      }
    },
....

בפלט לדוגמה, מזהה הפרויקט של ספריית השירותים בפרויקט Google Cloud‏ connectors-test הוא abcdefghijk-tp.

אחרי שמוסיפים את פרויקט Integration Connectors לרשימת ההיתרים בצירוף שירות PSC, יוצרים צירוף של נקודת קצה כדי להשתמש בצירוף שירות PSC. מידע נוסף זמין במאמר יצירת קובץ מצורף לנקודת קצה.

יצירת צירוף של נקודת קצה

צירוף נקודת קצה ככתובת IP

הוראות ליצירת קובץ מצורף לנקודת קצה ככתובת IP זמינות במאמר יצירת קובץ מצורף לנקודת קצה ככתובת IP.

צירוף נקודת קצה כשם מארח

במקרים מסוימים, כמו קצה עורפי עם TLS מופעל, היעד מחייב שימוש בשמות מארחים במקום בכתובות IP פרטיות כדי לבצע אימות TLS. במקרים שבהם נעשה שימוש ב-DNS פרטי במקום בכתובת IP ליעד המארח, בנוסף ליצירת צירוף של נקודת קצה ככתובת IP, צריך גם להגדיר אזורים מנוהלים. הוראות ליצירת קובץ מצורף לנקודת קצה כשם מארח זמינות במאמר יצירת קובץ מצורף לנקודת קצה כשם מארח.

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

הגדרת חיבור לשימוש בקובץ המצורף של נקודת הקצה

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

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

טיפים לפתרון בעיות

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

  • כדי לוודא שהחיבור של נקודת הקצה מוגדר בצורה נכונה ושהחיבור ל-PSC נוצר, בודקים את סטטוס החיבור. מידע נוסף זמין במאמר אימות החיבור של קובץ מצורף לנקודת קצה.
  • מוודאים שההגדרה הבאה נקבעה לכללים של חומת האש:
    • צריך לאפשר לתעבורת נתונים מרשת המשנה של צירוף ה-PSC להגיע לשירות לקצה העורפי.
    • מאזן העומסים צריך להיות מסוגל לשלוח תנועה לשירות הקצה העורפי.
      • מאזני עומסים מסוג Pass-through (L4 TCP/UDP ILB) בקשות מכתובות ה-NAT של קובץ ה-PSC Service Attachment צריכות להגיע לקצה העורפי. כתובות ה-IP של ה-NAT מוקצות באופן אוטומטי מטווח תת-הרשת של ה-NAT ב-PSC, ולכן צריך לאפשר את כל טווח כתובות ה-IP של תת-הרשת של ה-NAT שבה נמצאת נקודת החיבור לשירות. כדי למצוא את רשת המשנה של PSC NAT, משתמשים בפקודה הבאה:
        gcloud compute networks subnets list --project=PROJECT_ID --region=REGION --filter="purpose=PRIVATE_SERVICE_CONNECT"
      • מאזני עומסים מבוססי-proxy/HTTP(s) (מאזן עומסים פנימי מסוג L4 proxy, מאזן עומסים פנימי מסוג L7) בקשות ממאזן עומסים של proxy מגיעות רק מתת-הרשת של ה-proxy באזור. לכן, צריך להגדיר את כללי חומת האש כך שיאפשרו לבקשות מתת-רשתות של שרת proxy בלבד להגיע לשרת העורפי (backend) שלכם. כדי למצוא את רשת המשנה של ה-proxy בלבד, משתמשים בפקודה הבאה:
        gcloud compute networks subnets list --project=PROJECT_ID --region=REGION --filter="purpose=REGIONAL_MANAGED_PROXY"
      • מידע על פתרון בעיות שקשורות למאזן עומסים זמין במאמר פתרון בעיות שקשורות למאזני עומסים פנימיים של אפליקציות.

      • הבקשה לבדיקת תקינות (probe) צריכה להיות מסוגלת לגשת למערכת הבק-אנד שלכם. למנגנוני בדיקת תקינות ב-Google Cloud יש טווח קבוע של כתובות IP ‏ (35.191.0.0/16, ‏ 130.211.0.0/22). לכן, צריך לאפשר לכתובות ה-IP האלה לשלוח תנועה לשרת העורפי.
    • אפשר להשתמש בבדיקת הקישוריות של Google Cloud כדי לזהות פערים בתצורת הרשת. מידע נוסף זמין במאמר בנושא יצירה והרצה של בדיקות קישוריות.