通过 Helm 安装

按照本指南安装和配置支持 Ambient 模式的 Istio 网格。 如果您是 Istio 新手,只想尝试一下,请按照快速入门说明进行操作。

我们鼓励使用 Helm 在 Ambient 模式下安装 Istio 以供生产使用。 为了允许受控的升级,控制平面和数据平面组件是分开打包和安装的。 (由于 Ambient 数据平面分为 ztunnel 和 waypoint 两个组件, 所以需要单独升级这些组件。)

前提条件

  1. 检查平台特定的前提条件

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

  3. 配置 Helm 仓库:

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

安装或升级 Kubernetes Gateway API CRD

请注意,Kubernetes Gateway API CRD 不会默认安装在大多数 Kubernetes 集群上, 因此请确保在使用 Gateway API 之前已安装好这些 CRD:

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

安装控制平面

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

您可以使用 helm show values <chart> 命令显示配置参数的默认值, 或者参阅 Artifact Hub Chart 文档中的 baseistiodCNIztunnelGateway Chart 配置参数。

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

istioctl 配置文件(它会将要安装或移除的组件放在一组)不同, 而 Helm 配置文件只是对配置值做了分组。

基本组件

base Chart 包含设置 Istio 所需的基本 CRD 和集群角色。 需要先安装此 Chart,才能安装任何其他 Istio 组件。

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

istiod 控制平面

istiod Chart 安装了修订版的 Istiod。Istiod 是管理和配置代理以在网格内路由流量的控制平面组件。

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

CNI 节点代理

cni Chart 安装 Istio CNI 节点代理。此代理负责检测属于 Ambient 网格的 Pod, 并配置 Pod 和 ztunnel 节点代理(稍后安装)之间的流量重定向。

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

安装数据平面

ztunnel DaemonSet

ztunnel Chart 会安装 ztunnel DaemonSet,它是 Istio Ambient 模式的节点代理组件。

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

入口网关(可选)

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

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

如果您的 Kubernetes 集群不支持分配了正确外部 IP 的 LoadBalancer 服务类型(type: LoadBalancer), 请在不带 --wait 参数的情况下运行上述命令,以避免无限等待。 有关网关安装的详细文档, 请参阅安装 Gateway

配置

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

  1. $ helm show values istio/istiod

验证安装

验证工作负载状态

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

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

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

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

使用示例应用进行验证

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

卸载

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

  1. 列出安装在 istio-system 命名空间中的所有 Istio Chart:

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

1.(可选)删除所有 Istio 网关 Chart 安装文件:

  1. $ helm delete istio-ingress -n istio-ingress
  2. $ kubectl delete namespace istio-ingress
  1. 删​​除 ztunnel Chart:

    1. $ helm delete ztunnel -n istio-system
  2. 删除 Istio CNI Chart:

    1. $ helm delete istio-cni -n istio-system
  3. 删除 istiod 控制平面 Chart:

    1. $ helm delete istiod -n istio-system
  4. 删除 Istio base Chart:

    根据设计,通过 Helm 删除 Chart 不会删除通过 Chart 安装的自定义资源定义(CRD)。

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

    这将删除所有已创建的 Istio 资源。

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

    1. $ kubectl delete namespace istio-system