Mit Istio als Cluster-Add-on arbeiten

Erfahren Sie, wie Sie Istio als Cluster-Add-on installieren, konfigurieren und verwenden, um Trafficmanagement, Sicherheit, Verbindungen und Beobachtbarkeit in Clustern zu vereinfachen, die Sie mit Kubernetes Engine (OKE) erstellt haben.

Die Verwendung von Istio als Cluster-Add-on (das "Istio-Add-on") und nicht als eigenständiges Programm vereinfacht die Konfiguration und laufende Wartung. Einfacher geht's:

  • Istio aktivieren oder deaktivieren.
  • Melden Sie sich bei automatischen Versionsupdates von Oracle an und deaktivieren Sie diese.
  • Wählen Sie Istio Add-on-Versionen.
  • Add-on-spezifische Anpassungen mit genehmigten Konfigurationsargumenten für Schlüssel/Wert-Paare verwalten

Wenn Sie Istio mit Kubernetes Engine als Cluster-Add-on bereitstellen, können Sie optional ein Istio-Ingress-Gateway erstellen, um eingehende HTTP- und HTTPS-Anforderungen weiterzuleiten. Alternativ können Sie mit anderen unterstützten Ingresses Traffic an den entsprechenden Service weiterleiten, der im Cluster ausgeführt wird. Beachten Sie, dass die Zugänglichkeit des Istio-Ingress-Gateways vom Typ des Load-Balancer-Subnetzes (öffentlich oder privat) abhängt, das für das Cluster angegeben ist.

Im Fall des Istio-Add-ons verwenden Sie genehmigte Konfigurationsargumente für Schlüssel/Wert-Paare, um zusätzliche spezifische Anpassungen für Mesh-weite Konfigurationsparameter vorzunehmen (siehe Argumente für Istio-Add-on-Konfiguration). Für andere Konfigurationsaufgaben wie die Verwaltung von Mesh-Ressourcen verwenden Sie istioctl (das Istio-Befehlszeilentool) oder andere von Istio unterstützte Tools. Wenn Sie das Istio-Add-on mit den genehmigten Argumenten konfigurieren und die Anpassungen beibehalten möchten, wenn die Add-on-Version automatisch von Oracle aktualisiert wird, setzen Sie das Konfigurationsargument customizeConfigMap auf true. Wenn Sie das Konfigurationsargument customizeConfigMap nicht auf true setzen, werden die Anpassungen verworfen, wenn Oracle das Add-on aktualisiert. Alle Anpassungen, die Sie mit istioctl (oder einem anderen von Istio unterstützten Tool) vornehmen, werden immer verworfen, wenn Oracle das Add-on aktualisiert.

Wenn Sie Kubernetes-Anwendungen mit Helm- und Helm-Diagrammen konfigurieren und bereitstellen, beachten Sie, dass Helm nur von ihm erstellte Ressourcen aktualisieren oder löschen kann. Damit Helm das Istio Add-on verwalten kann:

  • Verwenden Sie Helm-Charts, um die Istio- und Istio-Sidecar-Injektor-Konfigurationsmaps zu generieren.
  • Setzen Sie das Konfigurationsargument customizeConfigMap auf true, wenn Sie das Istio-Add-on bereitstellen.

Wenn Sie das Istio-Add-on von Oracle automatisch aktualisieren lassen, führt Oracle ein In-Place-Upgrade durch, wenn neue Istio-Versionen verfügbar werden. Während des Upgrades aktualisiert Oracle automatisch die Istio-Control Plane (istiod) und das Ingress-Gateway auf die neuere Version. Beachten Sie, dass Oracle keine Istio Data Plane Sidecars automatisch aktualisiert, sodass diese Sidecars in der alten Version verbleiben. Es liegt in Ihrer Verantwortung, die Istio-Datenebene manuell zu aktualisieren, indem Sie alle Pods mit Istio-Seitenwagen mit dem Befehl kubectl rollout restart deployment neu starten. Obwohl die Istio-Control Plane abwärtskompatibel mit älteren Sidecar-Versionen ist, empfehlen wir, Istio manuell zu aktualisieren, anstatt das Istio-Add-on automatisch von Oracle für Sie aktualisieren zu lassen. Siehe In-Place-Upgrades in der Istio-Dokumentation.

In diesen Abschnitten wird beschrieben, wie Sie mit dem Istio-Add-on arbeiten, um die Kommunikation und Vernetzung zwischen Diensten zu verwalten:

Beachten Sie, dass Service-Mesh-Produkte (wie Oracle Cloud Infrastructure Service Mesh, Istio und Linkerd) bei der Verwendung des OCI-VCN-nativen Podnetzwerk-CNI-Plug-ins für Podnetze unterstützt werden. Beachten Sie, dass der Support mit Ausnahme des Istio-Add-ons derzeit auf Oracle Linux 7 beschränkt ist (Oracle Linux 8-Support ist geplant). Das Add-on Istio wird sowohl mit Oracle Linux 7 als auch mit Oracle Linux 8 unterstützt. Worker-Knoten müssen Kubernetes 1.26 (oder höher) ausführen.

Beachten Sie außerdem, dass Sie das Istio-Add-on nicht mit Clustern verwenden können, bei denen Istio bereits als Standalone-Programm installiert ist, oder in Clustern, bei denen Oracle Cloud Infrastructure Service Mesh installiert ist.

Hinweis

Sie können Istio mit verwalteten Knotenpools verwenden, jedoch nicht mit virtuellen Knotenpools.

Bereitstellen des Istio-Add-ons

In den folgenden Schritten wird beschrieben, wie Istio Service Mesh als Cluster-Add-on (das "Istio-Add-on") bereitgestellt wird, um Trafficmanagement, Sicherheit, Verbindungen und Beobachtbarkeit in Clustern zu vereinfachen, die Sie mit Kubernetes Engine erstellt haben:

Ein praktisches Beispiel finden Sie unter Beispiel: Istio als Cluster-Add-on bereitstellen.

Schritt 1: Erstellen Sie die Istio Add-on-Konfigurationsdatei

Hinweis

In diesen Anweisungen wird beschrieben, wie Sie eine Istio-Add-on-Konfigurationsdatei erstellen, damit Sie das Istio-Add-on mit der CLI bereitstellen können. Die Konfigurationsdatei enthält genehmigte Konfigurationsargumente für Schlüssel/Wert-Paare. Sie müssen eine Konfigurationsdatei erstellen, wenn Sie das Add-on über die CLI (oder über die API) bereitstellen. Sie können das Add-on Istio auch über die Konsole bereitstellen. In diesem Fall geben Sie Konfigurationsargumente in der Benutzeroberfläche an. Weitere Informationen zum Deployment des Istio-Add-ons mit der Konsole finden Sie unter Cluster-Add-on installieren.

  1. Erstellen Sie in einem geeigneten Editor eine JSON-Datei mit einem Namen Ihrer Wahl (bei diesen Anweisungen wird davon ausgegangen, dass die Datei enableistio.json heißt), die Folgendes enthält:

    {
      "addonName": "Istio",
      "configurations": [
      ]
    }

    Dieser Inhalt reicht aus, um das Istio-Add-on zu aktivieren.

  2. (Optional) Geben Sie in der Datei enableistio.json wie folgt an, ob das Istio-Ingress-Gateway installiert werden soll:
    • Um das Istio-Ingress-Gateway zu installieren, aktualisieren Sie die Datei enableistio.json wie folgt:
      {
        "addonName": "Istio",
        "configurations": [
          {
            "key": "enableIngressGateway",
            "value": "true"
          }
        ]
      }
    • Wenn Sie das Istio-Ingress-Gateway nicht installieren möchten, aktualisieren Sie die Datei enableistio.json wie folgt:
      {
        "addonName": "Istio",
        "configurations": [
          {
            "key": "enableIngressGateway",
            "value": "false"
          }
        ]
      }

    Wenn Sie enableIngressGateway nicht in die Konfigurationsdatei aufnehmen, besteht das Standardverhalten nicht darin, das Istio-Ingress-Gateway zu installieren (entspricht der Einstellung von enableIngressGateway auf false)

  3. (Optional) Geben Sie in der von Ihnen erstellten Datei enableistio.json andere Konfigurationsargumente an, um das Istio-Add-on anzupassen. Informationen zu den Konfigurationsargumenten, die Sie festlegen können, finden Sie unter Istio Add-on-Konfigurationsargumente.

  4. (Optional) Wenn Sie Anpassungen beibehalten möchten, die Sie am Istio-Add-on vornehmen, wenn die Add-on-Version automatisch von Oracle aktualisiert wird, setzen Sie das Argument customizeConfigMap auf true. Beispiel:
    • Um das Istio-Ingress-Gateway zu installieren und Anpassungen beizubehalten, aktualisieren Sie die Datei enableistio.json wie folgt:
      {
        "addonName": "Istio",
        "configurations": [
          {
            "key": "enableIngressGateway",
            "value": "true"
          },
          {
            "key": "customizeConfigMap",
            "value": "true"
          }
        ]
      }
    • Wenn Sie das Istio-Ingress-Gateway nicht installieren möchten, die Anpassungen jedoch beibehalten möchten, aktualisieren Sie die Datei enableistio.json wie folgt:
      {
        "addonName": "Istio",
        "configurations": [
          {
            "key": "enableIngressGateway",
            "value": "false"
          },
          {
            "key": "customizeConfigMap",
            "value": "true"
          }
        ]
      }

      Wenn Sie customizeConfigMap nicht in die Konfigurationsdatei aufnehmen, werden Anpassungen standardmäßig verworfen, wenn die Add-on-Version automatisch von Oracle aktualisiert wird (entspricht der Einstellung customizeConfigMap auf false)

  5. Speichern und schließen Sie die Datei enableistio.json.

Schritt 2: Stellen Sie das Istio-Add-on auf dem Cluster bereit, und bestätigen Sie die erfolgreiche Bereitstellung

Hinweis

In diesen Anweisungen wird beschrieben, wie das Istio-Add-on mit der CLI und einer Konfigurationsdatei bereitgestellt wird. Sie können das Add-on auch über die Konsole und die API bereitstellen. Weitere Informationen finden Sie unter Cluster-Add-on installieren.

  1. Falls noch nicht geschehen, führen Sie die Schritte zum Einrichten der kubeconfig-Konfigurationsdatei des Clusters aus, und legen Sie (gegebenenfalls) die Umgebungsvariable KUBECONFIG so fest, dass sie auf die Datei verweist. Beachten Sie, dass Sie Ihre eigene kubeconfig-Datei einrichten müssen. Sie können nicht mit einer kubeconfig-Datei, die von einem anderen Benutzer eingerichtet wurde, auf ein Cluster zugreifen. Siehe Clusterzugriff einrichten.
  2. Vergewissern Sie sich, dass das Istio-Add-on noch nicht auf dem Cluster installiert wurde, indem Sie Folgendes eingeben:
    oci ce cluster list-addons --cluster-id <cluster-ocid>

    Dabei ist <cluster-ocid> die OCID des Clusters, auf dem Sie das Istio-Add-on bereitstellen möchten.

  3. Stellen Sie das Istio-Add-on auf dem Cluster bereit, indem Sie Folgendes eingeben:

    oci ce cluster install-addon --addon-name Istio --cluster-id <cluster-ocid> --from-json file://./<path-to-config-file>

    Hierbei gilt:

    • --cluster-id <cluster-ocid> ist die OCID des Clusters, in dem Sie das Istio-Add-on bereitstellen möchten.
    • --from-json file://<path-to-config-file> gibt den Speicherort der zuvor erstellten Istio-Add-on-Konfigurationsdatei an. Beispiel: --from-json file://./enableistio.json

    Beispiel:

    oci ce cluster install-addon --addon-name Istio --from-json file://./enableistio.json --cluster-id ocid1.cluster.oc1.iad.aaaaaaaam______dfr

    Eine Anforderung zum Bereitstellen des Istio-Add-ons wird erstellt.

  4. Bestätigen Sie die erfolgreiche Bereitstellung des Istio-Add-ons (und des Istio-Ingress-Gateways, wenn Sie es in der Istio-Add-on-Konfigurationsdatei angegeben haben), wie folgt:

    1. Vergewissern Sie sich, dass das Istio-Add-on auf dem Cluster installiert wurde, indem Sie Folgendes eingeben:
      oci ce cluster list-addons --cluster-id <cluster-ocid>

      Unter der Annahme einer erfolgreichen Bereitstellung zeigt die Ausgabe das Istio-Add-on mit dem Lebenszyklusstatus ACTIVE an. Beispiel:

      {
        "data": [
          {
            "addon-error": null,
            "current-installed-version": "v1.19.0",
            "lifecycle-state": "ACTIVE",
            "name": "Istio",
            "time-created": "2023-11-06T11:21:11+00:00",
            "version": null
          }
        ]
      }
    2. Bestätigen Sie, dass der Istiod-Pod (die Istio-Control-Plane) sowie der Istio-ingressgateway-Pod, wenn Sie ihn in der Konfigurationsdatei angegeben haben, im Istio-System-Namespace ausgeführt werden, indem Sie Folgendes eingeben:
      kubectl get pods -n istio-system

      Bei erfolgreichem Deployment werden in der Ausgabe die Pods mit dem Status "Wird ausgeführt" angezeigt. Beispiel:

      NAME                                   READY   STATUS    RESTARTS   AGE
      istio-ingressgateway-df7d86548-n2vxr   1/1     Running   0          102s
      istiod-65d95bd5f9-vb2qk                1/1     Running   0          101s
    3. Wenn Sie das Istio-Ingress-Gateway in der Konfigurationsdatei angegeben haben, bestätigen Sie, dass der istio-ingressgateway-Service erfolgreich bereitgestellt wurde, indem Sie Folgendes eingeben:
      kubectl get svc istio-ingressgateway -n istio-system

      Bei einem erfolgreichen Deployment zeigt die Ausgabe den istio-ingressgateway-Service als Service vom Typ LoadBalancer und (wenn das Load-Balancer-Subnetz des Clusters öffentlich ist) mit einer öffentlich zugänglichen IP-Adresse an. Beispiel:

      NAME                   TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)                                      AGE
      istio-ingressgateway   LoadBalancer   10.96.31.174   <EXTERNAL-IP>    15021:30089/TCP,80:31662/TCP,443:32217/TCP   2m50s

Schritt 3: Envoy-Sidecar-Injektion aktivieren

Damit Istio den Envoy-Sidecar in jeden Service injizieren kann, um Kommunikation, Konfiguration und Sicherheit bereitzustellen:

  1. Erstellen Sie den Namespace, in dem Anwendungen bereitgestellt werden sollen (sofern der Namespace noch nicht vorhanden ist), indem Sie Folgendes eingeben:
    kubectl create namespace <namespace-name>
  2. Legen Sie den Namespace, in dem Anwendungen bereitgestellt werden sollen, als Standard-Namespace fest, indem Sie Folgendes eingeben:
    kubectl config set-context --current --namespace=<namespace-name>
  3. Vergewissern Sie sich, dass der Namespace, in dem Anwendungen bereitgestellt werden sollen, der Standard-Namespace ist, indem Sie Folgendes eingeben:
    kubectl config view --minify | grep namespace
  4. Fügen Sie dem Namespace das Label istio-injection=enabled hinzu, um das Envoy-Sidecar automatisch in neue Anwendungspods zu installieren, die im Namespace bereitgestellt werden, indem Sie Folgendes eingeben:
    kubectl label namespace <namespace-name> istio-injection=enabled
  5. Vergewissern Sie sich, dass der Namespace ordnungsgemäß gekennzeichnet ist, indem Sie Folgendes eingeben:
    kubectl get namespace -L istio-injection

Schritt 4: Anwendung bereitstellen und Envoy-Sidecar-Container beobachten

So bestätigen Sie, dass Istio zur Bereitstellung von Kommunikation, Konfiguration und Sicherheit für eine Anwendung verwendet wird:

  1. Anwendung bereitstellen. Beispiel: Geben Sie Folgendes ein:
    kubectl apply -f <manifest-name>
  2. Vergewissern Sie sich, dass die Services der Anwendung erfolgreich erstellt wurden, indem Sie Folgendes eingeben:
    kubectl get services
  3. Bestätigen Sie, dass die Pods der Anwendung den Status "Wird ausgeführt" aufweisen, indem Sie Folgendes eingeben:
    kubectl get pods

    Die Ausgabe zeigt, dass jeder Anwendungspod zwei Container enthält. Für jeden Pod ist ein Container der Anwendungscontainer und der andere Container der Envoy-Sidecar, den Istio injiziert hat.

  4. Stellen Sie sicher, dass einer der Pods der Anwendung zwei Container enthält (einer davon ist der Anwendungscontainer, der andere ist der von Istio eingespritzte Envoy-Sidecar), indem Sie Folgendes eingeben:
    kubectl get pods <application-pod-name> -o jsonpath='{.spec.containers[*].name}'

    Beachten Sie, dass nach dem Aktivieren des Ingress-Gateways standardmäßig nicht von außerhalb des Clusters auf Anwendungen zugegriffen werden kann. Ein Beispiel, wie Sie eine Anwendung zugänglich machen, finden Sie unter Beispiel: Istio als Cluster-Add-on bereitstellen.

Beispiel: Istio als Cluster-Add-on bereitstellen

In diesem Beispiel installieren Sie das Add-on Istio und das Ingress-Gateway Istio auf einem Cluster, das Sie mit der Kubernetes-Engine erstellt haben. Nachdem Sie das Istio-Add-on und das Ingress-Gateway installiert haben, stellen Sie die Istio-Beispielanwendung Bookinfo bereit und machen die Anwendung von außerhalb des Clusters zugänglich:

  1. Legen Sie der Einfachheit halber eine Umgebungsvariable namens CLUSTER_ID auf den Wert der OCID des Clusters fest, indem Sie Folgendes eingeben:
    export CLUSTER_ID=<cluster-ocid>
  2. Erstellen Sie eine JSON-Datei mit dem Namen enableistio-ig.json, die Folgendes enthält:
    {
      "addonName": "Istio",
      "configurations": [
        {
          "key": "enableIngressGateway",
          "value": "true"
        }
      ]
    }

    Diese Konfigurationsdatei installiert das Istio-Add-on und das Istio-Ingress-Gateway.

  3. Installieren Sie das Istio-Add-on und das Istio-Ingress-Gateway auf dem Cluster, indem Sie Folgendes eingeben:
    oci ce cluster install-addon --addon-name Istio --cluster-id $CLUSTER_ID --from-json file://./enableistio-ig.json

    Eine Anforderung zum Installieren des Istio-Add-ons wird erstellt.

  4. Überprüfen Sie die erfolgreiche Installation des Istion-Add-ons und des Istio-Ingress-Gateways:
    1. Bestätigen Sie, dass das Istio-Add-on erfolgreich installiert wurde, indem Sie Folgendes eingeben:
      oci ce cluster list-addons --cluster-id $CLUSTER_ID

      Unter der Annahme einer erfolgreichen Bereitstellung zeigt die Ausgabe das Istio-Add-on mit dem Lebenszyklusstatus ACTIVE an. Die folgenden Ausgaben zeigen beispielsweise das Istio-Add-on sowie eine Reihe wichtiger Cluster-Add-ons:

      {
        "data": [
          {
            "addon-error": null,
            "current-installed-version": "v1.10.1-multiarch-7",
            "lifecycle-state": "ACTIVE",
            "name": "CoreDNS",
            "time-created": "2023-11-06T10:35:26+00:00",
            "version": null
          },
          {
            "addon-error": null,
            "current-installed-version": "v1.19.0",
            "lifecycle-state": "ACTIVE",
            "name": "Istio",
            "time-created": "2023-11-06T11:21:11+00:00",
            "version": null
          },
          {
            "addon-error": null,
            "current-installed-version": "v1.27.2-oke.0.2.20-multiarch-98",
            "lifecycle-state": "ACTIVE",
            "name": "KubeProxy",
            "time-created": "2023-11-06T10:35:26+00:00",
            "version": null
          },
          {
            "addon-error": null,
            "current-installed-version": "v2.0.1",
            "lifecycle-state": "ACTIVE",
            "name": "OciVcnIpNative",
            "time-created": "2023-11-06T10:35:26+00:00",
            "version": null
          }
        ]
      }
    2. Bestätigen Sie, dass der Istio Control Plane (istiod) Pod und der istio-ingressgateway Pod im Istio-System Namespace ausgeführt werden, indem Sie Folgendes eingeben:
      kubectl get pods -n istio-system

      Bei erfolgreichem Deployment werden in der Ausgabe beide Pods mit dem Status "Wird ausgeführt" angezeigt. Beispiel:

      NAME                                   READY   STATUS    RESTARTS   AGE
      istio-ingressgateway-df7d86548-n2vxr   1/1     Running   0          102s
      istiod-65d95bd5f9-vb2qk                1/1     Running   0          101s
    3. Vergewissern Sie sich, dass der Dienst istio-ingressgateway erfolgreich bereitgestellt wurde, indem Sie Folgendes eingeben:
      kubectl get svc istio-ingressgateway -n istio-system

      Bei einem erfolgreichen Deployment zeigt die Ausgabe den istio-ingressgateway-Service als Service vom Typ LoadBalancer und (wenn das Load-Balancer-Subnetz des Clusters öffentlich ist) mit einer öffentlich zugänglichen IP-Adresse an. Beispiel:

      NAME                   TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)                                      AGE
      istio-ingressgateway   LoadBalancer   10.96.31.174   <EXTERNAL-IP>    15021:30089/TCP,80:31662/TCP,443:32217/TCP   2m50s
  5. Erstellen Sie einen neuen Namespace, in dem die Bookinfo-Beispielanwendung bereitgestellt werden soll:
    1. Erstellen Sie den Namespace bookinfo, indem Sie Folgendes eingeben:
      kubectl create namespace bookinfo
    2. Machen Sie den bookinfo-Namespace zum Standard-Namespace, indem Sie Folgendes eingeben:
      kubectl config set-context --current --namespace=bookinfo
    3. Bestätigen Sie, dass bookinfo der Standard-Namespace ist, indem Sie Folgendes eingeben:
      kubectl config view --minify | grep namespace
  6. Fügen Sie dem Bookinfo-Namespace das Label istio-injection=enabled hinzu, um das Envoy-Sidecar automatisch in neue Anwendungspods zu installieren, die im Namespace bereitgestellt werden:
    1. Fügen Sie dem Bookinfo-Namespace das Label hinzu, indem Sie Folgendes eingeben:
      kubectl label namespace bookinfo istio-injection=enabled
    2. Bestätigen Sie, dass der Bookinfo-Namespace ordnungsgemäß gekennzeichnet ist, indem Sie Folgendes eingeben:
      kubectl get namespace -L istio-injection
  7. Stellen Sie die Bookinfo-Beispielanwendung bereit, indem Sie Folgendes eingeben:
    kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/platform/kube/bookinfo.yaml

    Bei einem erfolgreichen Deployment werden in der Ausgabe verschiedene Deployments und Services angezeigt, die im Cluster erstellt wurden:

    service/details created
    serviceaccount/bookinfo-details created
    deployment.apps/details-v1 created
    service/ratings created
    serviceaccount/bookinfo-ratings created
    deployment.apps/ratings-v1 created
    service/reviews created
    serviceaccount/bookinfo-reviews created
    deployment.apps/reviews-v1 created
    deployment.apps/reviews-v2 created
    deployment.apps/reviews-v3 created
    service/productpage created
    serviceaccount/bookinfo-productpage created
    deployment.apps/productpage-v1 created
  8. Prüfen Sie die erfolgreiche Bereitstellung der Bookinfo-Beispielanwendung:
    1. Bestätigen Sie, dass die Services erfolgreich erstellt wurden, indem Sie Folgendes eingeben:
      kubectl get services

      Bei einem erfolgreichen Deployment werden in der Ausgabe die im Cluster erstellten Services wie folgt angezeigt:

      NAME          TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
      details       ClusterIP   10.96.72.219   <none>        9080/TCP   54s
      productpage   ClusterIP   10.96.65.83    <none>        9080/TCP   54s
      ratings       ClusterIP   10.96.101.51   <none>        9080/TCP   54s
      reviews       ClusterIP   10.96.14.9     <none>        9080/TCP   54s
    2. Bestätigen Sie, dass alle Pods den Status "Wird ausgeführt" aufweisen, indem Sie Folgendes eingeben:
      kubectl get pods

      Bei einem erfolgreichen Deployment werden in der Ausgabe die ausgeführten Pods wie folgt angezeigt:

      NAME                             READY   STATUS    RESTARTS   AGE
      details-v1-5f4d584748-hcm9t      2/2     Running   0          81s
      productpage-v1-564d4686f-48lpw   2/2     Running   0          80s
      ratings-v1-686ccfb5d8-bpl8t      2/2     Running   0          81s
      reviews-v1-86896b7648-6c8d4      2/2     Running   0          81s
      reviews-v2-b7dcd98fb-fsv7c       2/2     Running   0          81s
      reviews-v3-5c5cc7b6d-qgrv2       2/2     Running   0          81s

      Die Ausgabe zeigt, dass jeder Anwendungspod zwei Container enthält. Für jeden Pod ist ein Container der Anwendungscontainer und der andere Container der von Istio eingespritzte Envoy-Sidecar.

    3. Stellen Sie sicher, dass der ratings-Pod zwei Container enthält (einer davon ist der Anwendungscontainer, der andere ist der von Istio injizierte Envoy-Sidecar). Beispiel: Geben Sie Folgendes ein:
      kubectl get pods ratings-v1-686ccfb5d8-bpl8t -o jsonpath='{.spec.containers[*].name}'

      Die Ausgabe zeigt zwei Container, den Applikationscontainer (Bewertungen) und den von Istio (istio-proxy) eingespritzten Envoy-Seitenwagencontainer:

      ratings istio-proxy
    4. Vergewissern Sie sich, dass die Anwendung ausgeführt wird, indem Sie einen curl-Befehl von einem Pod senden:
      kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>"
      <title>Simple Bookstore App</title>

      Beachten Sie, dass die Bookinfo-Beispielanwendung noch nicht von außerhalb des Clusters zugänglich ist, selbst nachdem das Ingress-Gateway aktiviert wurde. Beachten Sie auch, dass die Barrierefreiheit des Istio-Ingress-Gateways vom Typ des für das Cluster angegebenen Load-Balancer-Subnetzes (öffentlich oder privat) abhängt.

  9. Machen Sie die Bookinfo-Beispielanwendung von außerhalb des Clusters zugänglich:

    1. Ordnen Sie den Ingress des Beispiel-Deployments dem Istio-Ingress-Gateway zu, indem Sie Folgendes eingeben:
      kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/networking/bookinfo-gateway.yaml

      Die Ausgabe zeigt, dass die Kubernetes-Gateway- und VirtualService-Ressourcen erstellt wurden:

      gateway.networking.istio.io/bookinfo-gateway created
      virtualservice.networking.istio.io/bookinfo created
  10. Prüfen Sie, ob auf die Bookinfo-Beispielanwendung zugegriffen werden kann und verwenden Sie das Istio-Ingress-Gateway:
    1. Legen Sie Umgebungsvariablen für den Ingress-Host und den Ingress-Port fest, indem Sie Folgendes eingeben:
      export INGRESS_NAME=istio-ingressgateway
      export INGRESS_NS=istio-system
      export INGRESS_HOST=$(kubectl -n "$INGRESS_NS" get service "$INGRESS_NAME" -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
      export INGRESS_PORT=$(kubectl -n "$INGRESS_NS" get service "$INGRESS_NAME" -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')
    2. Bestätigen Sie, dass auf die Bookinfo-Beispielanwendung zugegriffen werden kann und das Istio-Ingress-Gateway verwendet wird, indem Sie Folgendes eingeben:
      curl -s "http://${INGRESS_HOST}:${INGRESS_PORT}/productpage" | grep -o "<title>.*</title>"

      Bei einem erfolgreichen Deployment werden in der Ausgabe die im Cluster erstellten Services wie folgt angezeigt:

      <title>Simple Bookstore App</title>
    3. Zeigen Sie die Bookinfo-Webseite in einem Browser an, indem Sie die folgende URL öffnen:
      http://${INGRESS_HOST}:${INGRESS_PORT}/productpage
    4. Aktualisieren Sie die Bookinfo-Webseite im Browser mehrmals, um verschiedene Versionen von Bewertungen anzuzeigen, die auf der Seite angezeigt werden.
  11. (Optional) Nachdem Sie das Beispiel abgeschlossen haben, können Sie jetzt die erstellten Ressourcen löschen:
    1. Löschen Sie die Bookinfo-Beispielanwendung, indem Sie Folgendes eingeben:
      kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/platform/kube/bookinfo.yaml
    2. Deaktivieren (und optional) Sie das Istio-Add-on mit dem Befehl oci ce cluster disable-addon, indem Sie Folgendes eingeben:

      oci ce cluster disable-addon --addon-name Istio --cluster-id $CLUSTER_ID --is-remove-existing-add-on <true|false>

      wobei --is-remove-existing-add-on <true|false> angibt, dass das Istio-Add-on entweder vollständig entfernt werden soll (wenn es auf true gesetzt ist) oder dass das Add-on nicht entfernt werden soll, aber einfach deaktiviert und nicht verwendet werden soll (wenn es auf false gesetzt ist). Wenn Sie das Add-on deaktivieren, aktualisiert Oracle die Add-on-Version nicht mehr automatisch, wenn neue Versionen verfügbar sind.

      Beispiel:

      oci ce cluster disable-addon --addon-name Istio --cluster-id $CLUSTER_ID --is-remove-existing-add-on true

      Eine Arbeitsanforderung wird erstellt, um das Istio-Add-on zu deaktivieren (und optional zu entfernen).

    3. Entfernen Sie Istio CustomResourceDefinitions (CRDs), die nicht standardmäßig gelöscht werden, indem Sie Folgendes eingeben:
      kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')
    4. Entfernen Sie Istio-Mesh-Ressourcen (wie das Kubernetes-Gateway und die VirtualService-Ressourcen), die nicht vom Istio-Add-on verwaltet werden, indem Sie Folgendes eingeben:
      kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/networking/bookinfo-gateway.yaml

Aktualisieren des Istio-Add-ons

Hinweis

In diesen Anweisungen wird beschrieben, wie Sie das Istio-Add-on mit der CLI und einer Konfigurationsdatei aktualisieren. Sie können das Add-on auch über die Konsole und die API aktualisieren. Weitere Informationen finden Sie unter Cluster-Add-on aktualisieren.

  1. Öffnen Sie die Istio Add-on-Konfigurationsdatei in einem geeigneten Editor.

  2. Fügen Sie Konfigurationsargumente in der Konfigurationsdatei nach Bedarf hinzu, entfernen oder ändern Sie sie. Informationen zu den Argumenten, die Sie festlegen können, finden Sie unter Istio Add-on-Konfigurationsargumente.

  3. Wenn Sie angegeben haben, dass Oracle die Istio-Add-on-Version automatisch aktualisieren soll und Sie die Konfigurationsänderungen beibehalten möchten, setzen Sie das Konfigurationsargument customizeConfigMap auf true (wenn es noch nicht festgelegt ist).
  4. Aktualisieren Sie das Istio-Add-on mit dem Befehl oci ce cluster update-addon, indem Sie Folgendes eingeben:
    oci ce cluster update-addon --addon-name Istio --from-json file://<path-to-config-file> --cluster-id <cluster-ocid>

    Hierbei gilt:

    • --cluster-id <cluster-ocid> ist die OCID des Clusters, in dem Sie das Istio-Add-on aktualisieren möchten.
    • --from-json file://<path-to-config-file> gibt den Speicherort der Istio-Add-on-Konfigurationsdatei an, die beim Aktualisieren des Add-ons verwendet werden soll. Beispiel: --from-json file://./istio-add-on.json

    Beispiel:

    oci ce cluster update-addon --addon-name Istio --from-json file://./istio-add-on.json --cluster-id ocid1.cluster.oc1.iad.aaaaaaaam______dfr

    Eine Anforderung zum Aktualisieren des Istio-Add-ons wird erstellt.

  5. (Optional) Zeigen Sie den Status der Istiod- und Istio-ingressgateway-Pods an, um den Fortschritt zu beobachten, indem Sie Folgendes eingeben:
    kubectl get pods -n istio-system

Das Istio-Add-on deaktivieren (und entfernen)

Hinweis

In diesen Anweisungen wird beschrieben, wie Sie das Istio-Add-on mit der CLI und einer Konfigurationsdatei deaktivieren und entfernen. Sie können das Add-on auch über die Konsole und die API aktualisieren. Weitere Informationen finden Sie unter Cluster-Add-on deaktivieren (und entfernen).

  1. Deaktivieren (und optional) Sie das Istio-Add-on mit dem Befehl oci ce cluster disable-addon, indem Sie Folgendes eingeben:

    oci ce cluster disable-addon --addon-name Istio --cluster-id <cluster-ocid> --is-remove-existing-add-on <true|false>

    Hierbei gilt:

    • --cluster-id <cluster-ocid> ist die OCID des Clusters, in dem Sie das Istio-Add-on deaktivieren (und optional entfernen) möchten.
    • --is-remove-existing-add-on <true|false> gibt an, dass das Istio-Add-on entweder vollständig entfernt werden soll (wenn es auf true gesetzt ist) oder dass das Add-on nicht entfernt werden soll, sondern einfach deaktiviert und nicht verwendet werden soll (wenn es auf false gesetzt ist). Wenn Sie das Istio-Add-on deaktivieren, aktualisiert Oracle die Add-on-Version nicht mehr automatisch, wenn neue Versionen verfügbar werden.

    Beispiel:

    oci ce cluster disable-addon --addon-name Istio --cluster-id ocid1.cluster.oc1.iad.aaaaaaaam______dfr --is-remove-existing-add-on true

    Eine Arbeitsanforderung wird erstellt, um das Istio-Add-on zu deaktivieren (und optional zu entfernen).

  2. (Optional) Zeigen Sie den Status der Istiod- und Istio-ingressgateway-Pods an, um den Fortschritt zu beobachten, indem Sie Folgendes eingeben:
    kubectl get pods -n istio-system
  3. (Optional) Entfernen Sie Istio CustomResourceDefinitions (CRDs), die nicht standardmäßig gelöscht werden, indem Sie Folgendes eingeben:
    kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')
  4. (Optional) Entfernen Sie Istio-Mesh-Ressourcen (wie die Kubernetes Gateway- und VirtualService-Ressourcen), die nicht vom Istio-Add-on verwaltet werden, mit dem Befehl kubectl delete.