将 Apigee Hybrid 升级到 1.10 版

此过程包括从 Apigee Hybrid 1.9.x 版升级到 Apigee Hybrid 1.10.4 版,以及从先前 Hybrid 1.10.x 版升级到 1.10.4 版。

次要版本升级(例如,1.9 版到 1.10 版)和补丁版本升级(例如 1.10.0 版到 1.10.4 版)使用相同的过程。

升级到 1.10.4 版概览

以下各部分介绍升级 Apigee Hybrid 的过程:

  1. 准备升级
  2. 安装 Hybrid 运行时 1.10.4 版

前提条件

以下升级说明假定您已安装 Apigee Hybrid 1.9.x 版,并且希望将其升级到 1.10.4 版。如果您要从更低版本进行更新,请参阅将 Apigee Hybrid 升级到 1.9 版的说明。

准备升级到 1.10 版

  1. 这些说明将环境变量 APIGEECTL_HOME 用于文件系统中已安装 apigeectl 的目录。如果需要,请切换到 apigeectl 目录,然后使用以下命令定义变量:

    Linux

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    Mac OS

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    Windows

    set APIGEECTL_HOME=%CD%
    echo %APIGEECTL_HOME%
  2. 创建 1.9 版 $APIGEECTL_HOME/ 目录的备份副本。例如:
    tar -czvf $APIGEECTL_HOME/../apigeectl-v1.9-backup.tar.gz $APIGEECTL_HOME
  3. 按照 Cassandra 备份和恢复中的说明备份 Cassandra 数据库。

升级 Kubernetes 版本

检查您的 Kubernetes 平台版本,并根据需要将 Kubernetes 平台升级到 Hybrid 1.9 和 Hybrid 1.10 均支持的版本。如需帮助,请参阅该平台的相关文档。

安装 Hybrid 1.10.4 运行时

  1. 确保您位于 Hybrid 基本目录中(apigeectl 可执行文件所在目录的父级目录):
    cd $APIGEECTL_HOME/..
  2. 使用以下命令下载适用于您的操作系统的软件包版本。请务必在下表中选择您的平台:

    Linux

    Linux 64 位

    curl -LO \
      https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.10.4/apigeectl_linux_64.tar.gz

    Mac OS

    Mac 64 位

    curl -LO \
      https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.10.4/apigeectl_mac_64.tar.gz

    Windows

    Windows 64 位

    curl -LO ^
      https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.10.4/apigeectl_windows_64.zip
  3. 将当前 apigeectl/ 目录重命名为备份目录名称。例如:

    Linux

    mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.9/

    Mac OS

    mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.9/ 

    Windows

    rename %APIGEECTL_HOME% %APIGEECTL_HOME%-v1.9 
  4. 将下载的 gzip 文件内容解压缩到 Hybrid 基本目录中。 Hybrid 基本目录是重命名后的 apigeectl-v1.9 目录所在的目录:

    Linux

    tar xvzf filename.tar.gz -C ./

    Mac OS

    tar xvzf filename.tar.gz -C ./

    Windows

    tar xvzf filename.zip -C ./
  5. 默认情况下,tar 内容会扩展到其名称中包含版本和平台的目录。例如:./apigeectl_1.10.4-xxxxxxx_linux_64。使用以下命令将该目录重命名为 apigeectl

    Linux

    mv apigeectl_1.10.4-xxxxxxx_linux_64 apigeectl

    Mac OS

    mv apigeectl_1.10.4-xxxxxxx_mac_64 apigeectl

    Windows

    rename apigeectl_1.10.4-xxxxxxx_windows_64 apigeectl
  6. 切换到 apigeectl 目录:
    cd ./apigeectl

    此目录是 apigeectl 主目录。它是 apigeectl 可执行命令所在的位置。

  7. 以下说明将环境变量 $APIGEECTL_HOME 用于文件系统中安装 apigeectl 实用程序的目录。如果需要,请切换到 apigeectl 目录,然后使用以下命令定义变量:

    Linux

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    Mac OS

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    Windows

    set APIGEECTL_HOME=%CD%
    echo %APIGEECTL_HOME%
  8. 使用 version 命令验证 apigeectl 的版本:
    ./apigeectl version
    Version: 1.10.4
  9. 创建 hybrid-base-directory/hybrid-files 目录,然后移至该目录。hybrid-files 目录是替换文件、证书和服务账号等配置文件所在的位置。例如:

    Linux

    mkdir $APIGEECTL_HOME/../hybrid-files
    cd $APIGEECTL_HOME/../hybrid-files

    Mac OS

    mkdir $APIGEECTL_HOME/../hybrid-files
    cd $APIGEECTL_HOME/../hybrid-files

    Windows

    mkdir %APIGEECTL_HOME%/../hybrid-files
    cd %APIGEECTL_HOME%/../hybrid-files
  10. 使用以下命令验证 kubectl 是否设置为正确的上下文。当前上下文应设置为您要在其中升级 Apigee Hybrid 的集群。
    kubectl config get-contexts | grep \*
  11. hybrid-files 目录中:
    1. 将以下符号链接更新为 $APIGEECTL_HOME。这些链接使您可以从 hybrid-files 目录中运行新安装的 apigeectl 命令:
      ln -nfs $APIGEECTL_HOME/tools tools
      ln -nfs $APIGEECTL_HOME/config config
      ln -nfs $APIGEECTL_HOME/templates templates
      ln -nfs $APIGEECTL_HOME/plugins plugins
    2. 如需检查符号链接是否已正确创建,请执行以下命令,并确保链接路径指向正确的位置:
      ls -l | grep ^l
  12. 执行试运行初始化以检查是否存在错误:
    ${APIGEECTL_HOME}/apigeectl init -f OVERRIDES_FILE --dry-run=client

    其中,OVERRIDES_FILE 是替换文件的名称,例如 ./overrides/overrides.yaml

  13. 如果没有错误,请初始化 Hybrid 1.10.4:
    $APIGEECTL_HOME/apigeectl init -f OVERRIDES_FILE
  14. 检查初始化状态:
    $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE

    成功后,输出会显示 All containers ready.

    kubectl describe apigeeds -n apigee

    在输出中,查找 State: running

  15. 使用 --dry-run 标志,通过试运行 apply 命令检查是否存在错误:
    $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --dry-run=client
  16. 如果没有错误,则应用替换文件。选择生产环境或非生产环境的相关说明并按照这些说明操作,具体取决于您的安装。

    生产

    对于生产环境,请单独升级每个 Hybrid 组件,并检查升级后的组件的状态,再继续升级下一个组件。

    1. 确保您位于 hybrid-files 目录中。
    2. 应用替换文件以升级 Cassandra:
      $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --datastore
    3. 检查完成情况:
      $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE

      仅当 Pod 准备就绪后,才继续执行下一步。

    4. 应用替换文件以升级遥测组件和检查完成情况:
      $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --telemetry
      $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
    5. 启动 Redis 组件:
      $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --redis
    6. 应用替换文件以升级组织层级组件(MART、Watcher 和 Apigee Connect)并检查完成情况:
      $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --org
      $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
    7. 应用替换文件以升级您的环境。您有以下两种选择:
      • 对每个环境逐一应用:每次将替换文件应用于一个环境,然后检查完成情况。对每个环境重复执行此步骤:
        $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --env ENV_NAME
        $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE

        其中,ENV_NAME 是您要升级的环境的名称。

      • 同时应用于所有环境:将替换文件同时应用于所有环境,然后检查完成情况:
        $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --all-envs
        $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
    8. 应用替换文件以升级 virtualhosts 组件并检查完成情况:
      $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --settings virtualhosts
      $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE

    非生产

    在大多数非生产、演示或实验环境中,您可以将替换文件同时应用于所有组件。如果您的非生产环境大且复杂或非常类似于生产环境,则可能需要使用升级生产环境的说明。

    1. 确保您位于 hybrid-files 目录中。
    2. $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE
    3. 检查状态:
      $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
  17. 安装 1.10.3-hotfix.1。如需了解详情,请参阅 Apigee 版本说明中的 Hybrid 1.10.3-hotfix.1
  18. 安装 1.10.3-hotfix.2。如需了解详情,请参阅 Apigee 版本说明中的 Hybrid 1.10.3-hotfix.2
  19. 安装 1.10.3-hotfix.3。如需了解详情,请参阅 Apigee 版本说明中的 Hybrid 1.10.3-hotfix.3
  20. 安装 1.10.3-hotfix.4。如需了解详情,请参阅 Apigee 版本说明中的 Hybrid 1.10.3-hotfix.4

安装 1.10.4-hotfix.1

使用以下命令安装修补程序版本 1.10.4-hotfix.1。如需了解详情,请参阅 Apigee 版本说明中的 Hybrid 1.10.4-hotfix.1

  1. 打开替换文件。
  2. 首先,更新替换文件。根据您用于管理 Apigee Hybrid 的工具(Helmapigeectl),按照对应的说明进行操作:

    Helm

    1. istiod 节中,将映像标记的版本(如果存在)更改为版本 1.17.8。例如:
      istiod:
        image:
          url: "gcr.io/apigee-release/hybrid/apigee-asm-istiod"
          tag: "1.17.8-asm.20-distroless"
    2. apigeeIngressGateway 节中,将映像标记的版本(如果存在)更改为版本 1.17.8。例如:
      apigeeIngressGateway:
        image:
          url: "gcr.io/apigee-release/hybrid/apigee-asm-ingress"
          tag: "1.17.8-asm.20-distroless"
    3. 保存文件。

    apigeectl

    1. istiod 节中,将映像标记的版本(如果存在)更改为版本 1.17.8。例如:
      istiod:
        image:
          url: "gcr.io/apigee-release/hybrid/apigee-asm-istiod"
          tag: "1.17.8-asm.20-distroless"
    2. 根据您选择的 Apigee Hybrid 安装方式,您可能有一个 ingressGatewayingressGateways 节。找到替换文件中显示的相应节,并将映像标记的版本(如果存在)更改为版本 1.17.8。例如,如果您有一个 ingressGateway 节:
      ingressGateway:
        image:
          url: "gcr.io/apigee-release/hybrid/apigee-asm-ingress"
          tag: "1.17.8-asm.20-distroless"

      或者,如果您有一个 ingressGateways 节:

      ingressGateways:
        - name: gateway1
          image:
            url: "gcr.io/apigee-release/hybrid/apigee-asm-ingress"
            tag: "1.17.8-asm.20-distroless"
          ...
        - name: gateway2
          image:
            url: "gcr.io/apigee-release/hybrid/apigee-asm-ingress"
            tag: "1.17.8-asm.20-distroless"
          ... 
    3. 保存文件。
  3. 接下来,应用更改。根据您用于管理 Apigee Hybrid 的工具(Helmapigeectl),按照对应的说明进行操作:

    Helm

    1. 使用以下命令安装 apigee-ingress-manager 图表:
      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace "YOUR_APIGEE_NAMESPACE" \
        --atomic \
        -f OVERRIDES_FILE
      
    2. 使用以下命令安装 apigee-org 图表:
      helm upgrade ORG_NAME apigee-org/ \
          --install \
          --namespace "YOUR_APIGEE_NAMESPACE" \
          --atomic \
          -f OVERRIDES_FILE
    3. 验证 Pod 的状态:
      kubectl get pods -n YOUR_APIGEE_NAMESPACE

    apigeectl

    1. 执行以下命令以初始化 istiod 组件:
      $APIGEECTL_HOME/apigeectl init -f OVERRIDES_FILE
      $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
    2. 执行以下命令,将更改应用于 Apigee Ingress 组件。如果您有多个组织,请对每个组织重复此命令:
      $APIGEECTL_HOME/apigeectl apply --org -f OVERRIDES_FILE
      $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
    3. 验证 Pod 的状态:
      kubectl get pods -n YOUR_APIGEE_NAMESPACE

回滚升级

要回滚以前的升级,请按以下步骤操作:

  1. 清理混合运行时命名空间的已完成作业,其中 NAMESPACE 是替换文件中指定的命名空间(如果您指定了命名空间)。如果未指定,则默认命名空间为 apigee
    kubectl delete job -n NAMESPACE \
      $(kubectl get job -n NAMESPACE \
      -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  2. 清理 apigee-system 命名空间的已完成作业:
    kubectl delete job -n apigee-system \
      $(kubectl get job -n apigee-system \
      -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  3. 更改 APIGEECTL_HOME 变量,使其指向包含先前版本 apigeectl 的目录。例如:
    export APIGEECTL_HOME=PATH_TO_PREVIOUS_APIGEECTL_DIRECTORY
  4. 在要回滚到的安装的根目录中,运行 apigeectl apply,检查 pod 的状态,然后运行 apigeectl init。对于要回滚到的版本,请务必使用原始替换文件:
    1. 在 hybrid-files 目录中,运行 apigeectl apply
      $APIGEECTL_HOME/apigeectl apply -f ORIGINAL_OVERRIDES_FILE

      其中,ORIGINAL_OVERRIDES_FILE 是先前 Hybrid 安装版本的替换文件的相对路径和文件名,例如 ./overrides/overrides1.9.yaml

    2. 检查您的 Pod 的状态:
      kubectl -n NAMESPACE get pods

      其中,NAMESPACE 是您的 Apigee Hybrid 命名空间。

    3. 检查 apigeeds 的状态:
      kubectl describe apigeeds -n apigee

      输出应如下所示:

      Status:
        Cassandra Data Replication:
        Cassandra Pod Ips:
          10.8.2.204
        Cassandra Ready Replicas:  1
        Components:
          Cassandra:
            Last Successfully Released Version:
              Revision:  v1-f8aa9a82b9f69613
              Version:   v1
            Replicas:
              Available:  1
              Ready:      1
              Total:      1
              Updated:    1
            State:        running
        Scaling:
          In Progress:         false
          Operation:
          Requested Replicas:  0
        State:                 running
      

      仅当 apigeeds pod 正在运行时才继续执行下一步。

    4. 运行以下命令,记下升级后消息处理器的新副本数量值。如果这些值与您之前设置的值不匹配,请更改替换文件中的值,以与先前的配置匹配。
      apigeectl apply -f ORIGINAL_OVERRIDES_FILE --dry-run=client --print-yaml --env ENV_NAME 2>/dev/null |grep "runtime:" -A 25 -B 1| grep "autoScaler" -A 2

      输出应如下所示:

            autoScaler:
              minReplicas: 2
              maxReplicas: 10
    5. 运行 apigeectl init
      $APIGEECTL_HOME/apigeectl init -f ORIGINAL_OVERRIDES_FILE