Istio Istio

使用 Helm 安装并定制 Istio

官方推荐的生产环境运行 Istio 的方式,以及取代已被移除的 Istio Operator 的方案。

12 min 中级

istioctl install 是为学习或本地测试快速运行网格的最快方式,但对于你打算长期管理、版本化并定制的生产安装,Helm 是 Istio 官方推荐的方法。本指南用 Helm 安装 Istio,并介绍取代 Istio Operator 的方案,而较旧的资料往往会把你引向 Operator 来完成这类细粒度定制。

开始之前的说明:Istio Operator 已经不存在了

Istio 过去附带一个集群内的 Istio Operator:一个监视 IstioOperator 自定义资源并调谐集群使之匹配的控制器。如果你见过围绕”将某个 profile 导出为 IstioOperator YAML 文件并应用它”而构建的教程、认证资料或较旧文档,它们描述的就是这个。集群内 operator 在 Istio 1.23 中被弃用,并在 1.24 中被彻底移除。 它在当前的 Istio 版本中已不存在。

取代它的方式更直接:Helm values 文件。过去通过 IstioOperator 资源进行的同样的定制,例如启用网关、调整资源请求、更改组件的设置,现在以 Helm values 的形式表达,并用 helm install 或 helm upgrade 应用,与定制任何其他 Helm chart 的方式相同。如果你学习的资料把 Operator 当作必不可少的,请把其中的底层概念(在文件中自定义设置、应用它、Istio 调谐到匹配)视为仍然有效,但把机制转换为 Helm。

安装三个核心 chart

Istio 的 Helm 安装分为三个 chart,按顺序安装:

helm repo add istio https://istio-release.storage.googleapis.com/charts
helm repo update

# 1. CRDs and cluster-wide resources
helm install istio-base istio/base -n istio-system --create-namespace

# 2. The control plane (istiod)
helm install istiod istio/istiod -n istio-system --wait

# 3. The ingress gateway (optional, if you need external traffic entry)
helm install istio-ingressgateway istio/gateway -n istio-system

istio-base 安装 CustomResourceDefinition 和集群范围的 RBAC 资源,其他每个部分都依赖它们,因此必须最先安装。istiod 是控制平面本身。只有在你想要受管的 ingress(或 egress)网关时才需要 gateway chart;只有 sidecar 到 sidecar 流量的网格可以跳过它。

kubectl get pods -n istio-system
helm list -n istio-system

你应该会看到 istiod,以及(如果已安装)网关处于 Running 状态,并且 helm list 应显示全部三个 release。

用 values 定制设置

每个 chart 都接受自己的 values,可以像任何 Helm chart 一样查看:

helm show values istio/istiod > istiod-values.yaml

编辑该文件,然后用它安装(或升级):

helm upgrade istiod istio/istiod -n istio-system -f istiod-values.yaml

常见的定制:istiod 或网关的资源请求和限制、启用 egress 网关(在大多数 profile 上默认禁用),或调整 meshConfig 下的网格范围设置。过去 Istio Operator 允许你通过 spec.components 或 spec.meshConfig 配置的一切,在 Helm values 中都有对应项;Istio 自己的 Helm 安装文档是了解你所运行版本中具体哪些 values 对应哪种行为的权威参考。

应用变更

helm upgrade istiod istio/istiod -n istio-system -f istiod-values.yaml

与任何其他 Helm 升级相同的模式:编辑 values,重新运行 helm upgrade,Helm 会调谐实时资源使其匹配。不存在较旧资料所描述的那种单独的”应用 operator 配置”步骤;helm upgrade 本身就是应用步骤。

卸载

helm uninstall istio-ingressgateway -n istio-system
helm uninstall istiod -n istio-system
helm uninstall istio-base -n istio-system
kubectl delete namespace istio-system

与一条命令移除所有内容的 istioctl uninstall --purge 不同,Helm 的方式是按安装顺序的大致逆序,逐个卸载每个 release,因为后面的 chart 可能依赖 base chart 所创建的资源。

热门指南