5.2. 部署示例 Jenkins CI/CD 管道
使用 3scale toolbox 的 API 生命周期自动化侧重于 API 生命周期的部署阶段,并可让您使用 CI/CD 管道来自动化 API 管理解决方案。本节介绍如何部署调用 3scale toolbox 的示例 Jenkins 管道:
5.2.1. Jenkins CI/CD 管道示例
以下示例在 Red Hat Integration 存储库中提供,作为如何为 API 生命周期自动化创建和部署 Jenkins 管道的示例:
| 管道示例 | 目标环境 | 安全性 | 
|---|---|---|
| 3scale 托管 | API 密钥 | |
| 3scale 托管和 3scale 内部部署,APIcast 自我管理 | None | |
| 3scale 托管和 3scale 内部部署,APIcast 自我管理 | OpenID Connect(OIDC) | |
| 3scale 在开发、测试和生产上托管,APIcast 自我管理 | API 密钥 | |
| 3scale 在开发、测试和生产上托管,APIcast 自我管理 | API 密钥、无、OIDC | 
这些示例使用 3scale Jenkins 共享库调用 3scale toolbox 来演示关键 API 管理功能。执行本主题中的设置步骤后,您可以使用 红帽集成存储库中为各个示例用例 提供的 OpenShift 模板来安装管道。
示例管道和应用程序仅作为示例提供。红帽完全支持底层 API、CLI 和其他示例管道利用的接口。您对管道所做的任何修改都不受红帽直接支持。
5.2.2. 设置 3scale Hosted 环境
所有 Jenkins CI/CD 管道示例都需要设置 3scale Hosted 环境。
						SaaS - API 键、多环境和 Semantic 版本管道 仅使用 3scale Hosted。混合 - 开放 和混合 - OIDC 管道也使用 3scale 内部部署。另请参阅设置 3scale 内部环境。
					
先决条件
- 您必须有一个 Linux 工作站。
- 您必须有一个 3scale 托管环境。
- 您必须有一个 OpenShift 3.11 集群。OpenShift 4 目前不受支持。 - 有关支持的配置的更多信息,请参阅 Red Hat 3scale 支持的配置 页面。
 
- 如 OpenShift 文档 中所述,确保 OpenShift 路由器上已启用了通配符路由。
流程
- 登录您的 3scale 托管管理门户控制台。
- 生成对帐户管理 API 具有写入访问权限的新访问令牌。
- 保存生成的访问令牌以供以后使用。例如: - export SAAS_ACCESS_TOKEN=123...456 - export SAAS_ACCESS_TOKEN=123...456- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 保存 3scale 租户的名称,以备以后使用。这是管理门户 URL 中 - -admin.3scale.net前面的字符串。例如:- export SAAS_TENANT=my_username - export SAAS_TENANT=my_username- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 导航到管理门户中的 Audience > Accounts > Listing。
- 单击 Developer。
- 保存 开发人员帐户 ID。这是 - /buyers/accounts/后 URL 的最后一部分。例如:- export SAAS_DEVELOPER_ACCOUNT_ID=123...456 - export SAAS_DEVELOPER_ACCOUNT_ID=123...456- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
5.2.3. 设置 3scale 内部环境
					混合 - 开放和混合 - OIDC 示例 Jenkins CI/CD 管道只需要设置 3scale 内部环境。
				
						如果要使用这些 混合 示例管道,您必须设置 3scale 内部部署环境和 3scale 托管环境。另请参阅 设置 3scale 托管环境。
					
先决条件
- 您必须有一个 Linux 工作站。
- 您必须有一个 3scale 内部环境。有关使用 OpenShift 中的模板安装 3scale 内部的详情,请参阅 3scale 安装文档。
- 您必须有一个 OpenShift 3.11 集群。OpenShift 4 目前不受支持。 - 有关支持配置的更多信息,请参阅 Red Hat 3scale API 管理支持的配置 页面。
 
- 如 OpenShift 文档 中所述,确保 OpenShift 路由器上已启用了通配符路由。
流程
- 登录您的 3scale 内部管理门户控制台。
- 生成对帐户管理 API 具有写入访问权限的新访问令牌。
- 保存生成的访问令牌以供以后使用。例如: - export SAAS_ACCESS_TOKEN=123...456 - export SAAS_ACCESS_TOKEN=123...456- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 保存 3scale 租户名称以供以后使用: - export ONPREM_ADMIN_PORTAL_HOSTNAME="$(oc get route system-provider-admin -o jsonpath='{.spec.host}')"- export ONPREM_ADMIN_PORTAL_HOSTNAME="$(oc get route system-provider-admin -o jsonpath='{.spec.host}')"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 定义通配符路由: - export OPENSHIFT_ROUTER_SUFFIX=app.openshift.test # Replace me! export APICAST_ONPREM_STAGING_WILDCARD_DOMAIN=onprem-staging.$OPENSHIFT_ROUTER_SUFFIX export APICAST_ONPREM_PRODUCTION_WILDCARD_DOMAIN=onprem-production.$OPENSHIFT_ROUTER_SUFFIX - export OPENSHIFT_ROUTER_SUFFIX=app.openshift.test # Replace me! export APICAST_ONPREM_STAGING_WILDCARD_DOMAIN=onprem-staging.$OPENSHIFT_ROUTER_SUFFIX export APICAST_ONPREM_PRODUCTION_WILDCARD_DOMAIN=onprem-production.$OPENSHIFT_ROUTER_SUFFIX- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 您必须将 - OPENSHIFT_ROUTER_SUFFIX的值设置为 OpenShift 路由器的后缀(如- app.openshift.test)。
- 将通配符路由添加到现有的 3scale 内部实例中: - oc create route edge apicast-wildcard-staging --service=apicast-staging --hostname="wildcard.$APICAST_ONPREM_STAGING_WILDCARD_DOMAIN" --insecure-policy=Allow --wildcard-policy=Subdomain oc create route edge apicast-wildcard-production --service=apicast-production --hostname="wildcard.$APICAST_ONPREM_PRODUCTION_WILDCARD_DOMAIN" --insecure-policy=Allow --wildcard-policy=Subdomain - oc create route edge apicast-wildcard-staging --service=apicast-staging --hostname="wildcard.$APICAST_ONPREM_STAGING_WILDCARD_DOMAIN" --insecure-policy=Allow --wildcard-policy=Subdomain oc create route edge apicast-wildcard-production --service=apicast-production --hostname="wildcard.$APICAST_ONPREM_PRODUCTION_WILDCARD_DOMAIN" --insecure-policy=Allow --wildcard-policy=Subdomain- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 导航到管理门户中的 Audience > Accounts > Listing。
- 单击 Developer。
- 保存 开发人员帐户 ID。这是 - /buyers/accounts/后 URL 的最后一部分:- export ONPREM_DEVELOPER_ACCOUNT_ID=5 - export ONPREM_DEVELOPER_ACCOUNT_ID=5- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
5.2.4. 为 OpenID Connect 部署红帽单点登录
					如果您使用 混合 - OpenID Connect(OIDC) 或 Semantic 版本示例 管道,请执行本节中的步骤以使用 3scale 部署红帽单点登录(RH-SSO)。这是 OIDC 身份验证所需要的,在两个样本中使用。
				
流程
- 按照 RH-SSO 文档中所述,部署 RH-SSO 7.3。 - 以下示例命令提供了一个简短概述: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 保存 RH-SSO 安装的主机名,以便稍后使用: - export SSO_HOSTNAME="$(oc get route sso -o jsonpath='{.spec.host}')"- export SSO_HOSTNAME="$(oc get route sso -o jsonpath='{.spec.host}')"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 按照 3scale 开发人员门户文档中所述,为 3scale 配置 RH-SSO。
- 保存 realm 名称、客户端 ID 和客户端 secret 以供以后使用: - export REALM=3scale export CLIENT_ID=3scale-admin export CLIENT_SECRET=123...456 - export REALM=3scale export CLIENT_ID=3scale-admin export CLIENT_SECRET=123...456- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
5.2.5. 安装 3scale toolbox 并启用访问
本节论述了如何安装 toolbox、创建远程 3scale 实例,以及置备用于访问管理门户的 secret。
流程
- 如 3scale toolbox 中所述,在本地安装 3scale toolbox。
- 运行适当的 toolbox 命令创建 3scale 远程实例: - 3scale 托管 - 3scale remote add 3scale-saas "https://$SAAS_ACCESS_TOKEN@$SAAS_TENANT-admin.3scale.net/" - 3scale remote add 3scale-saas "https://$SAAS_ACCESS_TOKEN@$SAAS_TENANT-admin.3scale.net/"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 3scale On-premises - 3scale remote add 3scale-onprem "https://$ONPREM_ACCESS_TOKEN@$ONPREM_ADMIN_PORTAL_HOSTNAME/" - 3scale remote add 3scale-onprem "https://$ONPREM_ACCESS_TOKEN@$ONPREM_ADMIN_PORTAL_HOSTNAME/"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来置备包含 3scale 管理门户和访问令牌的 secret: - oc create secret generic 3scale-toolbox -n "$TOOLBOX_NAMESPACE" --from-file="$HOME/.3scalerc.yaml" - oc create secret generic 3scale-toolbox -n "$TOOLBOX_NAMESPACE" --from-file="$HOME/.3scalerc.yaml"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
5.2.6. 部署 API 后端
本节介绍如何部署示例管道提供的示例 API 后端。在创建和部署自己的管道时,您可以根据需要替换您自己的 API 后端
流程
- 部署示例 Beer Catalog API 后端,以便与以下示例搭配使用: - 
									SaaS - API 密钥
- 
									混合 - 开放
- 混合 - OIDC- oc new-app -n "$TOOLBOX_NAMESPACE" -i openshift/redhat-openjdk18-openshift:1.4 https://github.com/microcks/api-lifecycle.git --context-dir=/beer-catalog-demo/api-implementation --name=beer-catalog oc expose -n "$TOOLBOX_NAMESPACE" svc/beer-catalog - oc new-app -n "$TOOLBOX_NAMESPACE" -i openshift/redhat-openjdk18-openshift:1.4 https://github.com/microcks/api-lifecycle.git --context-dir=/beer-catalog-demo/api-implementation --name=beer-catalog oc expose -n "$TOOLBOX_NAMESPACE" svc/beer-catalog- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 
									
- 保存 Beer Catalog API 主机名以供以后使用: - export BEER_CATALOG_HOSTNAME="$(oc get route -n "$TOOLBOX_NAMESPACE" beer-catalog -o jsonpath='{.spec.host}')"- export BEER_CATALOG_HOSTNAME="$(oc get route -n "$TOOLBOX_NAMESPACE" beer-catalog -o jsonpath='{.spec.host}')"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 部署示例 Red Hat Event API 后端,以便与以下示例搭配使用: - 
									多环境
- 语义版本- oc new-app -n "$TOOLBOX_NAMESPACE" -i openshift/nodejs:10 'https://github.com/nmasse-itix/rhte-api.git#085b015' --name=event-api oc expose -n "$TOOLBOX_NAMESPACE" svc/event-api - oc new-app -n "$TOOLBOX_NAMESPACE" -i openshift/nodejs:10 'https://github.com/nmasse-itix/rhte-api.git#085b015' --name=event-api oc expose -n "$TOOLBOX_NAMESPACE" svc/event-api- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 
									
- 保存 Event API 主机名供以后使用: - export EVENT_API_HOSTNAME="$(oc get route -n "$TOOLBOX_NAMESPACE" event-api -o jsonpath='{.spec.host}')"- export EVENT_API_HOSTNAME="$(oc get route -n "$TOOLBOX_NAMESPACE" event-api -o jsonpath='{.spec.host}')"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
5.2.7. 部署自我管理的 APIcast 实例
					本节用于 3scale 托管环境中的 APIcast 自我管理实例。它应用到除 SaaS - API 密钥 以外的所有示例管道。
				
流程
- 定义通配符路由: - export APICAST_SELF_MANAGED_STAGING_WILDCARD_DOMAIN=saas-staging.$OPENSHIFT_ROUTER_SUFFIX export APICAST_SELF_MANAGED_PRODUCTION_WILDCARD_DOMAIN=saas-production.$OPENSHIFT_ROUTER_SUFFIX - export APICAST_SELF_MANAGED_STAGING_WILDCARD_DOMAIN=saas-staging.$OPENSHIFT_ROUTER_SUFFIX export APICAST_SELF_MANAGED_PRODUCTION_WILDCARD_DOMAIN=saas-production.$OPENSHIFT_ROUTER_SUFFIX- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 在项目中部署 APIcast 自我管理实例: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
5.2.8. 安装和部署示例管道
					设置所需的环境后,您可以使用 红帽集成存储库中为各个示例用例提供的 OpenShift 模板来安装和部署示例 管道。例如,本节仅显示 SaaS - API 密钥 示例。
				
流程
- 使用提供的 OpenShift 模板安装 Jenkins 管道: - oc process -f saas-usecase-apikey/setup.yaml \ -p DEVELOPER_ACCOUNT_ID="$SAAS_DEVELOPER_ACCOUNT_ID" \ -p PRIVATE_BASE_URL="http://$BEER_CATALOG_HOSTNAME" \ -p NAMESPACE="$TOOLBOX_NAMESPACE" |oc create -f -- oc process -f saas-usecase-apikey/setup.yaml \ -p DEVELOPER_ACCOUNT_ID="$SAAS_DEVELOPER_ACCOUNT_ID" \ -p PRIVATE_BASE_URL="http://$BEER_CATALOG_HOSTNAME" \ -p NAMESPACE="$TOOLBOX_NAMESPACE" |oc create -f -- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 按如下方式部署示例: - oc start-build saas-usecase-apikey - oc start-build saas-usecase-apikey- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
5.2.9. 3scale toolbox 的 API 生命周期自动化的限制
这个版本有以下限制:
- OpenShift 支持
- OpenShift 3.11 仅支持示例管道。OpenShift 4 目前不受支持。有关支持的配置的更多信息,请参阅 Red Hat 3scale 支持的配置 页面。
- 更新应用程序
- 
										您可以对应用程序使用 3scale application applytoolbox 命令创建和更新应用程序。创建命令支持帐户、计划、服务和应用程序键。
- 更新命令不支持对帐户、计划或服务的更改。如果传递了更改,则会触发管道,不会显示任何错误,但不会更新这些字段。
 
- 
										您可以对应用程序使用 
- 复制服务
- 
								当使用 3scale copy servicetoolbox 命令复制带有自定义策略的服务时,您必须首先单独复制自定义策略。