将 Apigee Hybrid 升级到 1.10 版

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

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

升级到 1.10.5 版概览

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

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

前提条件

以下升级说明假定您已安装 Apigee Hybrid 1.9.x 版,并且希望将其升级到 1.10.5 版。如果您要从更低版本进行更新,请参阅将 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.5 运行时

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

    Linux

    Linux 64 位

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

    Mac OS

    Mac 64 位

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

    Windows

    Windows 64 位

    curl -LO ^
      https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.10.5/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.5-xxxxxxx_linux_64。使用以下命令将该目录重命名为 apigeectl

    Linux

    mv apigeectl_1.10.5-xxxxxxx_linux_64 apigeectl

    Mac OS

    mv apigeectl_1.10.5-xxxxxxx_mac_64 apigeectl

    Windows

    rename apigeectl_1.10.5-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.5
  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. overrides.yaml 文件进行以下更改,以启用 apigee-operator 图表或使用正确的标记 1.10.5-hotfix.1
      ao:
        image:
          url: "gcr.io/apigee-release/hybrid/apigee-operators"
          tag: "1.10.5-hotfix.1"
      
  13. 执行试运行初始化以检查是否存在错误:
    ${APIGEECTL_HOME}/apigeectl init -f OVERRIDES_FILE --dry-run=client

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

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

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

    kubectl describe apigeeds -n apigee

    在输出中,查找 State: running

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

    生产环境

    对于生产环境,请单独升级每个 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

回滚升级

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

  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