Utilisation d'Istio en tant qu'extension de cluster

Découvrez comment installer, configurer et utiliser Istio en tant qu'extension de cluster pour simplifier la gestion du trafic, la sécurité, les connexions et l'observabilité dans les clusters que vous avez créés avec Kubernetes Engine (OKE).

L'utilisation d'Istio en tant qu'extension de cluster (l'extension Istio) plutôt qu'en tant que programme autonome simplifie la configuration et la maintenance continue. Vous pouvez plus simplement :

  • Activer ou désactiver Istio.
  • Accepter et désactiver les mises à jour automatiques de version par Oracle.
  • Sélectionnez les versions des modules complémentaires Istio.
  • Gérer des personnalisations spécifiques à un module à l'aide d'arguments de configuration de paire clé/valeur approuvés.

Lorsque vous déployez Istio en tant qu'extension de cluster à l'aide de Kubernetes Engine, vous pouvez éventuellement créer une passerelle entrante Istio pour acheminer les demandes HTTP et HTTPS entrantes. Vous pouvez également utiliser d'autres entrées prises en charge pour acheminer le trafic vers le service approprié exécuté sur le cluster. Notez que l'accessibilité de la passerelle entrante Istio dépend du type de sous-réseau d'équilibreur de charge (public ou privé) indiqué pour le cluster.

Dans le cas de l'extension Istio, vous utilisez des arguments de configuration de paire clé/valeur approuvés pour effectuer des personnalisations propres à l'extension pour les paramètres de configuration à l'échelle du maillage (reportez-vous à Arguments de configuration d'extension Istio). Pour d'autres tâches de configuration, telles que la gestion des ressources de maillage, vous utilisez istioctl (l'outil de ligne de commande Istio) ou d'autres outils pris en charge par Istio. Si vous configurez le module complémentaire Istio en utilisant les arguments approuvés et que vous souhaitez conserver les personnalisations lorsque la version du module est mise à jour automatiquement par Oracle, définissez l'argument de configuration customizeConfigMap sur true. Si vous ne définissez pas l'argument de configuration customizeConfigMap sur true, les personnalisations sont ignorées lorsqu'Oracle met à jour le module. Toutes les personnalisations que vous effectuez à l'aide d'istioctl (ou d'un autre outil pris en charge par Istio) sont toujours ignorées lorsqu'Oracle met à jour le module.

Si vous utilisez des graphiques Helm et Helm pour configurer et déployer des applications Kubernetes, notez que Helm ne peut mettre à jour ou supprimer que les ressources qu'il a créées. Par conséquent, pour permettre à Helm de gérer l'extension Istio :

  • Utilisez des graphiques Helm pour générer les configmaps istio et istio-sidecar-injector.
  • Définissez l'argument de configuration customizeConfigMap sur true lors du déploiement de l'extension Istio.

Si vous décidez qu'Oracle met automatiquement à jour l'extension Istio, Oracle effectuera une mise à niveau sur place lorsque de nouvelles versions d'Istio seront disponibles. Pendant la mise à niveau, Oracle met automatiquement à jour le plan de contrôle Istio (istiod) et la passerelle entrante vers la version plus récente. Notez qu'Oracle ne met pas automatiquement à jour les sidecars de plan de données Istio. Ces sidecars restent donc dans l'ancienne version. Il vous incombe de mettre à jour manuellement le plan de données Istio en redémarrant tous les pods avec les sidecars Istio à l'aide de la commande kubectl rollout restart deployment. Même si le plan de contrôle Istio est rétrocompatible avec les anciennes versions de sidecar, si votre priorité est de garantir un temps d'inactivité nul, nous vous recommandons de mettre à niveau Istio manuellement vous-même plutôt que de demander à Oracle de mettre à jour automatiquement l'extension Istio pour vous. Reportez-vous à Mises à niveau sur place dans la documentation Istio.

Les sections suivantes expliquent comment utiliser l'extension Istio pour gérer la communication et la mise en réseau entre les services :

Les produits de maillage de service (tels qu'Istio et Linkerd) sont pris en charge lors de l'utilisation du module d'extension CNI de mise en réseau de pod natif OCI VCN pour la mise en réseau de pods. Notez qu'à l'exception de l'extension Istio, le support est actuellement limité à Oracle Linux 7 (le support Oracle Linux 8 est prévu). Le module complémentaire Istio est pris en charge avec Oracle Linux 7 et Oracle Linux 8. Les noeuds de processus actif doivent exécuter Kubernetes 1.26 (ou version ultérieure).

Par ailleurs, vous ne pouvez pas utiliser l'extension Istio avec des clusters pour lesquels Istio est déjà installé en tant que programme autonome (ni avec des clusters pour lesquels Oracle Cloud Infrastructure Service Mesh est déjà installé, ce qui est maintenant en fin de vie).

Remarque

Vous pouvez utiliser Istio avec des pools de noeuds gérés, mais pas avec des pools de noeuds virtuels.

Déploiement de l'extension Istio

Les instructions des étapes ci-dessous décrivent comment déployer le maillage de service Istio en tant qu'extension de cluster (l'"extension Istio") pour simplifier la gestion du trafic, la sécurité, les connexions et l'observabilité dans les clusters que vous avez créés avec Kubernetes Engine :

Pour obtenir un exemple pratique, reportez-vous à Exemple : déploiement d'Istio en tant qu'extension de cluster.

Etape 1 : Création du fichier de configuration de l'extension Istio

Remarque

Ces instructions décrivent la création d'un fichier de configuration d'extension Istio pour vous permettre de déployer l'extension Istio à l'aide de la CLI. Le fichier de configuration contient des arguments de configuration de paire clé/valeur approuvés. Vous devez créer un fichier de configuration lorsque vous déployez le module complémentaire à l'aide de la CLI (ou de l'API). Vous pouvez également utiliser la console pour déployer l'extension Istio, auquel cas vous spécifiez des arguments de configuration dans l'interface utilisateur. Pour plus d'informations sur le déploiement de l'extension Istio à l'aide de la console, reportez-vous à Installation d'une extension de cluster.

  1. Dans un éditeur approprié, créez un fichier JSON avec le nom de votre choix (ces instructions supposent que le fichier est appelé enableistio.json) contenant les éléments suivants :

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

    Ce contenu est suffisant pour activer le module complémentaire Istio.

  2. (Facultatif) Dans le fichier enableistio.json, indiquez si la passerelle entrante Istio doit être installée, comme suit :
    • Pour installer la passerelle entrante Istio, mettez à jour le fichier enableistio.json comme suit :
      {
        "addonName": "Istio",
        "configurations": [
          {
            "key": "enableIngressGateway",
            "value": "true"
          }
        ]
      }
    • Si vous ne voulez pas installer la passerelle entrante Istio, mettez à jour le fichier enableistio.json comme suit :
      {
        "addonName": "Istio",
        "configurations": [
          {
            "key": "enableIngressGateway",
            "value": "false"
          }
        ]
      }

    Si vous n'incluez pas enableIngressGateway dans le fichier de configuration, le comportement par défaut n'est pas d'installer la passerelle entrante Istio (équivalent à la définition de enableIngressGateway sur false)

  3. (Facultatif) Dans le fichier enableistio.json que vous avez créé, indiquez d'autres arguments de configuration pour personnaliser l'extension Istio. Pour plus d'informations sur les arguments de configuration que vous pouvez définir, reportez-vous à la section Istio add-on configuration arguments.

  4. (Facultatif) Si vous souhaitez conserver les personnalisations que vous effectuez sur le module complémentaire Istio si la version du module est mise à jour automatiquement par Oracle, définissez l'argument customizeConfigMap sur true. Par exemple :
    • Pour installer la passerelle entrante Istio et conserver les personnalisations, mettez à jour le fichier enableistio.json comme suit :
      {
        "addonName": "Istio",
        "configurations": [
          {
            "key": "enableIngressGateway",
            "value": "true"
          },
          {
            "key": "customizeConfigMap",
            "value": "true"
          }
        ]
      }
    • Si vous ne voulez pas installer la passerelle entrante Istio mais que vous voulez conserver les personnalisations, mettez à jour le fichier enableistio.json comme suit :
      {
        "addonName": "Istio",
        "configurations": [
          {
            "key": "enableIngressGateway",
            "value": "false"
          },
          {
            "key": "customizeConfigMap",
            "value": "true"
          }
        ]
      }

      Si vous n'incluez pas customizeConfigMap dans le fichier de configuration, le comportement par défaut est d'annuler les personnalisations si la version du module est mise à jour automatiquement par Oracle (équivalent à la définition de customizeConfigMap sur false)

  5. Enregistrez et fermez le fichier enableistio.json.

Etape 2 : déploiement de l'extension Istio sur le cluster et confirmation du déploiement

Remarque

Ces instructions décrivent le déploiement de l'extension Istio à l'aide de la CLI et d'un fichier de configuration. Vous pouvez également déployer le module complémentaire à l'aide de la console et de l'API. Pour plus d'informations, reportez-vous à la section Installing a Cluster Add-on.

  1. Si vous ne l'avez pas encore fait, suivez les étapes permettant de configurer le fichier de configuration Kubeconfig du cluster et (si nécessaire) de définir la variable d'environnement KUBECONFIG de sorte qu'elle pointe vers le fichier. Vous devez configurer votre propre fichier Kubeconfig. Vous ne pouvez pas accéder à un cluster à l'aide d'un fichier Kubeconfig configuré par un autre utilisateur. Reportez-vous à Configuration de l'accès à un cluster.
  2. Vérifiez que le module complémentaire Istio n'a pas encore été installé sur le cluster en saisissant la commande suivante :
    oci ce cluster list-addons --cluster-id <cluster-ocid>

    <cluster-ocid> est l'OCID du cluster sur lequel déployer l'extension Istio.

  3. Déployez l'extension Istio sur le cluster en saisissant ce qui suit :

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

    où :

    • --cluster-id <cluster-ocid> est l'OCID du cluster dans lequel déployer l'extension Istio.
    • --from-json file://<path-to-config-file> indique l'emplacement du fichier de configuration du module complémentaire Istio que vous avez créé précédemment. Par exemple, --from-json file://./enableistio.json

    Par exemple :

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

    Une demande de travail est créée pour déployer le module complémentaire Istio.

  4. Confirmez le déploiement réussi du module complémentaire Istio (et de la passerelle entrante Istio, si vous l'avez spécifié dans le fichier de configuration du module complémentaire Istio), comme suit :

    1. Vérifiez que l'extension Istio a été installée sur le cluster en saisissant ce qui suit :
      oci ce cluster list-addons --cluster-id <cluster-ocid>

      En supposant un déploiement réussi, la sortie affiche l'extension Istio avec un état de cycle de vie ACTIVE. Par exemple :

      {
        "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. Vérifiez que le pod istiod (plan de contrôle Istio), ainsi que le pod istio-ingressgateway si vous l'avez spécifié dans le fichier de configuration, sont en cours d'exécution dans l'espace de noms istio-system en saisissant ce qui suit :
      kubectl get pods -n istio-system

      En supposant un déploiement réussi, la sortie affiche les pods dont le statut est En cours d'exécution. Par exemple :

      NAME                                   READY   STATUS    RESTARTS   AGE
      istio-ingressgateway-df7d86548-n2vxr   1/1     Running   0          102s
      istiod-65d95bd5f9-vb2qk                1/1     Running   0          101s
    3. Si vous avez indiqué la passerelle entrante Istio dans le fichier de configuration, vérifiez que le service istio-ingressgateway a été déployé en saisissant ce qui suit :
      kubectl get svc istio-ingressgateway -n istio-system

      En cas de déploiement réussi, la sortie affiche le service istio-ingressgateway en tant que service de type LoadBalancer et (si le sous-réseau d'équilibreur de charge du cluster est public) avec une adresse IP accessible publiquement. Par exemple :

      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

Etape 3 : Activation de l'injection sidecar Envoy

Pour permettre à Istio d'injecter le sidecar Envoy dans chaque service afin d'assurer la communication, la configuration et la sécurité :

  1. Créez l'espace de noms dans lequel déployer les applications (si l'espace de noms n'existe pas déjà) en saisissant ce qui suit :
    kubectl create namespace <namespace-name>
  2. Définissez l'espace de noms dans lequel déployer les applications comme espace de noms par défaut en saisissant la commande suivante :
    kubectl config set-context --current --namespace=<namespace-name>
  3. Vérifiez que l'espace de noms dans lequel déployer les applications est l'espace de noms par défaut en saisissant la commande suivante :
    kubectl config view --minify | grep namespace
  4. Ajoutez le libellé istio-injection=enabled à l'espace de noms pour installer automatiquement le sidecar Envoy dans les nouveaux pods d'application déployés dans l'espace de noms en saisissant ce qui suit :
    kubectl label namespace <namespace-name> istio-injection=enabled
  5. Vérifiez que l'espace de noms est correctement étiqueté en saisissant la commande suivante :
    kubectl get namespace -L istio-injection

Etape 4 : Déployer une application et observer les conteneurs Envoy sidecar

Pour vérifier qu'Istio est utilisé pour assurer la communication, la configuration et la sécurité d'une application, procédez comme suit :

  1. déployer l'application. Par exemple, entrez la commande suivante :
    kubectl apply -f <manifest-name>
  2. Vérifiez que les services de l'application ont été créés en saisissant la commande suivante :
    kubectl get services
  3. Vérifiez que les pods de l'application ont le statut En cours d'exécution en saisissant ce qui suit :
    kubectl get pods

    La sortie indique que chaque pod d'application comporte deux conteneurs. Pour chaque pod, un conteneur est le conteneur d'application et l'autre conteneur est le sidecar Envoyé injecté par Istio.

  4. Confirmez que l'un des pods de l'application comporte deux conteneurs (l'un est le conteneur d'application et l'autre est le sidecar Envoyé injecté par Istio) en saisissant ce qui suit :
    kubectl get pods <application-pod-name> -o jsonpath='{.spec.containers[*].name}'

    Les applications ne sont pas accessibles depuis l'extérieur du cluster par défaut après l'activation de la passerelle entrante. Pour obtenir un exemple expliquant comment rendre une application accessible, reportez-vous à Exemple : déploiement d'Istio en tant qu'extension de cluster.

Exemple : déploiement d'Istio en tant qu'extension de cluster

Dans cet exemple, vous installez l'extension Istio et la passerelle entrante Istio sur un cluster que vous avez créé avec Kubernetes Engine. Après avoir installé l'extension Istio et la passerelle entrante, vous déployez l'exemple d'application Bookinfo d'Istio et rendez l'application accessible depuis l'extérieur du cluster :

  1. Pour plus de commodité, définissez une variable d'environnement nommée CLUSTER_ID sur la valeur de l'OCID du cluster en saisissant ce qui suit :
    export CLUSTER_ID=<cluster-ocid>
  2. Créez un fichier JSON nommé enableistio-ig.json contenant les éléments suivants :
    {
      "addonName": "Istio",
      "configurations": [
        {
          "key": "enableIngressGateway",
          "value": "true"
        }
      ]
    }

    Ce fichier de configuration installe l'extension Istio et la passerelle entrante Istio.

  3. Installez l'extension Istio et la passerelle entrante Istio sur le cluster en saisissant ce qui suit :
    oci ce cluster install-addon --addon-name Istio --cluster-id $CLUSTER_ID --from-json file://./enableistio-ig.json

    Une demande de travail est créée pour installer le module complémentaire Istio.

  4. Vérifiez que l'installation de l'extension Istion et de la passerelle entrante Istio a réussi :
    1. Confirmez que le module complémentaire Istio a été installé avec succès en saisissant la commande suivante :
      oci ce cluster list-addons --cluster-id $CLUSTER_ID

      En supposant un déploiement réussi, la sortie affiche l'extension Istio avec un état de cycle de vie ACTIVE. Par exemple, les sorties suivantes montrent l'extension Istio, ainsi qu'un certain nombre d'extensions de cluster essentielles :

      {
        "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. Vérifiez que le pod Istio control plan (istiod) et le pod istio-ingressgateway sont tous deux en cours d'exécution dans l'espace de noms istio-system en saisissant la commande suivante :
      kubectl get pods -n istio-system

      En supposant un déploiement réussi, la sortie affiche les deux pods dont le statut est En cours d'exécution. Par exemple :

      NAME                                   READY   STATUS    RESTARTS   AGE
      istio-ingressgateway-df7d86548-n2vxr   1/1     Running   0          102s
      istiod-65d95bd5f9-vb2qk                1/1     Running   0          101s
    3. Vérifiez que le service istio-ingressgateway a été déployé en saisissant la commande suivante :
      kubectl get svc istio-ingressgateway -n istio-system

      En cas de déploiement réussi, la sortie affiche le service istio-ingressgateway en tant que service de type LoadBalancer et (si le sous-réseau d'équilibreur de charge du cluster est public) avec une adresse IP accessible publiquement. Par exemple :

      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. Créez un espace de noms dans lequel déployer l'application échantillon Bookinfo :
    1. Créez l'espace de noms bookinfo en saisissant la commande suivante :
      kubectl create namespace bookinfo
    2. Définissez l'espace de noms bookinfo en tant qu'espace de noms par défaut en saisissant ce qui suit :
      kubectl config set-context --current --namespace=bookinfo
    3. Vérifiez que bookinfo est l'espace de noms par défaut en saisissant ce qui suit :
      kubectl config view --minify | grep namespace
  6. Ajoutez le libellé istio-injection=enabled à l'espace de noms bookinfo pour installer automatiquement le sidecar Envoy dans tous les nouveaux pods d'application déployés dans l'espace de noms :
    1. Ajoutez le libellé à l'espace de noms bookinfo en saisissant ce qui suit :
      kubectl label namespace bookinfo istio-injection=enabled
    2. Vérifiez que l'espace de noms bookinfo est correctement étiqueté en saisissant ce qui suit :
      kubectl get namespace -L istio-injection
  7. Déployez l'application échantillon Bookinfo en saisissant ce qui suit :
    kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/platform/kube/bookinfo.yaml

    En cas de déploiement réussi, la sortie affiche plusieurs déploiements et services créés sur le cluster, comme suit :

    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. Vérifiez que l'application échantillon Bookinfo a bien été déployée :
    1. Vérifiez que les services ont été créés en saisissant la commande suivante :
      kubectl get services

      Si le déploiement réussit, la sortie affiche les services créés sur le cluster, comme suit :

      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. Vérifiez que tous les pods ont le statut En cours d'exécution en saisissant ce qui suit :
      kubectl get pods

      En supposant un déploiement réussi, la sortie affiche les pods en cours d'exécution, comme suit :

      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

      La sortie indique que chaque pod d'application comporte deux conteneurs. Pour chaque pod, un conteneur est le conteneur d'application et l'autre conteneur est le sidecar Envoyé injecté par Istio.

    3. Vérifiez que le pod ratings comporte deux conteneurs (l'un est le conteneur d'application et l'autre est le sidecar Envoyé injecté par Istio). Par exemple, entrez la commande suivante :
      kubectl get pods ratings-v1-686ccfb5d8-bpl8t -o jsonpath='{.spec.containers[*].name}'

      La sortie affiche deux conteneurs, le conteneur d'application (cotes) et le conteneur sidecar Envoy injecté par Istio (istio-proxy) :

      ratings istio-proxy
    4. Vérifiez que l'application est en cours d'exécution en envoyant une commande curl à partir d'un pod :
      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>

      Notez que l'application échantillon Bookinfo n'est pas encore accessible depuis l'extérieur du cluster, même après l'activation de la passerelle entrante. L'accessibilité de la passerelle entrante Istio dépend du type de sous-réseau d'équilibreur de charge (public ou privé) indiqué pour le cluster.

  9. Rendez l'application échantillon Bookinfo accessible depuis l'extérieur du cluster :

    1. Mettez en correspondance l'entrée du déploiement échantillon avec la passerelle entrante Istio en saisissant ce qui suit :
      kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/networking/bookinfo-gateway.yaml

      La sortie indique que les ressources de passerelle Kubernetes et VirtualService ont été créées :

      gateway.networking.istio.io/bookinfo-gateway created
      virtualservice.networking.istio.io/bookinfo created
  10. Vérifiez que l'application échantillon Bookinfo est accessible et qu'elle utilise la passerelle entrante Istio :
    1. Définissez les variables d'environnement pour l'hôte entrant et le port entrant en saisissant ce qui suit :
      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. Vérifiez que l'application échantillon Bookinfo est accessible et que vous utilisez la passerelle entrante Istio en saisissant ce qui suit :
      curl -s "http://${INGRESS_HOST}:${INGRESS_PORT}/productpage" | grep -o "<title>.*</title>"

      Si le déploiement réussit, la sortie affiche les services créés sur le cluster, comme suit :

      <title>Simple Bookstore App</title>
    3. Affichez la page Web Bookinfo dans un navigateur en ouvrant l'URL suivante :
      http://${INGRESS_HOST}:${INGRESS_PORT}/productpage
    4. Dans le navigateur, actualisez la page Web Bookinfo plusieurs fois pour voir les différentes versions des critiques affichées sur la page.
  11. (Facultatif) Une fois l'exemple terminé, vous pouvez supprimer les ressources que vous avez créées :
    1. Supprimez l'application échantillon Bookinfo en saisissant ce qui suit :
      kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/platform/kube/bookinfo.yaml
    2. Désactivez (et supprimez éventuellement) le module complémentaire Istio à l'aide de la commande oci ce cluster disable-addon, en saisissant ce qui suit :

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

      --is-remove-existing-add-on <true|false> spécifie soit pour supprimer complètement le module Istio (lorsque défini sur true), soit pour ne pas supprimer le module, mais simplement le désactiver et ne pas l'utiliser (lorsque défini sur false). Si vous désactivez le module, Oracle ne le mettra plus automatiquement à jour lorsque de nouvelles versions seront disponibles.

      Par exemple :

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

      Une demande de travail est créée pour désactiver (et éventuellement supprimer) le module complémentaire Istio.

    3. Enlevez Istio CustomResourceDefinitions (CRD), qui n'est pas supprimé par défaut, en saisissant ce qui suit :
      kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')
    4. Enlevez les ressources de maillage Istio (telles que les ressources Kubernetes Gateway et VirtualService), qui ne sont pas gérées par l'extension Istio, en saisissant ce qui suit :
      kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/networking/bookinfo-gateway.yaml

Mise à jour du module Istio

Remarque

Ces instructions décrivent la procédure de mise à jour de l'extension Istio à l'aide de la CLI et d'un fichier de configuration. Vous pouvez également mettre à jour le module à l'aide de la console et de l'API. Pour plus d'informations, reportez-vous à Mise à jour d'une extension de cluster.

  1. Ouvrez le fichier de configuration de l'extension Istio dans un éditeur approprié.

  2. Ajoutez, supprimez ou modifiez les arguments de configuration dans le fichier de configuration, le cas échéant. Pour plus d'informations sur les arguments que vous pouvez définir, reportez-vous à la section Istio add-on configuration arguments.

  3. Si vous avez indiqué qu'Oracle doit mettre à jour automatiquement la version du module complémentaire Istio et que vous souhaitez conserver les modifications de configuration, définissez l'argument de configuration customizeConfigMap sur true (s'il n'est pas déjà défini).
  4. Mettez à jour le module complémentaire Istio à l'aide de la commande oci ce cluster update-addon en saisissant ce qui suit :
    oci ce cluster update-addon --addon-name Istio --from-json file://<path-to-config-file> --cluster-id <cluster-ocid>

    où :

    • --cluster-id <cluster-ocid> est l'OCID du cluster dans lequel vous voulez mettre à jour l'extension Istio.
    • --from-json file://<path-to-config-file> indique l'emplacement du fichier de configuration du module complémentaire Istio à utiliser lors de la mise à jour du module. Par exemple, --from-json file://./istio-add-on.json

    Par exemple :

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

    Une demande de travail est créée pour mettre à jour le module complémentaire Istio.

  5. (Facultatif) Affichez le statut des pods istiod et istio-ingressgateway pour observer la progression, en saisissant la commande suivante :
    kubectl get pods -n istio-system

Désactivation (et suppression) de l'extension Istio

Remarque

Ces instructions décrivent la procédure de désactivation et de suppression de l'extension Istio à l'aide de la CLI et d'un fichier de configuration. Vous pouvez également mettre à jour le module à l'aide de la console et de l'API. Pour plus d'informations, reportez-vous à Désactivation (et suppression) d'une extension de cluster.

  1. Désactivez (et supprimez éventuellement) le module complémentaire Istio à l'aide de la commande oci ce cluster disable-addon, en saisissant ce qui suit :

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

    où :

    • --cluster-id <cluster-ocid> est l'OCID du cluster dans lequel désactiver (et éventuellement enlever) l'extension Istio.
    • --is-remove-existing-add-on <true|false> spécifie soit pour supprimer complètement le module Istio (lorsque défini sur true), soit pour ne pas supprimer le module, mais simplement le désactiver et ne pas l'utiliser (lorsque défini sur false). Si vous désactivez le module complémentaire Istio, Oracle ne le mettra plus automatiquement à jour lorsque de nouvelles versions seront disponibles.

    Par exemple :

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

    Une demande de travail est créée pour désactiver (et éventuellement supprimer) le module complémentaire Istio.

  2. (Facultatif) Affichez le statut des pods istiod et istio-ingressgateway pour observer la progression, en saisissant la commande suivante :
    kubectl get pods -n istio-system
  3. (Facultatif) Enlevez Istio CustomResourceDefinitions (CRD), qui n'est pas supprimé par défaut, en saisissant ce qui suit :
    kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')
  4. (Facultatif) Enlevez les ressources de maillage Istio (telles que la passerelle Kubernetes et les ressources VirtualService), qui ne sont pas gérées par l'extension Istio, à l'aide de la commande kubectl delete.