6.2. 流程
- 确定使用 概念调整 CPU 和内存资源章节的部署大小。
- 按照 Red Hat build of Keycloak Operator 安装中的内容 安装 Red Hat build of Keycloak Operator。
- 请注意,以下配置文件包含与 多个可用区中从 Deploy AWS Aurora 连接到 Aurora数据库相关的选项
- 请注意以下与 Data Grid Operator 从 Deploy Data Grid for HA 连接到 Data Grid 服务器相关的选项。
- 构建自定义红帽构建的 Keycloak 镜像,准备与 Amazon Aurora PostgreSQL 数据库一起使用。
使用在第一步中计算的资源请求和限值,使用以下值部署红帽 Keycloak CR:
apiVersion: k8s.keycloak.org/v2alpha1 kind: Keycloak metadata: labels: app: keycloak name: keycloak namespace: keycloak spec: hostname: hostname: <KEYCLOAK_URL_HERE> resources: requests: cpu: "2" memory: "1250M" limits: cpu: "6" memory: "2250M" db: vendor: postgres url: jdbc:aws-wrapper:postgresql://<AWS_AURORA_URL_HERE>:5432/keycloak poolMinSize: 30 1 poolInitialSize: 30 poolMaxSize: 30 usernameSecret: name: keycloak-db-secret key: username passwordSecret: name: keycloak-db-secret key: password image: <KEYCLOAK_IMAGE_HERE> 2 startOptimized: false 3 features: enabled: - multi-site 4 transaction: xaEnabled: false 5 additionalOptions: - name: http-max-queued-requests value: "1000" - name: log-console-output value: json - name: metrics-enabled 6 value: 'true' - name: http-pool-max-threads 7 value: "66" - name: cache-remote-host value: "infinispan.keycloak.svc" - name: cache-remote-port value: "11222" - name: cache-remote-username secret: name: remote-store-secret key: username - name: cache-remote-password secret: name: remote-store-secret key: password - name: spi-connections-infinispan-quarkus-site-name value: keycloak - name: db-driver value: software.amazon.jdbc.Driver http: tlsSecret: keycloak-tls-secret instances: 3
- 1
- 数据库连接池 initial、max 和 min 大小应当相同,以允许数据库的声明缓存。调整这个数字以满足您的系统需求。由于大多数请求不会因为红帽构建的 Keycloak 嵌入式缓存而影响数据库,因此这个更改可以每秒负责几百个请求。详情请参阅数据库连接池的概念 章节。
- 2 3
- 指定自定义红帽构建的 Keycloak 镜像的 URL。如果您的镜像经过优化,请将
startOptimized
标志设置为true
。 - 4
- 为多站点支持启用额外的功能,如 loadbalancer probe
/lb-check
。 - 5
- 6
- 为了能够在负载下分析系统,启用指标端点。设置的缺点是,指标将在 Keycloak 端点的外部红帽构建中可用,因此您必须添加过滤器,以便外部无法使用端点。在 Red Hat build of Keycloak 前使用反向代理来过滤这些 URL。
- 7
- 您可以考虑进一步限制红帽构建的 Keycloak 线程数量,因为在达到请求的 CPU 限制后,多个并发线程会导致 Kubernetes 节流。详情请参阅配置线程池的概念 一章。