Files
goalfylearning-admin/k8s

Goalfymax Admin K8s 部署文档

本目录包含将 Goalfymax Admin 服务部署到 Kubernetes 集群的所有必要文件。

文件说明

  • Dockerfile - Docker 镜像构建文件(位于项目根目录)
  • configmap.yaml - 应用配置文件 ConfigMap
  • deployment.yaml - Kubernetes Deployment 部署清单
  • service.yaml - Kubernetes Service 服务清单ClusterIP供集群内部访问

部署步骤

1. 构建 Docker 镜像

# 在项目根目录执行
docker build -t your-registry/goalfymax-admin:latest .

# 推送到镜像仓库
docker push your-registry/goalfymax-admin:latest

2. 修改配置

在部署前,请根据实际环境修改以下配置:

configmap.yaml

  • 数据库连接信息 (database.dsn)
  • Redis 地址 (redis.addr)
  • Gateway URL
  • SSO 配置
  • OSS 配置
  • 其他敏感信息建议使用 Secret 管理

deployment.yaml

  • 镜像地址 (image)
  • 资源限制 (resources)
  • 副本数量 (replicas)
  • 如使用私有镜像仓库,取消注释 imagePullSecrets

3. 部署到 K8s

# 确保命名空间存在
kubectl create namespace goalfyagent --dry-run=client -o yaml | kubectl apply -f -

# 应用 ConfigMap
kubectl apply -f k8s/configmap.yaml

# 部署应用
kubectl apply -f k8s/deployment.yaml

# 创建 Service
kubectl apply -f k8s/service.yaml

4. 验证部署

# 查看 Pod 状态
kubectl get pods -n goalfyagent -l app=goalfymax-admin

# 查看日志
kubectl logs -n goalfyagent -l app=goalfymax-admin -f

# 查看 Service
kubectl get svc -n goalfyagent goalfymax-admin

# 查看详细信息
kubectl describe deployment -n goalfyagent goalfymax-admin

服务访问

本服务为后端服务,使用 ClusterIP 类型,仅供集群内部访问:

同命名空间访问:

http://goalfymax-admin:8087

跨命名空间访问:

http://goalfymax-admin.goalfyagent.svc.cluster.local:8087

测试连接:

kubectl run -it --rm debug --image=alpine --restart=Never -n goalfyagent -- \
  wget -qO- http://goalfymax-admin:8087/health

健康检查

应用提供 /health 端点用于健康检查Deployment 中已配置 liveness 和 readiness 探针会自动使用此端点。

安全建议

  1. 敏感信息管理将数据库密码、API 密钥等敏感信息存储在 Kubernetes Secret 中

    kubectl create secret generic goalfymax-admin-secret \
      --from-literal=db-password='your-password' \
      --from-literal=redis-password='your-redis-password'
    
  2. RBAC 配置:为应用创建专用的 ServiceAccount 并配置最小权限

  3. 网络策略:使用 NetworkPolicy 限制 Pod 的网络访问

  4. 镜像安全:定期扫描镜像漏洞,使用可信镜像源

监控和日志

  • 应用日志输出到 stdout可通过 kubectl logs 查看
  • 建议集成 Prometheus 进行监控
  • 建议使用 EFK/ELK 栈收集和分析日志

故障排查

# 查看 Pod 事件
kubectl describe pod <pod-name>

# 查看配置是否正确挂载
kubectl exec <pod-name> -- cat /app/etc/config-prod.yaml

# 查看环境变量
kubectl exec <pod-name> -- env

# 进入容器调试
kubectl exec -it <pod-name> -- sh

扩缩容

# 手动扩容
kubectl scale deployment goalfymax-admin --replicas=5

# 配置 HPA需要 metrics-server
kubectl autoscale deployment goalfymax-admin \
  --cpu-percent=80 \
  --min=2 \
  --max=10