הגדרת כתובות IP חיצוניות ל-Google Distributed Cloud (תוכנה בלבד) ל-VMware באמצעות מאזני עומסים F5 BIG-IP
ההתקנה של Cloud Service Mesh שמוגדרת כברירת מחדל ב-Google Distributed Cloud (תוכנה בלבד) ל-VMware מניחה שכתובות IP חיצוניות מוקצות באופן אוטומטי לשירותי LoadBalancer.
הדבר לא נכון לגבי Google Distributed Cloud (תוכנה בלבד) ל-VMware עם מאזני עומסים של F5 BIG-IP.
לכן, צריך להקצות כתובת IP חיצונית אחת או יותר, בהתאם להגדרת Service mesh:
- כתובת IP חיצונית אחת למשאב Cloud Service Mesh ingress Gateway, לדוגמה, השער שבו הלקוחות משתמשים כדי לגשת לעומסי העבודה שלכם מכל מקום באינטרנט.
- כתובת IP חיצונית נוספת לאשכולות כדי לתקשר ביניהם אם הם נמצאים ברשתות שונות בתוך Service mesh. זה נקרא שער מזרח-מערב.
הגדרת כתובת ה-IP של שער הכניסה
כדי להגדיר כתובת IP חיצונית לשער הכניסה, פועלים לפי ההוראות באחד מהקטעים הבאים, בהתאם למצב איזון העומסים של Google Distributed Cloud (תוכנה בלבד) ל-VMware:
- מבצעים תיקון (patch) של ההגדרה של שירות
istio-ingressgatewayבאמצעות כתובת ה-IP החיצונית של שער הכניסה:kubectl patch svc istio-ingressgateway -n istio-system --type='json' -p '[{"op": "add", "path": "/spec/loadBalancerIP", "value": "INGRESS_GATEWAY_IP"}]' -
כדי לראות את ההגדרה של שירות
istio-ingressgatewayבמעטפת: מוצגים כל הפורטים של השערים של Cloud Service Mesh. פלט הפקודה אמור להיראות כך:kubectl get svc -n istio-system istio-ingressgateway -o yaml
... ports: - name: status-port nodePort: 30391 port: 15020 protocol: TCP targetPort: 15020 - name: http2 nodePort: 31380 port: 80 protocol: TCP targetPort: 80 - name: https nodePort: 31390 port: 443 protocol: TCP targetPort: 443 - name: tcp nodePort: 31400 port: 31400 protocol: TCP targetPort: 31400 - name: https-kiali nodePort: 31073 port: 15029 protocol: TCP targetPort: 15029 - name: https-prometheus nodePort: 30253 port: 15030 protocol: TCP targetPort: 15030 - name: https-grafana nodePort: 30050 port: 15031 protocol: TCP targetPort: 15031 - name: https-tracing nodePort: 31204 port: 15032 protocol: TCP targetPort: 15032 - name: tls nodePort: 30158 port: 15443 protocol: TCP targetPort: 15443 ... -
צריך לחשוף את הפורטים האלה דרך מאזן העומסים.
לדוגמה, ליציאת השירות שנקראתhttp2ישport80 ו-nodePort31380. נניח שכתובות הצמתים של אשכול המשתמשים הן 192.168.0.10,192.168.0.11ו-192.168.0.12, וכתובת ה-VIP של מאזן העומסים היא203.0.113.1.
מגדירים את מאזן העומסים כך שהתעבורה שנשלחת אל203.0.113.1:80תועבר אל192.168.0.10:31380,192.168.0.11:31380או192.168.0.12:31380. אפשר לבחור את יציאות השירות שרוצים לחשוף בכתובת ה-VIP הזו.
מצב משולב
מצב ידני
מוודאים שהוקצתה ל-ingress gateway כתובת IP חיצונית. יכול להיות שתהיה השהיה קלה שתחייב אתכם לחזור על הפקודה הזו עד שתראו את התוצאה הצפויה:
kubectl --context="${CTX_CLUSTER1}" get svc istio-ingressgateway -n istio-system
הפלט הצפוי:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.80.6.124 34.75.71.237 ... 51s
הגדרת כתובת ה-IP של השער לתנועה אופקית
כדי להגדיר כתובת IP חיצונית לשער תעבורה אופקית, פועלים לפי ההוראות באחד מהקטעים הבאים, בהתאם למצב איזון העומסים ב-Google Distributed Cloud (תוכנה בלבד) ל-VMware:
- מבצעים תיקון (patch) בהגדרה של שירות
istio-eastwestgatewayבאמצעות כתובת ה-IP החיצונית של השער east-west:kubectl patch svc istio-eastwestgateway -n istio-system --type='json' -p '[{"op": "add", "path": "/spec/loadBalancerIP", "value": "EAST_WEST_GATEWAY_IP"}]' -
כדי לראות את ההגדרה של שירות
istio-eastwestgatewayבמעטפת: מוצגים כל הפורטים של השערים של Cloud Service Mesh. פלט הפקודה אמור להיראות כך:kubectl get svc -n istio-system istio-eastwestgateway -o yaml
ports: - name: status-port nodePort: 31781 port: 15021 protocol: TCP targetPort: 15021 - name: tls nodePort: 30498 port: 15443 protocol: TCP targetPort: 15443 - name: tls-istiod nodePort: 30879 port: 15012 protocol: TCP targetPort: 15012 - name: tls-webhook nodePort: 30336 port: 15017 protocol: TCP targetPort: 15017 ... -
צריך לחשוף את הפורטים האלה דרך מאזן העומסים.
לדוגמה, ליציאת השירות שנקראתhttp2ישport80 ו-nodePort31380. נניח שכתובות הצמתים של אשכול המשתמשים הן 192.168.0.10,192.168.0.11ו-192.168.0.12, וכתובת ה-VIP של מאזן העומסים היא203.0.113.1.
מגדירים את מאזן העומסים כך שהתעבורה שנשלחת אל203.0.113.1:80תועבר אל192.168.0.10:31380,192.168.0.11:31380או192.168.0.12:31380. אפשר לבחור את יציאות השירות שרוצים לחשוף בכתובת ה-VIP הזו.
מצב משולב
מצב ידני
מוודאים שהוקצתה ל-east-west gateway כתובת IP חיצונית. יכול להיות שיהיה עיכוב קל ותצטרכו להריץ את הפקודה הזו שוב עד שתראו את התוצאה הצפויה:
kubectl --context="${CTX_CLUSTER1}" get svc istio-eastwestgateway -n istio-system
הפלט הצפוי:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-eastwestgateway LoadBalancer 10.80.6.124 34.75.71.237 ... 51s