使用 Helm 升级

    在将 Istio 版本升级到 1.6 之前,请务必查看[升级说明]。

    Istio 不支持 跨版本升级。仅支持从 1.5 版本升级到 1.6 版本。如果您使用的是旧版本,请先升级到 1.5 版本。

    下载新版本 Istio,并切换目录到新版本的目录下。

    如果您已经安装或计划安装 ,请选择以下 互斥 选项之一,检查 Istio CNI 是否已经安装并进行升级:

    您可以使用 Kubernetes 的滚动更新机制来升级 Istio CNI 组件。这适用于使用 部署 Istio CNI 的情况。

    1. 检查是否已安装 istio-cni。找到 istio-cni-node pod 以及它们运行的命名空间(通常是 kube-systemistio-system):

    2. 如果 istio-cni 安装在 kube-system 以外的命名空间(例如:istio-system),请删除 istio-cni

      1. $ helm template install/kubernetes/helm/istio-cni --name=istio-cni --namespace=$NAMESPACE | kubectl delete -f -
    3. kube-system 命名空间中安装或升级 istio-cni

      1. $ helm template install/kubernetes/helm/istio-cni --name=istio-cni --namespace=kube-system | kubectl apply -f -

    如果您已使用 Helm and Tiller 安装 Istio CNI,请优先使用 Helm 升级 Istio CNI。

    1. 根据下面几种情况来安装或升级 istio-cni

      • 如您尚未安装 istio-cni,并决定安装它,则运行以下命令:

        1. $ helm install install/kubernetes/helm/istio-cni --name istio-cni --namespace kube-system
      • 如果 istio-cni 已被安装到 kube-system 以外的命名空间(例如:istio-system)中,请先运行以下命令删除:

        然后,将其安装到 kube-system 命名空间中:

        1. $ helm install install/kubernetes/helm/istio-cni --name istio-cni --namespace kube-system
        1. $ helm upgrade istio-cni install/kubernetes/helm/istio-cni --namespace kube-system

    Pilot, Galley, 策略, 遥测和 Sidecar 注入器。 选择下列 互斥 选项中的一种升级控制平面:

    您可以使用 Kubernetes 的滚动升级机制来升级控制平面组件。这适用于使用 部署 Istio 组件的情况,包括使用 生成的配置。

    1. 使用 kubectl apply 命令升级所有 Istio 的 CRD。等待 Kubernetes API 服务器提交升级的 CRD:

      1. $ kubectl apply -f install/kubernetes/helm/istio-init/files/
    1. $ kubectl -n istio-system wait --for=condition=complete job --all
    1. 应用更新模板:

      您必须使用与首次安装 Istio 相同的配置。

    滚动更新进程会将所有的部署组件和 configmap 升级到新版本。当此进程执行完毕后,您的 Istio 控制平面将会升级到新版本。

    您现有的应用程序无需任何更改,可以继续运行。如果新的控制平面有任何严重的问题,您可以通过应用旧版本的 yaml 文件来回滚此次变更。

    如果您使用 安装 Istio,推荐的方式是使用 Helm 来进行升级。

    1. 升级 istio-init chart 来更新所有 Istio 用户资源定义(CRD)。

      1. $ helm upgrade --install istio-init install/kubernetes/helm/istio-init --namespace istio-system
    2. 等待所有的 Istio CRD 创建完成:

    1. $ kubectl -n istio-system wait --for=condition=complete job --all
    1. 升级 istio chart:

      1. $ helm upgrade istio install/kubernetes/helm/istio --namespace istio-system

      如果安装了 Istio CNI,则通过添加 --set istio_cni.enabled=true 配置项来启用它。

    在升级控制平面后,已运行 Istio 的应用仍将使用旧的 sidecar。要升级 sidecar,您需要重新注入它。

    要运行以下命令,kubectl 的版本需要 >= 1.15,必要时请进行升级。

    1. $ kubectl rollout restart deployment --namespace default

    如果使用手动注入,可以通过以下命令升级 sidecar:

    如果 sidecar 之前使用了一些定制的配置文件注入,则需要将配置文件中的版本更改为新版本,并通过以下命令重新注入:

    1. $ kubectl apply -f <(istioctl kube-inject \
    2. --filename $ORIGINAL_DEPLOYMENT_YAML)

    相关内容

    使用 istioctl 命令升级 Istio [实验中]

    使用 istioctl 命令来升级或降级 Istio。

    在 Istio 中配置和管理 DNS 证书。

    安全管理 Webhook

    一种更安全管理 Istio webhook 的方法。

    揭秘 Istio 是如何将其数据平面组件添加到现有 deployment。

    Docker Desktop

    在 Docker Desktop 中运行 Istio 的设置说明。