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

155 lines
4.5 KiB
YAML

# Balancer Deployment (Data Plane / Gateway)
apiVersion: apps/v1
kind: Deployment
metadata:
name: balancer
namespace: ez-api-test-dev
labels:
app.kubernetes.io/name: ez-api-test-dev
app.kubernetes.io/component: balancer
spec:
replicas: 1
selector:
matchLabels:
app: balancer
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
template:
metadata:
labels:
app: balancer
app.kubernetes.io/name: ez-api-test-dev
app.kubernetes.io/component: balancer
spec:
# 等待 Redis 就绪
initContainers:
- 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: balancer
image: harbor.rcfortress.site/library/balancer:latest
imagePullPolicy: Always
ports:
- containerPort: 8081
name: http
env:
- name: EZ_BALANCER_PORT
valueFrom:
configMapKeyRef:
name: ez-api-config
key: EZ_BALANCER_PORT
# 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
# Log Sink
- name: EZ_BALANCER_LOG_SINK_ENABLED
valueFrom:
configMapKeyRef:
name: ez-api-config
key: EZ_BALANCER_LOG_SINK_ENABLED
- name: EZ_BALANCER_LOG_SINK_BASE_URL
valueFrom:
configMapKeyRef:
name: ez-api-config
key: EZ_BALANCER_LOG_SINK_BASE_URL
- name: EZ_BALANCER_LOG_SINK_TIMEOUT_SECONDS
valueFrom:
configMapKeyRef:
name: ez-api-config
key: EZ_BALANCER_LOG_SINK_TIMEOUT_SECONDS
# Stats Flush
- name: EZ_BALANCER_STATS_FLUSH_ENABLED
valueFrom:
configMapKeyRef:
name: ez-api-config
key: EZ_BALANCER_STATS_FLUSH_ENABLED
- name: EZ_BALANCER_STATS_FLUSH_BASE_URL
valueFrom:
configMapKeyRef:
name: ez-api-config
key: EZ_BALANCER_STATS_FLUSH_BASE_URL
- name: EZ_BALANCER_STATS_FLUSH_TOKEN
valueFrom:
secretKeyRef:
name: ez-api-secrets
key: EZ_BALANCER_STATS_FLUSH_TOKEN
- name: EZ_BALANCER_STATS_FLUSH_INTERVAL_SECONDS
valueFrom:
configMapKeyRef:
name: ez-api-config
key: EZ_BALANCER_STATS_FLUSH_INTERVAL_SECONDS
- name: EZ_BALANCER_STATS_FLUSH_BATCH_SIZE
valueFrom:
configMapKeyRef:
name: ez-api-config
key: EZ_BALANCER_STATS_FLUSH_BATCH_SIZE
- name: EZ_BALANCER_STATS_FLUSH_TIMEOUT_SECONDS
valueFrom:
configMapKeyRef:
name: ez-api-config
key: EZ_BALANCER_STATS_FLUSH_TIMEOUT_SECONDS
resources:
requests:
memory: "128Mi"
cpu: "50m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 8081
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
readinessProbe:
httpGet:
path: /health
port: 8081
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 5
failureThreshold: 3
---
# Balancer Service (LoadBalancer)
apiVersion: v1
kind: Service
metadata:
name: balancer
namespace: ez-api-test-dev
labels:
app.kubernetes.io/name: ez-api-test-dev
app.kubernetes.io/component: balancer
spec:
type: LoadBalancer
ports:
- port: 8081
targetPort: 8081
protocol: TCP
name: http
selector:
app: balancer