פריסת אפליקציית הדוגמה Online Boutique
במדריך הזה מוסבר איך להתקין את אפליקציית הדוגמה Online Boutique כדי להדגים את Cloud Service Mesh. אם אתם צריכים להקצות את Cloud Service Mesh, תוכלו להיעזר במדריך להקצאת משאבים.
הורדה ופריסה של הדוגמה
כדי לפרוס את האפליקציה, קודם צריך להוריד את המניפסטים של Online Boutique ממאגר anthos-service-mesh-packages באמצעות kpt. אפליקציית הדוגמה Online Boutique במאגר anthos-service-mesh-packages שונתה מהקבוצה המקורית של מניפסטים במאגר microservices-demo. בהתאם לשיטות המומלצות, כל שירות נפרס במרחב שמות נפרד עם חשבון שירות ייחודי.
אם עוד לא התקנתם את
kpt:gcloud components install kptמורידים את הדוגמה באמצעות
kpt:kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/samples/online-boutique \ online-boutiqueהפלט הצפוי
Package "online-boutique": Fetching https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages@main From https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages * branch main -> FETCH_HEAD Adding package "samples/online-boutique". Fetched 1 package(s).מנווטים לספרייה
online-boutique:cd online-boutiqueיוצרים את מרחבי השמות של האפליקציה:
kubectl apply -f kubernetes-manifests/namespacesהפלט אמור להיראות כך:
namespace/ad created namespace/cart created namespace/checkout created namespace/currency created namespace/email created namespace/frontend created namespace/loadgenerator created namespace/payment created namespace/product-catalog created namespace/recommendation created namespace/shipping createdפורסים את הדוגמה באשכול.
יוצרים את חשבונות השירות ואת הפריסות:
kubectl apply -f kubernetes-manifests/deploymentsהפלט אמור להיראות כך:
serviceaccount/ad created deployment.apps/adservice created serviceaccount/cart created deployment.apps/cartservice created serviceaccount/checkout created deployment.apps/checkoutservice created serviceaccount/currency created deployment.apps/currencyservice created serviceaccount/email created deployment.apps/emailservice created serviceaccount/frontend created deployment.apps/frontend created serviceaccount/loadgenerator created deployment.apps/loadgenerator created serviceaccount/payment created deployment.apps/paymentservice created serviceaccount/product-catalog created deployment.apps/productcatalogservice created serviceaccount/recommendation created deployment.apps/recommendationservice created serviceaccount/shipping created deployment.apps/shippingservice createdיוצרים את השירותים:
kubectl apply -f kubernetes-manifests/servicesהפלט אמור להיראות כך:
service/adservice created service/cartservice created service/checkoutservice created service/currencyservice created service/emailservice created service/frontend created service/frontend-external created service/paymentservice created service/productcatalogservice created service/recommendationservice created service/shippingservice createdיוצרים את רשומות השירות:
kubectl apply -f istio-manifests/allow-egress-googleapis.yamlהפלט אמור להיראות כך:
serviceentry.networking.istio.io/allow-egress-googleapis created serviceentry.networking.istio.io/allow-egress-google-metadata created
הפעלת הזרקה אוטומטית של קובץ sidecar
החלת תווית ברירת המחדל להוספה על מרחבי השמות של האפליקציה.
for ns in ad cart checkout currency email frontend loadgenerator \ payment product-catalog recommendation shipping; do kubectl label namespace $ns istio-injection=enabled --overwrite done;הפלט אמור להיראות כך:
namespace/ad labeled namespace/cart labeled namespace/checkout labeled namespace/currency labeled namespace/email labeled namespace/frontend labeled namespace/loadgenerator labeled namespace/payment labeled namespace/product-catalog labeled namespace/recommendation labeled namespace/shipping labeledאם אתם משתמשים ב-Cloud Service Mesh מנוהל ופרסתם את מישור הנתונים המנוהל האופציונלי, צריך להוסיף הערות למרחבי השמות של האפליקציה באופן הבא:
for ns in ad cart checkout currency email frontend loadgenerator \ payment product-catalog recommendation shipping; do kubectl annotate --overwrite namespace $ns mesh.cloud.google.com/proxy='{"managed":"true"}' done;מפעילים מחדש את הפודים:
for ns in ad cart checkout currency email frontend loadgenerator \ payment product-catalog recommendation shipping; do kubectl rollout restart deployment -n ${ns} done;הפלט אמור להיראות כך:
deployment.apps/adservice restarted deployment.apps/cartservice restarted deployment.apps/checkoutservice restarted deployment.apps/currencyservice restarted deployment.apps/emailservice restarted deployment.apps/frontend restarted deployment.apps/loadgenerator restarted deployment.apps/paymentservice restarted deployment.apps/productcatalogservice restarted deployment.apps/recommendationservice restarted deployment.apps/shippingservice restarted
חשיפה וגישה לאפליקציה
הדרך לחשוף את האפליקציה מחוץ לרשת תלויה בשאלה אם פרסתם שער כניסה. אפשר לבחור לחשוף את האפליקציה באמצעות שער כניסה של Istio או באמצעות שירות Kubernetes.
שימוש בשער כניסה
אם פרסתם שער כניסה לאשכול כמו שמתואר בדרישה המוקדמת, בצעו את השלבים הבאים כדי לחשוף את האפליקציה באמצעות השער.
פריסת
Gatewayו-VirtualServiceלשירות הקצה הקדמיkubectl apply -f istio-manifests/frontend-gateway.yamlהפלט אמור להיראות כך:
gateway.networking.istio.io/frontend-gateway created virtualservice.networking.istio.io/frontend-ingress createdמקבלים את כתובת ה-IP החיצונית של שער הכניסה. מחליפים את ה-placeholders בפרטים הבאים:
GATEWAY_SERVICE_NAME : השם של שירות שער הכניסה (ingress). אם פרסתם את שער הדוגמה בלי לבצע שינויים, או אם פרסתם את שער הכניסה שמוגדר כברירת מחדל, השם הוא
istio-ingressgateway.GATEWAY_NAMESPACE: מרחב השמות שבו פרסתם את שער הכניסה. אם פרסתם את שער הכניסה (ingress) שמוגדר כברירת מחדל, מרחב השמות הוא
istio-system.
kubectl get service GATEWAY_SERVICE_NAME -n GATEWAY_NAMESPACEהפלט אמור להיראות כך:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.19.247.233 35.239.7.64 80:31380/TCP,443:31390/TCP,31400:31400/TCP 27mבדוגמה הזו, כתובת ה-IP של שער הכניסה היא
35.239.7.64.כדי לוודא שהאפליקציה הותקנה, נכנסים אליה בדפדפן:
http://EXTERNAL_IP/
אין שער כניסה
אם לא פרסתם שער כניסה או בחרתם לחשוף את האפליקציה באמצעות שירות Kubernetes, צריך לבצע את השלבים הבאים:
פריסת שירות מסוג
LoadBalancerכדי לחשוף את שירות הקצה הקדמיkubectl apply -f frontend-external.yamlמוצאים את כתובת ה-IP החיצונית של שירות
frontend-external:kubectl get service frontend-external -n frontendכדי לוודא שהאפליקציה הותקנה, נכנסים אליה בדפדפן:
http://EXTERNAL_IP/
אתם יכולים לבדוק את תכונות הנראות של Cloud Service Mesh במסוף Google Cloud . הערה: יכול להיות שיחלפו עד 10 דקות עד שהשירותים ברשת יוצגו בתרשים הטופולוגיה.
הסרת המשאבים
לפני שמוחקים את Online Boutique, כדאי לעבור על Cloud Service Mesh by example: mTLS, שמשתמש בדוגמה. כשמסיימים את הבדיקה, משתמשים בפקודות הבאות כדי להסיר את הדוגמה של Online Boutique:
מוחקים את מרחבי השמות של האפליקציה:
kubectl delete -f kubernetes-manifests/namespacesהפלט אמור להיראות כך:
namespace "ad" deleted namespace "cart" deleted namespace "checkout" deleted namespace "currency" deleted namespace "email" deleted namespace "frontend" deleted namespace "loadgenerator" deleted namespace "payment" deleted namespace "product-catalog" deleted namespace "recommendation" deleted namespace "shipping" deletedמוחקים את רשומות השירות:
kubectl delete -f istio-manifests/allow-egress-googleapis.yamlהפלט אמור להיראות כך:
serviceentry.networking.istio.io "allow-egress-googleapis" deleted serviceentry.networking.istio.io "allow-egress-google-metadata" deleted