Add platform infrastructure configuration
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
# 플랫폼 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` 리소스가 없어야 한다.
|
||||
|
||||
## 공식 참고 문서
|
||||
|
||||
- <https://cloudnative-pg.io/docs/1.30/declarative_role_management/>
|
||||
- <https://cloudnative-pg.io/docs/1.30/declarative_database_management/>
|
||||
- <https://kubernetes.io/docs/concepts/services-networking/network-policies/>
|
||||
@@ -0,0 +1,22 @@
|
||||
apiVersion: postgresql.cnpg.io/v1
|
||||
kind: DatabaseRole
|
||||
metadata:
|
||||
name: platform-postgres-keycloak
|
||||
labels:
|
||||
app.kubernetes.io/name: keycloak
|
||||
app.kubernetes.io/component: database-role
|
||||
spec:
|
||||
cluster:
|
||||
name: platform-postgres
|
||||
name: keycloak
|
||||
comment: Keycloak identity provider database owner
|
||||
login: true
|
||||
superuser: false
|
||||
createdb: false
|
||||
createrole: false
|
||||
replication: false
|
||||
bypassrls: false
|
||||
connectionLimit: 50
|
||||
passwordSecret:
|
||||
name: keycloak-db-credentials
|
||||
databaseRoleReclaimPolicy: retain
|
||||
@@ -0,0 +1,14 @@
|
||||
apiVersion: postgresql.cnpg.io/v1
|
||||
kind: Database
|
||||
metadata:
|
||||
name: platform-postgres-keycloak
|
||||
labels:
|
||||
app.kubernetes.io/name: keycloak
|
||||
app.kubernetes.io/component: database
|
||||
spec:
|
||||
cluster:
|
||||
name: platform-postgres
|
||||
name: keycloak
|
||||
owner: keycloak
|
||||
ensure: present
|
||||
databaseReclaimPolicy: retain
|
||||
@@ -0,0 +1,15 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
|
||||
namespace: platform-data
|
||||
|
||||
resources:
|
||||
- keycloak-database-role.yaml
|
||||
- keycloak-database.yaml
|
||||
- platform-postgres-keycloak-network-policy.yaml
|
||||
|
||||
labels:
|
||||
- pairs:
|
||||
app.kubernetes.io/part-of: platform
|
||||
app.kubernetes.io/managed-by: kustomize
|
||||
includeSelectors: false
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: NetworkPolicy
|
||||
metadata:
|
||||
name: platform-postgres-keycloak-ingress
|
||||
labels:
|
||||
app.kubernetes.io/name: platform-postgres
|
||||
app.kubernetes.io/component: database-network-policy
|
||||
spec:
|
||||
podSelector:
|
||||
matchLabels:
|
||||
cnpg.io/cluster: platform-postgres
|
||||
policyTypes:
|
||||
- Ingress
|
||||
ingress:
|
||||
- from:
|
||||
- namespaceSelector:
|
||||
matchLabels:
|
||||
kubernetes.io/metadata.name: keycloak
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: 5432
|
||||
@@ -0,0 +1,5 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
|
||||
resources:
|
||||
- base
|
||||
Reference in New Issue
Block a user