Istio

Learn about installing Istio ingress controller in a Kubernetes cluster running Seldon Enterprise Platform.

Istio implements the Kubernetes ingress resource to expose a service and make it accessible from outside the cluster. You can install Istio in either a self-hosted Kubernetes cluster or a managed Kubernetes service provided by a cloud provider that is running the Seldon Enterprise Platform.

Prerequisites

Installing Istio ingress controller

Installing Istio ingress controller in a Kubernetes cluster running Seldon Enterprise Platform involves these tasks:

Install Istio

  1. Download the Istio installation package for the version you want to use. In the following command replace <version> with the version of Istio that you downloaded:

    curl -L https://istio.io/downloadIstio | sh -
    cd istio-<version>
    export PATH=$PWD/bin:$PATH
  2. Install the Istio Custom Resource Definitions (CRDs) and Istio components in your cluster using the istioctl command line tool:

    istioctl install --set profile=default -y
  3. Create a namespace where you want to enable Istio automatic sidecar injection. For example in the namespace istio-system:

    kubectl label namespace istio-system istio-injection=enabled

Install Istio Ingress Gateway

  1. Verify that Istio Ingress Gateway is installed:

    This should return details of the Istio Ingress Gateway, including the external IP address.

  2. Create a YAML file to specify Gateway resource in the istio-system namespace to expose your application. For example, create the istio-seldon-gateway.yaml file. Use your preferred text editor to create and save the file with the following content:

  3. Change to the directory that contains istio-seldon-gateway.yaml file and apply the configuration:

    When the configuration is applied, you should see this:

  4. Find the IP address of the Seldon Enterprise Platform instance running with Istio:

    Make a note of the IP address that is displayed in the output.

Expose Seldon mesh service

It is important to expose seldon-service service to enable communication between deployed machine learning models and external clients or services. The Seldon Core 2 inference API is exposed through the seldon-mesh service in the seldon namespace. If you install Core 2 in multiple namespaces, you need to expose the seldon-mesh service in each of namespace.

  1. Verify if the seldon-mesh service is running for example, in the namespace seldon.

    When the services are running you should see something similar to this:

  2. Create a YAML file to create a VirtualService Seldon Core 2 seldon-mesh. For example, create the seldon-mesh-vs.yaml file. Use your preferred text editor to create and save the file with the following content:

  3. Create a virtual service to expose the seldon-mesh service.

    When the virtual service is created, you should see this:

Install Seldon Enterprise Platform with Istio ingress controller

  1. Update the configurations in the install-values.yaml file you created during the Seldon Enterprise installation. Replace <ip_address> with the IP address noted during the Istio Ingress Gateway installation in the following values and save the file:

  2. Change to the directory that contains the install-values.yaml file and then upgrade the Seldon Enterprise Platform installation in the namespace seldon-system.

  3. Check the status of the installation seldon-enterprise-seldon-deploy.

    When the installation is complete you should see this:

  4. Access Seldon Enterprise Platform.

  1. Get the Pod that is running Seldon Enterprise Platform in the cluster and save it as $POD_NAME.

  2. You can use port-forwarding to access your application locally.

  3. Open your browser and navigate to http://127.0.0.1:8000/seldon-deploy/ to access Seldon Enterprise Platform.

Optional: Enable HTTPS/TLS

To secure your Ingress with HTTPS, you can configure TLS settings in the Gateway resource using a certificate and key. This involves additional steps like creating Kubernetes secrets for your certificates.

Additional Resources

Last updated

Was this helpful?