2.9. 从 WildcardRouter 迁移到 Zync 路由管理
在 3scale 2.6 中,WildcardRouter 组件和通配符 OpenShift 路由已被删除,现在作为由 Zync 子系统管理的单个 OpenShift 路由创建。此流程详细介绍了将路由管理从 WildcardRouter 迁移到 Zync。
此时,所有 3scale 镜像都已升级到 3scale 2.6。创建和删除与 3scale 服务和租户对应的 OpenShift 路由由 Zync 子系统自动管理。此外,通过添加新的 OpenShift 元素(在上一节中完成)提供了需要这样做的所有新 Zync 基础架构。
要将 OpenShift 路由管理从 WildcardRouter 迁移到 Zync,必须执行与 OpenShift 路由和通配符路由相关的旧 3scale 租户和服务,然后必须执行 Zync 的现有服务和租户强制重新评估。这使得 Zync 将创建与当前具有等效的路由。
修改公共基本 URL 时,会在 system-app
中触发事件,并通过存储在 system-redis
中的作业队列通知 system-sidekiq
。然后,作业会在后台处理,并发送到 zync,它会检查数据是否已或没有存在于 zync-db
中。如果检测到更改,它将通过在 zync-que
中处理的作业创建新路由。
在执行任何操作前,如果您手动将 SSL 证书安装到某些路由中,则必须复制分配给路由的证书,并注意每个路由被分配到的证书。您需要将它们安装到由 Zync 创建的新等效路由中,以便保留证书功能。
- 默认情况下,通过 hosted 选项迁移您的服务。
- 公共基本 URL 将自动填充,路由由 Zync 创建。
- 只有在使用选项 self_managed 配置外部 APIcast 网关时才需要步骤 1。
- 如果您选择了 3scale_managed 选项,则路由由 Zync 自动管理。
步骤
假设 Zync 不管理外部网关的路由,您可以按照其中一个建议的替代选择来修改由 Zync 管理的每个服务的部署选项:
在 3scale 中:
- 进入 Integration 页面,点 edit integration settings。
- 选择正确的部署选项,并在有时保存您的更改。
使用 API:
使用带有访问令牌 (
ACCESS_TOKEN
) 和租户端点 (TENANT_URL
) 的服务标识符 (ID
) 更新服务。curl -XPUT "${TENANT_URL}/admin/api/services/${ID}.json" -d deployment_option=self_managed -d access_token="${ACCESS_TOKEN}"
$ curl -XPUT "${TENANT_URL}/admin/api/services/${ID}.json" -d deployment_option=self_managed -d access_token="${ACCESS_TOKEN}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,如果您使用 APIcast 托管,可以使用下面的命令:
curl -XPUT "${TENANT_URL}/admin/api/services/${ID}.json" -d deployment_option=hosted -d access_token="${ACCESS_TOKEN}"
$ curl -XPUT "${TENANT_URL}/admin/api/services/${ID}.json" -d deployment_option=hosted -d access_token="${ACCESS_TOKEN}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于每个租户的每个服务,通过 3scale 或 API 修改
deployment_option
字段:这些是您可以将
deployment_option
设置为self_managed
的情况:- APIcast 链接到 OpenShift 中的自定义路由。
- APIcast 在 OpenShift 之外托管。
-
APICAST_PATH_ROUTING
设置为true
。
-
在其他情况下,将
deployment_option
设置为托管的
。
在可能的现有路由中,3scale 在 2.5 中自动创建一些默认路由。首先删除它们:
oc delete route system-master oc delete route system-provider-admin oc delete route system-developer oc delete route api-apicast-production oc delete route api-apicast-staging
$ oc delete route system-master $ oc delete route system-provider-admin $ oc delete route system-developer $ oc delete route api-apicast-production $ oc delete route api-apicast-staging
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果使用
WILDCARD_POLICY=Subdomain
部署 3scale 2.5,则必须使用以下命令删除通配符路由:oc delete route apicast-wildcard-router
$ oc delete route apicast-wildcard-router
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
否则,如果您在没有
WILDCARD_POLICY=Subdomain
的情况下部署 3scale 2.5,您必须删除为 3scale 租户和服务手动创建的路由,以避免重复 Zync 将创建的路由。
此时,所有与服务和租户相关的路由都必须已被删除。现在,您将由 Zync 创建对等路由:
使用 Zync 强制重新同步所有 3scale 服务和租户 OpenShift 路由:
SYSTEM_SIDEKIQ_POD=$(oc get pods | grep sidekiq | awk '{print $1}')
$ SYSTEM_SIDEKIQ_POD=$(oc get pods | grep sidekiq | awk '{print $1}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 SYSTEM_SIDEKIQ_POD 环境变量结果是否不为空:
echo ${SYSTEM_SIDEKIQ_POD}
$ echo ${SYSTEM_SIDEKIQ_POD}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 最后,执行重新同步:
oc exec -it ${SYSTEM_SIDEKIQ_POD} -- bash -c 'bundle exec rake zync:resync:domains'
$ oc exec -it ${SYSTEM_SIDEKIQ_POD} -- bash -c 'bundle exec rake zync:resync:domains'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您将看到这种样式的输出,其中包含有关通知到系统的信息:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在强制 Zync 重新评估后,为所有现有租户和服务创建新路由。根据服务和租户的数量,路由创建可能需要几分钟时间。
在进程结束时,您将看到创建:
一个主管理门户路由。
每个 3scale 租户都会创建两个路由:
- 租户的管理门户路由。
租户的开发人员门户路由。
每个 3scale 服务都创建两个路由:
- 与服务对应的 APIcast 暂存路由。
- APIcast 生产路由与服务对应。
验证是否为所有现有服务和租户创建了上述所有预期的路由。您可以通过运行以下命令查看所有路由:
oc get routes
$ oc get routes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如上一命令的输出中显示的 host/port 字段必须是路由的 URL。
-
如果您部署了 3scale 2.5,将 WILDCARD_POLICY 设置为
Subdomain
,则所有新路由都必须具有与旧 OpenShift 通配符Domain 相同的基本 WildcardDomain。 - 否则,如果您在没有 WILDCARD_POLICY=Subdomain 的情况下部署 3scale 2.5,新路由必须具有与您删除的旧路由相同的主机,包括在 2.5 发行版中 3scale 自动创建的那些。
-
如果您部署了 3scale 2.5,将 WILDCARD_POLICY 设置为
- 最后,如果您为旧通配符路由使用自定义 SSL 证书,或者旧的手动创建的路由,请将它们安装到 Zync 创建的新路由中。您可以通过 OpenShift Web 面板编辑路由,并将证书/添加到其中。
验证在迁移仍然可使用新路由解析前存在的服务和租户。要做到这一点执行以下操作:
- 解析与迁移前已存在的 3scale 服务关联的现有 APIcast 生产 URL 的路由。
- 解析与迁移前已存在的 3scale 服务关联的现有 APIcast staging URL 的路由。
- 解析在迁移前已存在的租户的路由。
验证新的 Zync 功能是否正常工作时,请确认在创建新租户和服务时是否生成了新的路由。要做到这一点执行以下操作:
- 从 'master' 面板创建一个新租户,并验证与它关联的新路由后出现在 OpenShift 中。
- 在其中一个现有租户中创建一个新服务,并验证与它关联的新路由出现在 OpenShift 中后。
删除 apicast-wildcard-router 服务:
oc delete service apicast-wildcard-router
$ oc delete service apicast-wildcard-router
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除已弃用的 WildcardRouter 子系统:
oc delete ImageStream amp-wildcard-router oc delete DeploymentConfig apicast-wildcard-router
$ oc delete ImageStream amp-wildcard-router $ oc delete DeploymentConfig apicast-wildcard-router
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 执行完所有列出的步骤后,3scale 从 2.5 升级到 2.6 现已完成。