3.2 KiB
3.2 KiB
部署流水线问题排查进度
日期: 2026-07-19
问题概述
K8s 部署时出现 ImagePullBackOff 错误,容器无法拉取私有 Registry 镜像。
根本原因
Docker Registry 认证问题:
- Registry (
192.168.123.199:5000) 需要认证(用户名:admin) - Gitea Actions workflow 使用
secrets.REGISTRY_USERNAME和secrets.REGISTRY_PASSWORD - 这两个 secrets 在 Gitea 项目中尚未配置,导致:
- workflow 的
docker login失败 docker push虽然执行但实际未推送成功- K8s 拉取镜像时认证失败 →
authorization failed: no basic auth credentials
- workflow 的
已完成的修复
1. Gitea Actions 配置修复(已推送)
- ✅ lpt-fe: 修复
github.sha→gitea.sha - ✅ lpt-be: 修复
github.sha→gitea.sha,kubectl 版本改为v1.30.0 - ✅ lpt-ai: 修复
github.sha→gitea.sha,kubectl 版本改为v1.30.0
2. K8s Deployment 修复(已推送)
- ✅ 所有 Deployment YAML 添加
imagePullSecrets: [name: regcred] - ✅ workflow 自动创建
regcredsecret(使用 Gitea secrets)
3. Git 合并冲突
- ⚠️ lpt-ai 和 lpt-be 的 workflow 文件存在合并冲突标记
- 需要手动解决冲突后重新提交
待完成任务
关键步骤:配置 Gitea Secrets
需要在 Gitea 中为每个项目添加 Registry 认证信息:
项目列表:
lpt-felpt-belpt-ai
操作步骤(每个项目重复):
- 进入项目页面(如
http://192.168.123.199:3000/cat/lpt-fe) - Settings → Secrets
- 添加两个 secrets:
- Name:
REGISTRY_USERNAME, Value:admin - Name:
REGISTRY_PASSWORD, Value:<htpasswd 对应的明文密码>
- Name:
Registry 密码位置: /vol1/1000/registry/auth/htpasswd(服务器 192.168.123.199)
次要任务
-
解决 Git 合并冲突
- 文件:
lpt-ai/.gitea/workflows/deploy.yml:34-40 - 文件:
lpt-be/.gitea/workflows/deploy.yml:43-48 - 清理
<<<<<<< HEAD,=======,>>>>>>> xxx标记
- 文件:
-
验证部署
- 配置 secrets 后触发一次提交
- 检查 workflow 日志中
docker login和docker push是否成功 - 检查 K8s Pod 是否正常启动:
kubectl get pods -n lpt
其他发现的问题(非紧急)
Jenkins 流水线(lpt-fe, lpt-be)
- 硬编码镜像标签(
0.0),无法追溯版本 - lpt-be 健康检查时间过短(5秒),Spring Boot 启动通常需要 10-30 秒
- lpt-be Docker 网络配置可能冲突
流水线通用问题
- 缺少镜像清理机制
- 缺少部署失败回滚机制
技术细节
Registry 认证验证
curl -I http://192.168.123.199:5000/v2/
# 返回: 401 Unauthorized
# Www-Authenticate: Basic realm="Registry Realm"
htpasswd 文件内容
admin:$2y$05$PlW.emHsl9qePGTsQPNAzecCkyNWKFO252EpjcRNV9vC8Z9AkGGZ.
下一步操作清单
- 在 Gitea 中配置 3 个项目的 Registry secrets
- 解决 lpt-ai 和 lpt-be 的 workflow 合并冲突
- 提交修复并触发 workflow
- 验证部署成功
备注: 所有 K8s 配置文件修改已完成并推送到 Gitea,核心问题在于 Gitea Secrets 配置缺失。