8.2. サービスディスカバリーの設定
3scale の管理者は、OAuth サーバーの使用/不使用とは独立に、サービスディスカバリーを設定することができます。
前提条件
- OpenShift クラスター (バージョン 3.11 以降) に 3scale 2.6 をデプロイしている必要があります。
- 3scale を OpenShift にデプロイするには、3scale-amp-openshift-templates を使用する必要があります。
- サービスディスカバリーを使用する 3scale ユーザーは、OpenShift クラスターにアクセスできる必要があります。
8.2.1. OAuth サーバーを使用した設定
Open Authorization (OAuth) サーバーと共に 3scale サービスディスカバリーを設定する場合、ユーザーが 3scale にサインインした際のフローは以下のとおりです。
- ユーザーが OAuth サーバーにリダイレクトされる。
- ユーザーがまだ OAuth サーバーにログインしていなければ、ログインを求められる。
- ユーザーが 3scale のサービスディスカバリーと SSO の組み合わせを初めて実装する場合には、OAuth サーバーは必要なアクションを実行するために承認を要求する。
- ユーザーが再度 3scale にリダイレクトされる。
OAuth サーバー と組み合わせてサービスディスカバリーを設定する場合には、以下のオプションがあります。
8.2.1.1. OpenShift OAuth サーバーの使用
3scale のシステム管理者は、ユーザーが OpenShift の組み込み OAuth サーバーを使用して、個別に認証、3scale を承認して API を検出するのを許可することができます。
3scale 用の OpenShift OAuth クライアントを作成します。OpenShift の認証の詳細は、OAuth Clients を参照してください。
$ oc project default $ cat <<-EOF | oc create -f - kind: OAuthClient apiVersion: v1 metadata: name: 3scale secret: "<choose-a-client-secret>" redirectURIs: - "<3scale-master-domain-route>" grantMethod: prompt EOF
3scale サービスディスカバリーの設定ファイルを開きます。
$ oc project <3scale-project> $ oc edit configmap system
以下のように設定します。
service_discovery.yml: production: enabled: true authentication_method: oauth oauth_server_type: builtin client_id: '3scale' client_secret: '<choose-a-client-secret>'
ユーザーが適切なアクセス権限を持ち、検出可能なサービスが含まれるクラスタープロジェクトを表示できるようにしてください。
<user> で表される管理ユーザーに、検出されるサービスが含まれる <namespace> プロジェクトを表示する権限を付与するには、以下のコマンドを使用します。
oc adm policy add-role-to-user view <user> -n <namespace>
configmap
を変更したら、system-app
およびsystem-sidekiq
Pod を再デプロイし、変更を適用する必要があります。oc rollout latest dc/system-app oc rollout latest dc/system-sidekiq
補足説明
Token options に記載されるように、デフォルトでは OpenShift OAuth セッショントークンの有効期限は 24 時間です。
8.2.1.2. RH-SSO サーバー (Keycloak) の使用
システム管理者は、ユーザーが OpenShift 向け Red Hat Single Sign-On を使用して、個別に認証、3scale を承認してサービスを検出するのを許可することができます。OpenShift の承認ゲートウェイとして RH-SSO デプロイメントを使用する OpenShift の設定例については、この ワークフロー を参照してください。
Red Hat OAuth サーバー (Keycloak) に、3scale 用の OAuth クライアントを作成します。
注記クライアント設定で、OpenShift がアカウントをリンクすることができるように、
username
がpreferred_username
にマッピングされていることを確認します。3scale サービスディスカバリーの設定を編集します。
$ oc project <3scale-project> $ oc edit configmap system
以下のように設定されていることを確認します。
service_discovery.yml: production: enabled: true authentication_method: oauth oauth_server_type: rh_sso client_id: '3scale' client_secret: '<choose-a-client-secret>'
ユーザーが適切なアクセス権限を持ち、検出可能なサービスが含まれるクラスタープロジェクトを表示できるようにしてください。
たとえば、
<user>
に<namespace>
プロジェクトを表示する権限を付与するには、以下のコマンドを使用します。oc adm policy add-role-to-user view <user> -n <namespace>
-
configmap
を変更したら、system-app
およびsystem-sidekiq
Pod を再デプロイし、変更を適用する必要があります。
補足説明:
- トークンの有効期限:Keycloak Server Administration Guide の Session and Token Timeouts に記載されるように、デフォルトではセッショントークンの有効期限は 1 分です。ただし、タイムアウトを妥当な値 (たとえば 1 日) に設定することを推奨します。