השירותים היוצאים בסביבה הרגילה של App Engine, כמו URL Fetch, Sockets ו-Mail APIs, משתמשים במאגר גדול של כתובות IP. טווח כתובות ה-IP במאגר הזה כפוף לשינויים שגרתיים. למעשה, יכול להיות ששתי קריאות API רצופות מאותו יישום ייראו כאילו הן מגיעות משתי כתובות IP שונות.
אם אתם צריכים לדעת את כתובות ה-IP שמשויכות לתנועה היוצאת מהשירות שלכם, אתם יכולים למצוא את טווחי כתובות ה-IP הנוכחיים שכוללים את כתובות ה-IP של App Engine, או להגדיר כתובת IP סטטית לשירות שלכם.
כתובות IP לשירותי App Engine
אפשר למצוא את טווחי כתובות ה-IP הנוכחיים של שירותי App Engine באמצעות שני קובצי JSON שפורסמו על ידי Google:
Google מפרסמת רשימה של כתובות IP בבעלות Google בקובץ goog.json.
Google מפרסמת גם רשימה של טווחי כתובות IP חיצוניות גלובליות ואזוריות שזמינות למשאבי Google Cloud של לקוחות ב-cloud.json.
אם מסירים את כל הטווחים ב-cloud.json מאלה שב-goog.json, מקבלים קבוצה גדולה של כתובות IP שמשמשות את Google APIs הגלובליים ושירותים אחרים של Google, כולל מוצרים שפונים ללקוחות מחוץ ל- Google Cloud.
הרשימות האלה מתעדכנות לעיתים קרובות.
אפשר להשתמש בסקריפט Python הבא כדי ליצור רשימה של טווחי כתובות IP שכוללים את אלה שמשמשים את Google APIs והשירותים של Google.
מידע על הרצת הסקריפט מופיע במאמר איך מריצים סקריפט.
הגדרה של כתובת IP סטטית לשיחות יוצאות
כדי להגדיר כתובת IP סטטית לשירות בסביבה רגילה של App Engine, משתמשים בגישה ל-VPC ללא שרת עם Cloud Router ו-Cloud NAT. באמצעות גישה ל-VPC ללא שרת, אפשר לשלוח תעבורת נתונים יוצאת לרשת של הענן הווירטואלי הפרטי (VPC). באמצעות שער של תרגום כתובות רשת (NAT) ב-VPC, אפשר לנתב את התנועה של App Engine דרך כתובת IP ייעודית.
ניתוב התעבורה דרך Cloud NAT לא גורם להוספת צעד נוסף במקבץ הרשת (network stack), כי שער Cloud NAT ו-Cloud Router מספקים רק מישור בקרה, והמנות לא עוברות דרך שער Cloud NAT או Cloud Router.
בשלבים הבאים מוסבר איך להגדיר כתובת IP סטטית יוצאת לשירות בסביבה הרגילה של App Engine.
מוודאים שיש לכם את התפקיד roles/compute.networkAdmin או תפקיד בהתאמה אישית עם אותן הרשאות.
יוצרים תת-רשת (subnet) בתוך רשת ה-VPC לתעבורה של App Engine. כך מוודאים שמשאבים אחרים ברשת ה-VPC לא יכולים להשתמש בכתובת ה-IP הסטטית.
gcloud compute networks subnets create SUBNET_NAME \ --range=RANGE \ --network=NETWORK_NAME \ --region=REGION
בפקודה שלמעלה, מחליפים את:
-
SUBNET_NAMEבשם שרוצים לתת לרשת המשנה. -
RANGEעם טווח כתובות ה-IP בפורמט CIDR שרוצים להקצות לתת-הרשת הזו (למשל10.124.0.0/28) -
NETWORK_NAMEבשם של רשת ה-VPC. -
REGIONבאזור של שירות App Engine.
-
מחברים את שירות App Engine לרשת המשנה.
פועלים לפי ההוראות במאמר חיבור לרשת VPC ומציינים את השם של רשת המשנה שיצרתם בשלב הקודם עבור רשת המשנה של המחבר.
יוצרים Cloud Router חדש. Cloud Router הוא רכיב חיוני של מישור הבקרה ב-Cloud NAT.
gcloud compute routers create ROUTER_NAME \ --network=NETWORK_NAME \ --region=REGION
בפקודה שלמעלה, מחליפים את:
-
ROUTER_NAMEבשם של משאב Cloud Router שרוצים ליצור. -
NETWORK_NAMEבשם של רשת ה-VPC. -
REGIONבאזור שבו רוצים ליצור שער NAT.
-
שמירת כתובת IP סטטית.
זו הכתובת שבה השירות ישתמש כדי לשלוח תעבורה יוצאת. משאב של כתובת IP שמורה שומר על כתובת ה-IP הבסיסית כשהמשאב שהוא משויך אליו נמחק ונוצר מחדש. כתובת ה-IP הזו נכללת במכסת כתובות ה-IP הסטטיות בפרויקט Google Cloud .
gcloud compute addresses create ORIGIN_IP_NAME \ --region=REGION
בפקודה שלמעלה, מחליפים את:
-
ORIGIN_IP_NAMEבשם שרוצים להקצות למשאב של כתובת ה-IP. -
REGIONעם האזור שבו יפעל נתב Cloud NAT. מומלץ לבחור את אותו אזור כמו שירות App Engine כדי לצמצם את זמן האחזור ואת עלויות הרשת.
משתמשים בפקודה
compute addresses describeכדי לראות את התוצאה:gcloud compute addresses describe ORIGIN_IP_NAME
-
יוצרים שער Cloud NAT ומציינים את כתובת ה-IP.
תעבורת הנתונים שמגיעה מרשת המשנה תעבור דרך השער הזה ותשתמש בכתובת ה-IP הסטטית שהזמנתם בשלב הקודם.
gcloud compute routers nats create NAT_NAME \ --router=ROUTER_NAME \ --region=REGION \ --nat-custom-subnet-ip-ranges=SUBNET_NAME \ --nat-external-ip-pool=ORIGIN_IP_NAME
בפקודה שלמעלה, מחליפים את:
-
NAT_NAMEבשם של משאב שער Cloud NAT שרוצים ליצור. -
ROUTER_NAMEבשם של Cloud Router. -
REGIONבאזור שבו רוצים ליצור שער NAT. -
ORIGIN_IP_NAMEבשם של משאב כתובת ה-IP השמורה שיצרתם בשלב הקודם.
-
מגדירים את הגדרת היציאה של חיבור לרשת (VPC) מאפליקציית serverless לערך
all-traffic.כברירת מחדל, שירותי App Engine שמשתמשים בחיבור לרשת (VPC) מאפליקציית serverless שולחים רק תעבורת נתונים פנימית לרשת ה-VPC שלכם. כדי לשלוח תעבורת נתונים עם יעדים חיצוניים לרשת ה-VPC שלכם כך שתהיה לה כתובת ה-IP הסטטית שציינתם, עליכם לשנות את הגדרת תעבורת הנתונים היוצאת (egress).
מציינים את הגדרת היציאה בקובץ
app.yamlשל השירות:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME egress_setting: all-traffic
מחליפים את:
-
PROJECT_IDבמזהה הפרויקט ב- Google Cloud . -
REGIONבשם האזור שבו נמצא המחבר. CONNECTOR_NAMEבשם המחבר name.
-
פורסים את השירות:
gcloud app deploy