6.3. 流程
- 安装 Data Grid Operator
配置凭据以访问 Data Grid 集群。
红帽构建的 Keycloak 需要此凭证才能与 Data Grid 集群进行身份验证。以下
identity.yaml
文件使用 admin 权限设置用户名和密码credentials: - username: developer password: strong-password roles: - admin
credentials: - username: developer password: strong-password roles: - admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow identity.yaml
可以在 secret 中设置为以下之一:作为 Kubernetes 资源:
凭证 Secret
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 上例 base64 编码的 identity
.yaml
。
使用 CLI
oc create secret generic connect-secret --from-file=identities.yaml
oc create secret generic connect-secret --from-file=identities.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如需了解更多详细信息,请参阅配置身份验证文档。https://docs.redhat.com/en/documentation/red_hat_data_grid/8.4/html-single/data_grid_operator_guide/index#configuring-authentication
这些命令必须在两个 OpenShift 集群上执行。
创建一个服务帐户。
在集群间建立连接需要服务帐户。Data Grid Operator 使用它来从远程站点检查网络配置,并相应地配置本地 Data Grid 集群。
如需了解更多详细信息,请参阅管理跨站点连接 文档。
按照如下所示,创建
service-account-token
secret 类型:两个 OpenShift 集群中都可以使用相同的 YAML 文件。xsite-sa-secret-token.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建服务帐户并在两个 OpenShift 集群中生成访问令牌。
在
Site-A
中创建服务帐户oc create sa -n keycloak xsite-sa oc policy add-role-to-user view -n keycloak -z xsite-sa oc create -f xsite-sa-secret-token.yaml oc get secrets ispn-xsite-sa-token -o jsonpath="{.data.token}" | base64 -d > Site-A-token.txt
oc create sa -n keycloak xsite-sa oc policy add-role-to-user view -n keycloak -z xsite-sa oc create -f xsite-sa-secret-token.yaml oc get secrets ispn-xsite-sa-token -o jsonpath="{.data.token}" | base64 -d > Site-A-token.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
Site-B
中创建服务帐户oc create sa -n keycloak xsite-sa oc policy add-role-to-user view -n keycloak -z xsite-sa oc create -f xsite-sa-secret-token.yaml oc get secrets ispn-xsite-sa-token -o jsonpath="{.data.token}" | base64 -d > Site-B-token.txt
oc create sa -n keycloak xsite-sa oc policy add-role-to-user view -n keycloak -z xsite-sa oc create -f xsite-sa-secret-token.yaml oc get secrets ispn-xsite-sa-token -o jsonpath="{.data.token}" | base64 -d > Site-B-token.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 下一步是将令牌从
Site-A
部署到Site-B
,反向部署:将
Site-B
令牌部署到Site-A
oc create secret generic -n keycloak xsite-token-secret \ --from-literal=token="$(cat Site-B-token.txt)"
oc create secret generic -n keycloak xsite-token-secret \ --from-literal=token="$(cat Site-B-token.txt)"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
Site-A
令牌部署到Site-B
oc create secret generic -n keycloak xsite-token-secret \ --from-literal=token="$(cat Site-A-token.txt)"
oc create secret generic -n keycloak xsite-token-secret \ --from-literal=token="$(cat Site-A-token.txt)"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建 TLS secret
在本章中,Data Grid 使用 OpenShift 路由进行跨站点通信。它使用 TLS 的 SNI 扩展将流量定向到正确的 Pod。为实现这一目标,JGroups 使用 TLS 套接字,这需要一个含有正确证书的密钥存储和 Truststore。
如需更多信息,请参阅安全 跨站点连接 文档或本 红帽开发人员指南。
在 OpenShift Secret 中上传 Keystore 和 Truststore。secret 包含文件内容、访问它的密码,以及存储的类型。创建证书和存储的说明超出了本指南的范围。
要将密钥存储上传为 Secret,请使用以下命令:
部署密钥存储
oc -n keycloak create secret generic xsite-keystore-secret \ --from-file=keystore.p12="./certs/keystore.p12" \ --from-literal=password=secret \ --from-literal=type=pkcs12
oc -n keycloak create secret generic xsite-keystore-secret \ --from-file=keystore.p12="./certs/keystore.p12" \
1 --from-literal=password=secret \
2 --from-literal=type=pkcs12
3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要将 Truststore 作为一个 Secret 上传,请使用以下命令:
部署 Truststore
oc -n keycloak create secret generic xsite-truststore-secret \ --from-file=truststore.p12="./certs/truststore.p12" \ --from-literal=password=caSecret \ --from-literal=type=pkcs12
oc -n keycloak create secret generic xsite-truststore-secret \ --from-file=truststore.p12="./certs/truststore.p12" \
1 --from-literal=password=caSecret \
2 --from-literal=type=pkcs12
3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意密钥存储和 Truststore 必须在两个 OpenShift 集群中上传。
为启用了 Cross-Site 的 Data Grid 创建集群
设置跨站点 文档提供了关于如何在启用了跨站点的情况下创建和配置 Data Grid 集群的所有信息,包括前面的步骤。
本章中提供了一个基本示例,它使用从前面的步骤中创建的凭证、令牌和 TLS Keystore/Truststore。
Site-A
的Infinispan
CRCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 集群名称
- 2
- 允许 Prometheus 监控集群。
- 3
- 如果使用自定义凭证,请在此处配置 secret 名称。
- 4
- 本地站点的名称,本例中为
Site-A
。 - 5
- 使用 OpenShift 路由公开跨站点连接。
- 6 9
- 上一步中定义的 Keystore 的 secret 名称。
- 7 10
- Keystore 中证书的别名。
- 8 11
- 上一步中定义的 Keystore 的 secret 密钥(filename)。
- 12
- 上一步中定义的 Truststore 的 secret 名称。
- 13
- 上一步中定义的 Keystore 的 Truststore 密钥(filename)。
- 14
- 远程站点的名称,本例中为
Site-B
。 - 15
- 远程站点的 Data Grid 集群的命名空间。
- 16
- 远程站点的 OpenShift API URL。
- 17
- 有权在远程站点进行身份验证的 secret。
对于
Site-B
,Infinispan
CR 类似于以上内容。请注意点 4、11 和 13。Site-B
的Infinispan
CRCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为红帽构建的 Keycloak 创建缓存。
红帽构建的 Keycloak 需要存在以下缓存:
会话
,actionTokens
,authenticationSessions
,offlineSessions
,clientSessions
,offlineClientSessions
,loginFailures
, 和work
。Data Grid Cache CR 允许在 Data Grid 集群中部署缓存。需要为每个缓存启用跨站点文档,如 跨站点文档 所述。文档包含有关本章使用的选项的更多详细信息。以下示例显示了
Site-A
的Cache
CR。Site-A
中的会话Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于
Site-B
,缓存
CR 类似于第 2 点。Site-B
中的会话Copy to Clipboard Copied! Toggle word wrap Toggle overflow