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