Infinispan 部署:單一叢集

此處描述在單一叢集環境中的 Infinispan 部署。

對象

本指南描述在單一叢集環境中部署 Infinispan 所需的程序。為了簡化,本指南使用可讓 Keycloak 與外部 Infinispan 一起使用的最小配置。

請參閱 在生產環境中執行 以取得其他指南。

先決條件

程序

  1. 安裝 Infinispan Operator

  2. 設定存取 Infinispan 叢集的憑證。

    Keycloak 需要此憑證才能夠與 Infinispan 叢集進行驗證。以下 identities.yaml 檔案會設定具有管理員權限的使用者名稱和密碼

    credentials:
      - username: developer
        password: strong-password
        roles:
          - admin

    identities.yaml 可以設定為機密,如下所示

    • 作為 Kubernetes 資源

      憑證機密
      apiVersion: 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

      如需更多詳細資訊,請查看設定驗證 文件。

  3. 建立 Infinispan 叢集。

    建立 Infinispan 叢集 文件提供有關如何建立和設定 Infinispan 叢集的所有資訊。

    Infinispan CR
    apiVersion: 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 如果使用自訂憑證,請在此處設定在上一個步驟中建立的機密名稱。
  4. 為 Keycloak 建立快取。

    Keycloak 需要存在下列快取:sessionsactionTokensauthenticationSessionsofflineSessionsclientSessionsofflineClientSessionsloginFailureswork

    使用 Infinispan Cache CR 在 Infinispan 叢集中部署快取。

    請參閱下方 sessions 快取的範例。針對上述列出的所有其他快取重複此操作。

    sessions 快取的快取 CR
    apiVersion: 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 文件包含有關快取設定及其選項的更多詳細資訊。

驗證部署

確認 Infinispan 叢集已形成。

等待直到 Infinispan 叢集形成
kubectl wait --for condition=WellFormed --timeout=300s infinispans.infinispan.org -n keycloak infinispan