2.2. サービスディスカバリーを有効にするための OpenShift 設定
3scale の管理者は、Open Authorization (OAuth) サーバーの使用/不使用とは独立に、サービスディスカバリーを設定することができます。
OAuth サーバーと共に 3scale サービスディスカバリーを設定する場合、ユーザーが 3scale にサインインした際のフローは以下のとおりです。
- ユーザーが OAuth サーバーにリダイレクトされる。
- ユーザーがまだ OAuth サーバーにログインしていなければ、ログインを求められる。
- ユーザーが 3scale のサービスディスカバリーと SSO の組み合わせを初めて実装する場合には、OAuth サーバーは必要なアクションを実行するために承認を要求する。
- ユーザーが再度 3scale にリダイレクトされる。
OAuth サーバー と組み合わせてサービスディスカバリーを設定する場合には、以下のオプションがあります。
OAuth サーバーと組み合わせずにサービスディスカバリーを設定する 場合、ユーザーが 3scale にサインインしてもリダイレクトされません。その代わりに、サービスディスカバリーのために、3scale Single Service Account がクラスターに対してシームレスに認証を行います。3scale を通じて API サービスを検出する間、すべての 3scale テナント管理ユーザーはクラスターに対して同じアクセスレベルを持ちます。
2.2.1. OpenShift OAuth サーバーと組み合わせたサービスディスカバリーの設定
3scale のシステム管理者は、ユーザーが OpenShift の組み込み OAuth サーバーを使用して、個別に認証、3scale を承認して API を検出するのを許可することができます。
前提条件
- 3scale 1.0 を OpenShift クラスターにデプロイする必要があります(バージョン 3.11 以降)。
- 3scale を OpenShift にデプロイするには、3scale-amp-openshift-templates を使用する必要があります。
- 3scale でサービスディスカバリーを使用する 3scale ユーザーは、OpenShift クラスターにアクセスできる必要があります。
手順
3scale 用の OpenShift OAuth クライアントを作成します。詳細は、OpenShift の認証に関するドキュメント を参照してください。以下の例で、
<provide-a-client-secret>
を生成するシークレットに、<3scale-master-domain-route>
を 3scale マスター管理ポータルにアクセスするための URL に、それぞれ置き換えます。$ oc project default $ cat <<-EOF | oc create -f - kind: OAuthClient apiVersion: v1 metadata: name: 3scale secret: "<provide-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
補足説明
OpenShift OAuth トークンについての詳細は、『認証』の「内部 OAuth サーバーの設定」を参照してください。