docs: 保存部署流水线问题排查进度
This commit is contained in:
@@ -0,0 +1,100 @@
|
|||||||
|
# 部署流水线问题排查进度
|
||||||
|
|
||||||
|
**日期**: 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: `<htpasswd 对应的明文密码>`
|
||||||
|
|
||||||
|
**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 配置缺失。
|
||||||
Reference in New Issue
Block a user