Files
ez-api/test/k8s/ez-api.yaml
2025-12-24 11:49:34 +08:00

198 lines
5.8 KiB
YAML

# ez-api Deployment (Control Plane)
apiVersion: apps/v1
kind: Deployment
metadata:
name: ez-api
namespace: ez-api-test-dev
labels:
app.kubernetes.io/name: ez-api-test-dev
app.kubernetes.io/component: ez-api
spec:
replicas: 1
selector:
matchLabels:
app: ez-api
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
template:
metadata:
labels:
app: ez-api
app.kubernetes.io/name: ez-api-test-dev
app.kubernetes.io/component: ez-api
spec:
# 等待依赖服务就绪
initContainers:
- name: wait-for-postgres
image: busybox:1.36
command:
- sh
- -c
- |
until nc -z postgres 5432; do
echo "Waiting for postgres..."
sleep 2
done
echo "PostgreSQL is ready!"
- name: wait-for-log-postgres
image: busybox:1.36
command:
- sh
- -c
- |
until nc -z log-postgres 5432; do
echo "Waiting for log-postgres..."
sleep 2
done
echo "Log PostgreSQL is ready!"
- name: wait-for-redis
image: busybox:1.36
command:
- sh
- -c
- |
until nc -z redis 6379; do
echo "Waiting for redis..."
sleep 2
done
echo "Redis is ready!"
containers:
- name: ez-api
image: harbor.rcfortress.site/library/ez-api:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
name: http
env:
- name: EZ_API_PORT
valueFrom:
configMapKeyRef:
name: ez-api-config
key: EZ_API_PORT
# PostgreSQL DSN
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: ez-api-secrets
key: POSTGRES_USER
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: ez-api-secrets
key: POSTGRES_PASSWORD
- name: POSTGRES_DB
valueFrom:
configMapKeyRef:
name: ez-api-config
key: POSTGRES_DB
- name: EZ_PG_DSN
value: "host=postgres user=$(POSTGRES_USER) password=$(POSTGRES_PASSWORD) dbname=$(POSTGRES_DB) port=5432 sslmode=disable"
# Log PostgreSQL DSN
- name: LOG_POSTGRES_USER
valueFrom:
secretKeyRef:
name: ez-api-secrets
key: LOG_POSTGRES_USER
- name: LOG_POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: ez-api-secrets
key: LOG_POSTGRES_PASSWORD
- name: LOG_POSTGRES_DB
valueFrom:
configMapKeyRef:
name: ez-api-config
key: LOG_POSTGRES_DB
- name: EZ_LOG_PG_DSN
value: "host=log-postgres user=$(LOG_POSTGRES_USER) password=$(LOG_POSTGRES_PASSWORD) dbname=$(LOG_POSTGRES_DB) port=5432 sslmode=disable"
# Redis
- name: EZ_REDIS_ADDR
value: "redis:6379"
- name: EZ_REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: ez-api-secrets
key: REDIS_PASSWORD
- name: EZ_REDIS_DB
valueFrom:
configMapKeyRef:
name: ez-api-config
key: EZ_REDIS_DB
# Admin
- name: EZ_ADMIN_TOKEN
valueFrom:
secretKeyRef:
name: ez-api-secrets
key: EZ_ADMIN_TOKEN
- name: EZ_INTERNAL_STATS_TOKEN
valueFrom:
secretKeyRef:
name: ez-api-secrets
key: EZ_INTERNAL_STATS_TOKEN
# Other configs
- name: EZ_CORS_ALLOW_ORIGINS
valueFrom:
configMapKeyRef:
name: ez-api-config
key: EZ_CORS_ALLOW_ORIGINS
- name: EZ_LOG_RETENTION_DAYS
valueFrom:
configMapKeyRef:
name: ez-api-config
key: EZ_LOG_RETENTION_DAYS
- name: EZ_LOG_MAX_RECORDS
valueFrom:
configMapKeyRef:
name: ez-api-config
key: EZ_LOG_MAX_RECORDS
- name: EZ_LOG_PARTITIONING
valueFrom:
configMapKeyRef:
name: ez-api-config
key: EZ_LOG_PARTITIONING
resources:
requests:
memory: "128Mi"
cpu: "50m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
readinessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 5
failureThreshold: 3
---
# ez-api Service (LoadBalancer)
apiVersion: v1
kind: Service
metadata:
name: ez-api
namespace: ez-api-test-dev
labels:
app.kubernetes.io/name: ez-api-test-dev
app.kubernetes.io/component: ez-api
spec:
type: LoadBalancer
ports:
- port: 8080
targetPort: 8080
protocol: TCP
name: http
selector:
app: ez-api