במדריך הזה נסביר איך להשתמש ב-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
פריסת אפליקציית האינטרנט
קובץ המניפסט הבא מתאר Deployment (פריסה) שמריצה קובץ אימג' של קונטיינר של אפליקציית אינטרנט לדוגמה:
יוצרים את הפריסה:
kubectl apply -f helloweb-deployment.yaml
חשיפת האפליקציה
אפשר לחשוף את האפליקציה ב-GKE באמצעות אחת מהשיטות הבאות:
שימוש בשירות, שיוצר מאזן עומסי רשת חיצוני להעברת סיגנל ללא שינוי שפועל עם כתובות IP אזוריות.
שימוש ב-Ingress, שיוצר מאזן עומסים של אפליקציות ותומך בכתובות 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}'
במניפסט הבא מתואר Service מסוג 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 כדי להגדיר רשומת DNS A עבור שם הדומיין עם כתובת ה-IP השמורה של האפליקציה.
אם שרת השמות שלכם הוא של ספק אחר: כדי להגדיר את שם הדומיין, צריך לעיין במסמכי התיעוד של ספק ה-DNS בנושא הגדרת רשומות A של DNS. אם בחרתם להשתמש ב-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.