במדריך הזה מוסבר איך להשתמש ב-Google Kubernetes Engine (GKE) כדי לחשוף את אפליקציית האינטרנט שלכם באינטרנט בכתובת IP חיצונית סטטית, ואיך להגדיר שם דומיין שיפנה לאפליקציה.
במדריך הזה אנחנו מניחים שיש לכם שם דומיין רשום, כמו example.com.
מטרות
במדריך הזה מוסבר איך:
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי ליצור הערכת עלויות בהתאם לשימוש החזוי, אפשר להשתמש במחשבון התמחור.
כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים. מידע נוסף זמין בקטע הסרת המשאבים.
לפני שמתחילים
כדי להפעיל את Kubernetes Engine API:- נכנסים ל דף Kubernetes Engine במסוף Google Cloud .
- יוצרים או בוחרים פרויקט.
- מחכים עד שממשק ה-API והשירותים הקשורים מופעלים. הפעולה יכולה להימשך כמה דקות.
-
Verify that billing is enabled for your Google Cloud project.
מתקינים את כלי שורת הפקודה הבאים שמשמשים במדריך הזה:
-
הדגל
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, יחד עם ההערות הנדרשות.
במאמר הגדרה של מאזן עומסים חיצוני של אפליקציות (ALB) עם 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
המאמרים הבאים
- איך מגדירים מאזן עומסים של אפליקציות חיצוני עם Ingress
- מידע נוסף על GKE Ingress for Application Load Balancers
- איך משתמשים באישורי SSL בניהול Google
- אפשר לעיין במדריכים נוספים בנושא Kubernetes Engine.
- כדאי להעמיק את הקריאה ולהכיר דוגמאות לארכיטקטורות, תרשימים ושיטות מומלצות בנושאי Google Cloud. כל אלה זמינים במרכז הארכיטקטורה של Cloud.