# 部署流水线问题排查进度 **日期**: 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 项目中尚未配置**,导致: 1. workflow 的 `docker login` 失败 2. `docker push` 虽然执行但实际未推送成功 3. K8s 拉取镜像时认证失败 → `authorization failed: no basic auth credentials` ## 已完成的修复 ### 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 自动创建 `regcred` secret(使用 Gitea secrets) ### 3. Git 合并冲突 - ⚠️ **lpt-ai** 和 **lpt-be** 的 workflow 文件存在合并冲突标记 - 需要手动解决冲突后重新提交 ## 待完成任务 ### 关键步骤:配置 Gitea Secrets 需要在 Gitea 中为每个项目添加 Registry 认证信息: **项目列表**: - `lpt-fe` - `lpt-be` - `lpt-ai` **操作步骤**(每个项目重复): 1. 进入项目页面(如 `http://192.168.123.199:3000/cat/lpt-fe`) 2. Settings → Secrets 3. 添加两个 secrets: - Name: `REGISTRY_USERNAME`, Value: `admin` - Name: `REGISTRY_PASSWORD`, Value: `` **Registry 密码位置**: `/vol1/1000/registry/auth/htpasswd`(服务器 `192.168.123.199`) ### 次要任务 1. **解决 Git 合并冲突** - 文件: `lpt-ai/.gitea/workflows/deploy.yml:34-40` - 文件: `lpt-be/.gitea/workflows/deploy.yml:43-48` - 清理 `<<<<<<< HEAD`, `=======`, `>>>>>>> xxx` 标记 2. **验证部署** - 配置 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 认证验证 ```bash curl -I http://192.168.123.199:5000/v2/ # 返回: 401 Unauthorized # Www-Authenticate: Basic realm="Registry Realm" ``` ### htpasswd 文件内容 ``` admin:$2y$05$PlW.emHsl9qePGTsQPNAzecCkyNWKFO252EpjcRNV9vC8Z9AkGGZ. ``` ## 下一步操作清单 1. [ ] 在 Gitea 中配置 3 个项目的 Registry secrets 2. [ ] 解决 lpt-ai 和 lpt-be 的 workflow 合并冲突 3. [ ] 提交修复并触发 workflow 4. [ ] 验证部署成功 --- **备注**: 所有 K8s 配置文件修改已完成并推送到 Gitea,核心问题在于 Gitea Secrets 配置缺失。