此过程包括从 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 的过程:
前提条件
以下升级说明假定您已安装 Apigee Hybrid 1.9.x 版,并且希望将其升级到 1.10.5 版。如果您要从更低版本进行更新,请参阅将 Apigee Hybrid 升级到 1.9 版的说明。
准备升级到 1.10 版
备份 Hybrid 安装(推荐)
- 这些说明将环境变量 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%
- 创建 1.9 版
$APIGEECTL_HOME/
目录的备份副本。例如:tar -czvf $APIGEECTL_HOME/../apigeectl-v1.9-backup.tar.gz $APIGEECTL_HOME
- 按照 Cassandra 备份和恢复中的说明备份 Cassandra 数据库。
升级 Kubernetes 版本
检查您的 Kubernetes 平台版本,并根据需要将 Kubernetes 平台升级到 Hybrid 1.9 和 Hybrid 1.10 均支持的版本。如需帮助,请参阅该平台的相关文档。
安装 Hybrid 1.10.5 运行时
- 确保您位于 Hybrid 基本目录中(
apigeectl
可执行文件所在目录的父级目录):cd $APIGEECTL_HOME/..
-
使用以下命令下载适用于您的操作系统的软件包版本。请务必在下表中选择您的平台:
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
- 将当前
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
-
将下载的 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 ./
-
默认情况下,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
-
切换到
apigeectl
目录:cd ./apigeectl
此目录是
apigeectl
主目录。它是apigeectl
可执行命令所在的位置。 - 以下说明将环境变量
$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%
- 使用
version
命令验证apigeectl
的版本:./apigeectl version
Version: 1.10.5
- 创建
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
- 使用以下命令验证
kubectl
是否设置为正确的上下文。当前上下文应设置为您要在其中升级 Apigee Hybrid 的集群。kubectl config get-contexts | grep \*
- 在
hybrid-files
目录中:-
将以下符号链接更新为
$APIGEECTL_HOME
。这些链接使您可以从hybrid-files
目录中运行新安装的apigeectl
命令:ln -nfs
$APIGEECTL_HOME
/tools toolsln -nfs
$APIGEECTL_HOME
/config configln -nfs
$APIGEECTL_HOME
/templates templatesln -nfs
$APIGEECTL_HOME
/plugins plugins - 要检查符号链接是否正确创建,请执行以下命令,并确保链接路径指向正确的位置:
ls -l | grep ^l
-
将以下符号链接更新为
- 对 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"
- 执行试运行初始化以检查是否存在错误:
${APIGEECTL_HOME}/apigeectl init -f OVERRIDES_FILE --dry-run=client
其中,OVERRIDES_FILE 是替换文件的名称,例如
./overrides/overrides.yaml
。 - 如果没有错误,请初始化 Hybrid 1.10.5:
$APIGEECTL_HOME/apigeectl init -f OVERRIDES_FILE
- 检查初始化状态:
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
成功后,输出会显示
All containers ready.
:kubectl describe apigeeds -n apigee
在输出中,查找
State: running
。 - 使用
--dry-run
标志,通过试运行apply
命令检查是否存在错误:$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --dry-run=client
- 如果没有错误,则应用替换文件。选择生产环境或非生产环境的相关说明并按照这些说明操作,具体取决于您的安装。
生产
对于生产环境,请单独升级每个 Hybrid 组件,并检查升级后的组件的状态,再继续升级下一个组件。
- 确保您位于
hybrid-files
目录中。 - 应用替换文件以升级 Cassandra:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --datastore
- 检查完成情况:
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
仅当 Pod 准备就绪后,才继续执行下一步。
- 应用替换文件以升级遥测组件和检查完成情况:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --telemetry
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
- 启动 Redis 组件:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --redis
- 应用替换文件以升级组织层级组件(MART、Watcher 和 Apigee Connect)并检查完成情况:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --org
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
- 应用替换文件以升级您的环境。您有以下两种选择:
- 对每个环境逐一应用:每次将替换文件应用于一个环境,然后检查完成情况。对每个环境重复执行此步骤:
$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
- 对每个环境逐一应用:每次将替换文件应用于一个环境,然后检查完成情况。对每个环境重复执行此步骤:
- 应用替换文件以升级
virtualhosts
组件并检查完成情况:$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --settings virtualhosts
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
非生产
在大多数非生产、演示或实验环境中,您可以将替换文件同时应用于所有组件。如果您的非生产环境大且复杂或非常类似于生产环境,则可能需要使用升级生产环境的说明。
- 确保您位于
hybrid-files
目录中。 $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE
- 检查状态:
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
- 确保您位于
回滚升级
要回滚以前的升级,请按以下步骤操作:
- 清理混合运行时命名空间的已完成作业,其中 NAMESPACE 是替换文件中指定的命名空间(如果您指定了命名空间)。如果没有,则默认命名空间为
apigee
:kubectl delete job -n NAMESPACE \ $(kubectl get job -n NAMESPACE \ -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
- 为
apigee-system
命名空间清理已完成作业:kubectl delete job -n apigee-system \ $(kubectl get job -n apigee-system \ -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
- 更改
APIGEECTL_HOME
变量,使其指向包含先前版本apigeectl
的目录。例如:export APIGEECTL_HOME=PATH_TO_PREVIOUS_APIGEECTL_DIRECTORY
- 在要回滚到的安装的根目录中,运行
apigeectl apply
,检查 pod 的状态,然后运行apigeectl init
。对于要回滚到的版本,请务必使用原始替换文件:- 在 hybrid-files 目录中,运行
apigeectl apply
:$APIGEECTL_HOME
/apigeectl apply -f ORIGINAL_OVERRIDES_FILE其中,ORIGINAL_OVERRIDES_FILE 是先前 Hybrid 安装版本的替换文件的相对路径和文件名,例如
./overrides/overrides1.9.yaml
。 - 检查您的 Pod 的状态:
kubectl -n NAMESPACE get pods
其中,NAMESPACE 是您的 Apigee Hybrid 命名空间。
- 检查
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 正在运行时才继续执行下一步。 - 运行以下命令,记下升级后消息处理器的新副本计数值。如果这些值与您之前设置的值不匹配,请更改替换文件中的值,以与先前的配置匹配。
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
- 运行
apigeectl init
:$APIGEECTL_HOME
/apigeectl init -f ORIGINAL_OVERRIDES_FILE
- 在 hybrid-files 目录中,运行