93d20bbb10ea45cc21fdf0530a2bb953a20567d8
ljwx-deploy
GitOps 配置仓库,使用 ArgoCD 管理 Kubernetes 集群。
Start Here
- 新进程/新项目/老项目统一接入入口:
docs/START-HERE-GITOPS-ONBOARDING.md - 自动扫描当前仓库是否已接入:
bash scripts/ops/scan-gitops-context.sh --repo "$PWD"
Platform Blueprint
- 平台装配蓝图入口:
docs/platform/README.md - 平台配置与契约:
platform/ - 集成版本清单:
release/platform-version.yaml - 平台 runbooks:
runbooks/ - 新集群初始化脚本骨架:
scripts/bootstrap/cluster-init.sh
Bid-MVP Factory Control Plane
- 运行验证:
bash scripts/verify.sh - Harbor 复制:
docs/harbor-replication-ghcr.md - Promoter/Argo/Smoke 运维:
docs/ops-runbook.md - 生产集群 Bootstrap(仅生产集群执行):
argocd-apps/02-cluster-prod-bootstrap.yaml - 生产镜像拉取凭据自动同步:
cluster-prod/registry-pull-secret-sync-*.yaml - 回滚演练:
docs/rollback-drill.md - Grafana 可观测看板 + TLS(GitOps):
apps/ljwx-platform-observability/ - Public ingress + Let's Encrypt(Traefik HTTP01,GitOps):
argocd-apps/03-cert-manager-dev.yaml、argocd-apps/04-cert-manager-config-dev.yaml、apps/cert-manager-config/ - 双 k3s 同代码部署规范:
docs/dual-k3s-deployment.md - CronJob secret 示例:
cluster/deploy-promoter-secret.example.yaml - 模板化批量接入:
docs/onboarding-automation.md - 服务仓 enqueue 工作流片段:
docs/service-repo-workflow-snippet.md - Argo dev 自动同步说明:
docs/argocd-dev-autosync.md
目录结构
infra/- 基础设施组件(Gitea Runner 等)argocd-apps/- ArgoCD Application 定义apps/- 应用配置cluster/- 本地/dev 集群级别配置cluster-prod/- 生产集群级别配置(prod app + prod promoter + registry secret sync)platform/- 平台装配、契约、路由、知识治理配置runbooks/- 平台级操作手册
生产发布闭环(当前)
- 服务仓 CI push GHCR(不可变 digest)。
- 本地 Harbor 同步 GHCR;
deploy-promoter仅处理dev,demo。 - smoke 通过后自动给本地 Harbor 打
prod-*标签,并自动 enqueueenv=prod。 - 生产 Harbor 仅同步
prod-*标签。 - 生产集群
deploy-promoter-prod等待生产 Harbor digest 就绪后更新 prod overlay。 registry-pull-secret-sync自动把default/harbor-registry下发到标记 namespace(registry-sync.ljwx.io/enabled=true),避免 prod Pod 拉镜像失败。
组件
Gitea Runner (act_runner)
- 支持 Gitea Actions 的弹性 runner
- 自动伸缩: min 1, max 5 (基于 CPU/Memory)
- 支持 Docker build/push
- Harbor registry: https://harbor.omniverseai.net
配置说明
Runner labels:
ubuntu-latest- Ubuntu 22.04 环境ubuntu-22.04- 明确指定版本docker- 支持 Docker 操作self-hosted- 自托管标识
弹性伸缩策略:
- 最小副本: 1
- 最大副本: 5
- CPU 阈值: 70%
- Memory 阈值: 80%
- 扩容: 30秒内最多翻倍或增加2个
- 缩容: 5分钟稳定期,每分钟最多减少50%
使用方法
1. 获取 Gitea Runner Token
在 Gitea 管理界面:
- 访问: http://192.168.1.83:33000/admin/actions/runners
- 点击"创建新的 Runner"
- 复制生成的 Registration Token
2. 创建 Runner Token Secret
kubectl -n gitea-runner create secret generic runner-token \
--from-literal=token=YOUR_REGISTRATION_TOKEN
3. 部署 Runner
ArgoCD 会自动同步并部署 runner。
4. 在仓库中使用
创建 .gitea/workflows/ci.yml:
name: CI
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest # 或 docker, self-hosted
steps:
- uses: actions/checkout@v4
- name: 构建镜像
run: |
docker build -t myapp:${{ gitea.sha }} .
docker push harbor.omniverseai.net/myproject/myapp:${{ gitea.sha }}
监控
# 查看 runner pods
kubectl -n gitea-runner get pods -w
# 查看 HPA 状态
kubectl -n gitea-runner get hpa
# 查看 runner 日志
kubectl -n gitea-runner logs -l app=gitea-runner -f
故障排查
Runner 未注册
检查 token 是否正确:
kubectl -n gitea-runner get secret runner-token -o jsonpath='{.data.token}' | base64 -d
Runner 无法连接 Gitea
检查网络连通性:
kubectl -n gitea-runner run test --rm -it --image=curlimages/curl -- \
curl http://192.168.1.83:33000
Docker 权限问题
Runner 使用宿主机 Docker socket,确保有权限访问。
Test stability
Languages
Python
71.5%
Shell
23.4%
JavaScript
4.5%
HTML
0.3%
CSS
0.3%