Installation with Helm

Quick start instructions for the setup and configuration of Istio using the Helm package manager.

Warning Installation of Istio prior to version 0.8.0 with Helm is unstable and not recommended.

Prerequisites

  • Kubernetes 1.7.3 or newer is required.
  • Helm 2.7.2 or newer is required.
  • If you want to manage Istio releases with Tiller, the capability to install service accounts is required.
  • Using automatic sidecar injection describes Kubernetes environmental requirements.

Deploy Istio using Helm

There are two techniques for using Helm to deploy Istio. The first technique is to use helm template to render a manifest and use kubectl to create it.

The second technique uses Helm’s Tiller service to manage the lifecycle of Istio.

Render Kubernetes manifest with Helm and deploy with kubectl

This is the most heavily tested method of deploying Istio. During the continuous integration automated testing and release process, the helm binary in template mode is used to render the various manifests produced for Istio.

  1. Create an istio.yaml Kubernetes manifest:
    helm template install/kubernetes/helm/istio --name istio --set prometheus.enabled=true > $HOME/istio.yaml
    
  2. Create the Istio control plane from istio.yaml manifest:
    kubectl create -f $HOME/istio.yaml
    

Alternatively, use Helm and Tiller to manage the Istio deployment

Warning Upgrading Istio using Helm is not validated.

  1. If a service account has not already been installed for Helm, please install one:
    kubectl create -f install/kubernetes/helm/helm-service-account.yaml
    
  2. Initialize Helm:
    helm init --service-account tiller
    
  3. Create the Helm chart:
    helm install install/kubernetes/helm/istio --name istio
    

Customization with Helm

The Helm chart ships with reasonable defaults. There may be circumstances in which defaults require overrides. To override Helm values, use --set key=value argument during the helm install command. Multiple --set operations may be used in the same Helm operation.

Helm charts expose configuration options which are currently in alpha. The currently exposed options are explained in the following table:

ParameterDescriptionValuesDefault
global.hubSpecifies the HUB for most images used by Istioregistry/namespacedocker.io/istionightly
global.tagSpecifies the TAG for most images used by Istiovalid image tagcircleci-nightly
global.proxy.imageSpecifies the proxy image namevalid proxy nameproxy
global.imagePullPolicySpecifies the image pull policyvalid image pull policyIfNotPresent
global.securityEnabledSpecifies whether Istio CA should be installedtrue/falsetrue
global.controlPlaneSecurityEnabledSpecifies whether control plane mTLS is enabledtrue/falsefalse
global.mtls.enabledSpecifies whether mTLS is enabled by default between servicestrue/falsefalse
global.mtls.mtlsExcludedServicesList of FQDNs to exclude from mTLSa list of FQDNs- kubernetes.default.svc.cluster.local
global.rbacEnabledSpecifies whether to create Istio RBAC rules or nottrue/falsetrue
global.refreshIntervalSpecifies the mesh discovery refresh intervalinteger followed by s10s
global.arch.amd64Specifies the scheduling policy for amd64 architectures0 = never, 1 = least preferred, 2 = no preference, 3 = most preferred2
global.arch.s390xSpecifies the scheduling policy for s390x architectures0 = never, 1 = least preferred, 2 = no preference, 3 = most preferred2
global.arch.ppc64leSpecifies the scheduling policy for ppc64le architectures0 = never, 1 = least preferred, 2 = no preference, 3 = most preferred2

The Helm chart also offers significant customization options per individual service. Customize these per-service options at your own risk. The per-service options are exposed via the values.yaml file.

Uninstall Istio

  • Uninstall using kubectl:
    kubectl delete -f $HOME/istio.yaml
    
  • Uninstall using Helm:
    helm delete --purge istio