8.2. 配置服务发现
作为 3scale 管理员,您可以使用或不使用 OAuth 服务器来配置服务发现。
先决条件
- 您必须将 3scale 2.7 部署到 OpenShift 集群(版本 3.11 或更高版本)。
- 若要将 3scale 部署到 OpenShift,您需要使用 3scale-amp-openshift-templates。
- 想要使用服务发现 3scale 的 3scale 用户必须有权访问 OpenShift 集群。
8.2.1. 使用 OAuth 服务器配置
如果您使用 Open Authorization (OAuth)服务器配置 3scale 服务发现,当用户登录到 3scale 时会出现这种情况:
- 用户重定向到 OAuth 服务器。
- 如果用户尚未登录到 OAuth 服务器,则会提示该用户登录。
- 如果这是用户首次使用 SSO 实施 3scale 服务发现,OAuth 服务器会提示您授权执行相关操作。
- 用户重定向到 3scale。
要使用 OAuth 服务器配置服务发现,有以下选项:
8.2.1.1. 使用 OpenShift OAuth 服务器
作为 3scale 系统管理员,您可以使用 OpenShift 内置的 OAuth 服务器来单独验证和授权 3scale 来发现 API。
为 3scale 创建 OpenShift OAuth 客户端。如需有关 OpenShift 身份验证的更多详细信息,请参阅 OAuth 客户端。
$ 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
检查推出部署的状态,以确保它已完成:
oc rollout status dc/system-app oc rollout status dc/system-sidekiq
其他备注
默认情况下,OpenShift OAuth 会话令牌会在 24 小时后过期,如 OpenShift Token Options 所述。
8.2.1.2. 使用 RH-SSO 服务器(Keycloak)
作为系统管理员,您可以允许用户单独验证并授权 3scale 使用 Red Hat Single Sign-On for OpenShift 发现服务。有关将 OpenShift 配置为使用 RH-SSO 部署作为 OpenShift 授权网关的示例,您可以参考此 工作流。
在 Red Hat OAuth 服务器(Keycloak)中为 3scale 创建 OAuth 客户端。
注意在客户端配置中,验证
用户名
是否映射到preferred_username
,以便 OpenShift 可以链接帐户。编辑 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>'
确保用户具有适当的权限,可以查看包含可发现服务的集群项目。
例如,要为
<namespace>
项目提供<user>
视图权限,请使用这个命令:oc adm policy add-role-to-user view <user> -n <namespace>
-
修改
configmap
后,您需要重新部署system-app
和system-sidekiq
pod 以应用更改。
其他备注:
- 令牌寿命:默认情况下,会话令牌在一分钟后过期,如 Keycloak - Session 和 Token Timeouts 所示。但是,建议将超时设为可接受值为一天。