feat: 添加kubernetes部署

This commit is contained in:
2025-12-24 11:49:34 +08:00
parent b97705532e
commit 7f160a8d2a
11 changed files with 958 additions and 2 deletions

112
test/k8s/log-postgres.yaml Normal file
View File

@@ -0,0 +1,112 @@
# Log PostgreSQL StatefulSet for log database
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: log-postgres
namespace: ez-api-test-dev
labels:
app.kubernetes.io/name: ez-api-test-dev
app.kubernetes.io/component: log-postgres
spec:
serviceName: log-postgres
replicas: 1
selector:
matchLabels:
app: log-postgres
# 有状态服务使用 OrderedReady 策略,确保按顺序部署和终止
podManagementPolicy: OrderedReady
# 使用 RollingUpdate 策略partition=0 表示全部更新
updateStrategy:
type: RollingUpdate
rollingUpdate:
partition: 0
template:
metadata:
labels:
app: log-postgres
app.kubernetes.io/name: ez-api-test-dev
app.kubernetes.io/component: log-postgres
spec:
terminationGracePeriodSeconds: 30
containers:
- name: log-postgres
image: postgres:15-alpine
ports:
- containerPort: 5432
name: postgres
env:
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: ez-api-secrets
key: LOG_POSTGRES_USER
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: ez-api-secrets
key: LOG_POSTGRES_PASSWORD
- name: POSTGRES_DB
valueFrom:
configMapKeyRef:
name: ez-api-config
key: LOG_POSTGRES_DB
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
volumeMounts:
- name: log-postgres-data
mountPath: /var/lib/postgresql/data
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "1Gi"
cpu: "500m"
livenessProbe:
exec:
command:
- pg_isready
- -U
- postgres
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 6
readinessProbe:
exec:
command:
- pg_isready
- -U
- postgres
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 5
failureThreshold: 3
volumeClaimTemplates:
- metadata:
name: log-postgres-data
spec:
accessModes: ["ReadWriteOnce"]
# 根据集群配置修改 storageClassName
# storageClassName: "standard"
resources:
requests:
storage: 100Gi # 日志数据库需要更多存储空间
---
# Log PostgreSQL Service (Headless for StatefulSet)
apiVersion: v1
kind: Service
metadata:
name: log-postgres
namespace: ez-api-test-dev
labels:
app.kubernetes.io/name: ez-api-test-dev
app.kubernetes.io/component: log-postgres
spec:
ports:
- port: 5432
targetPort: 5432
name: postgres
clusterIP: None # Headless service for StatefulSet
selector:
app: log-postgres