使用 Helm 安装

我们鼓励使用 Helm 在环境模式下安装 Istio 用于生产环境。为了允许受控升级,控制平面和数据平面组件被单独打包和安装。(由于环境数据平面被拆分为 两个组件,ztunnel 和 waypoints,升级需要针对这些组件进行单独的步骤。)

先决条件

  1. 查看 平台特定先决条件

  2. 安装 Helm 客户端,版本 3.6 或更高版本。

  3. 配置 Helm 仓库

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

安装控制平面

可以使用一个或多个 --set <parameter>=<value> 参数更改默认配置值。或者,您可以使用 --values <file> 参数在自定义值文件中指定多个参数。

有关如何使用和自定义 Helm 安装的完整详细信息,请参阅 边车安装文档

istioctl 配置文件不同,配置文件将要安装或删除的组件分组在一起,而 Helm 配置文件只是设置配置值的组。

基本组件

base 图表包含设置 Istio 所需的基本 CRD 和集群角色。这应该在任何其他 Istio 组件之前安装。

$ helm install istio-base istio/base -n istio-system --create-namespace --wait

安装或升级 Kubernetes 网关 API CRD

请注意,Kubernetes Gateway API CRD 在大多数 Kubernetes 集群中默认情况下不会安装,因此请确保在使用 Gateway API 之前安装它们。

$ kubectl get crd gateways.gateway.networking.k8s.io &> /dev/null || \
  { kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.0/standard-install.yaml; }

istiod 控制平面

istiod 图表安装 Istiod 的一个版本。Istiod 是管理和配置代理以路由网格内流量的控制平面组件。

$ helm install istiod istio/istiod --namespace istio-system --set profile=ambient --wait

CNI 节点代理

cni 图表安装 Istio CNI 节点代理。它负责检测属于环境网格的 Pod,以及配置 Pod 和 ztunnel 节点代理(稍后将安装)之间的流量重定向。

$ helm install istio-cni istio/cni -n istio-system --set profile=ambient --wait

安装数据平面

ztunnel DaemonSet

ztunnel 图表安装 ztunnel DaemonSet,它是 Istio 环境模式的节点代理组件。

$ helm install ztunnel istio/ztunnel -n istio-system --wait

入口网关(可选)

要安装入口网关,请运行以下命令

$ helm install istio-ingress istio/gateway -n istio-ingress --create-namespace --wait

如果您的 Kubernetes 集群不支持 LoadBalancer 服务类型(type: LoadBalancer)并分配适当的外部 IP,请在不使用 --wait 参数的情况下运行上述命令以避免无限期等待。有关网关安装的深入文档,请参阅 安装网关

配置

要查看支持的配置选项和文档,请运行

$ helm show values istio/istiod

验证安装

验证工作负载状态

安装完所有组件后,您可以使用以下命令检查 Helm 部署状态

$ helm ls -n istio-system
NAME            NAMESPACE       REVISION    UPDATED                                 STATUS      CHART           APP VERSION
istio-base      istio-system    1           2024-04-17 22:14:45.964722028 +0000 UTC deployed    base-1.24.0     1.24.0
istio-cni       istio-system    1           2024-04-17 22:14:45.964722028 +0000 UTC deployed    cni-1.24.0      1.24.0
istiod          istio-system    1           2024-04-17 22:14:45.964722028 +0000 UTC deployed    istiod-1.24.0   1.24.0
ztunnel         istio-system    1           2024-04-17 22:14:45.964722028 +0000 UTC deployed    ztunnel-1.24.0  1.24.0

您可以使用以下命令检查已部署 Pod 的状态

$ kubectl get pods -n istio-system
NAME                             READY   STATUS    RESTARTS   AGE
istio-cni-node-g97z5             1/1     Running   0          10m
istiod-5f4c75464f-gskxf          1/1     Running   0          10m
ztunnel-c2z4s                    1/1     Running   0          10m

使用示例应用程序验证

使用 Helm 安装环境模式后,您可以按照 部署示例应用程序 指南部署示例应用程序和入口网关,然后您可以 将您的应用程序添加到环境网格

卸载

您可以通过卸载上面安装的图表来卸载 Istio 及其组件。

  1. 列出 istio-system 命名空间中安装的所有 Istio 图表

    $ helm ls -n istio-system
    NAME            NAMESPACE       REVISION    UPDATED                                 STATUS      CHART           APP VERSION
    istio-base      istio-system    1           2024-04-17 22:14:45.964722028 +0000 UTC deployed    base-1.24.0     1.24.0
    istio-cni       istio-system    1           2024-04-17 22:14:45.964722028 +0000 UTC deployed    cni-1.24.0      1.24.0
    istiod          istio-system    1           2024-04-17 22:14:45.964722028 +0000 UTC deployed    istiod-1.24.0   1.24.0
    ztunnel         istio-system    1           2024-04-17 22:14:45.964722028 +0000 UTC deployed    ztunnel-1.24.0  1.24.0
    
  2. (可选)删除任何 Istio 网关图表安装

    $ helm delete istio-ingress -n istio-ingress
    $ kubectl delete namespace istio-ingress
    
  3. 删除 ztunnel 图表

    $ helm delete ztunnel -n istio-system
    
  4. 删除 Istio CNI 图表

    $ helm delete istio-cni -n istio-system
    
  5. 删除 istiod 控制平面图表

    $ helm delete istiod -n istio-system
    
  6. 删除 Istio base 图表

    $ helm delete istio-base -n istio-system
    
  7. 删除 Istio 安装的 CRD(可选)

    $ kubectl get crd -oname | grep --color=never 'istio.io' | xargs kubectl delete
    
  8. 删除 istio-system 命名空间

    $ kubectl delete namespace istio-system
    
此信息是否有用?
您是否有任何改进建议?

感谢您的反馈!