• Русский
  • Создание экземпляра

    Вы можете создать экземпляр Keycloak, чтобы обеспечить централизованное управление идентификацией и доступом для ваших приложений, работающих в кластере Kubernetes.

    Создание экземпляра Keycloak

    Предварительные требования

    • В кластере установлен Alauda Build of Keycloak Operator.
    • База данных PostgreSQL доступна из кластера.
    • В целевом namespace существует Kubernetes Secret, содержащий учетные данные базы данных.

    Порядок действий

    CLI
    Веб-консоль

    Создайте экземпляр Keycloak через CLI:

    apiVersion: k8s.keycloak.org/v2alpha1
    kind: Keycloak
    metadata:
      name: example-kc
    spec:
      instances: 1
      db:
        vendor: postgres
        host: postgres-db
        database: keycloak
        usernameSecret:
          name: keycloak-db-secret
          key: username
        passwordSecret:
          name: keycloak-db-secret
          key: password
      http:
        httpEnabled: true
      ingress:
        enabled: false
      additionalOptions:
        - name: metrics-enabled
          value: "true"
        - name: hostname-strict
          value: "false"
      unsupported:
        podTemplate:
          spec:
            containers:
              - securityContext:
                  allowPrivilegeEscalation: false
                  runAsNonRoot: true
                  capabilities:
                    drop:
                      - ALL
                  seccompProfile:
                    type: RuntimeDefault

    Примените манифест:

    kubectl apply -f keycloak.yaml -n <namespace>

    После создания экземпляра проверьте его статус:

    kubectl get keycloak -n <namespace> -o custom-columns="NAME:.metadata.name,INSTANCES:.spec.instances,READY:.status.conditions[?(@.type=='Ready')].status"

    Создание высокодоступного экземпляра

    Для production-сред установите spec.instances в 2 или более, чтобы включить несколько реплик с общим состоянием сеансов.

    Требование к базе данных

    Развертывания с высокой доступностью требуют высокодоступного backend PostgreSQL. Перед увеличением количества экземпляров убедитесь, что в вашей базе данных настроена репликация или что она предоставляется как managed service.

    apiVersion: k8s.keycloak.org/v2alpha1
    kind: Keycloak
    metadata:
      name: example-kc-ha
    spec:
      instances: 3
      db:
        vendor: postgres
        host: postgres-db
        database: keycloak
        usernameSecret:
          name: keycloak-db-secret
          key: username
        passwordSecret:
          name: keycloak-db-secret
          key: password
      http:
        tlsSecret: example-tls-secret
      ingress:
        enabled: true
        className: nginx
        tlsSecret: example-tls-secret
      hostname:
        hostname: keycloak.example.com
      proxy:
        headers: xforwarded
      scheduling:
        affinity:
          podAntiAffinity:
            preferredDuringSchedulingIgnoredDuringExecution:
              - weight: 100
                podAffinityTerm:
                  labelSelector:
                    matchLabels:
                      app: keycloak
                  topologyKey: kubernetes.io/hostname
      unsupported:
        podTemplate:
          spec:
            containers:
              - securityContext:
                  allowPrivilegeEscalation: false
                  runAsNonRoot: true
                  capabilities:
                    drop:
                      - ALL
                  seccompProfile:
                    type: RuntimeDefault