147 lines
3.4 KiB
Markdown
147 lines
3.4 KiB
Markdown
# Goalfymax Admin K8s 部署文档
|
||
|
||
本目录包含将 Goalfymax Admin 服务部署到 Kubernetes 集群的所有必要文件。
|
||
|
||
## 文件说明
|
||
|
||
- `Dockerfile` - Docker 镜像构建文件(位于项目根目录)
|
||
- `configmap.yaml` - 应用配置文件 ConfigMap
|
||
- `deployment.yaml` - Kubernetes Deployment 部署清单
|
||
- `service.yaml` - Kubernetes Service 服务清单(ClusterIP,供集群内部访问)
|
||
|
||
## 部署步骤
|
||
|
||
### 1. 构建 Docker 镜像
|
||
|
||
```bash
|
||
# 在项目根目录执行
|
||
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
|
||
|
||
```bash
|
||
# 确保命名空间存在
|
||
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. 验证部署
|
||
|
||
```bash
|
||
# 查看 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
|
||
```
|
||
|
||
**测试连接:**
|
||
```bash
|
||
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 中
|
||
```bash
|
||
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 栈收集和分析日志
|
||
|
||
## 故障排查
|
||
|
||
```bash
|
||
# 查看 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
|
||
```
|
||
|
||
## 扩缩容
|
||
|
||
```bash
|
||
# 手动扩容
|
||
kubectl scale deployment goalfymax-admin --replicas=5
|
||
|
||
# 配置 HPA(需要 metrics-server)
|
||
kubectl autoscale deployment goalfymax-admin \
|
||
--cpu-percent=80 \
|
||
--min=2 \
|
||
--max=10
|
||
```
|