使用KubeAPI升级ASM网关

服务网格 ASM(Service Mesh)原则上保持每三个月更新一次Istio版本的频率。新版本推出后,您需要对ASM实例的控制面和数据面及网关进行升级,以降低安全和稳定性风险。ASM网关支持通过KubeAPI进行升级,提供流畅的升级体验。本文介绍如何通过KubeAPI升级ASM网关。

前提条件

步骤一:升级控制面

请确保您的控制面已经是最新版本,当前网关处于待升级状态。关于控制面版本升级,具体操作,请参见原地升级

步骤二:升级ASM网关

在ASM实例中,资源类型ASMGatewayUpgrade专门用于记录网关版本和控制ASM网关升级。当您的网关需要升级时,您可以使用ASM集群的kubeconfig修改该资源中的.spec.version字段为MATCHED_CONTROLPLANE_VERSION,修改完成之后会自动触发网关升级。

以下假设要升级的ASM网关名称为ingressgateway,对应升级的步骤如下:

  1. 执行以下命令,查看当前网关的状态。

    kubectl -n istio-system get asmgatewayupgrade

    预期输出:

    NAME            STATUS   ERROR   AGE
    ingressgateway                    4d17h
  2. 执行以下命令,进入当前实例中ASMGatewayUpgrade资源的编辑状态。

    kubectl -n istio-system edit asmgatewayupgrade

    预期输出:

    apiVersion: istio.alibabacloud.com/v1beta1
    kind: ASMGatewayUpgrade
    metadata:
      creationTimestamp: "2024-10-xxxxxx"
      generation: 1
      name: ingressgateway
      namespace: istio-system
      ownerReferences:
      - apiVersion: istio.alibabacloud.com/v1beta1
        blockOwnerDeletion: true
        controller: true
        kind: IstioGateway
        name: ingressgateway
        uid: c3daa87a-1d8c-41e0-9842-xxxxxx
      resourceVersion: "2299xxxxxx"
      uid: b7260c9e-66ce-4ed4-8c74-xxxxxx
    spec:
      version: v1.22.2.35-ge64ec8af-aliyun
  3. 上述输出实际是一个vi编辑界面,修改其中.spec.version的值,保存并退出后,网关即开始自动升级。

    您可以在网格实例 > 升级管理中查看网关升级状态。网关升级完成后,ASMGatewayUpgrade中记录的版本将自动更新为与当前控制面版本相匹配的版本。