8.12. カスタムリソースのデプロイによる 3scale 開発者の管理
3scale の管理者は、カスタムリソース (CR) を使用して、個別の開発者ユーザーをグループ化する開発者アカウントをデプロイすることができます。これらのアカウントにより、開発者ポータルで 3scale が管理する API への開発者アクセスを整理および管理できます。
テナントには、任意の数の開発者アカウントを含めることができ、各開発者アカウントは必ず 1 つのテナントにリンクされます。開発者アカウントには、任意の数の開発者ユーザーを含めることができ、各開発者ユーザーは 1 つの開発者アカウントにリンクします。テナントプランは、作成できる開発者アカウントの数と、各開発者アカウントにグループ化できる開発者ユーザーの数の制限を決定します。
開発者カスタムリソースを使用するには、3scale が 3scale operator によってインストールされている必要があります。開発者カスタムリソースは、3scale Operator が含まれる namespace にのみデプロイできます。開発者カスタムリソースのデプロイは、別の開発者の管理方法で、3scale 管理ポータルまたは 3scale 内部 API を使用します。
カスタムリソースをデプロイして開発者アカウントまたは開発者ユーザーを作成する場合、管理ポータルまたは内部 3scaleAPI を使用してそれらの開発者アカウントまたは開発者ユーザーを更新することはできません。開発者 CR をデプロイした後、管理者ポータルの アカウント ページに新しい開発者アカウントまたは新しい開発者ユーザーが表示されるため、注意することが重要となります。管理ポータルまたは API を使用して CR でデプロイされた開発者アカウントまたは開発者ユーザーを更新しようとすると、3scale Operator はデプロイされた CR を反映するために変更を元に戻します。これは、今後のリリースで削除される予定の制限です。ただし、管理ポータルまたは API を使用して、CR をデプロイして作成した開発者アカウントまたは開発者ユーザーを削除することができます。
8.12.1. 前提条件
- 3scale が 3scale operator によってインストールされている。
-
Account Management
API スコープの読み取りおよび書き込み権限を持つアクセストークン (3scale の管理者権限が提供される)
8.12.2. DeveloperAccount カスタムリソースのデプロイによる 3scale の開発者アカウントの管理
3scale operator を使用して 3scale をインストールする場合は、DeveloperAccount
および DeveloperUser
カスタムリソース (CR) をデプロイできます。これらの CR により、開発者ポータルで 3scale が管理する API に開発者がアクセスするためのアカウントを作成および更新できます。
新規の DeveloperAccount
CR をデプロイするには、admin
ロールを持つユーザーの DeveloperUser
CR もデプロイする必要があります。ここで提供される手順は、新規 DeveloperAccount
CR をデプロイするためのものです。DeveloperAccount
CR のデプロイ後、更新または削除する手順は他の CR と同じです。
CR は 3scale Operator が含まれる namespace にのみデプロイできます。
前提条件
- 3scale Operator がカスタムリソースのリンク先となるテナントを識別する方法 を理解している。
同じ namespace にある 3scale インスタンスのデフォルトのテナントにリンクしない
DeveloperAccount
カスタムリソースを作成する場合には、DeveloperAccount
CR が含まれる namespace には、DeveloperAccount
CR がリンクするテナントを特定するシークレットを追加する。シークレットの名前は以下のいずれかになります。-
threescale-provider-account
- ユーザー定義
このシークレットには、3scale インスタンスの URL と、3scale インスタンスの 1 つのテナントにアクセスするためのクレデンシャルが含まれるトークンが含まれます。
-
-
新規
DeveloperAccount
CR のadmin
ロールを持つ少なくとも 1 人の開発者ユーザーのユーザー名、パスワード、およびメールアドレスを把握している。
手順
3scale operator が含まれる namespace で、新しい開発者アカウントリソースで
admin
ロールを持つ開発者ユーザーのユーザー名とパスワードが含まれるシークレットを定義するリソースファイルを作成して保存します。たとえば、myusername01.yaml
ファイルには以下が含まれます。apiVersion: v1 kind: Secret metadata: name: myusername01 stringData: password: "123456"
シークレットを作成します。以下に例を示します。
oc create -f myusername01.yaml
この例では、出力は以下のようになります。
secret/myusername01 created
admin
ロールを持つ開発者のDeveloperUser
CR を定義する a.yaml
ファイルを作成し、保存します。3scale operator が新規DeveloperAccount
CR をデプロイするには、このDeveloperUser
CR が必要です。たとえば、developeruser01.yaml
ファイルには以下が含まれる場合があります。apiVersion: capabilities.3scale.net/v1beta1 kind: DeveloperUser metadata: name: developeruser01 spec: username: myusername01 email: myusername01@example.com passwordCredentialsRef: name: myusername01 role: admin developerAccountRef: name: developeraccount1 providerAccountRef: name: mytenant
DeveloperUser
CR では:-
開発者ユーザーのアカウント名、ユーザー名、および電子メールは、含んでいる
DeveloperAccount
のリンク先のテナントで一意である必要があります。 -
ここで指定する開発者アカウント名は、この手順でデプロイする
DeveloperAccount
CR の名前に一致する必要があります。DeveloperAccount
CR の作成は、このDeveloperUser
CR を作成する前でも後でもかまいません。 -
DeveloperUser
CR がリンクするテナントは、指定されたDeveloperAccount
CR リンク先と同じテナントである必要があります。
-
開発者ユーザーのアカウント名、ユーザー名、および電子メールは、含んでいる
定義したばかりのリソースを作成します。以下に例を示します。
oc create -f developeruser01.yaml
この例では、出力は以下のようになります。
developeruser.capabilities.3scale.net/developeruser01 created
DeveloperAccount
CR を定義する.yaml
ファイルを作成および保存します。この.yaml
ファイルでは、spec.OrgName
フィールドは組織名を指定する必要があります。たとえば、developeraccount01.yaml
ファイルには以下が含まれる場合があります。apiVersion: capabilities.3scale.net/v1beta1 kind: DeveloperAccount metadata: name: developeraccount01 spec: orgName: Ecorp providerAccountRef: name: mytenant
定義したばかりのリソースを作成します。以下に例を示します。
oc create -f developeraccount01.yaml
この例では、出力は以下のようになります。
developeraccount.capabilities.3scale.net/developeraccount01 created
次のステップ
3scale Operator が 3scale 設定を更新して、新規または更新されたカスタムリソースを反映するには、数秒かかります。Operator がカスタムリソース情報を正常に伝搬しているかどうかを確認するには、DeveloperAccount
カスタムリソースの status
フィールドを確認するか、以下のように oc wait
コマンドを実行します。
oc wait --for=condition=Ready --timeout=30s developeraccount/developeraccount1
失敗した場合、カスタムリソースの status
フィールドは、エラーが一時的または永続的であるかどうかを示し、問題の修正に役立つエラーメッセージを提供します。
新しい開発者ユーザーに、開発者ポータルにログインできることを通知します。また、ログインクレデンシャルを伝える必要がある場合もあります。
他のカスタムリソースを更新または削除するのと同じ様に、デプロイされた DeveloperAccount
カスタムリソースを更新または削除することができます。ただし、DeveloperAccount
CR を削除すると、3scale operator は実際には削除しません。削除した DeveloperAccount
CR と同じ名前の新しい DeveloperAccount
CR をデプロイしようとすると、その名前の DeveloperAccount
CR がすでに存在することを示すメッセージを受信します。新規の DeveloperAccount
CR に異なる名前を指定する必要があります。
8.12.3. DeveloperUser カスタムリソースのデプロイによる 3scale 開発者ユーザーの管理
3scale operator を使用して 3scale をインストールする場合、Developer Portal で 3scale 管理の API への開発者アクセスを管理するために、DeveloperUser
カスタムリソース (CR) をデプロイできます。ここで提供される手順は、新規 DeveloperUser
CR をデプロイするためのものです。DeveloperUser
CR のデプロイ後、更新または削除する手順は他の CR と同じです。
CR は 3scale Operator が含まれる namespace にのみデプロイできます。
前提条件
- 3scale Operator がカスタムリソースのリンク先となるテナントを識別する方法 を理解している。
admin
ロールを持つユーザー用に、デプロイされたDeveloperUser
CR が少なくとも 1 つ含まれるDeveloperAccount
カスタムリソースが少なくとも 1 つデプロイされている。同じ namespace にある 3scale インスタンスのデフォルトのテナントにリンクしないDeveloperUser
カスタムリソースを作成する場合、DeveloperUser
CR が含まれる namespace には、DeveloperUser
CR がリンクするテナントを特定するシークレットを含める。シークレットの名前は以下のいずれかになります。-
threescale-provider-account
- ユーザー定義
このシークレットには、3scale インスタンスの URL と、3scale インスタンスの 1 つのテナントにアクセスするためのクレデンシャルが含まれるトークンが含まれます。
-
-
新しい
DeveloperUser
カスタムリソース用に、その開発者のユーザー名、パスワード、およびメールアドレスを把握している。
手順
3scale Operator が含まれる namespace で、開発者ユーザーのユーザー名とパスワードが含まれるシークレットを定義するリソースファイルを作成し、保存します。たとえば、
myusername02.yaml
ファイルには以下が含まれます。apiVersion: v1 kind: Secret metadata: name: myusername02 stringData: password: "987654321"
シークレットを作成します。以下に例を示します。
oc create -f myusername02.yaml
この例では、出力は以下のようになります。
secret/myusername02 created
DeveloperUser
CR を定義する.yaml
ファイルを作成および保存します。spec.role
フィールドにはadmin
またはmember
を指定します。たとえば、developeruser02.yaml
ファイルには以下が含まれる場合があります。apiVersion: capabilities.3scale.net/v1beta1 kind: DeveloperUser metadata: name: developeruser02 spec: username: myusername02 email: myusername02@example.com passwordCredentialsRef: name: myusername02 role: member developerAccountRef: name: developeraccount1 providerAccountRef: name: mytenant
DeveloperUser
CR では:-
開発者のユーザー名 (
metadata.name
フィールドで指定)、ユーザー名、および電子メールは、含んでいるDeveloperAccount
のリンク先のテナントで一意である必要があります。 -
developerAccountRef
フィールドには、デプロイされたDeveloperAccount
CR の名前を指定する必要があります。 -
DeveloperUser
CR がリンクするテナントは、指定されたDeveloperAccount
CR リンク先と同じテナントである必要があります。
-
開発者のユーザー名 (
定義したばかりのリソースを作成します。以下に例を示します。
oc create -f developefuser02.yaml
この例では、出力は以下のようになります。
developeruser.capabilities.3scale.net/developeruser02 created
次のステップ
3scale Operator が 3scale 設定を更新して、新規または更新されたカスタムリソースを反映するには、数秒かかります。Operator がカスタムリソース情報を正常に伝搬しているかどうかを確認するには、DeveloperUser
カスタムリソースの status
フィールドを確認するか、以下のように oc wait
コマンドを実行します。
oc wait --for=condition=Ready --timeout=30s developeruser/developeruser02
失敗した場合、カスタムリソースの status
フィールドは、エラーが一時的または永続的であるかどうかを示し、問題の修正に役立つエラーメッセージを提供します。
新しい開発者ユーザーに、開発者ポータルにログインできることを通知します。また、ログインクレデンシャルを伝える必要がある場合もあります。
他のカスタムリソースを更新または削除するのと同じ様に、デプロイされた DeveloperUser
カスタムリソースを更新または削除することができます。ただし、DeveloperUser
CR を削除すると、3scale operator は実際には削除しません。削除した DeveloperUser
CR と同じアカウント名、ユーザー名、または電子メールの新しい DeveloperUser
CR をデプロイしようとすると、DeveloperUser
CR がすでに存在することを示すメッセージを受信します。新規の DeveloperUser
CR には、別の開発者ユーザーアカウント名、ユーザー名、または電子メールを指定する必要があります。