使用 Helm 安装
按照本指南使用Helm安装和配置 Istio 服务网格。
本指南中使用的base和istiod Helm Chart 与通过Istioctl安装 Istio 时使用的相同。但是,通过 Istioctl 进行的安装使用不同的网关 Chart,而不是本指南中描述的Chart先决条件
执行任何必要的平台特定设置。
查看Pod 和服务的必要条件。
安装Helm 客户端,版本 3.6 或更高版本。
配置 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>参数在自定义值文件中指定多个参数。
为 Istio 组件创建命名空间
istio-system$ kubectl create namespace istio-system安装 Istio base Chart,其中包含集群范围的自定义资源定义 (CRD),必须先安装这些定义才能部署 Istio 控制平面。
$ helm install istio-base istio/base -n istio-system --set defaultRevision=default使用
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。如果打算使用 Istio CNI Chart,则必须立即执行此操作。有关更多信息,请参阅使用 CNI 插件安装 Istio。
安装 Istio discovery Chart,它部署
istiod服务。$ helm install istiod istio/istiod -n istio-system --wait验证 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获取已安装 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检查
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(可选) 安装入口网关。
$ 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 及其组件。
列出
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(可选) 删除任何 Istio 网关 Chart 安装。
$ helm delete istio-ingress -n istio-ingress $ kubectl delete namespace istio-ingress删除 Istio discovery Chart。
$ helm delete istiod -n istio-system删除 Istio base Chart。
$ helm delete istio-base -n istio-system删除
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