פריסת האפליקציה לדוגמה Online Boutique
כדי להדגים את Cloud Service Mesh, אתם יכולים לפרוס את האפליקציה לדוגמה Online Boutique. אם אתם צריכים להקצות את 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 החיצונית של שער תעבורת הנתונים הנכנסת (ingress). מחליפים את הפלייסהולדרים במידע הבא:
GATEWAY_SERVICE_NAME : השם של שירות שער הכניסה. אם פרסתם את שער הדוגמה בלי שינויים, או אם פרסתם את שער הכניסה שמוגדר כברירת מחדל, השם הוא
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: 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