部署 Istio

在 Istio 官方文档上提供了通过 Istioctl 安装部署 Istio - 图1通过 Helm 安装部署 Istio - 图2通过 Operator 安装部署 Istio - 图3三种方式,其中,基于 Helm 方式在 Istio 1.5 版之后已被废弃,Operator 方式目前仍处于实验阶段,本文选择采用 Istioctl 方式进行安装。

获取 Istio

首先访问Istio release部署 Istio - 图4页面下载与你操作系统匹配的安装文件。在 macOS 或 Linux 系统中,也可以通过以下命令直接下载最新版本的 Istio:

  1. $ curl -L https://istio.io/downloadIstio | sh -

解压后,安装目录包括以下内容:

目录包含内容
bin包含 istioctl 的客户端文件
install包含 Consul、GCP 和 Kubernetes 平台的 Istio 安装脚本和文件
samples包含示例应用程序
tools包含用于性能测试和在本地机器上进行测试的脚本

bin目录下的istioctl客户端路径增加到path环境变量中,macOS 或 Linux 系统的增加方式如下:

  1. $ export PATH=$PWD/bin:$PATH

如果你在使用 bash 或 ZSH 的话,可以选择启动Auto Completion Option部署 Istio - 图5

默认安装 Istio

部署 Istio,最简单的方式是安装 default 配置文件,直接使用以下命令即可:

  1. $ istioctl manifest install

此命令将在你的 Kubernetes 集群上安装default配置文件。default配置文件建立生产环境的良好起点,这与旨在评估广泛的 Istio 功能特性的较大的demo配置文件不同。各种不同配置文件之间的差异如下表所示:

defaultdemominimalsds
核心组件
istio-citadelXXX
istio-egressgatewayX
istio-galleyXXX
istio-ingressgatewayXXX
istio-nodeagentX
istio-pilotXXXX
istio-policyXXX
istio-sidecar-injectorXXX
istio-telemetryXXX
插件
grafanaX
istio-tracingX
kialiX
prometheusXXX

安装default配置文件后,如果需要其他组件或者插件,可以进行独立安装。譬如要在default配置文件之上启用 Grafana Dashboard,用下面的命令设置addonComponents.grafana.enabled参数即可:

  1. $ istioctl manifest install --set addonComponents.grafana.enabled=true

安装 demo 配置

demo这个词语可能会让使用者产生误解,其实 Istio 的demo配置是默认安装所有组件的全功能配置,从上面表格中配置与组件的对应情况中可以印证这一点。你可以使用以下istioctl命令来列出 Istio 配置文件名称:

  1. $ istioctl profile list
  2. Istio configuration profiles:
  3. remote
  4. separate
  5. default
  6. demo
  7. empty
  8. minimal

通过在命令行上设置配置文件名称安装其他 Istio 配置文件到群集中,使用以下命令安装demo配置文件:

  1. $ istioctl manifest install --set profile=demo

验证安装成功

你可以使用verify-install命令检查 Istio 安装是否成功,它将集群上的安装与你指定的清单进行比较。

如果未在部署之前生成清单,请运行以下命令以现在生成它:

  1. $ istioctl manifest generate <your original installation options> > $HOME/generated-manifest.yaml

然后运行以下verify-install命令以查看安装是否成功:

  1. $ istioctl verify-install -f $HOME/generated-manifest.yaml

卸载 Istio

可以使用以下命令来卸载 Istio:

  1. $ istioctl manifest generate <your original installation options> | kubectl delete -f -