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 管道的示例:

表 7.3. Jenkins 共享库管道示例

管道示例目标环境安全性

SaaS - API 密钥

3scale 托管

API 密钥

混合 - 开放

3scale 托管和 3scale 内部部署,APIcast 自我管理

Hybrid - OpenID Connect

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 目前不受支持。

  • OpenShift 文档 中所述,确保 OpenShift 路由器上已启用了通配符路由。

流程

  1. 登录您的 3scale 托管管理门户控制台。
  2. 生成对帐户管理 API 具有写入访问权限的新访问令牌。
  3. 保存生成的访问令牌以供以后使用。例如:

    export SAAS_ACCESS_TOKEN=123...456
  4. 保存 3scale 租户的名称,以备以后使用。这是管理门户 URL 中 -admin.3scale.net 前面的字符串。例如:

    export SAAS_TENANT=my_username
  5. 导航到管理门户中的 Audience > Accounts > Listing
  6. 单击 Developer
  7. 保存 开发人员帐户 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 目前不受支持。

  • OpenShift 文档 中所述,确保 OpenShift 路由器上已启用了通配符路由。

流程

  1. 登录您的 3scale 内部管理门户控制台。
  2. 生成对帐户管理 API 具有写入访问权限的新访问令牌。
  3. 保存生成的访问令牌以供以后使用。例如:

    export SAAS_ACCESS_TOKEN=123...456
  4. 保存 3scale 租户名称以供以后使用:

    export ONPREM_ADMIN_PORTAL_HOSTNAME="$(oc get route system-provider-admin -o jsonpath='{.spec.host}')"
  5. 定义通配符路由:

    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)。

  6. 将通配符路由添加到现有的 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
  7. 导航到管理门户中的 Audience > Accounts > Listing
  8. 单击 Developer
  9. 保存 开发人员帐户 ID。这是 /buyers/accounts/ 后 URL 的最后一部分:

    export ONPREM_DEVELOPER_ACCOUNT_ID=5

7.2.4. 为 OpenID Connect 部署红帽单点登录

如果您使用 混合 - OpenID Connect(OIDC)Semantic 版本示例 管道,请执行本节中的步骤以使用 3scale 部署红帽单点登录(RH-SSO)。这是 OIDC 身份验证所需要的,在两个样本中使用。

流程

  1. 按照 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
  2. 保存 RH-SSO 安装的主机名,以便稍后使用:

    export SSO_HOSTNAME="$(oc get route sso -o jsonpath='{.spec.host}')"
  3. 按照 3scale 开发人员门户文档中所述,为 3scale 配置 RH-SSO。
  4. 保存 realm 名称、客户端 ID 和客户端 secret 以供以后使用:

    export REALM=3scale
    
    export CLIENT_ID=3scale-admin
    
    export CLIENT_SECRET=123...456

7.2.5. 安装 3scale toolbox 并启用访问

本节论述了如何安装 toolbox、创建远程 3scale 实例,以及置备用于访问管理门户的 secret。

流程

  1. 如 3scale toolbox 中所述,在本地安装 3scale toolbox
  2. 运行适当的 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/"

  3. 运行以下命令来置备包含 3scale 管理门户和访问令牌的 secret:

    oc create secret generic 3scale-toolbox -n "$TOOLBOX_NAMESPACE" --from-file="$HOME/.3scalerc.yaml"

7.2.6. 部署 API 后端

本节介绍如何部署示例管道提供的示例 API 后端。在创建和部署自己的管道时,您可以根据需要替换您自己的 API 后端

流程

  1. 部署示例 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
  2. 保存 Beer Catalog API 主机名以供以后使用:

    export BEER_CATALOG_HOSTNAME="$(oc get route -n "$TOOLBOX_NAMESPACE" beer-catalog -o jsonpath='{.spec.host}')"
  3. 部署示例 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
  4. 保存 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 密钥 以外的所有示例管道。

流程

  1. 定义通配符路由:

    export APICAST_SELF_MANAGED_STAGING_WILDCARD_DOMAIN=saas-staging.$OPENSHIFT_ROUTER_SUFFIX
    
    export APICAST_SELF_MANAGED_PRODUCTION_WILDCARD_DOMAIN=saas-production.$OPENSHIFT_ROUTER_SUFFIX
  2. 在项目中部署 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.11
    
    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.11
    
    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 密钥 示例。

流程

  1. 使用提供的 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 -
  2. 按如下方式部署示例:

    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 命令复制带有自定义策略的服务时,您必须首先单独复制自定义策略。