11.8. 외부 데이터베이스에 연결


keycloak-db-secret YAML 파일을 생성하고 Keycloak CR externalDatabase 속성을 enabled로 설정하여 Operator를 사용하여 외부 PostgreSQL 데이터베이스에 연결할 수 있습니다. 값은 Base64로 인코딩됩니다.

keycloak-db-secret에 대한 YAML 파일의 예

apiVersion: v1
kind: Secret
metadata:
    name: keycloak-db-secret
    namespace: keycloak
stringData:
    POSTGRES_DATABASE: <Database Name>
    POSTGRES_EXTERNAL_ADDRESS: <External Database IP or URL (resolvable by K8s)>
    POSTGRES_EXTERNAL_PORT: <External Database Port>
    POSTGRES_PASSWORD: <Database Password>
    # Required for AWS Backup functionality
    POSTGRES_SUPERUSER: "true"
    POSTGRES_USERNAME: <Database Username>
    SSLMODE: <TLS configuration for the Database connection>
type: Opaque
Copy to Clipboard Toggle word wrap

다음 속성은 데이터베이스의 호스트 이름 또는 IP 주소와 포트를 설정합니다.

  • POSTGRES_EXTERNAL_ADDRESS - IP 주소 또는 외부 데이터베이스의 호스트 이름입니다.
  • POSTGRES_EXTERNAL_PORT - (선택 사항) 데이터베이스 포트입니다.

다른 속성은 호스트 또는 외부 데이터베이스에 대해 동일한 방식으로 작동합니다. 다음과 같이 설정합니다.

  • POSTGRES_DATABASE - 사용할 데이터베이스 이름입니다.
  • POSTGRES_USERNAME - 데이터베이스 사용자 이름
  • POSTGRES_PASSWORD - 데이터베이스 암호
  • POSTGRES_SUPERUSER - 백업을 슈퍼 사용자로 실행해야 하는지 여부를 나타냅니다. 일반적으로 true.
  • SSL_MODE - 외부 PostgreSQL 데이터베이스 연결에서 TLS를 사용할지 여부를 나타냅니다. 가능한 확인

SSL_MODE 가 활성화되면 Operator는 PostgreSQL 데이터베이스에서 사용한 root.crt 를 포함하는 keycloak-db-ssl-cert-secret 이라는 시크릿을 검색합니다. 보안 생성은 선택 사항이며 보안은 데이터베이스의 인증서를 확인하려는 경우에만 사용됩니다(예: SSLMODE: verify-ca). 예를 들면 다음과 같습니다.

Operator에서 사용할 TLS Secret 의 YAML 파일의 예입니다.

apiVersion: v1
kind: Secret
metadata:
  name: keycloak-db-ssl-cert-secret
  namespace: keycloak
type: Opaque
data:
  root.crt: {root.crt base64}
Copy to Clipboard Toggle word wrap

Operator는 keycloak-postgresql 라는 서비스를 생성합니다. 이 서비스는 Operator에서 POSTGRES_EXTERNAL_ADDRESS 콘텐츠를 기반으로 외부 데이터베이스를 노출하도록 구성됩니다. Red Hat Single Sign-On은 이 서비스를 사용하여 데이터베이스에 연결합니다. 즉, 이 서비스를 통해 데이터베이스에 직접 연결하지 않습니다.

Operator는 keycloak-postgresql 라는 서비스를 생성합니다. 이 서비스는 Operator에서 POSTGRES_EXTERNAL_ADDRESS 콘텐츠를 기반으로 외부 데이터베이스를 노출하도록 구성됩니다. Red Hat Single Sign-On은 이 서비스를 사용하여 데이터베이스에 연결합니다. 즉, 이 서비스를 통해 데이터베이스에 직접 연결하지 않습니다.

Keycloak 사용자 정의 리소스에는 외부 데이터베이스 지원을 활성화하기 위해 업데이트가 필요합니다.

외부 데이터베이스를 지원하는 Keycloak 사용자 정의 리소스의 YAML 파일의 예

apiVersion: keycloak.org/v1alpha1
kind: Keycloak
metadata:
  labels:
      app: sso
  name: example-keycloak
  namespace: keycloak
spec:
  externalDatabase:
    enabled: true
  instances: 1
Copy to Clipboard Toggle word wrap

사전 요구 사항

  • keycloak-db-secret 에 대한 YAML 파일이 있습니다.
  • Keycloak 사용자 지정 리소스를 수정하여 externalDatabasetrue 로 설정했습니다.
  • cluster-admin 권한 또는 관리자가 부여한 동등한 수준의 권한이 있어야 합니다.

절차

  1. PostgreSQL 데이터베이스의 시크릿을 찾습니다. oc get secret <secret_for_db> -o yaml. 예를 들면 다음과 같습니다.

    $ oc get secret keycloak-db-secret -o yaml
    apiVersion: v1
    data
      POSTGRES_DATABASE: cm9vdA==
      POSTGRES_EXTERNAL_ADDRESS: MTcyLjE3LjAuMw==
      POSTGRES_EXTERNAL_PORT: NTQzMg==
    Copy to Clipboard Toggle word wrap

    POSTGRES_EXTERNAL_ADDRESS 는 Base64 형식입니다.

  2. secret의 값을 디코딩합니다. echo "<encoded_secret>" | base64 -decode. 예를 들면 다음과 같습니다.

    $ echo "MTcyLjE3LjAuMw==" | base64 -decode
    192.0.2.3
    Copy to Clipboard Toggle word wrap
  3. 디코딩된 값이 데이터베이스의 IP 주소와 일치하는지 확인합니다.

    $ oc get pods -o wide
    NAME                        READY  STATUS    RESTARTS   AGE   IP
    keycloak-0                  1/1    Running   0          13m   192.0.2.0
    keycloak-postgresql-c8vv27m 1/1    Running   0          24m   192.0.2.3
    Copy to Clipboard Toggle word wrap
  4. keycloak-postgresql 가 실행 중인 서비스 목록에 표시되는지 확인합니다.

    $ oc get svc
    NAME                 TYPE       CLUSTER-IP     EXTERNAL-IP  PORT(S)   AGE
    keycloak             ClusterIP  203.0.113.0    <none>       8443/TCP  27m
    keycloak-discovery   ClusterIP  None           <none>       8080/TCP  27m
    keycloak-postgresql  ClusterIP  203.0.113.1    <none>       5432/TCP  27m
    Copy to Clipboard Toggle word wrap

    keycloak-postgresql 서비스는 백엔드의 IP 주소 집합에 요청을 보냅니다. 이러한 IP 주소를 끝점이라고 합니다.

  5. keycloak-postgresql 서비스에서 사용하는 끝점을 보고 데이터베이스에 IP 주소를 사용하는지 확인합니다.

    $ oc get endpoints keycloak-postgresql
    NAME                  ENDPOINTS         AGE
    keycloak-postgresql   192.0.2.3.5432    27m
    Copy to Clipboard Toggle word wrap
  6. Red Hat Single Sign-On이 외부 데이터베이스로 실행되고 있는지 확인합니다. 이 예에서는 모든 항목이 실행 중임을 보여줍니다.

    $ oc get pods
    NAME                        READY  STATUS    RESTARTS   AGE   IP
    keycloak-0                  1/1    Running   0          26m   192.0.2.0
    keycloak-postgresql-c8vv27m 1/1    Running   0          36m   192.0.2.3
    Copy to Clipboard Toggle word wrap
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동