使用 Helm 自定义安装

Helm 的安装方法已被弃用。请改用使用 istioctl 安装

请按照本指南安装和配置 Istio 网格,以进行深入评估或用于生产。

这种安装方式使用 Helm charts 自定义 Istio 控制平面和 Istio 数据平面的 sidecar。你只需使用 helm template 生成配置并使用 kubectl apply 命令安装它, 或者你可以选择使用 helm installTiller来完全管理安装。

通过这些说明, 您可以选择 Istio 内置的任何一个配置文件并根据的特定的需求进行进一步的自定义配置。

先决条件

请使用 2.x 版本的 Helm。不支持 Helm 3。

添加 Helm chart 仓库

本指南的以下命令使用了包含 Istio 发行版镜像的 Helm charts。如果要使用 Istio 发行版 Helm chart ,建议使用下面的命令添加 Istio 发行版仓库:

  1. $ helm repo add istio.io https://storage.googleapis.com/istio-release/releases/1.5.1/charts/

安装步骤

将目录切换到 Istio 发行版的根目录,然后在以下两个互斥选项选择一种安装:

默认情况下,Istio 使用 LoadBalancer 服务类型。 而有些平台是不支持 LoadBalancer服务的。 对于不支持 LoadBalancer 服务类型的平台, 执行下面的步骤时,可以在 Helm 命令中加入 —set gateways.istio-ingressgateway.type=NodePort 选项,使用 NodePort 来替代 LoadBalancer 服务类型。

方案 1: 使用 helm template 命令安装

在您的集群没有按照 Tiller而且您也不想安装它的情况下,选择此方案安装。

  • 为 Istio 组件创建命名空间 istio-system
  1. $ kubectl create namespace istio-system
  1. $ helm template install/kubernetes/helm/istio-init --name istio-init --namespace istio-system | kubectl apply -f -
  • 等待所有的 Istio CRD 创建完成:
  1. $ kubectl -n istio-system wait --for=condition=complete job --all
  • 选择一个配置文件接着部署与您选择的配置文件相对应的 Istio 核心组件。我们建议在生产环境使用默认的配置文件:

您可以添加一个或多个 —set <key>=<value> 来进一步自定义 helm 命令的安装选项

  1. $ helm template install/kubernetes/helm/istio --name istio --namespace istio-system | kubectl apply -f -
  1. $ helm template install/kubernetes/helm/istio --name istio --namespace istio-system \
  2. --values install/kubernetes/helm/istio/values-istio-demo.yaml | kubectl apply -f -
  1. $ helm template install/kubernetes/helm/istio --name istio --namespace istio-system \
  2. --values install/kubernetes/helm/istio/values-istio-minimal.yaml | kubectl apply -f -
  1. $ helm template install/kubernetes/helm/istio --name istio --namespace istio-system \
  2. --values install/kubernetes/helm/istio/values-istio-sds-auth.yaml | kubectl apply -f -

安装 Istio CNI 组件:

  1. $ helm template install/kubernetes/helm/istio-cni --name=istio-cni --namespace=kube-system | kubectl apply -f -

—set istio_cni.enabled=true 设置追加到 helm 命令上,来启用 Istio CNI 插件。以 Istio 默认配置文件为例:

  1. $ helm template install/kubernetes/helm/istio --name istio --namespace istio-system \
  2. --set istio_cni.enabled=true | kubectl apply -f -

方案 2: 在 Helm 和 Tiller 的环境中使用 helm install 命令安装

这个方案使用 Helm 和 Tiller 来对 Istio 的生命周期进行管理。

本文档中介绍如何使用带 Tiller 的 Helm 不使用安全默认值。有关基于 Tiller 安全安装的进一步步骤请参考安全安装 Helm

  • 请确保您的集群的 Tiller 设置了 cluster-admin 角色的 Service Account。如果还没有定义,请执行下面命令创建:

Zip

  1. $ kubectl apply -f @manifests/UPDATING-CHARTS.md@
  • 使用 Service Account 在集群上安装 Tiller:
  1. $ helm init --service-account tiller
  • 安装 istio-init chart,来启动 Istio CRD 的安装过程:
  1. $ helm install install/kubernetes/helm/istio-init --name istio-init --namespace istio-system
  • 等待所有的 Istio CRD 创建完成:
  1. $ kubectl -n istio-system wait --for=condition=complete job --all
  • 选择一个配置文件接着部署与您选择的配置文件相对应的 istio 的核心组件。我们建议在生成环境部署中使用默认配置文件:

您可以添加一个或多个 —set <key>=<value> 来进一步定义 Helm 命令的安装选项

  1. $ helm install install/kubernetes/helm/istio --name istio --namespace istio-system
  1. $ helm install install/kubernetes/helm/istio --name istio --namespace istio-system \
  2. --values install/kubernetes/helm/istio/values-istio-demo.yaml
  1. $ helm install install/kubernetes/helm/istio --name istio --namespace istio-system \
  2. --values install/kubernetes/helm/istio/values-istio-minimal.yaml
  1. $ helm install install/kubernetes/helm/istio --name istio --namespace istio-system \
  2. --values install/kubernetes/helm/istio/values-istio-sds-auth.yaml

安装 Istio CNI chart:

  1. $ helm install install/kubernetes/helm/istio-cni --name istio-cni --namespace kube-system

—set istio_cni.enabled=true 设置追加到 helm 命令上,来启用 Istio CNI 插件。以 Istio 默认配置文件为例:

  1. $ helm install install/kubernetes/helm/istio --name istio --namespace istio-system --set istio_cni.enabled=true

验证安装

  • 查询配置文件的组件表,验证是否已部署了与您选择的配置文件相对应的 Kubernetes 服务
  1. $ kubectl get svc -n istio-system
  • 确保相应的 Kubernetes Pod 已部署并且 STATUSRunning
  1. $ kubectl get pods -n istio-system

卸载

  • 如果你使用 helm template 命令安装的 Istio,使用如下命令卸载:
  1. $ helm template install/kubernetes/helm/istio --name istio --namespace istio-system | kubectl delete -f -
  2. $ kubectl delete namespace istio-system
  1. $ helm template install/kubernetes/helm/istio --name istio --namespace istio-system \
  2. --values install/kubernetes/helm/istio/values-istio-demo.yaml | kubectl delete -f -
  3. $ kubectl delete namespace istio-system
  1. $ helm template install/kubernetes/helm/istio --name istio --namespace istio-system \
  2. --values install/kubernetes/helm/istio/values-istio-minimal.yaml | kubectl delete -f -
  3. $ kubectl delete namespace istio-system
  1. $ helm template install/kubernetes/helm/istio --name istio --namespace istio-system \
  2. --values install/kubernetes/helm/istio/values-istio-sds-auth.yaml | kubectl delete -f -
  3. $ kubectl delete namespace istio-system
  1. $ helm template install/kubernetes/helm/istio --name istio --namespace istio-system \
  2. --set istio_cni.enabled=true | kubectl delete -f -
  1. $ helm template install/kubernetes/helm/istio-cni --name=istio-cni --namespace=kube-system | kubectl delete -f -
  • 如果您使用的 Helm 和 Tiller 安装的 Istio, 使用如下命令卸载:
  1. $ helm delete --purge istio
  2. $ helm delete --purge istio-init
  3. $ helm delete --purge istio-cni
  4. $ kubectl delete namespace istio-system

删除 CRD 和 Istio 配置

Istio 的设计中,其自定义资源以 CRD 的形式存在于 Kubernetes 环境之中。CRD 中包含了运维过程中产生的运行时配置。正因如此,我们建议运维人员应该显式的对其进行删除,从而避免意外操作。

CRD 的删除,意味着删掉所有的用户配置。

istio-init Chart 包含了 istio-init/files 目录中的所有原始 CRD。下载该 Chart 之后,可以简单的使用 kubectl 删除 CRD。要永久删除 Istio 的 CRD 以及所有 Istio 配置, 请运行如下命令

  1. $ kubectl delete -f install/kubernetes/helm/istio-init/files

相关内容

Helm 变更

关于 Istio 1.1 和 Istio 1.2 之间的 Helm chart 安装选项的变更。

Helm 安装参数变动表

本文详细介绍了 Istio 1.0 系列到 Istio 1.1 系列之间的安装参数变化详情。

Helm 安装参数变动表

本文详细介绍了 Istio 1.2 系列到 Istio 1.3 系列之间的安装参数变化详情。

安装 Istio CNI 插件

安装并使用 Istio CNI 插件,可以让运维人员用更低的权限来部署服务。

安装选项(Helm)

描述使用 Helm chart 安装 Istio 时的可选项。

DNS 证书管理

在 Istio 中配置和管理 DNS 证书。