# 플랫폼 PostgreSQL — Keycloak Phase 2 확장
상태: 2026-07-23 실제 적용, `DatabaseRole`·`Database` 모두 `applied=true`
additive NetworkPolicy도 적용됐으며 기존 PostgreSQL Cluster와 Gitea DB 리소스는
교체하지 않았다.
이 디렉터리는 이미 생성된 `platform-postgres` CloudNativePG Cluster에 추가하는
Kustomize 빌드 루트다. 의도적으로 `Cluster` 리소스를 포함하지 않으며 Phase 1
NetworkPolicy를 Patch하거나 교체하지 않는다.
렌더링 결과에는 다음 항목만 있다.
- `DatabaseRole/platform-postgres-keycloak`
- `Database/platform-postgres-keycloak`
- 기존 PostgreSQL operand Pod를 선택하고 `keycloak` namespace에서 TCP 5432로
접근하는 것을 허용하는 `NetworkPolicy/platform-postgres-keycloak-ingress`
NetworkPolicy ingress 규칙은 누적되므로 이 확장은 Phase 1의 CloudNativePG, 동일
Cluster 및 Gitea 허용 규칙을 보존한다. 기존 공통 Cluster에는 Keycloak이 자기
Database에 SCRAM으로 접근하도록 허용하는 정확한 규칙과, 바로 다음에 같은 Role의
다른 모든 Database 접근을 거부하는 HBA 규칙이 이미 있다. 이 확장은 Cluster를
Patch하지 않는다.
이 루트를 적용하기 전에 `platform-data/keycloak-db-credentials`를 생성한다. 유형은
`kubernetes.io/basic-auth`, label은 `cnpg.io/reload: "true"`, username은
`keycloak`이어야 하며 비밀번호는 Git 외부에서 제공한다. 이에 대응하는 애플리케이션
측 사본은 `keycloak` namespace에 둔다.
기본 RootOnly 로드 제한으로 다음과 같이 렌더링한다.
```sh
kubectl kustomize services/platform-postgres-keycloak
```
Phase 1 Cluster가 Ready 상태이고 Keycloak Secret 계약이 존재할 때만 이 확장을
적용한다. 렌더링 결과에 `Cluster` 리소스가 없어야 한다.
## 공식 참고 문서
-
-
-