8.11. テナントカスタムリソースのデプロイ
テナント カスタムリソースは、プロバイダーアカウント とも呼ばれます。
APIManager カスタムリソース (CR) をデプロイする場合には、3scale operator を使用して 3scale をデプロイします。デフォルトの 3scale インストール環境には、使用可能なデフォルトのテナントが含まれます。オプションで、Tenant カスタムリソースをデプロイして他のテナントを作成できます。
前提条件
- 一般的な前提条件
-
新規
TenantCR の namespace に対してcreateパーミッションが指定された OpenShift ロール。
手順
3scale がインストールされている OpenShift プロジェクトに移動します。たとえば、プロジェクトの名前が
my-3scale-projectの場合は、以下のコマンドを実行します。oc project my-3scale-project
oc project my-3scale-projectCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新規テナントの 3scale 管理アカウントのパスワードが含まれるシークレットを作成します。
TenantCR の定義で、passwordCredentialsRef属性をこのシークレットの名前に設定します。ステップ 4 のTenantCR 定義の例では、ADMIN_SECRETはこのシークレットのプレースホルダーになります。以下のコマンドは、シークレットの作成例を示しています。oc create secret generic ecorp-admin-secret --from-literal=admin_password=<admin password value>
oc create secret generic ecorp-admin-secret --from-literal=admin_password=<admin password value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 3scale マスターアカウントのホスト名を取得します。operator を使用して 3scale をデプロイする場合、マスターアカウントには、
master.${wildcardDomain}のパターンの固定 URL があります。3scale がインストールされている namespace にアクセスできる場合は、以下のコマンドでマスターアカウントのホスト名を取得できます。
oc get routes --field-selector=spec.to.name==system-master -o jsonpath="{.items[].spec.host}"oc get routes --field-selector=spec.to.name==system-master -o jsonpath="{.items[].spec.host}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow ステップ 4 の
TenantCR 定義の例では、MASTER_HOSTNAMEはこの名前のプレースホルダーです。新しい
Tenantカスタムリソースを定義するファイルを作成します。TenantCR の定義で、masterCredentialsRef.name属性をsystem-seedに設定します。テナント管理タスクは、3scale マスターアカウントのクレデンシャルを使用してのみ実行できます (アクセストークンの使用が推奨されます)。APIManagerCR のデプロイメント時に、Operator はマスターアカウントの認証情報が含まれるシークレットを作成します。シークレットの名前はsystem-seedです。3scale がクラスター全体のモードでインストールされている場合には、3scale が含まれる namespace とは異なる namespace に新規テナントをデプロイできます。これには、
masterCredentialsRef.namespaceを 3scale インストールが含まれる namespace に設定します。以下の例では、3scale がクラスター全体のモードにインストールされていることを前提とします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Tenantカスタムリソースを作成します。たとえば、直前のサンプル CR をmytenant.yamlファイルに保存した場合は、以下を実行します。oc create -f mytenant.yaml
oc create -f mytenant.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドを実行すると、以下のようになります。
-
operator は、
spec.systemMasterUrl属性を設定して、3scale インストールのテナントをデプロイします。 3scale operator は、新規テナントの認証情報が含まれるシークレットを作成します。シークレットの名前は、
tenantSecretRef.name属性に指定した値です。このシークレットには、新規テナントの管理者 URL およびアクセストークンが含まれます。参考として、Operator が作成するシークレットの例を以下に示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
新規テナントにリンクする
Product、Backend、OpenAPI、DeveloperAccount、およびDeveloperUserCR をデプロイできるようになりました。
-
operator は、
Tenant カスタムリソースのデプロイ
デプロイされた Tenant カスタムリソースを削除するには、リソース定義が含まれるファイルの名前を指定します。以下に例を示します。
oc delete -f mytenant.yaml
oc delete -f mytenant.yaml
または、oc delete コマンドを実行して Tenant CR に名前を指定し、テナントの namespace を指定することもできます。以下に例を示します。
oc delete tenant.capabilities.3scale.net mytenant -n mynamespace
oc delete tenant.capabilities.3scale.net mytenant -n mynamespace
テナントを削除すると、3scale operator は以下を行います。
- 3scale インストール環境からテナントを非表示にする。
- テナントが所有するデプロイ済みのカスタムリソースを削除する。
- 15 日後に削除するテナントをマークする。
テナントの削除後に復元することはできません。15 日の間に、テナントが所有するリソースをすべてバックアップしてください。この操作は、管理ポータルでのみ実行できます。3scale は 15 日後にテナントを削除します。データ保護法に準拠するために、今後の参照用に一部のデータが保持されます。
Tenant CR を使用してテナントをデプロイした場合は、管理ポータルでテナントを削除しないでください。これを実行する場合に、Operator は削除しようとしているテナントの CR を使用して別のテナントを作成します。