使用 Helm 自定义安装

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

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

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

先决条件

  1. 下载 Istio 发行版
  2. 完成必要的 Kubernetes 平台设置
  3. 检查 Pod 和服务的要求
  4. 安装高于 2.10 版本的 Helm 客户端

添加 Helm chart 仓库

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

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

安装步骤

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

  1. 如果您不使用 Tiller 部署 Istio,请查看 方案 1
  2. 如果您使用 Helm 的 Tiller pod 来管理 Istio 发行版, 请查看 方案 2

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

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

  1. 为 Istio 组件创建命名空间 istio-system

    $ kubectl create namespace istio-system
    
  2. 使用 kubectl apply 安装所有 Istio 的 自定义资源 (CRDs) :

    $ helm template install/kubernetes/helm/istio-init --name istio-init --namespace istio-system | kubectl apply -f -
    
  3. Wait for all Istio CRDs to be created:

    $ kubectl -n istio-system wait --for=condition=complete job --all
    
  4. 选择一个 配置文件 接着部署与您选择的配置文件相对应的 Istio 核心组件。 我们建议在生产环境使用默认的配置文件:

$ helm template install/kubernetes/helm/istio --name istio --namespace istio-system | kubectl apply -f -

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

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

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

    Zip
    $ kubectl apply -f @install/kubernetes/helm/helm-service-account.yaml@
    
  2. 使用 Service Account 在集群上安装 Tiller:

    $ helm init --service-account tiller
    
  3. 安装 istio-init chart,来启动 Istio CRD 的安装过程:

    $ helm install install/kubernetes/helm/istio-init --name istio-init --namespace istio-system
    
  4. Wait for all Istio CRDs to be created:

    $ kubectl -n istio-system wait --for=condition=complete job --all
    
  5. 选择一个 配置文件 接着部署与您选择的配置文件相对应的 istio 的核心组件。 我们建议在生成环境部署中使用默认配置文件:

$ helm install install/kubernetes/helm/istio --name istio --namespace istio-system

验证安装

  1. 查询 配置文件 的组件表,验证是否已部署了与您选择的配置文件相对应的 Kubernetes 服务

    $ kubectl get svc -n istio-system
    
  2. 确保相应的 Kubernetes Pod 已部署并且 STATUSRunning

    $ kubectl get pods -n istio-system
    

卸载

  • 如果你使用 helm template 命令安装的 Istio,使用如下命令卸载:
$ helm template install/kubernetes/helm/istio --name istio --namespace istio-system | kubectl delete -f -
$ kubectl delete namespace istio-system
  • 如果您使用的Helm 和 Tiller 安装的 Istio,使用如下命令卸载:

    $ helm delete --purge istio
    $ helm delete --purge istio-init
    $ helm delete --purge istio-cni
    $ kubectl delete namespace istio-system
    

删除 CRD 和 Istio 配置

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

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

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