istio.io/content/docs/setup/kubernetes/helm-install/index.md

6.2 KiB

title description weight keywords aliases icon
Installation with Helm Install Istio with the included Helm chart. 30
kubernetes
helm
/docs/setup/kubernetes/helm.html
/docs/tasks/integrating-services-into-istio.html
/img/helm.svg

Quick start instructions for the setup and configuration of Istio using Helm. This is the recommended install method for installing Istio to your production environment as it offers rich customization to the Istio control plane and the sidecars for the Istio data plane.

Prerequisites

  1. Download the Istio release.

  2. Kubernetes platform setup:

  1. Check the Requirements for Pods and Services on Pods and Services.

  2. Install the Helm client.

  3. Istio by default uses LoadBalancer service object types. Some platforms do not support LoadBalancer service objects. For platforms lacking LoadBalancer support, install Istio with NodePort support instead with the flags --set gateways.istio-ingressgateway.type=NodePort --set gateways.istio-egressgateway.type=NodePort appended to the end of the Helm operation.

Installation steps

  1. If using a Helm version prior to 2.10.0, install Istio's Custom Resource Definitions via kubectl apply, and wait a few seconds for the CRDs to be committed in the kube-apiserver:

    {{< text bash >}} $ kubectl apply -f install/kubernetes/helm/istio/templates/crds.yaml {{< /text >}}

    If you are enabling certmanager, you also need to install its CRDs as well and wait a few seconds for the CRDs to be committed in the kube-apiserver:

    {{< text bash >}} $ kubectl apply -f install/kubernetes/helm/istio/charts/certmanager/templates/crds.yaml {{< /text >}}

  2. Choose one of the following two mutually exclusive options described below.

Option 1: Install with Helm via helm template

  1. Render Istio's core components to a Kubernetes manifest called istio.yaml:

    {{< text bash >}} $ helm template install/kubernetes/helm/istio --name istio --namespace istio-system > $HOME/istio.yaml {{< /text >}}

  2. Install the components via the manifest:

    {{< text bash >}} $ kubectl create namespace istio-system $ kubectl apply -f $HOME/istio.yaml {{< /text >}}

Option 2: Install with Helm and Tiller via helm install

This option allows Helm and Tiller to manage the lifecycle of Istio.

  1. If a service account has not already been installed for Tiller, install one:

    {{< text bash >}} $ kubectl apply -f install/kubernetes/helm/helm-service-account.yaml {{< /text >}}

  2. Install Tiller on your cluster with the service account:

    {{< text bash >}} $ helm init --service-account tiller {{< /text >}}

  3. Install Istio:

    {{< text bash >}} $ helm install install/kubernetes/helm/istio --name istio --namespace istio-system {{< /text >}}

Customization Example: Traffic Management Minimal Set

Istio has a rich feature set, but you may only want to use a subset of these. For instance, you might be only interested in installing the minimum necessary to support traffic management functionality.

This example shows how to install the minimal set of components necessary to use traffic management features.

Execute the following command to install the Pilot and Citadel:

{{< text bash >}} $ helm install install/kubernetes/helm/istio --name istio --namespace istio-system
--set ingress.enabled=false
--set gateways.istio-ingressgateway.enabled=false
--set gateways.istio-egressgateway.enabled=false
--set galley.enabled=false
--set sidecarInjectorWebhook.enabled=false
--set mixer.enabled=false
--set prometheus.enabled=false
--set global.proxy.envoyStatsd.enabled=false {{< /text >}}

Ensure the istio-pilot-* and istio-citadel-* Kubernetes pods are deployed and their containers are up and running:

{{< text bash >}} $ kubectl get pods -n istio-system NAME READY STATUS RESTARTS AGE istio-citadel-b48446f79-wd4tk 1/1 Running 0 1m istio-pilot-58c65f74bc-2f5xn 2/2 Running 0 1m {{< /text >}}

With this minimal set you can install your own application and configure request routing for instance. You will need to manually inject the sidecar.

Installation Options has the full list of options allowing you to tailor the Istio installation to your needs. Before you override the default value with --set in helm install, please check the configurations for the option in install/kubernetes/helm/istio/values.yaml and uncomment the commented context if needed.

Uninstall

  • For option 1, uninstall using kubectl:

    {{< text bash >}} $ kubectl delete -f $HOME/istio.yaml {{< /text >}}

  • For option 2, uninstall using Helm:

    {{< text bash >}} $ helm delete --purge istio {{< /text >}}

    If your Helm version is less than 2.9.0, then you need to manually cleanup extra job resource before redeploy new version of Istio chart:

    {{< text bash >}} $ kubectl -n istio-system delete job --all {{< /text >}}

  • If desired, delete the CRDs:

    {{< text bash >}} $ kubectl delete -f install/kubernetes/helm/istio/templates/crds.yaml -n istio-system {{< /text >}}