使用 Helm 安装

按照本指南使用Helm安装和配置 Istio 服务网格。

本指南中使用的baseistiod Helm Chart 与通过Istioctl安装 Istio 时使用的相同。但是,通过 Istioctl 进行的安装使用不同的网关 Chart,而不是本指南中描述的Chart

先决条件

  1. 执行任何必要的平台特定设置

  2. 查看Pod 和服务的必要条件

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

  4. 配置 Helm 仓库

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

安装步骤

本节介绍使用 Helm 安装 Istio 的过程。Helm 安装的一般语法如下:

$ helm install <release> <chart> --namespace <namespace> --create-namespace [--set <other_parameters>]

命令中指定的变量如下:

  • <chart> 打包 Chart 的路径、解压 Chart 目录的路径或 URL。
  • <release> 安装后用于识别和管理 Helm Chart 的名称。
  • <namespace> 安装 Chart 的命名空间。

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

  1. 为 Istio 组件创建命名空间istio-system

    $ kubectl create namespace istio-system
    
  2. 安装 Istio base Chart,其中包含集群范围的自定义资源定义 (CRD),必须先安装这些定义才能部署 Istio 控制平面。

    $ helm install istio-base istio/base -n istio-system --set defaultRevision=default
    
  3. 使用helm ls命令验证 CRD 安装。

    $ 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-base的条目,并确保状态设置为deployed

  4. 如果打算使用 Istio CNI Chart,则必须立即执行此操作。有关更多信息,请参阅使用 CNI 插件安装 Istio

  5. 安装 Istio discovery Chart,它部署istiod服务。

    $ helm install istiod istio/istiod -n istio-system --wait
    
  6. 验证 Istio discovery Chart 安装。

    $ 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
    istiod     istio-system 1        2024-04-17 22:14:45.964722028 +0000 UTC deployed istiod-1.24.0 1.24.0
    
  7. 获取已安装 Helm Chart 的状态,以确保其已部署。

    $ helm status istiod -n istio-system
    NAME: istiod
    LAST DEPLOYED: Fri Jan 20 22:00:44 2023
    NAMESPACE: istio-system
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    NOTES:
    "istiod" successfully installed!
    
    To learn more about the release, try:
      $ helm status istiod
      $ helm get all istiod
    
    Next steps:
      * Deploy a Gateway: https://istio.ac.cn/latest/docs/setup/additional-setup/gateway/
      * Try out our tasks to get started on common configurations:
        * https://istio.ac.cn/latest/docs/tasks/traffic-management
        * https://istio.ac.cn/latest/docs/tasks/security/
        * https://istio.ac.cn/latest/docs/tasks/policy-enforcement/
        * https://istio.ac.cn/latest/docs/tasks/policy-enforcement/
      * Review the list of actively supported releases, CVE publications and our hardening guide:
        * https://istio.ac.cn/latest/docs/releases/supported-releases/
        * https://istio.ac.cn/latest/news/security/
        * https://istio.ac.cn/latest/docs/ops/best-practices/security/
    
    For further documentation see https://istio.ac.cn website
    
    Tell us how your install/upgrade experience went at https://forms.gle/99uiMML96AmsXY5d6
    
  8. 检查istiod服务是否已成功安装,并且其 Pod 正在运行。

    $ kubectl get deployments -n istio-system --output wide
    NAME     READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES                         SELECTOR
    istiod   1/1     1            1           10m   discovery    docker.io/istio/pilot:1.24.0   istio=pilot
    
  9. (可选) 安装入口网关。

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

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

更新 Istio 配置

您可以提供特定于上述任何 Istio Helm Chart 的覆盖设置,并遵循 Helm 升级工作流来自定义 Istio 服务网格安装。可以使用helm show values istio/<chart>查找可用的可配置选项;例如helm show values istio/gateway

从非 Helm 安装迁移

如果您要从使用istioctl安装的 Istio 版本迁移到 Helm(Istio 1.5 或更早版本),则需要删除当前的 Istio 控制平面资源,并按照上述说明使用 Helm 重新安装 Istio。删除当前 Istio 安装时,必须不要删除 Istio 自定义资源定义 (CRD),因为这可能导致丢失自定义 Istio 资源。

您可以按照Istioctl 卸载指南中提到的步骤操作。

卸载

您可以通过卸载上面安装的 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        2024-04-17 22:14:45.964722028 +0000 UTC deployed base-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
    
  2. (可选) 删除任何 Istio 网关 Chart 安装。

    $ helm delete istio-ingress -n istio-ingress
    $ kubectl delete namespace istio-ingress
    
  3. 删除 Istio discovery Chart。

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

    $ helm delete istio-base -n istio-system
    
  5. 删除istio-system命名空间。

    $ kubectl delete namespace istio-system
    

卸载稳定版本标签资源

如果您决定继续使用旧的控制平面,而不是完成更新,则可以通过首先发出helm template istiod istio/istiod -s templates/revision-tags.yaml --set revisionTags={prod-canary} --set revision=canary -n istio-system | kubectl delete -f -来卸载较新的版本及其标签。然后,您必须按照上述卸载过程卸载它指向的 Istio 版本。

如果您使用就地升级为该版本安装了网关,则还必须手动为先前版本重新安装网关。删除先前的版本及其标签不会自动恢复先前升级的网关。

(可选) 删除 Istio 安装的 CRD

删除 CRD 会永久删除您在集群中创建的任何 Istio 资源。要删除在集群中安装的 Istio CRD,请执行以下操作:

$ kubectl get crd -oname | grep --color=never 'istio.io' | xargs kubectl delete
这些信息是否有用?
您对改进有什么建议?

感谢您的反馈!