Infinispan 部署:单集群
本指南介绍了在单集群环境中的 Infinispan 部署。
受众
本指南介绍了在单集群环境中部署 Infinispan 所需的步骤。为了简化,本指南使用尽可能少的配置,使 Keycloak 可以使用外部 Infinispan。
有关其他指南,请参阅 在生产环境中运行。
步骤
-
配置访问 Infinispan 集群的凭据。
Keycloak 需要此凭据才能向 Infinispan 集群进行身份验证。以下
identities.yaml
文件设置具有管理员权限的用户名和密码credentials: - username: developer password: strong-password roles: - admin
identities.yaml
可以作为以下内容之一设置在 secret 中-
作为 Kubernetes 资源
凭据 SecretapiVersion: v1 kind: Secret type: Opaque metadata: name: connect-secret namespace: keycloak data: identities.yaml: Y3JlZGVudGlhbHM6CiAgLSB1c2VybmFtZTogZGV2ZWxvcGVyCiAgICBwYXNzd29yZDogc3Ryb25nLXBhc3N3b3JkCiAgICByb2xlczoKICAgICAgLSBhZG1pbgo= (1)
1 之前示例中 identities.yaml
的 base64 编码。 -
使用 CLI
kubectl create secret generic connect-secret --from-file=identities.yaml
有关更多详细信息,请查看 配置身份验证 文档。
-
-
创建 Infinispan 集群。
创建 Infinispan 集群 文档提供了有关如何创建和配置 Infinispan 集群的所有信息。
Infinispan CRapiVersion: infinispan.org/v1 kind: Infinispan metadata: name: infinispan (1) namespace: keycloak annotations: infinispan.org/monitoring: 'true' (2) spec: replicas: 3 jmx: enabled: true security: endpointSecretName: connect-secret (3) service: type: DataGrid
1 集群名称 2 允许 Prometheus 监控集群 3 如果使用自定义凭据,请在此处配置在上一步中创建的 secret 名称。 -
为 Keycloak 创建缓存。
Keycloak 需要以下缓存存在:
sessions
、actionTokens
、authenticationSessions
、offlineSessions
、clientSessions
、offlineClientSessions
、loginFailures
和work
。使用 Infinispan 缓存 CR 在 Infinispan 集群中部署缓存。
以下示例用于
sessions
缓存。对上面列出的所有其他缓存重复此操作。sessions
缓存的缓存 CRapiVersion: infinispan.org/v2alpha1 kind: Cache metadata: name: sessions namespace: keycloak spec: clusterName: infinispan name: sessions template: |- distributedCache: mode: "SYNC" owners: "2" statistics: "true" remoteTimeout: "5000" encoding: media-type: "application/x-protostream" locking: acquireTimeout: "4000" transaction: mode: "NON_XA" (1) locking: "PESSIMISTIC" (2) stateTransfer: chunkSize: "16" indexing: enabled: true indexed-entities: - keycloak.RemoteUserSessionEntity
Infinispan 文档 包含有关缓存配置及其选项的更多详细信息。