Trabajo con Istio como complemento de cluster

Descubra cómo instalar, configurar y utilizar Istio como complemento de cluster para simplificar la gestión del tráfico, la seguridad, las conexiones y la observabilidad en clusters que ha creado con Container Engine for Kubernetes (OKE).

El uso de Istio como un complemento de cluster (el 'complemento Istio') en lugar de como un programa independiente simplifica la configuración y el mantenimiento continuo. Puede hacerlo de manera más sencilla:

  • Activar o desactivar Istio.
  • Seleccione o descarte actualizaciones de versión automáticas por parte de Oracle.
  • Seleccione las versiones del complemento de Istio.
  • Gestione personalizaciones específicas del complemento utilizando argumentos de configuración de par clave/valor aprobados.

Al desplegar Istio como complemento de cluster mediante Container Engine for Kubernetes, puede crear opcionalmente un gateway de entrada de Istio para enrutar las solicitudes HTTP y HTTPS entrantes. También puede utilizar otras entradas soportadas para enrutar el tráfico al servicio adecuado que se ejecuta en el cluster. Tenga en cuenta que la accesibilidad del gateway de entrada de Istio depende del tipo de subred del equilibrador de carga (pública o privada) especificada para el cluster.

En el caso del complemento Istio, se utilizan argumentos de configuración de par clave/valor aprobados para realizar personalizaciones específicas del complemento para parámetros de configuración de malla (consulte Argumentos de configuración del complemento Istio). Para otras tareas de configuración, como la gestión de recursos de malla, se utiliza istioctl (la herramienta de línea de comandos Istio) u otras herramientas soportadas por Istio. Si configura el complemento Istio mediante los argumentos aprobados y desea conservar las personalizaciones cuando Oracle actualice automáticamente la versión del complemento, defina el argumento de configuración customizeConfigMap en true. Si no define el argumento de configuración customizeConfigMap en true, las personalizaciones se descartan cuando Oracle actualiza el complemento. Las personalizaciones que realice con istioctl (u otra herramienta compatible con Istio) siempre se descartan cuando Oracle actualiza el complemento.

Si utiliza gráficos de Helm y Helm para configurar y desplegar aplicaciones de Kubernetes, tenga en cuenta que Helm solo puede actualizar o suprimir recursos que haya creado. Por lo tanto, para permitir que Helm gestione el complemento Istio:

  • Utilice gráficos de Helm para generar los mapas de configuración de istio e istio-sidecar-injector.
  • Defina el argumento de configuración customizeConfigMap en true al desplegar el complemento Istio.

Si decide que Oracle actualice automáticamente el complemento Istio, Oracle realizará una actualización in situ cuando haya nuevas versiones de Istio disponibles. Durante la actualización, Oracle actualiza automáticamente el plano de control Istio (istiod) y el gateway de entrada a la versión más reciente. Tenga en cuenta que Oracle no actualiza automáticamente ningún sidecars de plano de datos de Istio; por lo tanto, estos sidecars permanecen en la versión antigua. Es su responsabilidad actualizar manualmente el plano de datos de Istio reiniciando cualquier pod con sidecars de Istio mediante el comando kubectl rollout restart deployment. Aunque el plano de control de Istio es compatible con versiones anteriores de sidecar, si su prioridad es garantizar un tiempo de inactividad cero, le recomendamos que actualice manualmente Istio en lugar de que Oracle actualice automáticamente el complemento de Istio por usted. Consulte Actualizaciones en el lugar en la documentación de Istio.

En estas secciones se describe cómo trabajar con el complemento Istio para gestionar la comunicación y las redes entre servicios:

Tenga en cuenta que los productos de malla de servicios (como Oracle Cloud Infrastructure Service Mesh, Istio y Linkerd) están soportados al utilizar el plugin CNI de red de pod nativo de VCN de OCI para redes de pod. Tenga en cuenta que, a excepción del complemento Istio, el soporte está limitado actualmente a Oracle Linux 7 (se ha planificado el soporte de Oracle Linux 8). El complemento Istio está soportado con Oracle Linux 7 y Oracle Linux 8. Los nodos de trabajador deben ejecutar Kubernetes 1.26 (o una versión posterior).

Tenga en cuenta también que no puede utilizar el complemento Istio con clusters que ya tienen Istio instalado como programa independiente ni en clusters que tienen Oracle Cloud Infrastructure Service Mesh instalado.

Nota

Puede utilizar Istio con pools de nodos gestionados, pero no con pools de nodos virtuales.

Despliegue del complemento Istio

En las instrucciones de los siguientes pasos se describe cómo desplegar la malla de servicios Istio como un complemento de cluster (el "complemento Istio") para simplificar la gestión del tráfico, la seguridad, las conexiones y la observabilidad en clusters que ha creado con Container Engine for Kubernetes:

Para ver un ejemplo práctico, consulte Ejemplo: despliegue de Istio como complemento de cluster.

Paso 1: Crear el archivo de configuración del complemento Istio

Nota

En estas instrucciones se describe cómo crear un archivo de configuración del complemento Istio para permitirle desplegar el complemento Istio mediante la CLI. El archivo de configuración contiene argumentos de configuración de par clave/valor aprobados. Debe crear un archivo de configuración al desplegar el complemento mediante la CLI (o mediante la API). También puede utilizar la consola para desplegar el complemento Istio, en cuyo caso debe especificar argumentos de configuración en la interfaz de usuario. Para obtener más información sobre el despliegue del complemento Istio mediante la consola, consulte Instalación de un complemento de cluster.

  1. En un editor adecuado, cree un archivo JSON con el nombre que desee (estas instrucciones suponen que el archivo se denomina enableistio.json) que contenga lo siguiente:

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

    Este contenido es suficiente para activar el complemento Istio.

  2. (Opcional) En el archivo enableistio.json, especifique si desea instalar el gateway de entrada de Istio, de la siguiente manera:
    • Para instalar el gateway de entrada de Istio, actualice el archivo enableistio.json de la siguiente manera:
      {
        "addonName": "Istio",
        "configurations": [
          {
            "key": "enableIngressGateway",
            "value": "true"
          }
        ]
      }
    • Si no desea instalar el gateway de entrada de Istio, actualice el archivo enableistio.json de la siguiente manera:
      {
        "addonName": "Istio",
        "configurations": [
          {
            "key": "enableIngressGateway",
            "value": "false"
          }
        ]
      }

    Tenga en cuenta que si no incluye enableIngressGateway en el archivo de configuración, el comportamiento por defecto no es instalar el gateway de entrada de Istio (equivalente a definir enableIngressGateway en false)

  3. (Opcional) En el archivo enableistio.json que ha creado, especifique otros argumentos de configuración para personalizar el complemento Istio. Para obtener información sobre los argumentos de configuración que puede definir, consulte Argumentos de configuración del complemento Istio.

  4. (Opcional) Si desea conservar las personalizaciones que realice en el complemento Istio si Oracle actualiza automáticamente la versión del complemento, defina el argumento customizeConfigMap en true. Por ejemplo:
    • Para instalar el gateway de entrada de Istio y conservar las personalizaciones, actualice el archivo enableistio.json de la siguiente manera:
      {
        "addonName": "Istio",
        "configurations": [
          {
            "key": "enableIngressGateway",
            "value": "true"
          },
          {
            "key": "customizeConfigMap",
            "value": "true"
          }
        ]
      }
    • Si no desea instalar el gateway de entrada de Istio, pero desea conservar las personalizaciones, actualice el archivo enableistio.json de la siguiente manera:
      {
        "addonName": "Istio",
        "configurations": [
          {
            "key": "enableIngressGateway",
            "value": "false"
          },
          {
            "key": "customizeConfigMap",
            "value": "true"
          }
        ]
      }

      Tenga en cuenta que si no incluye customizeConfigMap en el archivo de configuración, el comportamiento por defecto es desechar las personalizaciones si Oracle actualiza automáticamente la versión del complemento (equivalente a definir customizeConfigMap en false)

  5. Guardar y cerrar el archivo enableistio.json.

Paso 2: Despliegue el complemento Istio en el cluster y confirme que el despliegue se ha realizado correctamente

Nota

En estas instrucciones, se describe cómo desplegar el complemento Istio mediante la CLI y un archivo de configuración. También puede desplegar el complemento mediante la consola y la API. Para obtener más información, consulte instalación de un complemento de cluster.

  1. Si todavía no lo ha hecho, siga los pasos para configurar el archivo de configuración kubeconfig del cluster y (si es necesario) defina la variable de entorno KUBECONFIG para que apunte al archivo. Tenga en cuenta que debe configurar su propio archivo kubeconfig. No puede acceder a un cluster utilizando un archivo kubeconfig que haya configurado un usuario diferente. Consulte Configuración del acceso a los clusters.
  2. Confirme que el complemento Istio no se ha instalado aún en el clúster introduciendo:
    oci ce cluster list-addons --cluster-id <cluster-ocid>

    donde <cluster-ocid> es el OCID del cluster en el que desea desplegar el complemento Istio.

  3. Despliegue el complemento Istio en el cluster introduciendo:

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

    donde:

    • --cluster-id <cluster-ocid> es el OCID del cluster en el que desea desplegar el complemento Istio.
    • --from-json file://<path-to-config-file> especifica la ubicación del archivo de configuración del complemento de Istio que ha creado anteriormente. Por ejemplo, --from-json file://./enableistio.json

    Por ejemplo:

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

    Se crea una solicitud de trabajo para desplegar el complemento Istio.

  4. Confirme el despliegue correcto del complemento Istio (y del gateway de entrada Istio, si lo ha especificado en el archivo de configuración del complemento Istio), de la siguiente manera:

    1. Confirme que el complemento Istio se ha instalado en el cluster introduciendo:
      oci ce cluster list-addons --cluster-id <cluster-ocid>

      Si el despliegue se realiza correctamente, la salida muestra el complemento Istio con un estado de ciclo de vida ACTIVE. Por ejemplo:

      {
        "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. Confirme que el pod istiod (plano de control Istio) y también el pod istio-ingressgateway si lo ha especificado en el archivo de configuración se están ejecutando en el espacio de nombres istio-system introduciendo:
      kubectl get pods -n istio-system

      Si el despliegue se realiza correctamente, la salida muestra los pods con el estado Running. Por ejemplo:

      NAME                                   READY   STATUS    RESTARTS   AGE
      istio-ingressgateway-df7d86548-n2vxr   1/1     Running   0          102s
      istiod-65d95bd5f9-vb2qk                1/1     Running   0          101s
    3. Si ha especificado el gateway de entrada de Istio en el archivo de configuración, confirme que el servicio istio-ingressgateway se ha desplegado correctamente introduciendo:
      kubectl get svc istio-ingressgateway -n istio-system

      Si el despliegue se realiza correctamente, la salida muestra el servicio istio-ingressgateway como un servicio de tipo LoadBalancer y (si la subred del equilibrador de carga del cluster es pública) con una dirección IP de acceso público. Por ejemplo:

      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

Paso 3: Activar inyección sidecar de Envoy

Para permitir a Istio inyectar el sidecar de Envoy en cada servicio para proporcionar comunicación, configuración y seguridad:

  1. Cree el espacio de nombres en el que desplegar aplicaciones (si el espacio de nombres aún no existe) introduciendo:
    kubectl create namespace <namespace-name>
  2. Convierta el espacio de nombres en el que desplegar aplicaciones en el espacio de nombres por defecto introduciendo:
    kubectl config set-context --current --namespace=<namespace-name>
  3. Confirme que el espacio de nombres en el que desplegar aplicaciones es el espacio de nombres por defecto introduciendo:
    kubectl config view --minify | grep namespace
  4. Agregue la etiqueta istio-injection=enabled al espacio de nombres para instalar automáticamente el sidecar de Envoy en cualquier pod de aplicación nuevo desplegado en el espacio de nombres introduciendo:
    kubectl label namespace <namespace-name> istio-injection=enabled
  5. Confirme que el espacio de nombres está etiquetado correctamente introduciendo:
    kubectl get namespace -L istio-injection

Paso 4: Despliegue de una aplicación y observe los contenedores sidecar de Envoy

Para confirmar que Istio se está utilizando para proporcionar comunicación, configuración y seguridad para una aplicación:

  1. Despliegue la aplicación. Por ejemplo, introduzca:
    kubectl apply -f <manifest-name>
  2. Confirme que los servicios de la aplicación se han creado correctamente introduciendo:
    kubectl get services
  3. Confirme que los pods de la aplicación tienen el estado Running introduciendo:
    kubectl get pods

    La salida muestra que cada pod de aplicación tiene dos contenedores. Para cada pod, un contenedor es el contenedor de aplicación y el otro contenedor es el sidecar de Envoy inyectado por Istio.

  4. Confirme que uno de los pods de la aplicación tiene dos contenedores (uno de ellos es el contenedor de la aplicación y el otro es el sidecar de Envoy inyectado por Istio) introduciendo:
    kubectl get pods <application-pod-name> -o jsonpath='{.spec.containers[*].name}'

    Tenga en cuenta que no se puede acceder a las aplicaciones desde fuera del cluster por defecto después de activar el gateway de entrada. Para obtener un ejemplo de cómo hacer que una aplicación sea accesible, consulte Ejemplo: despliegue de Istio como complemento de cluster.

Ejemplo: despliegue de Istio como complemento de cluster

En este ejemplo, se instala el complemento Istio y el gateway de entrada Istio en un cluster creado con Container Engine for Kubernetes. Una vez instalado el complemento de Istio y el gateway de entrada, despliega la aplicación Bookinfo de ejemplo de Istio y hace que se pueda acceder a la aplicación desde fuera del cluster:

  1. Para mayor comodidad, defina una variable de entorno denominada CLUSTER_ID en el valor del OCID del cluster introduciendo:
    export CLUSTER_ID=<cluster-ocid>
  2. Cree un archivo JSON denominado enableistio-ig.json que contenga lo siguiente:
    {
      "addonName": "Istio",
      "configurations": [
        {
          "key": "enableIngressGateway",
          "value": "true"
        }
      ]
    }

    Este archivo de configuración instala el complemento Istio y la puerta de enlace de entrada Istio.

  3. Instale el complemento Istio y el gateway de entrada Istio en el cluster introduciendo:
    oci ce cluster install-addon --addon-name Istio --cluster-id $CLUSTER_ID --from-json file://./enableistio-ig.json

    Se crea una solicitud de trabajo para instalar el complemento Istio.

  4. Verifique que la instalación del complemento Istion y el gateway de entrada de Istio se ha realizado correctamente:
    1. Confirme que el complemento Istio se ha instalado correctamente escribiendo:
      oci ce cluster list-addons --cluster-id $CLUSTER_ID

      Si el despliegue se realiza correctamente, la salida muestra el complemento Istio con un estado de ciclo de vida ACTIVE. Por ejemplo, las siguientes salidas muestran el complemento Istio, junto con una serie de complementos de cluster esenciales:

      {
        "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. Confirme que el pod del plano de control de Istio (istiod) y el pod de istio-ingressgateway se están ejecutando en el espacio de nombres de istio-system introduciendo:
      kubectl get pods -n istio-system

      Si el despliegue se realiza correctamente, la salida muestra ambos pods con el estado Running. Por ejemplo:

      NAME                                   READY   STATUS    RESTARTS   AGE
      istio-ingressgateway-df7d86548-n2vxr   1/1     Running   0          102s
      istiod-65d95bd5f9-vb2qk                1/1     Running   0          101s
    3. Confirme que el servicio istio-ingressgateway se ha desplegado correctamente introduciendo:
      kubectl get svc istio-ingressgateway -n istio-system

      Si el despliegue se realiza correctamente, la salida muestra el servicio istio-ingressgateway como un servicio de tipo LoadBalancer y (si la subred del equilibrador de carga del cluster es pública) con una dirección IP de acceso público. Por ejemplo:

      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. Cree un nuevo espacio de nombres en el que desplegar la aplicación de ejemplo Bookinfo:
    1. Cree el espacio de nombres bookinfo introduciendo:
      kubectl create namespace bookinfo
    2. Haga del espacio de nombres bookinfo el espacio de nombres por defecto introduciendo:
      kubectl config set-context --current --namespace=bookinfo
    3. Confirme que bookinfo es el espacio de nombres por defecto introduciendo:
      kubectl config view --minify | grep namespace
  6. Agregue la etiqueta istio-injection=enabled al espacio de nombres bookinfo para instalar automáticamente el sidecar de Envoy en cualquier nuevo pod de aplicación desplegado en el espacio de nombres:
    1. Agregue la etiqueta al espacio de nombres bookinfo introduciendo:
      kubectl label namespace bookinfo istio-injection=enabled
    2. Confirme que el espacio de nombres bookinfo está etiquetado correctamente escribiendo:
      kubectl get namespace -L istio-injection
  7. Despliegue la aplicación de ejemplo Bookinfo introduciendo:
    kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/platform/kube/bookinfo.yaml

    Si el despliegue se realiza correctamente, la salida muestra varios despliegues y servicios creados en el cluster, de la siguiente manera:

    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. Verifique el despliegue correcto de la aplicación de ejemplo Bookinfo:
    1. Confirme que los servicios se han creado correctamente introduciendo:
      kubectl get services

      Si el despliegue se realiza correctamente, la salida muestra los servicios creados en el cluster, de forma similar a la siguiente:

      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. Confirme que todos los pods tienen el estado Running introduciendo:
      kubectl get pods

      Si el despliegue se realiza correctamente, la salida muestra los pods que se están ejecutando, de forma similar a la siguiente:

      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 salida muestra que cada pod de aplicación tiene dos contenedores. Para cada pod, un contenedor es el contenedor de aplicación y el otro contenedor es el sidecar de Envoy inyectado por Istio.

    3. Confirme que el pod ratings tiene dos contenedores (uno de los cuales es el contenedor de aplicación y el otro es el sidecar de Envoy inyectado por Istio). Por ejemplo, introduzca:
      kubectl get pods ratings-v1-686ccfb5d8-bpl8t -o jsonpath='{.spec.containers[*].name}'

      La salida muestra dos contenedores, el contenedor de aplicación (ratings) y el contenedor sidecar de Envoy inyectado por Istio (istio-proxy):

      ratings istio-proxy
    4. Confirme que la aplicación se está ejecutando enviando un comando curl desde 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>

      Tenga en cuenta que la aplicación de ejemplo Bookinfo aún no está accesible desde fuera del cluster, incluso después de activar el gateway de entrada. Tenga en cuenta también que la accesibilidad del gateway de entrada de Istio depende del tipo de subred del equilibrador de carga (pública o privada) especificada para el cluster.

  9. Haga que la aplicación de ejemplo Bookinfo sea accesible desde fuera del cluster:

    1. Asigne la entrada del despliegue de ejemplo al gateway de entrada de Istio introduciendo:
      kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/networking/bookinfo-gateway.yaml

      La salida muestra que se han creado el gateway de Kubernetes y los recursos VirtualService:

      gateway.networking.istio.io/bookinfo-gateway created
      virtualservice.networking.istio.io/bookinfo created
  10. Verifique que se puede acceder a la aplicación de ejemplo Bookinfo y que utiliza el gateway de entrada de Istio:
    1. Defina las variables de entorno para el host de entrada y el puerto de entrada introduciendo:
      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. Confirme que la aplicación de ejemplo Bookinfo es accesible y que utiliza el gateway de entrada de Istio introduciendo:
      curl -s "http://${INGRESS_HOST}:${INGRESS_PORT}/productpage" | grep -o "<title>.*</title>"

      Si el despliegue se realiza correctamente, la salida muestra los servicios creados en el cluster, de forma similar a la siguiente:

      <title>Simple Bookstore App</title>
    3. Para ver la página web de Bookinfo en un explorador, abra la siguiente URL:
      http://${INGRESS_HOST}:${INGRESS_PORT}/productpage
    4. En el navegador, actualice la página web de Bookinfo varias veces para ver las diferentes versiones de las revisiones que se muestran en la página.
  11. (Opcional) Una vez completado el ejemplo, ahora puede suprimir los recursos que ha creado:
    1. Para suprimir la aplicación de ejemplo Bookinfo, introduzca:
      kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/platform/kube/bookinfo.yaml
    2. Para desactivar (y eliminar opcionalmente) el complemento Istio mediante el comando oci ce cluster disable-addon, introduzca:

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

      donde --is-remove-existing-add-on <true|false> especifica si se debe eliminar por completo el complemento Istio (cuando está definido en true) o no eliminar el complemento, pero simplemente desactivarlo y no utilizarlo (cuando está definido en false). Si desactivas el complemento, Oracle ya no actualiza la versión del complemento automáticamente cuando hay nuevas versiones disponibles.

      Por ejemplo:

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

      Se crea una solicitud de trabajo para desactivar (y, opcionalmente, eliminar) el complemento Istio.

    3. Elimine Istio CustomResourceDefinitions (CRD), que no se suprimen por defecto, introduciendo:
      kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')
    4. Elimine los recursos de malla de Istio (como el gateway de Kubernetes y los recursos VirtualService), que no gestiona el complemento de Istio, introduciendo:
      kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/networking/bookinfo-gateway.yaml

Actualización del complemento Istio

Nota

En estas instrucciones, se describe cómo actualizar el complemento Istio mediante la CLI y un archivo de configuración. También puede actualizar el complemento mediante la consola y la API. Para obtener más información, consulte Actualización de un complemento de cluster.

  1. Abra el archivo de configuración del complemento Istio en un editor adecuado.

  2. Agregue, elimine o cambie argumentos de configuración en el archivo de configuración según sea necesario. Para obtener información sobre los argumentos que puede definir, consulte Argumentos de configuración del complemento Istio.

  3. Si ha especificado que desea que Oracle actualice automáticamente la versión del complemento Istio y desea conservar los cambios de configuración, defina el argumento de configuración customizeConfigMap en true (si aún no está definido).
  4. Actualice el complemento Istio mediante el comando oci ce cluster update-addon introduciendo:
    oci ce cluster update-addon --addon-name Istio --from-json file://<path-to-config-file> --cluster-id <cluster-ocid>

    donde:

    • --cluster-id <cluster-ocid> es el OCID del cluster en el que desea actualizar el complemento de Istio.
    • --from-json file://<path-to-config-file> especifica la ubicación del archivo de configuración del complemento de Istio que se va a utilizar al actualizar el complemento. Por ejemplo, --from-json file://./istio-add-on.json

    Por ejemplo:

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

    Se crea una solicitud de trabajo para actualizar el complemento de Istio.

  5. (Opcional) Para ver el estado de los pods istiod e istio-ingressgateway para observar el progreso, introduzca:
    kubectl get pods -n istio-system

Desactivación (y eliminación) del complemento Istio

Nota

En estas instrucciones, se describe cómo desactivar y eliminar el complemento Istio mediante la CLI y un archivo de configuración. También puede actualizar el complemento mediante la consola y la API. Para obtener más información, consulte Desactivación (y eliminación) de un complemento de cluster.

  1. Para desactivar (y eliminar opcionalmente) el complemento Istio mediante el comando oci ce cluster disable-addon, introduzca:

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

    donde:

    • --cluster-id <cluster-ocid> es el OCID del cluster en el que desea desactivar (y, opcionalmente, eliminar) el complemento Istio.
    • --is-remove-existing-add-on <true|false> especifica si se debe eliminar por completo el complemento Istio (cuando está definido en true) o no eliminar el complemento, pero simplemente desactivarlo y no utilizarlo (cuando está definido en false). Si desactiva el complemento Istio, Oracle ya no actualiza la versión del complemento automáticamente cuando hay nuevas versiones disponibles.

    Por ejemplo:

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

    Se crea una solicitud de trabajo para desactivar (y, opcionalmente, eliminar) el complemento Istio.

  2. (Opcional) Para ver el estado de los pods istiod e istio-ingressgateway para observar el progreso, introduzca:
    kubectl get pods -n istio-system
  3. (Opcional) Elimine Istio CustomResourceDefinitions (CRD), que no se suprimen por defecto, introduciendo:
    kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')
  4. (Opcional) Elimine los recursos de malla de Istio (como el gateway de Kubernetes y los recursos VirtualService), que no gestiona el complemento de Istio, mediante el comando kubectl delete.