3.2. サンプル Jenkins CI/CD パイプラインのデプロイ
3scale toolbox による API ライフサイクルの自動化は、API ライフサイクルのデプロイメントステージが対象で、CI/CD パイプラインを使用して API 管理ソリューションを自動化することができます。本トピックでは、3scale toolbox を呼び出すサンプル Jenkins パイプラインをデプロイする方法を説明します。
3.2.1. サンプル Jenkins CI/CD パイプライン
API ライフサイクルの自動化用に Jenkins パイプラインを作成してデプロイする方法の例として、以下のサンプルが Red Hat Integration リポジトリーで提供されています。
表3.3 サンプル Jenkins 共有ライブラリーパイプライン
| サンプルパイプライン | ターゲット環境 | セキュリティー |
|---|---|---|
| ホスト型 3scale | API キー | |
| Self-managed APIcast を使用するホスト型 3scale およびオンプレミス型 3scale | なし | |
| Self-managed APIcast を使用するホスト型 3scale およびオンプレミス型 3scale | OpenID Connect (OIDC) | |
| Self-managed APIcast を使用する、開発、テスト、および実稼働環境のホスト型 3scale | API キー | |
| Self-managed APIcast を使用する、開発、テスト、および実稼働環境のホスト型 3scale | API キー、なし、OIDC |
これらのサンプルは、3scale toolbox を呼び出す 3scale Jenkins 共有ライブラリーを使用して、主要な API 管理機能を実証します。本トピックの設定手順を実施したら、各 Red Hat Integration リポジトリーのユースケース例 で提供される OpenShift テンプレートを使用してパイプラインをインストールすることができます。
サンプルのパイプラインおよびアプリケーションは、例としてのみ提供されています。ベースとなる API、CLI、およびサンプルパイプラインが活用するその他のインターフェイスは、Red Hat により完全にサポートされています。パイプラインに対して行った変更については、Red Hat による直接のサポートはありません。
3.2.2. ホスト型 3scale 環境の設定
ホスト型 3scale 環境の設定は、すべてのサンプル Jenkins CI/CD パイプラインで必要です。
SaaS - API key、Multi-environment、および Semantic versioning のサンプルパイプライン は、ホスト型 3scale しか使用しません。Hybrid - open および Hybrid - OIDC のパイプラインは、オンプレミス型 3scale も使用します。「オンプレミス型 3scale 環境の設定」も併せて参照してください。
前提条件
- Linux ワークステーションがある。
- ホスト型 3scale 環境が用意されている。
OpenShift 3.11 クラスターがある。現在、OpenShift 4 はサポートされていません。
- サポート対象設定の情報については、Red Hat 3scale API Management のサポート対象設定 のアーティクルを参照してください。
- OpenShift のドキュメント で説明されているように、OpenShift ルーターでワイルドカードルートを有効にしておく。
手順
- ホスト型 3scale 管理ポータルコンソールにログインします。
- Account Management API への書き込みアクセス権限を設定して、新しいアクセストークンを生成します。
後で使用できるように、生成されたアクセストークンを保存します。以下に例を示します。
export SAAS_ACCESS_TOKEN=123...456
後で使用できるように、3scale テナントの名前を保存します。これは、管理ポータル URL の
-admin.3scale.netの前にある文字列です。以下に例を示します。export SAAS_TENANT=my_username
- 管理ポータルで Audience > Accounts > Listing の順に移動します。
- Developer をクリックします。
Developer Account ID を保存します。これは、
/buyers/accounts/に続く URL の最後の部分です。以下に例を示します。export SAAS_DEVELOPER_ACCOUNT_ID=123...456
3.2.3. オンプレミス型 3scale 環境の設定
オンプレミス型 3scale 環境の設定は、Hybrid - open と Hybrid - OIDC のサンプル Jenkins CI/CD パイプラインでのみ必要です。
これらの Hybrid サンプルパイプラインを使用する場合は、オンプレミス型 3scale 環境とホスト型 3scale 環境を設定する必要があります。「ホスト型 3scale 環境の設定」も併せて参照してください。
前提条件
- Linux ワークステーションがある。
- オンプレミス型 3scale 環境が必要です。テンプレートを使用して OpenShift 上にオンプレミス型 3scale をインストールする方法については、3scale のインストールに関するドキュメント を参照してください。
OpenShift 3.11 クラスターが必要です。現在、OpenShift 4 はサポートされていません。
- サポート対象設定の情報については、Red Hat 3scale API Management のサポート対象設定 のアーティクルを参照してください。
- OpenShift のドキュメント で説明されているように、OpenShift ルーターでワイルドカードルートを有効にしておく。
手順
- オンプレミス型 3scale 管理ポータルコンソールにログインします。
- Account Management 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 をクリックします。
Developer Account ID を保存します。これは、
/buyers/accounts/に続く URL の最後の部分です。export ONPREM_DEVELOPER_ACCOUNT_ID=5
3.2.4. OpenID Connect 向け Red Hat Single Sign-On のデプロイ
Hybrid - OpenID Connect (OIDC) または Semantic versioning のサンプルパイプラインを使用している場合、本セクションの手順を実施して 3scale で Red Hat Single Sign-On (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 を設定します。
後で使用できるように、レルム名、クライアント ID、およびクライアントシークレットを保存します。
export REALM=3scale export CLIENT_ID=3scale-admin export CLIENT_SECRET=123...456
3.2.5. 3scale toolbox のインストールおよびアクセスの有効化
本セクションでは、toolbox のインストール、リモート 3scale インスタンスの作成、および管理ポータルへのアクセスに使用されるシークレットのプロビジョニングを行う方法について説明します。
手順
- 2章3scale toolbox の使用 で説明されているように、3scale ツールボックスをローカルにインストールします。
適切な toolbox コマンドを実行して、3scale のリモートインスタンスを作成します。
ホスト型 3scale
3scale remote add 3scale-saas "https://$SAAS_ACCESS_TOKEN@$SAAS_TENANT-admin.3scale.net/"
オンプレミス型 3scale
3scale remote add 3scale-onprem "https://$ONPREM_ACCESS_TOKEN@$ONPREM_ADMIN_PORTAL_HOSTNAME/"
以下の OpenShift コマンドを実行して、3scale 管理ポータルとアクセストークンが含まれるシークレットをプロビジョニングします。
oc create secret generic 3scale-toolbox -n "$TOOLBOX_NAMESPACE" --from-file="$HOME/.3scalerc.yaml"
3.2.6. API バックエンドのデプロイ
本セクションでは、サンプルパイプラインで提供される API バックエンドの例をデプロイする方法について説明します。独自のパイプラインを作成してデプロイする場合、必要に応じて独自の API バックエンドを代わりに使用できます。
手順
以下のサンプルで使用するために、Beer Catalog API バックエンドの例をデプロイします。
-
SaaS - API key -
Hybrid - open Hybrid - OIDCoc 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 バックエンドの例をデプロイします。
-
Multi-environment Semantic versioningoc 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}')"
3.2.7. Self-managed APIcast インスタンスのデプロイ
本セクションは、ホスト型 3scale 環境で Self-managed APIcast インスタンスで使用するためのものです。本セクションの説明は、SaaS - API key 以外のすべてのサンプルパイプラインに該当します。
手順
ワイルドカードルートを定義します。
export APICAST_SELF_MANAGED_STAGING_WILDCARD_DOMAIN=saas-staging.$OPENSHIFT_ROUTER_SUFFIX export APICAST_SELF_MANAGED_PRODUCTION_WILDCARD_DOMAIN=saas-production.$OPENSHIFT_ROUTER_SUFFIX
Self-managed 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-rhel7:3scale2.7 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-rhel7:3scale2.7 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
3.2.8. サンプルパイプラインのインストールとデプロイ
必要な環境を設定したら、各 Red Hat Integration リポジトリーのサンプルユースケース 用に提供される OpenShift テンプレートを使用して、サンプルパイプラインをインストールしてデプロイすることができます。本セクションでは、SaaS - API Key のサンプルについてのみ説明します。
手順
提供される 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
3.2.9. 3scale toolbox を使用した API ライフサイクル自動化の制約
本リリースでは、以下の制約が適用されます。
- OpenShift のサポート
- サンプルパイプラインは OpenShift 3.11 でのみサポートされます。現在、OpenShift 4 はサポートされていません。サポート対象設定の情報については、Red Hat 3scale API Management のサポート対象設定 のアーティクルを参照してください。
- アプリケーションの更新
-
アプリケーション用
3scale application applytoolbox コマンドを使用して、アプリケーションの作成と更新の両方を行うことができます。作成コマンドは、アカウント、プラン、サービス、およびアプリケーションキーをサポートします。 - 更新コマンドは、アカウント、プラン、またはサービスに対する変更をサポートしません。変更が渡されると、パイプラインがトリガーされエラーは表示されませんが、これらのフィールドは更新されません。
-
アプリケーション用
- サービスのコピー
-
3scale copy servicetoolbox コマンドを使用してカスタムポリシーが設定されたサービスをコピーする場合、先に個別にカスタムポリシーをコピーする必要があります。 - API プロダクト
- 3scale toolbox は、すべての API プロダクト (APIaaP) 機能をサポートする訳ではありません。詳細は、3scale のリリースノートの 既知の問題 を参照してください。