בנושא הזה מוסבר איך לנתב תנועה משירות הניהול של GKE ב-AWS ומ-Connect דרך שרת proxy של HTTP/HTTPS.
GKE ב-AWS דורש גישה לאינטרנט מהסיבות הבאות:
- שירות הניהול רושם את אשכולות המשתמשים ב-Connect.
- באשכולות המשתמשים פועל סוכן Connect.
- כל הצמתים של אשכולות המשתמשים ושירות הניהול מורידים תמונות מ-Container Registry.
אפשר להפנות את התנועה הזו דרך שרת proxy של HTTP או HTTPS. החל מ-GKE ב-AWS 1.8, אפשר להגדיר הגדרות לשרת proxy נפרדות לשירות הניהול ולכל אחד מהאשכולות. מידע נוסף על שינוי הגדרות לשרת proxy מופיע במאמר שינוי הגדרות ה-proxy של אשכול.
מגדירים את הגדרות לשרת proxy בקובץ JSON שמקושר ל-anthos-gke.yaml.
דרישות מוקדמות
לפני שמגדירים את GKE ב-AWS לשימוש ב-Proxy, צריך להפעיל את נקודות הקצה של AWS VPC, להגדיר קבוצת אבטחה ל-Proxy ולאפשר חיבורים יוצאים לשירותים מסוימים. Google Cloud
כדי להשתמש בשרת proxy מסוג HTTP, אשכולות המשתמשים צריכים להריץ Kubernetes מגרסה 1.17 ואילך.
הפעלת נקודות קצה של VPC
לפני שמגדירים שרת proxy, צריך ליצור נקודות קצה של VPC להתקנה של GKE ב-AWS. נקודות קצה של VPC מאפשרות למשאבים בתת-רשתות פרטיות לגשת לשירותי AWS ללא גישה לאינטרנט הציבורי.
בטבלה הבאה מפורטים שירותי AWS ש-GKE ב-AWS דורש נקודות קצה של VPC בשבילם, יחד עם סוג נקודת הקצה וקבוצות האבטחה של כל רכיב GKE ב-AWS שדורש גישה לנקודת הקצה.
| שירות | סוג נקודת הקצה | קבוצות אבטחה |
|---|---|---|
| Auto Scaling | ממשק | ניהול, מישור בקרה, מאגרי צמתים |
| EC2 | ממשק | ניהול, מישור בקרה, מאגרי צמתים |
| איזון עומסים | ממשק | ניהול, מישור בקרה, מאגרי צמתים |
| שירות ניהול מפתחות (KMS) | ממשק | ניהול, מישור בקרה, מאגרי צמתים |
| S3 | שער | ניהול, מישור בקרה, מאגרי צמתים |
| שירות אסימוני אבטחה (STS) | ממשק | ניהול, מישור בקרה, מאגרי צמתים |
אפשר ליצור נקודות קצה מתוך מסוף VPC של AWS. האפשרויות שאתם מגדירים כשאתם יוצרים נקודות קצה של VPC תלויות בהגדרת ה-VPC שלכם.
הגדרה של קבוצת אבטחה
הרכיבים של GKE ב-AWS צריכים להיות מסוגלים להתחבר לשרת הפרוקסי. יוצרים או מאתרים קבוצת אבטחה ב-AWS שמאפשרת חיבורים יוצאים לשרת הפרוקסי. קבוצת האבטחה צריכה לאפשר גישה יוצאת מקבוצות האבטחה של מישור הניהול, מישור הבקרה ומאגר הצמתים לכתובת ולפורט של השרת הפרוקסי. שומרים את המזהה של קבוצת האבטחה הזו (לדוגמה, sg-12345678).
| סוג | פרוטוקול | מנמל | לניוד | כתובת |
|---|---|---|---|---|
| תעבורת נתונים יוצאת (egress) | TCP | יציאת שרת Proxy | יציאת שרת Proxy | קבוצת אבטחה של שרת Proxy |
התרת חיבורים יוצאים לשירותים של Google Cloud
כדי ש-GKE ב-AWS יוכל להתחבר לשירותים, שרת ה-proxy צריך לאפשר תעבורה לדומיינים הבאים: Google Cloud
gkeconnect.googleapis.comgkehub.googleapis.comoauth2.googleapis.comstorage.googleapis.comwww.googleapis.comgcr.iok8s.gcr.ioEC2-REGION.ec2.archive.ubuntu.com
מחליפים את EC2-REGION באזור AWS EC2 שבו פועלת ההתקנה של GKE on AWS. לדוגמה, us-west-1.ec2.archive.ubuntu.com/.
אם אתם משתמשים ב-Cloud Service Mesh עם Prometheus ו-Kiali, אתם צריכים לאפשר גישה יוצאת מהדומיינים הבאים:
docker.ioquay.io
יצירת קובץ JSON של הגדרות ה-proxy
קובץ ה-JSON של הגדרות ה-proxy מכיל אובייקט אחד עם שלושה צמדי מפתח/ערך, ושמות המפתחות הם httpProxy, httpsProxy ו-noProxy.
שמות המשתמש והסיסמאות מוצפנים באמצעות מפתח AWS KMS לפני שהם מוחלים על השרת.
{
"httpProxy": "HTTP_PROXY",
"httpsProxy": "HTTPS_PROXY",
"noProxy": "NO_PROXY"
}
מחליפים את מה שכתוב בשדות הבאים:
- HTTP_PROXY עם כתובת שרת ה-proxy לניתוב בקשות HTTP דרך השרת.
- HTTPS_PROXY עם שרת ה-proxy כדי לנתב דרכו בקשות HTTPS.
- NO_PROXY עם רשימה אופציונלית של כתובות IP, טווחי CIDR ודומיינים שבהם לא נעשה שימוש ב-proxy.
מידע נוסף זמין במאמר הפניה להגדרות.
לדוגמה, בהגדרה הבאה נעשה שימוש ב-Proxy בכתובת 10.0.0.254, ומוחרגים מספר אתרים.
{
"httpProxy": "http://user:password@10.0.0.254:80",
"httpsProxy": "http://user:password@10.0.0.254:443",
"noProxy": "localhost,127.0.0.1,169.254.169.254,10.0.0.0/16,example.com"
}
הוספת ה-proxy לקובץ anthos-gke.yaml
כדי להגדיר את AWSManagementService:
עוברים לספרייה עם ההגדרה של GKE ב-AWS. יצרתם את הספרייה הזו כשהתקנתם את שירות הניהול.
cd anthos-aws
פותחים את
anthos-gke.yamlבכלי לעריכת טקסט. מוסיפים ערך ל-spec.proxyכמו בדוגמה הבאה.apiVersion: multicloud.cluster.gke.io/v1 kind: AWSManagementService metadata: name: management spec: version: aws-1.14.1-gke.0 proxy: PROXY_JSON_FILE securityGroupIDs: - SECURITY_GROUP_ID ...מחליפים את מה שכתוב בשדות הבאים:
- PROXY_JSON_FILE בנתיב היחסי של קובץ ה-JSON של שרת ה-proxy.
- SECURITY_GROUP_ID עם המזהה של קבוצת אבטחה עם גישה לשרת ה-proxy.
שומרים את הקובץ.
מריצים את הפקודה
anthos-gke aws management initכדי ליצור קובץanthos-gke.status.yamlעם הגדרות נוספות. הפקודהinitגם מאמתת את האובייקטAWSManagementServiceבקובץanthos-gke.yaml.anthos-gke aws management initמריצים את הפקודה
anthos-gke aws management applyכדי לעדכן את שירות הניהול ב-AWS.anthos-gke aws management applyאחר כך יוצרים אשכול משתמשים. כוללים את קבוצת האבטחה של ה-proxy ב-
AWSClusterוב-AWSNodePool, ב-spec.controlPlane.securityGroupIDsוב-spec.securityGroupIDs, בהתאמה. לאחר מכן יש ל-cluster גישה לשרת ה-proxy.
הסבר על ההגדרות
| שדה | תיאור | דוגמה | חובה |
|---|---|---|---|
httpProxy |
כתובת URL של שרת proxy. הערך צריך לכלול שם מארח או כתובת IP, ואפשר להוסיף לו יציאה, שם משתמש וסיסמה. | "http://user:password@10.184.37.42:80" |
כן |
httpsProxy |
כתובת URL של שרת proxy לתעבורת נתונים מוצפנת מסוג HTTPS. כתובת ה-URL httpProxy תשמש אם לא צוינה כתובת URL של httpsProxy. |
"http://user:password@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" |
לא |
המאמרים הבאים
מידע נוסף על השלמת התקנה של GKE ב-AWS זמין במאמרים הבאים:
אם אתם צריכים ליצור AWS VPC ייעודי, תוכלו לעיין במאמר התקנת שירות ניהול.
אם יש לכם AWS VPC קיים, כדאי לעיין במאמר שילוב עם תשתית קיימת.
למידע על שינוי הגדרות ה-proxy באשכול: