通过 Helm 安装

本指南向您展示如何使用 Helm 在环境模式下安装 Istio。 除了遵循Ambient 模式入门中的演示之外, 我们鼓励使用 Helm 安装 Istio 使其在 Ambient 模式下运行。 Helm 帮助您单独管理组件,您可以轻松地将组件升级到最新版本。

前提条件

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

  2. 检查 Pod 和 Service 的要求

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

  4. 配置 Helm 仓库:

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

有关 Helm 命令文档,请参阅 Helm 仓库

安装组件

安装 base 组件

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

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

安装 CNI 组件

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

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

安装 discovery 组件

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

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

安装 ztunnel 组件

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

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

安装入口网关(可选)

部署网关的命名空间不得具有 istio-injection=disabled 标签。 有关更多信息,请参阅控制注入策略

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

有关网关安装的详细文档, 请参阅安装 Gateway

配置

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

$ helm show values istio/istiod

验证安装

验证工作负载状态

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

$ helm ls -n istio-system NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION istio-base istio-system 1 ... ... ... ... deployed base-1.0.0 1.0.0 istio-cni istio-system 1 ... ... ... ... deployed cni-1.0.0 1.0.0 istiod istio-system 1 ... ... ... ... deployed istiod-1.0.0 1.0.0 ztunnel istio-system 1 ... ... ... ... deployed ztunnel-1.0.0 1.0.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 安装 Ambient 模式后, 您可以按照部署示例应用程序指南部署示例应用程序和入口网关, 然后您可以添加您的应用程序到 Ambient 网格中

卸载

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

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

    $ helm ls -n istio-system NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION istio-base istio-system 1 ... ... ... ... deployed base-1.0.0 1.0.0 istio-cni istio-system 1 ... ... ... ... deployed cni-1.0.0 1.0.0 istiod istio-system 1 ... ... ... ... deployed istiod-1.0.0 1.0.0 ztunnel istio-system 1 ... ... ... ... deployed ztunnel-1.0.0 1.0.0

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

``` $ helm delete istio-ingress -n istio-ingress $ kubectl delete namespace istio-ingress ```

  1. 删除 Istio CNI Chart:

    $ helm delete istio-cni -n istio-system

  2. 删除 Istio ztunnel Chart:

    $ helm delete ztunnel -n istio-system

  3. 删除 Istio discovery Chart:

    $ helm delete istiod -n istio-system

  4. 删除 Istio base Chart:

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

    $ helm delete istio-base -n istio-system

  5. 删除 Istio 安装的 CRD(可选)

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

    $ kubectl get crd -oname | grep --color=never 'istio.io' | xargs kubectl delete

  6. 删除 istio-system 命名空间:

    $ kubectl delete namespace istio-system