השירותים היוצאים בסביבה הרגילה של 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, צריך להשתמש בServerless VPC Access עם Cloud Router ו-Cloud NAT. באמצעות Serverless VPC Access, אפשר לשלוח תעבורת נתונים יוצאת (egress) לרשת הענן הווירטואלי הפרטי (VPC). באמצעות שער של תרגום כתובות רשת (NAT) ב-VPC, אפשר לנתב את התנועה של App Engine דרך כתובת IP ייעודית.
ניתוב התעבורה דרך Cloud NAT לא גורם להוספת עוד קפיצה במערך הרשת, כי שער 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