Beispielanwendung Online Boutique bereitstellen

In diesem Leitfaden wird erläutert, wie Sie die Beispielanwendung Online Boutique in einem der folgenden Ordner installieren: Cloud Service Mesh veranschaulichen. Wenn Sie Cloud Service Mesh bereitstellen müssen, lesen Sie den Bereitstellungsleitfaden.

Beispiel herunterladen und bereitstellen

Um die Anwendung bereitzustellen, müssen Sie zuerst die Online Boutique-Manifeste aus dem anthos-service-mesh-packages-Repository mit kpt herunterladen. Die Online Boutique-Beispielanwendung im anthos-service-mesh-packages-Repository wird aus dem ursprünglichen Set von Manifesten im microservices-demo-Repository modifiziert. Gemäß den Best Practices wird jeder Dienst in einem separaten Namespace mit einem eigenen Dienstkonto bereitgestellt.

  1. Installieren Sie kpt, falls noch nicht geschehen:

    gcloud components install kpt
    
  2. Laden Sie das Beispiel mit kpt herunter:

    kpt pkg get \
      https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/samples/online-boutique \
      online-boutique
    

    Erwartete Ausgabe

    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).
    
  3. Rufen Sie das Verzeichnis online-boutique auf:

    cd online-boutique
    
  4. Erstellen Sie die Namespaces für die Anwendung:

    kubectl apply -f kubernetes-manifests/namespaces
    

    Erwartete Ausgabe:

    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
    
  5. Stellen Sie das Beispiel im Cluster bereit:

    1. Erstellen Sie die Dienstkonten und Deployments:

      kubectl apply -f kubernetes-manifests/deployments
      

      Erwartete Ausgabe:

      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
      
    2. Erstellen Sie die Dienste:

      kubectl apply -f kubernetes-manifests/services
      

      Erwartete Ausgabe:

      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
      
    3. Erstellen Sie die Diensteinträge:

      kubectl apply -f istio-manifests/allow-egress-googleapis.yaml
      

      Erwartete Ausgabe:

      serviceentry.networking.istio.io/allow-egress-googleapis created
      serviceentry.networking.istio.io/allow-egress-google-metadata created
      

Automatische Sidecar-Injektion aktivieren

  1. Wenden Sie das Standard-Injection-Label auf die Anwendungs-Namespaces an.

    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;
    

    Erwartete Ausgabe:

    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
    
  2. Wenn Sie ein verwaltetes Cloud Service Mesh verwenden und das optionale verwaltete Datenebene die Anwendungs-Namespaces wie folgt annotieren:

    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;
    
  3. Starten Sie die Pods neu:

    for ns in ad cart checkout currency email frontend loadgenerator \
       payment product-catalog recommendation shipping; do
          kubectl rollout restart deployment -n ${ns}
    done;
    

    Erwartete Ausgabe:

    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
    

Anwendung freigeben und darauf zugreifen

Die Art und Weise, wie Sie die Anwendung außerhalb des Mesh-Netzwerks freigeben, hängt davon ab, ob Sie ein Ingress-Gateway bereitgestellt haben. Sie können die Anwendung mit einem Istio-Ingress-Gateway oder einem Kubernetes-Dienst freigeben.

Ingress-Gateway verwenden

Wenn Sie wie im Vorbereitungsschritt angegeben, ein Ingress-Gateway für den Cluster bereitgestellt haben, führen Sie die folgenden Schritte aus, um die Anwendung über das Gateway verfügbar zu machen.

  1. Stellen Sie Gateway und VirtualService für den Frontend-Dienst bereit

    kubectl apply -f istio-manifests/frontend-gateway.yaml
    

    Erwartete Ausgabe:

    gateway.networking.istio.io/frontend-gateway created
    virtualservice.networking.istio.io/frontend-ingress created
    
  2. Rufen Sie die externe IP-Adresse des Ingress-Gateways ab und ersetzen Sie die Platzhalter durch folgende Informationen:

    • GATEWAY_SERVICE_NAME: der Name des Ingress-Gateway-Dienstes. Wenn Sie das Beispielgateway ohne Änderung bereitgestellt oder das Standardgateway für eingehenden Traffic bereitgestellt haben, lautet der Name istio-ingressgateway.

    • GATEWAY_NAMESPACE: Der Namespace, in dem Sie das Ingress-Gateway bereitgestellt haben: Wenn Sie das Standard-Gateway für eingehenden Traffic bereitgestellt haben, lautet der Namespace istio-system.

    kubectl get service GATEWAY_SERVICE_NAME  -n GATEWAY_NAMESPACE
    

    Die Ausgabe sieht etwa so aus:

    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
    

    In diesem Beispiel lautet die IP-Adresse des Ingress-Gateways 35.239.7.64.

  3. Rufen Sie die Anwendung in Ihrem Browser auf, um die Installation zu bestätigen:

    http://EXTERNAL_IP/
    

Kein Ingress-Gateway

Wenn Sie kein Ingress-Gateway bereitgestellt oder die Anwendung über einen Kubernetes-Dienst verfügbar gemacht haben, führen Sie folgende Schritte aus:

  1. Stellen Sie einen Dienst vom Typ LoadBalancer bereit, um den Frontend-Dienst verfügbar zu machen:

    kubectl apply -f frontend-external.yaml
    
  2. Suchen Sie die externe IP-Adresse des Dienstes frontend-external:

    kubectl get service frontend-external -n frontend
    
  3. Rufen Sie die Anwendung in Ihrem Browser auf, um die Installation zu bestätigen:

    http://EXTERNAL_IP/
    

Sie können die Features der Cloud Service Mesh-Beobachtbarkeit kennenlernen in der Google Cloud Console. Beachten Sie, dass es bis zu 10 Minuten dauern kann, bis die Topologiegrafik die Dienste in Ihrem Mesh-Netzwerk anzeigt.

Bereinigen

Bevor Sie Online Boutique löschen, sollten Sie Cloud Service Mesh by example: mTLS verwendet das Beispiel. Wenn Sie fertig sind, entfernen Sie die Beispielanwendung "Online Boutique" mit folgenden Befehlen:

  1. Löschen Sie die Anwendungs-Namespaces:

    kubectl delete -f kubernetes-manifests/namespaces
    

    Erwartete Ausgabe:

    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
    
  2. Löschen Sie die Diensteinträge:

    kubectl delete -f istio-manifests/allow-egress-googleapis.yaml
    

    Erwartete Ausgabe:

    serviceentry.networking.istio.io "allow-egress-googleapis" deleted
    serviceentry.networking.istio.io "allow-egress-google-metadata" deleted
    

Nächste Schritte