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
Install Seldon Enterprise Platform.
Ensure that you install a version of Istio that is compatible with your Kubernetes cluster version. For detailed information on supported versions, refer to the Istio Compatibility Matrix.
Installing Istio ingress controller
Installing Istio ingress controller in a Kubernetes cluster running Seldon Enterprise Platform involves these tasks:
Install Istio
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:$PATHInstall the Istio Custom Resource Definitions (CRDs) and Istio components in your cluster using the
istioctlcommand line tool:istioctl install --set profile=default -yCreate 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
Verify that Istio Ingress Gateway is installed:
This should return details of the Istio Ingress Gateway, including the external IP address.
Create a YAML file to specify Gateway resource in the
istio-systemnamespace to expose your application. For example, create theistio-seldon-gateway.yamlfile. Use your preferred text editor to create and save the file with the following content:Change to the directory that contains
istio-seldon-gateway.yamlfile and apply the configuration:When the configuration is applied, you should see this:
Find the IP address of the Seldon Enterprise Platform instance running with Istio:
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.
Verify if the
seldon-meshservice is running for example, in the namespaceseldon.When the services are running you should see something similar to this:
Create a YAML file to create a VirtualService Seldon Core 2
seldon-mesh. For example, create theseldon-mesh-vs.yamlfile. Use your preferred text editor to create and save the file with the following content:Create a virtual service to expose the
seldon-meshservice.When the virtual service is created, you should see this:
Install Seldon Enterprise Platform with Istio ingress controller
Update the configurations in the
install-values.yamlfile 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:Change to the directory that contains the
install-values.yamlfile and then upgrade the Seldon Enterprise Platform installation in the namespaceseldon-system.Check the status of the installation seldon-enterprise-seldon-deploy.
When the installation is complete you should see this:
Access Seldon Enterprise Platform.
Get the Pod that is running Seldon Enterprise Platform in the cluster and save it as
$POD_NAME.You can use port-forwarding to access your application locally.
Open your browser and navigate to
http://127.0.0.1:8000/seldon-deploy/to access Seldon Enterprise Platform.
Replace <ip_address> with the IP address noted during the Istio Ingress Gateway installation.
1. Open your browser and navigate to http://<ip_address>/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?