במדריך הזה נסביר איך להשתמש ב-Google Kubernetes Engine (GKE) כדי לחשוף את אפליקציית האינטרנט שלכם לאינטרנט בכתובת IP חיצונית סטטית, ואיך להגדיר שם דומיין שיפנה לאפליקציה.
במדריך הזה אנחנו מניחים שיש לכם שם דומיין רשום, כמו example.com.
מטרות
במדריך הזה מוסבר איך:
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי ליצור הערכת עלויות בהתאם לשימוש החזוי, אתם יכולים להשתמש במחשבון התמחור.
כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים. מידע נוסף זמין בקטע הסרת המשאבים.
לפני שמתחילים
כדי להפעיל את Kubernetes Engine API:- נכנסים לדף Kubernetes Engine במסוף Google Cloud .
- יוצרים או בוחרים פרויקט.
- מחכים עד שממשק ה-API והשירותים הקשורים יופעלו. הפעולה עשויה להימשך כמה דקות.
מתקינים את כלי שורת הפקודה הבאים שבהם משתמשים במדריך הזה:
-
הדגל
gcloudמשמש ליצירה ולמחיקה של אשכולות Kubernetes Engine. gcloudכלול ב-gcloudCLI. -
kubectlמשמש לניהול Kubernetes, מערכת תזמור האשכולות שמשמשת את Kubernetes Engine. אפשר להתקין אתkubectlבאמצעותgcloud:gcloud components install kubectl
משכפלים את הקוד לדוגמה מ-GitHub:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples
cd kubernetes-engine-samples/quickstarts/hello-app/manifests
הגדרת ברירות מחדל לכלי gcloud של שורת הפקודה
כדי לחסוך זמן בהקלדת מזהה הפרויקט ואפשרויות אזור Compute Engine בכלי gcloud של שורת הפקודה, אפשר להגדיר את ברירות המחדל:
gcloud config set project project-id gcloud config set compute/zone compute-zone
יצירת אשכול
יוצרים אשכול:
gcloud container clusters create-auto domain-test
פריסת אפליקציית האינטרנט
המניפסט הבא מתאר פריסה שמריצה קובץ אימג' של קונטיינר של אפליקציית אינטרנט לדוגמה:
יוצרים את הפריסה:
kubectl apply -f helloweb-deployment.yaml
חשיפת האפליקציה
אפשר לחשוף את האפליקציה ב-GKE באחת מהשיטות הבאות:
שימוש בשירות, שיוצר מאזן עומסי רשת אזורי חיצוני להעברת סיגנל ללא שינוי שעובד עם כתובות IP אזוריות.
שימוש ב-Ingress, שיוצר Application Load Balancer ותומך בכתובות IP גלובליות.
מידע נוסף על היתרונות והחסרונות של כל שיטה זמין במאמר הגדרה של מאזן עומסים של אפליקציות (ALB) חיצוני עם Ingress.
שימוש בשירות
כדי לוודא שלאפליקציה יש כתובת IP חיצונית סטטית, צריך לשמור כתובת IP סטטית.
אם בוחרים לחשוף את האפליקציה באמצעות Service, צריך ליצור כתובת IP אזורית. כתובות IP גלובליות פועלות רק עם סוג המשאב Ingress, כמו שמוסבר בקטע הבא.
כדי להשתמש בשירות, יוצרים כתובת IP סטטית בשם helloweb-ip באזור us-central1:
gcloud
gcloud compute addresses create helloweb-ip --region us-central1
מאתרים את כתובת ה-IP הסטטית שיצרתם:
gcloud compute addresses describe helloweb-ip --region us-central1
הפלט אמור להיראות כך:
...
address: 203.0.113.32
...
Config Connector
הערה: כדי לבצע את השלב הזה, צריך להשתמש ב-Config Connector. פועלים לפי הוראות ההתקנה כדי להתקין את Config Connector באשכול.
שומרים את המניפסט בשם compute-address-regional.yaml.
מחילים את המניפסט על האשכול:
kubectl apply -f compute-address-regional.yaml
מאתרים את כתובת ה-IP הסטטית שיצרתם:
kubectl get computeaddress helloweb-ip -o jsonpath='{.spec.address}'
המניפסט הבא מתאר שירות מסוג LoadBalancer, שיוצר מאזן עומסי רשת חיצוני אזורי להעברת סיגנל ללא שינוי כדי לחשוף Pods עם כתובת IP חיצונית.
יוצרים את השירות:
kubectl apply -f helloweb-service-static-ip.yaml
מציגים את כתובת ה-IP השמורה שמשויכת למאזן העומסים:
kubectl get service
הפלט אמור להיראות כך:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
helloweb 10.31.254.176 203.0.113.32 80:30690/TCP 54s
שימוש ב-Ingress
אם בוחרים לחשוף את האפליקציה באמצעות Ingress, צריך לשמור כתובת IP סטטית גלובלית.
משתמשים בהערה kubernetes.io/ingress.global-static-ip-name כדי לציין כתובת IP גלובלית.
כדי לחשוף את האפליקציה ללקוחות ולשירותים באזור מסוים, צריך להשתמש בכתובת IP פנימית סטטית אזורית כשפורסים משאב פנימי של Ingress ל-GKE, יחד עם ההערות הנדרשות.
במאמר הגדרת מאזן עומסים חיצוני של אפליקציות באמצעות Ingress מוסבר איך להשתמש ב-Ingress כדי לחשוף את האפליקציות שלכם לאינטרנט.
כדי ליצור כתובת IP סטטית גלובלית בשם helloweb-ip:
gcloud
gcloud compute addresses create helloweb-ip --global
מאתרים את כתובת ה-IP הסטטית שיצרתם:
gcloud compute addresses describe helloweb-ip --global
הפלט אמור להיראות כך:
...
address: 203.0.113.32
...
Config Connector
הערה: כדי לבצע את השלב הזה, צריך להשתמש ב-Config Connector. פועלים לפי הוראות ההתקנה כדי להתקין את Config Connector באשכול.
שומרים את קובץ המניפסט בשם compute-address-global.yaml.
מחילים את המניפסט על האשכול:
kubectl apply -f compute-address-global.yaml
המניפסט הבא מתאר Ingress שחושף אפליקציית אינטרנט בכתובת IP סטטית עם שני משאבים:
-
Serviceעםtype:NodePort -
Ingressמוגדר עם שם השירות והערה של כתובת IP סטטית
ההערה kubernetes.io/ingress.global-static-ip-name מציינת את השם של משאב כתובת ה-IP הגלובלית שיוקצה למאזן העומסים.
מחילים את המניפסט על האשכול:
kubectl apply -f helloweb-ingress-static-ip.yaml
מציגים את כתובת ה-IP שמשויכת למאזן העומסים:
kubectl get ingress
הפלט אמור להיראות כך:
NAME HOSTS ADDRESS PORTS AGE
helloweb * 203.0.113.32 80 4m
איך רואים את כתובת ה-IP הסטטית השמורה
כדי לוודא שמאזן העומסים מוגדר בצורה נכונה, אפשר להשתמש בדפדפן אינטרנט כדי להיכנס לכתובת ה-IP או להשתמש ב-curl:
curl http://203.0.113.32/
הפלט אמור להיראות כך:
Hello, world!
Hostname: helloweb-3766687455-8lvqv
הגדרת רשומות של שם הדומיין
כדי שדפדפנים יבצעו שאילתות לגבי שם הדומיין שלכם, כמו example.com, או לגבי שם תת-הדומיין, כמו blog.example.com, כדי להפנות לכתובת ה-IP הסטטית שהזמנתם, אתם צריכים לעדכן את רשומות ה-DNS (שרת שמות הדומיין) של שם הדומיין.
צריך ליצור רשומת DNS מסוג A (כתובת) עבור שם הדומיין או תת-הדומיין, ולהגדיר את הערך שלה עם כתובת ה-IP השמורה
רשומות ה-DNS של הדומיין מנוהלות על ידי שרת השמות. יכול להיות ששרת השמות שלכם הוא ה'רשם' שדרכו רשמתם את הדומיין, שירות DNS כמו Cloud DNS או ספק אחר של צד שלישי.
אם שרת השמות שלכם הוא Cloud DNS: פועלים לפי המדריך לתחילת העבודה עם Cloud DNS כדי להגדיר רשומת A עבור שם הדומיין עם כתובת ה-IP השמורה של האפליקציה.
אם שרת השמות שלכם הוא של ספק אחר: כדי להגדיר את שם הדומיין, צריך לעיין במסמכי התיעוד של ספק ה-DNS בנושא הגדרת רשומות A. אם אתם בוחרים להשתמש ב-Cloud DNS, קראו את המאמר מעבר ל-Cloud DNS.
כניסה לשם הדומיין
כדי לוודא שרשומות ה-DNS מסוג A של שם הדומיין מפנות לכתובת ה-IP ששמרתם, נכנסים לשם הדומיין.
כדי לבצע שאילתת DNS לרשומת A של שם הדומיין, מריצים את הפקודה host:
host example.com
הפלט אמור להיראות כך:
example.com has address 203.0.113.32
עכשיו אתם יכולים להזין את שם הדומיין בדפדפן האינטרנט ולבקר באתר.
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
מוחקים את השירות ואת ה-Ingress:
kubectl delete ingress,service -l app=helloמשחררים את כתובת ה-IP הסטטית השמורה. אחרי שמאזן העומסים נמחק, כתובת ה-IP השמורה שלא נעשה בה שימוש מחויבת לפי התמחור של כתובות IP שלא נעשה בהן שימוש.
אם השתמשת בשירות:
gcloud compute addresses delete helloweb-ip --region us-central1אם השתמשתם ב-Ingress:
gcloud compute addresses delete helloweb-ip --global
מוחקים את האפליקציה לדוגמה:
kubectl delete -f helloweb-deployment.yamlמחיקת האשכול:
gcloud container clusters delete domain-test
המאמרים הבאים
- איך מגדירים מאזן עומסים של אפליקציות (ALB) חיצוני עם Ingress
- מידע נוסף על GKE Ingress for Application Load Balancers
- איך משתמשים באישורי SSL בניהול Google
- אפשר לעיין במדריכים נוספים בנושא Kubernetes Engine.
- כדאי להעמיק את הקריאה ולהכיר דוגמאות לארכיטקטורות, תרשימים ושיטות מומלצות בנושאי Google Cloud. כל אלה זמינים במרכז הארכיטקטורה של Cloud.