Files
lpt-fe/DEPLOYMENT_PROGRESS.md
T

3.2 KiB
Raw Blame History

部署流水线问题排查进度

日期: 2026-07-19

问题概述

K8s 部署时出现 ImagePullBackOff 错误,容器无法拉取私有 Registry 镜像。

根本原因

Docker Registry 认证问题

  • Registry (192.168.123.199:5000) 需要认证(用户名: admin
  • Gitea Actions workflow 使用 secrets.REGISTRY_USERNAMEsecrets.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.shagitea.sha
  • lpt-be: 修复 github.shagitea.shakubectl 版本改为 v1.30.0
  • lpt-ai: 修复 github.shagitea.shakubectl 版本改为 v1.30.0

2. K8s Deployment 修复(已推送)

  • 所有 Deployment YAML 添加 imagePullSecrets: [name: regcred]
  • workflow 自动创建 regcred secret(使用 Gitea secrets

3. Git 合并冲突

  • ⚠️ lpt-ailpt-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 logindocker 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.

下一步操作清单

  1. 在 Gitea 中配置 3 个项目的 Registry secrets
  2. 解决 lpt-ai 和 lpt-be 的 workflow 合并冲突
  3. 提交修复并触发 workflow
  4. 验证部署成功

备注: 所有 K8s 配置文件修改已完成并推送到 Gitea,核心问题在于 Gitea Secrets 配置缺失。