1.2. 关于 InPlace 策略


InPlace 策略始终只运行一个 control plane 的修订版本。当您执行 InPlace 更新时,所有工作负载都会立即连接到 control plane 的新版本。为确保 sidecar 和 control plane 之间的兼容性,不能一次通过多个次版本进行升级。

1.2.1. 选择 InPlace 策略

要选择 InPlace 策略,将 Istio 资源中的 spec.updateStrategy.type 值设置为 InPlace

选择 InPlace 更新策略的规格示例

kind: Istio
spec:
  updateStrategy:
    type: InPlace

您可以在首次创建资源时设置这个值,也可以稍后编辑该资源。如果您选择在创建资源后编辑资源,请在更新 Istio control plane 前进行更改。

1.2.2. 将工作负载附加到 control plane

当 Istio 配置为使用 InPlace 策略时,Operator 创建的 IstioRevision 资源始终与 Istio 资源的名称相同。要将工作负载附加到使用 InPlace 策略部署的 control plane,您可以将 istio.io/rev 命名空间标签设置为 IstioRevision 的名称。

将工作负载附加到网格的 istio.io 命名空间标签示例

$ oc label namespace <namespace-name> istio.io/rev=<revision-name>

另外,您可以通过修改部署资源中的 pod 模板,将标签应用到工作负载 pod。

将工作负载附加到网格的 pod 模板示例

apiVersion: apps/v1
kind: Deployment
spec:
  template:
    metadata:
      labels:
        istio.io/rev: <revision-name>
    spec:

如果修订名称为 default,您可以通过标记命名空间或 启用了标签 istio-injection: 的 pod 将工作负载附加到修订版本。

将工作负载附加到网格的 istio-injection 标签示例

oc label namespace <namespace-name> istio-injection=enabled

1.2.3. 执行 InPlace 更新

当使用 InPlace 策略更新 Istio 时,一次只能递增一个次版本。如果要通过多个次版本更新,那么您必须在每次更新后增加版本并重启工作负载。这样可确保 sidecar 版本与 control plane 版本兼容。在所有工作负载重启后,更新过程就会完成。

先决条件

  • cluster-admin 用户身份登录到 Red Hat OpenShift Service Mesh。
  • 已安装 Red Hat OpenShift Service Mesh Operator 并部署了 Istio。

流程

  1. 更改 Istio 资源中的版本:

    kind: Istio
    spec:
      version: 1.20.2
      updateStrategy:
        type: InPlace

    Service Mesh Operator 部署了一个 control plane 的新版本,它替换了 control plane 的旧版本。sidecar 会自动重新连接到新的 control plane。

  2. 输入以下命令确认 control plane 的新版本正在运行并就绪:

    $ oc get istio <control-plane-name>
  3. 输入以下命令重启应用程序工作负载,以便注入 sidecar 的新版本:

    $ oc rollout restart <deployment-name>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.