8.11. テナントカスタムリソースのデプロイ
テナント
カスタムリソースは、プロバイダーアカウント とも呼ばれます。
APIManager
カスタムリソース (CR) をデプロイする場合には、3scale operator を使用して 3scale をデプロイします。デフォルトの 3scale インストール環境には、使用可能なデフォルトのテナントが含まれます。オプションで、Tenant
カスタムリソースをデプロイして他のテナントを作成できます。
前提条件
- 一般的な前提条件
-
新規
Tenant
CR の namespace に対してcreate
パーミッションが指定された OpenShift ロール。
手順
3scale がインストールされている OpenShift プロジェクトに移動します。たとえば、プロジェクトの名前が
my-3scale-project
の場合は、以下のコマンドを実行します。oc project my-3scale-project
新規テナントの 3scale 管理アカウントのパスワードが含まれるシークレットを作成します。
Tenant
CR の定義で、passwordCredentialsRef
属性をこのシークレットの名前に設定します。ステップ 4 のTenant
CR 定義の例では、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 の
Tenant
CR 定義の例では、MASTER_HOSTNAME
はこの名前のプレースホルダーです。新しい
Tenant
カスタムリソースを定義するファイルを作成します。Tenant
CR の定義で、masterCredentialsRef.name
属性をsystem-seed
に設定します。テナント管理タスクは、3scale マスターアカウントのクレデンシャルを使用してのみ実行できます (アクセストークンの使用が推奨されます)。APIManager
CR のデプロイメント時に、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-secret
Tenant
カスタムリソースを作成します。たとえば、直前のサンプル 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
、およびDeveloperUser
CR をデプロイできるようになりました。
-
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 を使用して別のテナントを作成します。