使用 Helm 进行安装

按照此流程安装和配置 Istio 网格,用于深入评估或生产环境使用。 这种安装方式使用 Helm chart 自定义 Istio 控制平面和 Istio 数据平面的 sidecar 。 你只需使用 helm template 生成配置并使用 kubectl apply 安装它,或者你可以选择使用 helm installTiller 来完全管理安装。

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

先决条件

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

安装步骤

以下命令使用了包含 Istio 发行版镜像的 Helm 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 CRD,命令执行之后,会隔一段时间才能被 Kubernetes API Server 收到:

    $ helm template install/kubernetes/helm/istio-init --name istio-init --namespace istio-system | kubectl apply -f -
    
  3. 使用以下命令验证所有 23 个 Istio CRD 是否已提交到 Kubernetes api-server:

    $ kubectl get crds | grep 'istio.io\|certmanager.k8s.io' | wc -l
    23
    
  4. 选择一个 配置文件,接着部署与你选择的配置文件相对应的 Istio 的核心组件,我们建议在生成环境部署中使用 default 配置文件:

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

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

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

  1. 如果没有为 Tiller 创建 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. 使用以下命令验证所有 23 个 Istio CRD 是否已提交到 Kubernetes api-server:

    $ kubectl get crds | grep 'istio.io\|certmanager.k8s.io' | wc -l
    23
    
  5. 选择一个 配置文件,接着部署与你选择的配置文件相对应的 Istio 的核心组件,我们建议在生成环境部署中使用 default 配置文件:

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

确认安装情况

  1. 查询配置文件中的组件表, 验证 Helm 是否已经部署了与所选配置文件相对应的 Kubernetes services 服务:

    $ 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
    

删除 CRD 和 Istio 配置

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

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

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