• Русский
  • Быстрый старт

    Этот документ помогает новым пользователям быстро разобраться и начать использовать функцию Keycloak.

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

    Перед развертыванием экземпляра Keycloak убедитесь, что установлен Alauda Build of Keycloak Operator. См. Install для получения инструкций по установке.

    Развертывание экземпляра Keycloak

    После установки Operator разверните экземпляр Keycloak, создав необходимые ресурсы Kubernetes.

    Шаг 1: Создайте Secret базы данных

    Создайте Secret для хранения учетных данных PostgreSQL:

    kubectl create secret generic keycloak-db-secret \
      --from-literal=username=kc-user \
      --from-literal=password=<your-password> \
      -n <namespace>

    Шаг 2: Разверните PostgreSQL (только для разработки)

    Только для среды разработки

    В следующей конфигурации PostgreSQL используется хранилище emptyDir, которое не сохраняет данные между перезапусками Pod. Для production-среды замените emptyDir на PersistentVolumeClaim.

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: postgresql-db
    spec:
      serviceName: postgres-db
      selector:
        matchLabels:
          app: postgresql-db
      replicas: 1
      template:
        metadata:
          labels:
            app: postgresql-db
        spec:
          containers:
            - name: postgresql-db
              image: quay.io/sclorg/postgresql-15-c9s:latest
              volumeMounts:
                - mountPath: /var/lib/pgsql/data
                  name: data-volume
              env:
                - name: POSTGRESQL_USER
                  valueFrom:
                    secretKeyRef:
                      key: username
                      name: keycloak-db-secret
                - name: POSTGRESQL_PASSWORD
                  valueFrom:
                    secretKeyRef:
                      key: password
                      name: keycloak-db-secret
                - name: POSTGRESQL_DATABASE
                  value: keycloak
          volumes:
            - name: data-volume
              emptyDir: {}
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: postgres-db
    spec:
      selector:
        app: postgresql-db
      ports:
        - port: 5432
          targetPort: 5432

    Шаг 3: Создайте экземпляр Keycloak

    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
    О unsupported.podTemplate

    Поле spec.unsupported.podTemplate объединяет произвольные свойства шаблона Pod Kubernetes непосредственно в управляемый Pod. Это поле официально не поддерживается Keycloak Operator — Operator может переопределить или проигнорировать настройки, заданные здесь, во время согласования. В этом Quick Start оно используется для внедрения security context, который обеспечивает запуск не от root и удаляет Linux capabilities. Для production-развертываний, когда это возможно, предпочитайте использовать специальные поля безопасности Operator.

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

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

    Шаг 4: Проверьте экземпляр

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

    kubectl get keycloak example-kc -n <namespace> -o wide

    Когда в столбце READY отображается true, экземпляр успешно запущен.

    Доступ к Admin Console

    При развертывании Keycloak Operator генерирует случайные имя пользователя и пароль начального администратора и сохраняет их как Secret в том же namespace, что и CR Keycloak. Имя Secret соответствует шаблону <keycloak-cr-name>-initial-admin.

    Получите начальные учетные данные:

    kubectl get secret example-kc-initial-admin -n <namespace> \
      -o jsonpath='{.data.username}' | base64 --decode
    kubectl get secret example-kc-initial-admin -n <namespace> \
      -o jsonpath='{.data.password}' | base64 --decode

    Для доступа в среде разработки используйте перенаправление портов:

    kubectl port-forward service/example-kc-service 8080:8080 -n <namespace>

    Затем откройте Admin Console по адресу http://localhost:8080.

    Дальнейшие шаги

    После запуска экземпляра Keycloak вы можете:

    • Внешне опубликовать его: настройте Ingress and TLS для доступа в production.
    • Создавать экземпляры Keycloak с дополнительными параметрами: см. Create Instance для настройки высокой доступности.