7.2. 部署示例 Jenkins CI/CD 管道
使用 3scale toolbox 的 API 生命周期自动化侧重于 API 生命周期的部署阶段,并可让您使用 CI/CD 管道来自动化 API 管理解决方案。本节介绍如何部署调用 3scale toolbox 的示例 Jenkins 管道:
7.2.1. Jenkins CI/CD 管道示例
以下示例在 Red Hat Integration 存储库中提供,作为如何为 API 生命周期自动化创建和部署 Jenkins 管道的示例:
管道示例 | 目标环境 | 安全性 |
---|---|---|
3scale 托管 | API 密钥 | |
3scale 托管和 3scale 内部部署,APIcast 自我管理 | 无 | |
3scale 托管和 3scale 内部部署,APIcast 自我管理 | OpenID Connect(OIDC) | |
3scale 在开发、测试和生产上托管,APIcast 自我管理 | API 密钥 | |
3scale 在开发、测试和生产上托管,APIcast 自我管理 | API 密钥、无、OIDC |
这些示例使用 3scale Jenkins 共享库调用 3scale toolbox 来演示关键 API 管理功能。执行本主题中的设置步骤后,您可以使用 红帽集成存储库中为各个示例用例 提供的 OpenShift 模板来安装管道。
示例管道和应用程序仅作为示例提供。红帽完全支持底层 API、CLI 和其他示例管道利用的接口。您对管道所做的任何修改都不受红帽直接支持。
7.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 API 管理支持的配置 页面。
- 如 OpenShift 文档 中所述,确保 OpenShift 路由器上已启用了通配符路由。
流程
- 登录您的 3scale 托管管理门户控制台。
- 生成对帐户管理 API 具有写入访问权限的新访问令牌。
保存生成的访问令牌以供以后使用。例如:
export SAAS_ACCESS_TOKEN=123...456
保存 3scale 租户的名称,以备以后使用。这是管理门户 URL 中
-admin.3scale.net
前面的字符串。例如:export SAAS_TENANT=my_username
- 导航到管理门户中的 Audience > Accounts > Listing。
- 单击 Developer。
保存 开发人员帐户 ID。这是
/buyers/accounts/
后 URL 的最后一部分。例如:export SAAS_DEVELOPER_ACCOUNT_ID=123...456
7.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
保存 3scale 租户名称以供以后使用:
export ONPREM_ADMIN_PORTAL_HOSTNAME="$(oc get route system-provider-admin -o jsonpath='{.spec.host}')"
定义通配符路由:
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
注意您必须将
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
- 导航到管理门户中的 Audience > Accounts > Listing。
- 单击 Developer。
保存 开发人员帐户 ID。这是
/buyers/accounts/
后 URL 的最后一部分:export ONPREM_DEVELOPER_ACCOUNT_ID=5
7.2.4. 为 OpenID Connect 部署红帽单点登录
如果您使用 混合 - OpenID Connect(OIDC)
或 Semantic 版本示例
管道,请执行本节中的步骤以使用 3scale 部署红帽单点登录(RH-SSO)。这是 OIDC 身份验证所需要的,在两个样本中使用。
流程
按照 RH-SSO 文档中所述,部署 RH-SSO 7.3。
以下示例命令提供了一个简短概述:
oc replace -n openshift --force -f https://raw.githubusercontent.com/jboss-container-images/redhat-sso-7-openshift-image/sso73-dev/templates/sso73-image-stream.json oc replace -n openshift --force -f https://raw.githubusercontent.com/jboss-container-images/redhat-sso-7-openshift-image/sso73-dev/templates/sso73-x509-postgresql-persistent.json oc -n openshift import-image redhat-sso73-openshift:1.0 oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default oc new-app --template=sso73-x509-postgresql-persistent --name=sso -p DB_USERNAME=sso -p SSO_ADMIN_USERNAME=admin -p DB_DATABASE=sso
保存 RH-SSO 安装的主机名,以便稍后使用:
export SSO_HOSTNAME="$(oc get route sso -o jsonpath='{.spec.host}')"
- 按照 3scale 开发人员门户文档中所述,为 3scale 配置 RH-SSO。
保存 realm 名称、客户端 ID 和客户端 secret 以供以后使用:
export REALM=3scale export CLIENT_ID=3scale-admin export CLIENT_SECRET=123...456
7.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 On-premises
3scale remote add 3scale-onprem "https://$ONPREM_ACCESS_TOKEN@$ONPREM_ADMIN_PORTAL_HOSTNAME/"
运行以下命令来置备包含 3scale 管理门户和访问令牌的 secret:
oc create secret generic 3scale-toolbox -n "$TOOLBOX_NAMESPACE" --from-file="$HOME/.3scalerc.yaml"
7.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
-
保存 Beer Catalog API 主机名以供以后使用:
export BEER_CATALOG_HOSTNAME="$(oc get route -n "$TOOLBOX_NAMESPACE" beer-catalog -o jsonpath='{.spec.host}')"
部署示例 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
-
保存 Event API 主机名供以后使用:
export EVENT_API_HOSTNAME="$(oc get route -n "$TOOLBOX_NAMESPACE" event-api -o jsonpath='{.spec.host}')"
7.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
在项目中部署 APIcast 自我管理实例:
oc create secret generic 3scale-tenant --from-literal=password=https://$SAAS_ACCESS_TOKEN@$SAAS_TENANT-admin.3scale.net oc create -f https://raw.githubusercontent.com/3scale/apicast/v3.5.0/openshift/apicast-template.yml oc new-app --template=3scale-gateway --name=apicast-staging -p CONFIGURATION_URL_SECRET=3scale-tenant -p CONFIGURATION_CACHE=0 -p RESPONSE_CODES=true -p LOG_LEVEL=info -p CONFIGURATION_LOADER=lazy -p APICAST_NAME=apicast-staging -p DEPLOYMENT_ENVIRONMENT=sandbox -p IMAGE_NAME=registry.redhat.io/3scale-amp2/apicast-gateway-rhel8:3scale2.12 oc new-app --template=3scale-gateway --name=apicast-production -p CONFIGURATION_URL_SECRET=3scale-tenant -p CONFIGURATION_CACHE=60 -p RESPONSE_CODES=true -p LOG_LEVEL=info -p CONFIGURATION_LOADER=boot -p APICAST_NAME=apicast-production -p DEPLOYMENT_ENVIRONMENT=production -p IMAGE_NAME=registry.redhat.io/3scale-amp2/apicast-gateway-rhel8:3scale2.12 oc scale dc/apicast-staging --replicas=1 oc scale dc/apicast-production --replicas=1 oc create route edge apicast-staging --service=apicast-staging --hostname="wildcard.$APICAST_SELF_MANAGED_STAGING_WILDCARD_DOMAIN" --insecure-policy=Allow --wildcard-policy=Subdomain oc create route edge apicast-production --service=apicast-production --hostname="wildcard.$APICAST_SELF_MANAGED_PRODUCTION_WILDCARD_DOMAIN" --insecure-policy=Allow --wildcard-policy=Subdomain
7.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 start-build saas-usecase-apikey
7.2.9. 3scale toolbox 的 API 生命周期自动化的限制
这个版本有以下限制:
- OpenShift 支持
- OpenShift 3.11 仅支持示例管道。OpenShift 4 目前不受支持。有关支持配置的更多信息,请参阅 Red Hat 3scale API 管理支持的配置 页面。
- 更新应用程序
-
您可以对应用程序使用
3scale application apply
toolbox 命令创建和更新应用程序。创建命令支持帐户、计划、服务和应用程序键。 - 更新命令不支持对帐户、计划或服务的更改。如果传递了更改,则会触发管道,不会显示任何错误,但不会更新这些字段。
-
您可以对应用程序使用
- 复制服务
-
当使用
3scale copy service
toolbox 命令复制带有自定义策略的服务时,您必须首先单独复制自定义策略。