4.2. サンプル Jenkins CI/CD パイプラインのデプロイ
3scale toolbox による API ライフサイクルの自動化は、API ライフサイクルのデプロイメントステージが対象で、CI/CD パイプラインを使用して API 管理ソリューションを自動化することができます。本トピックでは、3scale toolbox を呼び出すサンプル Jenkins パイプラインをデプロイする方法を説明します。
4.2.1. サンプル Jenkins CI/CD パイプライン
API ライフサイクルの自動化用に Jenkins パイプラインを作成してデプロイする方法の例として、以下のサンプルが Red Hat Integration リポジトリーで提供されています。
サンプルパイプライン | ターゲット環境 | セキュリティー |
---|---|---|
ホスト型 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 による直接のサポートはありません。
4.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
4.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
4.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
4.2.5. 3scale toolbox のインストールおよびアクセスの有効化
本セクションでは、toolbox のインストール、リモート 3scale インスタンスの作成、および管理ポータルへのアクセスに使用されるシークレットのプロビジョニングを行う方法について説明します。
手順
- 3scale toolbox で説明されているように、ローカルに 3scale toolbox をインストールします。
適切な 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"
4.2.6. API バックエンドのデプロイ
本セクションでは、サンプルパイプラインで提供される API バックエンドの例をデプロイする方法について説明します。独自のパイプラインを作成してデプロイする場合、必要に応じて独自の API バックエンドを代わりに使用できます。
手順
以下のサンプルで使用するために、Beer Catalog API バックエンドの例をデプロイします。
-
SaaS - API key
-
Hybrid - open
Hybrid - 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 バックエンドの例をデプロイします。
-
Multi-environment
Semantic versioning
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}')"
4.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-rhel8:3scale2.8 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.8 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
4.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
4.2.9. 3scale toolbox を使用した API ライフサイクル自動化の制約
本リリースでは、以下の制約が適用されます。
- OpenShift のサポート
- サンプルパイプラインは OpenShift 3.11 でのみサポートされます。現在、OpenShift 4 はサポートされていません。サポート対象設定の情報については、Red Hat 3scale API Management のサポート対象設定 のアーティクルを参照してください。
- アプリケーションの更新
-
アプリケーション用
3scale application apply
toolbox コマンドを使用して、アプリケーションの作成と更新の両方を行うことができます。作成コマンドは、アカウント、プラン、サービス、およびアプリケーションキーをサポートします。 - 更新コマンドは、アカウント、プラン、またはサービスに対する変更をサポートしません。変更が渡されると、パイプラインがトリガーされエラーは表示されませんが、これらのフィールドは更新されません。
-
アプリケーション用
- サービスのコピー
-
3scale copy service
toolbox コマンドを使用してカスタムポリシーが設定されたサービスをコピーする場合、先に個別にカスタムポリシーをコピーする必要があります。