שימוש ב-HTTP proxy

במאמר הזה מוסבר איך לנתב תנועה מ-GKE ב-Azure דרך שרת proxy של HTTP/HTTPS. כשיוצרים אשכול, מציינים את הגדרת ה-proxy.

סקירה כללית

‫GKE ב-Azure יכול לנתב תנועת אינטרנט יוצאת דרך שרת proxy מהסיבות הבאות:

  • כדי לרשום אשכולות ב- Google Cloud באמצעות Connect
  • כדי להריץ את Connect Agent
  • כדי להוריד תמונות מ-Container Registry

מגבלות

  • בשדות httpProxy ו-httpsProxy אין תמיכה בכתובות URL שמתחילות ב-https://. חובה להשתמש ב-http://. בקשות ליציאה 443 משתמשות ב-HTTPS.
  • חובה להגדיר ערכים לפרמטרים httpProxy,‏ httpsProxy ו-noProxy.
  • הגדרת ה-proxy של אשכול – מזהה קבוצת המשאבים ומזהה הסוד – היא קבועה. כדי לעדכן את הערכים האלה, צריך ליצור אשכול חדש ומאגר צמתים חדש.
  • יכול להיות שתצטרכו להוסיף עוד דומיינים, כתובות IP או CIDR לשדה noProxy. מומלץ להוסיף את ה-CIDR של רשת המשנה של מישורי הבקרה של האשכול (ה-CIDR של כתובת ה-Pod וה-CIDR של כתובת השירות מתווספים כברירת מחדל).

דרישות מוקדמות

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

הגדרת Azure Key Vault

‫GKE ב-Azure מאחסן את פרטי ההגדרה של שרת ה-proxy ב-Azure Key Vault. כדי להגדיר שרת proxy ב-GKE ב-Azure, צריך הרשאות ליצירת סוד בכספת מפתחות. צריכה להיות גישה ל-Key Vault מ-VNet של האשכול.

רשימת היתרים לשרתי Proxy

כדי ש-GKE ב-Azure יוכל להתחבר לשירותים, שרת ה-proxy צריך לאפשר תעבורה לדומיינים ספציפיים של Google ומיקרוסופט. Google Cloud

.azure.com
.gcr.io
cloudresourcemanager.googleapis.com
container.googleapis.com
gkeconnect.googleapis.com
gkehub.googleapis.com
oauth2.googleapis.com
securetoken.googleapis.com
storage.googleapis.com
sts.googleapis.com
www.googleapis.com
servicecontrol.googleapis.com
logging.googleapis.com
monitoring.googleapis.com
opsconfigmonitoring.googleapis.com
GCP_LOCATION-gkemulticloud.googleapis.com

מחליפים את GCP_LOCATION ב Google Cloud אזור שבו נמצא האשכול. מציינים us-west1 או אזור נתמך אחר.

דרישה לקבוצת אבטחה של רשת משנה

אם אתם משתמשים בקבוצות אבטחת רשת (NSG) כדי לנהל את התנועה לרשתות המשנה, הכללים של ה-NSG צריכים לאפשר תנועת TCP יוצאת ליעדים הבאים:

  • ‫AzureCloud: ‏ TCP, יציאות 80 ו-443

מידע נוסף על השימוש בתגי שירות עם NSG זמין במאמר בנושא תגי שירות של Azure.

יצירת קובץ תצורה של שרת Proxy

הגדרות ה-proxy מאוחסנות בסוד של Azure Key Vault כמחרוזת JSON. אפשר להעביר את ההגדרה הזו לכלי az של שורת הפקודה כקובץ. בקטע הזה מוסבר איך ליצור את הקובץ הזה.

בטבלה הבאה מתואר התוכן של הקובץ הזה.

שדה תיאור דוגמאות חובה
httpProxy כתובת URL של שרת proxy. הערך צריך לכלול שם מארח או כתובת IP, ואפשר להוסיף לו יציאה, שם משתמש וסיסמה. "http://user:password@10.184.37.42:80"
"10.184.37.42"
כן
httpsProxy כתובת URL של שרת proxy לתעבורת נתונים מוצפנת מסוג HTTPS. כתובת ה-URL של httpProxy תשמש אם הערך של httpsProxy ריק. "http://10.101.16.31:80" כן
noProxy רשימה מופרדת בפסיקים של כתובות URL שיוחרגו מהעברת נתונים דרך שרת Proxy. כל ערך יכול להיות: כתובת IP, טווח CIDR, שם דומיין או הכוכבית (*). דומיינים שמוגדרים עם נקודה מובילה (לדוגמה, ‎.google.com) מציינים שנדרש תת-דומיין. כוכבית אחת * גורמת להתעלמות מכל הגדרות ה-proxy. "1.2.3.4,10.0.0.0/16,example.com,.site.com" כן
  1. כדי ליצור את קובץ התצורה, יוצרים קובץ JSON שמכיל ערכים למפתחות httpProxy, noProxy ולמפתחות האופציונליים httpsProxy.

    {
      "httpProxy": "AUTHENTICATION_URL",
      "httpsProxy": "AUTHENTICATION_URL",
      "noProxy": "NO_PROXY_ADDRESSES"
    }
    

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

    • AUTHENTICATION_URL: כתובת URL מקודדת שמכילה את שם המשתמש והסיסמה של ה-Proxy
    • NO_PROXY_ADDRESSES: רשימה מופרדת בפסיקים של בלוקים של CIDR וכתובות URL – לדוגמה 10.0.0.0/16,http://example.com

    שומרים את הקובץ לשימוש בקטע הבא.

  2. יוצרים סוד עם נתוני ה-JSON האלה כסוד ב-Azure Key Vault באמצעות כלי שורת הפקודה az.

    az keyvault secret set --name SECRET_NAME \
    --vault-name KEY_VAULT_NAME \
    --file PROXY_CONFIGURATION_FILE
    

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

    • SECRET_NAME: השם של הסוד החדש
    • KEY_VAULT_NAME: השם של Key Vault
    • PROXY_CONFIGURATION_FILE: הנתיב לקובץ התצורה של השרת הפרוקסי.

      הפלט כולל את השם והתוכן של הסוד. מעכשיו אפשר להפנות לסוד הזה כשיוצרים אשכול.

יצירת אשכול שמשתמש בשרת proxy

כדי להגדיר את GKE ב-Azure כך שישתמש ב-proxy מסוג HTTP לקישוריות יוצאת, מבצעים את השלבים הבאים:

פועלים לפי השלבים במאמר יצירת אשכול ומאגר צמתים ומעבירים את הדגלים --proxy-resource-group-id ו---proxy-secret-id.

gcloud container azure clusters create CLUSTER_NAME \
  --proxy-resource-group-id=PROXY_RESOURCE_GROUP_ID \
  --proxy-secret-id=PROXY_SECRET_ID
    ...

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

  • CLUSTER_NAME: השם של האשכול
  • PROXY_RESOURCE_GROUP_ID: קבוצת המשאבים שמארחת את האשכול
  • PROXY_SECRET_ID: מזהה הסוד שמכיל את תצורת ה-proxy, לדוגמה: https://VAULT_NAME.vault.azure.net/secrets/SECRET_NAME/SECRET_VERSION

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