升级到版本 1.2.0
按照以下步骤将 Apigee Hybrid 升级到 1.2.0 版:
第 1 步:升级 Kubernetes 并下载软件包版本
- 请按照以下步骤升级您的 Kubernetes 平台。如需帮助,请参阅该平台的相关文档。
平台 升级到版本 GKE 1.14.x Anthos 1.2 AKS 1.14.x 下载适用于您的操作系统的软件包版本:
Mac 64 位:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.2.0/apigeectl_mac_64.tar.gz
Linux 64 位
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.2.0/apigeectl_linux_64.tar.gz
Mac 32 位:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.2.0/apigeectl_mac_32.tar.gz
Linux 32 位
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.2.0/apigeectl_linux_32.tar.gz
第 2 步:重新配置安装目录
- 确定在 Apigee hybrid 最初安装 时创建的基本安装目录。基本目录是
$APIGEEGTL_HOME
目录所在的目录。在以下示例中,基本目录是/Users/myhome/hybrid
:echo $APIGEECTL_HOME /Users/myhome/hybrid/apigeectl
-
将下载的 gzip 文件内容提取到 Apigee Hybrid 基本目录中:
tar xvzf filename.tar.gz -C path-to-base-directory
- 使用
cd
命令转到基本目录。 -
默认情况下,tar 内容在其名称中扩展到包含版本和平台的目录。例如
./apigeectl_1.2.0-f7b96a8_linux_64
。 - 重命名当前的
apigeectl
目录。例如,如果当前版本为 1.1.1,请将apigeectl
目录重命名为apigeectl_1.1.1
。 -
将新解压缩的安装目录重命名为
apigeectl
。现在,环境$APIGEECTL_HOME
指向该环境。
第 3 步:更新替换文件
- 复制覆盖文件,并且务必保存旧文件,以备日后需要回滚时使用。在以下步骤中,您将对替换文件做出必要的更改,然后再将其应用于集群。
使用下述更改更新替换文件:
下面显示了您必须对替换文件进行的配置更改 摘要。摘要后面的表格中提供了完整的示例。如您所见,
envs[]
属性与先前版本相比发生了显著变化:- 属性
envs[].hostAlias
已被移除并替换为新属性virtualhosts.hostAliases[]
。 - 您必须添加新的必需配置属性
virtualhosts
。 - 您必须将
envs[].sslCertPath
和envs[].sslKeyPath
属性从envs
移动到virtualhosts
。 - 您必须添加
virtualhosts.routingRules
配置节。virtualhosts.routingRules
属性取代了之前的envs[].paths
属性。如果您的替换文件中包含envs[].paths
,则必须将其移除。如需详细了解虚拟主机配置,请参阅 配置虚拟主机。
下表说明了 1.1.1 替换文件和版本 1.2.0 文件之间的区别。该示例旨在突出显示您对 1.2.0 版所做的更改:
v1.1.x 配置 v1.2.0 配置 envs: - name: test1 hostAlias: "api.example.com" sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.pem serviceAccountPaths: synchronizer: ./sa/sync.json udca: ./sa/udca.json paths: uri: prefixes: - /orders - /items - name: test2 hostAlias: "api.example.com" sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.pem serviceAccountPaths: synchronizer: ./sa/sync.json udca: ./sa/udca.json paths: uri: prefixes: - /v0/hello - /httpbin
virtualhosts: - name: default hostAliases: ["api.example.com"] sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.pem routingRules: - paths: - /orders - /items env: test1 - paths: - /v0/hello - /httpbin env: test2 envs: - name: test1 serviceAccountPaths: synchronizer: ./sa/synchronizer.json udca: ./sa/udca.json - name: test2 serviceAccountPaths: synchronizer: ./sa/synchronizer.json udca: ./sa/udca.json
- 属性
第 4 步:将升级应用于集群
- 如果您在 1.1.1 版安装中启用了 Apigee Connect,则必须移除部署:
- 首先,列出 Apigee 部署:
kubectl -n namespace get ad
- 删除 Apigee Connect 部署:
kubectl -n namespace delete ad apigee-connect-name
- 首先,列出 Apigee 部署:
- 列出 pods:
kubectl get pods -n namespace
- 从集群中删除
apigee-cps-setup
pod。使用 pod 的全名(包含您的组织名称,如上一条命令返回)。例如:kubectl -n namespace delete pod apigee-cps-setup-org
- 删除同一命名空间中的
apigee-cps-create-user
pod:kubectl -n namespace delete pod apigee-cps-create-user
- 清理混合运行时命名空间的已完成作业,其中 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}')
- 为
istio-system
命名空间清理已完成作业:kubectl delete job -n istio-system \ $(kubectl get job -n istio-system -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
cd
到./hybrid-files
目录:- 为新版本初始化
apigeectl
:$APIGEECTL_HOME/apigeectl init -f overrides/overrides-file.yaml
- 检查确定初始化何时完成:
$APIGEECTL_HOME/apigeectl check-ready -f overrides/overrides-file.yaml
- 当
check-ready
返回“All containers is ready”时,您可以试用“dry run”安装。使用--dry-run=true
标志执行apply
命令。通过执行试运行,可以在对集群进行任何更改之前检查是否有任何错误。$APIGEECTL_HOME/apigeectl apply -f overrides/overrides-file.yaml --dry-run=true
- 如果没有错误,您可以将 Apigee 特定运行时组件应用到集群:
$APIGEECTL_HOME/apigeectl apply -f overrides/overrides-file.yaml
- 重新运行
check-ready
以确定升级何时完成。
回滚升级
要回滚以前的升级,请按以下步骤操作:
- 清理混合运行时命名空间的已完成作业,其中 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}')
- 为
istio-system
命名空间清理已完成作业:kubectl delete job -n istio-system \ $(kubectl get job -n istio-system -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
- 删除 Apigee Operators 部署。此操作对您的运行时流量没有任何影响:
kubectl -n apigee-system delete deployment apigee-controller-manager
- 更改
$APIGEECTL_HOME
变量,使其指向包含原始版本apigeectl
的目录。例如:export APIGEECTL_HOME=path-to-original-apigeectl-directory
- 在要回滚到的安装的根目录中,运行
apigeectl init
,然后运行apigeectl apply
。对于要回滚到的版本,请务必使用原始替换文件:$APIGEECTL_HOME
/apigeectl init -f overrides/original-overrides.yaml$APIGEECTL_HOME
/apigeectl apply -f overrides/original-overrides.yaml