7.2. サンプル Jenkins CI/CD パイプラインのデプロイ

3scale toolbox による API ライフサイクルの自動化は、API ライフサイクルのデプロイメントステージが対象で、CI/CD パイプラインを使用して API 管理ソリューションを自動化することができます。本トピックでは、3scale toolbox を呼び出すサンプル Jenkins パイプラインをデプロイする方法を説明します。

7.2.1. サンプル Jenkins CI/CD パイプライン

API ライフサイクルの自動化用に Jenkins パイプラインを作成してデプロイする方法の例として、以下のサンプルが Red Hat Integration リポジトリーで提供されています。

表7.3 サンプル Jenkins 共有ライブラリーパイプライン

サンプルパイプラインターゲット環境セキュリティー

SaaS - API key

ホスト型 3scale

API キー

Hybrid - open

Self-managed APIcast を使用するホスト型 3scale およびオンプレミス型 3scale

なし

Hybrid - OpenID Connect

Self-managed APIcast を使用するホスト型 3scale およびオンプレミス型 3scale

OpenID Connect (OIDC)

Multi-environment

Self-managed APIcast を使用する、開発、テスト、および実稼働環境のホスト型 3scale

API キー

Semantic versioning

Self-managed APIcast を使用する、開発、テスト、および実稼働環境のホスト型 3scale

API キー、なし、OIDC

これらのサンプルは、3scale toolbox を呼び出す 3scale Jenkins 共有ライブラリーを使用して、主要な API 管理機能を実証します。本トピックの設定手順を実施したら、各 Red Hat Integration リポジトリーのユースケース例 で提供される OpenShift テンプレートを使用してパイプラインをインストールすることができます。

重要

サンプルのパイプラインおよびアプリケーションは、例としてのみ提供されています。ベースとなる API、CLI、およびサンプルパイプラインが活用するその他のインターフェイスは、Red Hat により完全にサポートされています。パイプラインに対して行った変更については、Red Hat による直接のサポートはありません。

7.2.2. ホスト型 3scale 環境の設定

ホスト型 3scale 環境の設定は、すべてのサンプル Jenkins CI/CD パイプラインで必要です。

注記

SaaS - API keyMulti-environment、および Semantic versioning のサンプルパイプライン は、ホスト型 3scale しか使用しません。Hybrid - open および Hybrid - OIDC のパイプラインは、オンプレミス型 3scale も使用します。オンプレミス型 3scale 環境の設定 も参照してください。

前提条件

  • Linux ワークステーションがある。
  • ホスト型 3scale 環境が用意されている。
  • OpenShift 3.11 クラスターがある。現在、OpenShift 4 はサポートされていません。

  • OpenShift のドキュメント で説明されているように、OpenShift ルーターでワイルドカードルートを有効にしておく。

手順

  1. ホスト型 3scale 管理ポータルコンソールにログインします。
  2. Account Management 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. Developer Account ID を保存します。これは、/buyers/accounts/ に続く URL の最後の部分です。以下に例を示します。

    export SAAS_DEVELOPER_ACCOUNT_ID=123...456

7.2.3. オンプレミス型 3scale 環境の設定

オンプレミス型 3scale 環境の設定は、Hybrid - openHybrid - OIDC のサンプル Jenkins CI/CD パイプラインでのみ必要です。

注記

これらの Hybrid サンプルパイプラインを使用する場合は、オンプレミス型 3scale 環境とホスト型 3scale 環境を設定する必要があります。ホスト型 3scale 環境の設定 も参照してください。

前提条件

  • Linux ワークステーションがある。
  • オンプレミス型 3scale 環境を用意する。テンプレートを使用して OpenShift 上にオンプレミス型 3scale をインストールする方法については、3scale のインストールに関するドキュメント を参照してください。
  • OpenShift 3.11 クラスターがある。現在、OpenShift 4 はサポートされていません。

  • OpenShift のドキュメント で説明されているように、OpenShift ルーターでワイルドカードルートを有効にしておく。

手順

  1. オンプレミス型 3scale 管理ポータルコンソールにログインします。
  2. Account Management 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. Developer Account ID を保存します。これは、/buyers/accounts/ に続く URL の最後の部分です。

    export ONPREM_DEVELOPER_ACCOUNT_ID=5

7.2.4. OpenID Connect 向け Red Hat Single Sign-On のデプロイ

Hybrid - OpenID Connect (OIDC) または Semantic versioning のサンプルパイプラインを使用している場合、本セクションの手順を実施して 3scale で Red Hat Single Sign-On (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. 後で使用できるように、レルム名、クライアント ID、およびクライアントシークレットを保存します。

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

7.2.5. 3scale toolbox のインストールおよびアクセスの有効化

本セクションでは、toolbox のインストール、リモート 3scale インスタンスの作成、および管理ポータルへのアクセスに使用されるシークレットのプロビジョニングを行う方法について説明します。

手順

  1. 3scale toolbox で説明されているように、ローカルに 3scale toolbox をインストールします。
  2. 適切な 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/"

  3. 以下の OpenShift コマンドを実行して、3scale 管理ポータルとアクセストークンが含まれるシークレットをプロビジョニングします。

    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 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
  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 バックエンドの例をデプロイします。

    • 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
  4. 後で使用できるように、Event API のホスト名を保存します。

    export EVENT_API_HOSTNAME="$(oc get route -n "$TOOLBOX_NAMESPACE" event-api -o jsonpath='{.spec.host}')"

7.2.7. Self-managed APIcast インスタンスのデプロイ

本セクションは、ホスト型 3scale 環境で Self-managed APIcast インスタンスで使用するためのものです。本セクションの説明は、SaaS - API key 以外のすべてのサンプルパイプラインに該当します。

手順

  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. 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.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. サンプルパイプラインのインストールとデプロイ

必要な環境を設定したら、各 Red Hat Integration リポジトリーのサンプルユースケース 用に提供される OpenShift テンプレートを使用して、サンプルパイプラインをインストールしてデプロイすることができます。本セクションでは、SaaS - API Key のサンプルについてのみ説明します。

手順

  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 Management のサポート対象設定 のアーティクルを参照してください。
アプリケーションの更新
  • アプリケーション用 3scale application apply toolbox コマンドを使用して、アプリケーションの作成と更新の両方を行うことができます。作成コマンドは、アカウント、プラン、サービス、およびアプリケーションキーをサポートします。
  • 更新コマンドは、アカウント、プラン、またはサービスに対する変更をサポートしません。変更が渡されると、パイプラインがトリガーされエラーは表示されませんが、これらのフィールドは更新されません。
サービスのコピー
3scale copy service toolbox コマンドを使用してカスタムポリシーが設定されたサービスをコピーする場合、先に個別にカスタムポリシーをコピーする必要があります。