7.6 KiB
| title | description | weight | keywords | owner | test | ||
|---|---|---|---|---|---|---|---|
| 使用 Istioctl 安装 | 安装、定制 Istio 配置文件,用于深入评估及生产发布。 | 10 |
|
istio/wg-environments-maintainers | no |
跟随本指南安装、配置 Istio 网格,用于深入评估及生产发布。 如果您是 Istio 新手,只想简单尝试,请参考快速入门指南。
本安装指南使用命令行工具 istioctl, 它提供丰富的定制功能,用于定制 Istio 控制平面以及数据平面 Sidecar。 它还提供用户输入验证功能,这有助于防止安装错误;提供定制选项,可以覆盖配置的任何方面。
使用这些说明,您可以选取任意一个 Istio 内置的配置档, 为您的特定需求进一步定制配置。
istioctl 命令通过命令行的选项支持完整的
IstioOperator API,
这些选项用于单独设置、以及接收包含 IstioOperator {{}}定制资源(CR){{}}的 yaml 文件。
先决条件
开始之前,检查下列先决条件:
- 下载 Istio 发行版。
- 执行必要的平台安装。
- 检查 Pod 和 Service 的要求。
使用默认配置档安装 Istio
最简单的选择是用下面命令安装 Istio 默认配置档:
{{< text bash >}} $ istioctl install {{< /text >}}
此命令在 Kubernetes 集群上安装 default 配置档。
default 配置档是建立生产环境的一个良好起点,
这和较大的 demo 配置档不同,后者常用于评估一组广泛的 Istio 特性。
可以配置各种设置来修改安装。比如,要启动访问日志:
{{< text bash >}} $ istioctl install --set meshConfig.accessLogFile=/dev/stdout {{< /text >}}
{{< tip >}}
本页和文档其他地方的许多示例都是使用 --set 来修改安装参数,
而不是用 -f 传递配置文件。
这么做可以让例子更紧凑。
这两种方法是等价的,但强烈推荐在生产环境使用 -f。
上面的命令可以用 -f 写成如下的形式:
{{< text bash >}} $ cat < ./my-config.yaml apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: meshConfig: accessLogFile: /dev/stdout EOF $ istioctl install -f my-config.yaml {{< /text >}}
{{< /tip >}}
{{< tip >}}
完整的 API 记录在 IstioOperator API 参考文档。
通常,您可以像使用 Helm 一样,在 istioctl 中使用 --set 参数,
并且当前 Helm 的 values.yaml API 向后兼容。
唯一的区别是您必须给原有 values.yaml 路径前面加上 values. 前缀,这是 Helm 透传 API 的前缀。
{{< /tip >}}
从外部 chart 安装
默认情况下,istioctl 使用内置 chart 生成安装清单。
这些 chart 随同 istioctl 一起发布,用以满足审计和定制,您可以在发行包的 manifests 目录下找到它们。
istioctl 除了使用内置 chart 外,还可以使用外部 chart。
为了选择外部 chart,可以设置参数 manifests 指向本地文件系统路径:
{{< text bash >}} $ istioctl install --manifests=manifests/ {{< /text >}}
如果使用 istioctl {{< istio_full_version >}} 版本的二进制文件,此命令将得到和独立运行 istioctl install 相同的结果,
这是因为它指向了和内置 chart 相同的 chart。
除非要实验或测试新特性,我们建议使用内置的 chart,而不是外部 chart,以保障 istioctl 与 chart 的兼容性。
安装一个不同的配置档
其他的 Istio 配置档,可以通过在命令行传递配置档名称的方式,安装到集群。
例如,下面命令可以用来安装 demo 配置档。
{{< text bash >}} $ istioctl install --set profile=demo {{< /text >}}
安装前生成清单文件
在安装 Istio 之前,可以用 manifest generate
子命令生成清单文件。例如,使用以下命令为可以使用 kubectl
安装的 default 配置文件生成清单:
{{< text bash >}} $ istioctl manifest generate > $HOME/generated-manifest.yaml {{< /text >}}
生成的清单可用于检查具体安装了什么以及跟踪清单随时间的变化。
虽然 IstioOperator CR 代表完整的用户配置并且足以跟踪它,
但 manifest generate 的输出还捕获了底层图表中可能的变化,
因此可用于跟踪实际安装的资源。
{{< tip >}}
您通常用于安装的任何其他标志或自定义值覆盖也应提供给 istioctl manifest generate 命令。
{{< /tip >}}
{{< warning >}}
如果尝试使用 istioctl manifest generate 安装和管理 Istio,请注意以下事项:
-
Istio 的命名空间(默认为
istio-system)必须手工创建。 -
默认情况下,Istio 验证将不会被启用。 与
istioctl install不同,manifest generate命令不会创建istiod-default-validator验证 webhook 配置,除非设置values.defaultRevision:{{< text bash >}} $ istioctl manifest generate --set values.defaultRevision=default {{< /text >}}
-
资源可能没有按照与
istioctl install相同的依赖项顺序进行安装。 -
此方法尚未作为 Istio 版本的一部分进行测试。
-
istioctl install会在 Kubernetes 上下文中自动探测环境特定的设置, 但以离线运行的manifest generate不行,而且可能导致意外结果。 特别是,如果 Kubernetes 环境不支持第三方服务帐户令牌, 则必须确保遵循这些步骤。 建议在istio manifest generate命令后附加'--cluster-specific以检测目标集群的环境, 这会将这些特定于集群的环境设置嵌入到生成的清单中。这需要对正在运行的集群进行网络访问。 -
用
kubectl apply执行生成的清单,会显示临时错误, 这是因为集群中的资源进入可用状态的顺序有问题。 -
istioctl install自动清除一些资源,其实这些资源在配置改变时(例如,当您删除网关)就应该被删掉了。 但此机制在kubectl和istio manifest generate协同使用时并不会发生,所以这些资源必须手动删除。
{{< /warning >}}
有关定制安装的更多信息,请参阅定制安装配置。
卸载 Istio
要从集群中完整卸载 Istio,运行下面命令:
{{< text bash >}} $ istioctl uninstall --purge {{< /text >}}
{{< warning >}}
可选的 --purge 参数将移除所有 Istio 资源,包括可能被其他 Istio 控制平面共享的、集群范围的资源。
{{< /warning >}}
或者,只移除指定的 Istio 控制平面,运行以下命令:
{{< text bash >}} $ istioctl uninstall {{< /text >}}
或
{{< text bash >}} $ istioctl manifest generate | kubectl delete --ignore-not-found=true -f - {{< /text >}}
控制平面的命名空间(例如:istio-system)默认不会被移除。
如果确认不再需要,用下面命令移除该命名空间:
{{< text bash >}} $ kubectl delete namespace istio-system {{< /text >}}