README.md 7.4 KB

预生产分??Harbor ?ACK 生产 K8S 流水?

Harbor 宿主机:39.106.135.88(与 Jenkins 同机或同 VPC)。ACK 集群?*alien-ack-cluster**(华? 北京)?

本目录支?单服务发?* ?整体/多选发?*(Harbor + ACK);与宿主机 docker compose 晋升流水线(Jenkinsfile-prod-promote-from-uat.groovy)并行存在,互不替代,直?ACK 全量切流?


常见问题(Harbor / 目录结构 / 发版粒度?

Harbor 要不要在 Web 界面手工操作?

*日常发版不需要? 流水线在 k8s-produ-lib.groovy 里自动完成:

  1. docker login 39.106.135.88(凭?harbor-robot-alien?
  2. docker build ??tag 39.106.135.88/alien_cloud/<服务?:<tag>
  3. docker push ?Harbor
  4. kubectl set image ?ACK 拉同一 tag

运维仅需一次?*?Harbor Web(或 API)完成:alien 项目、机器人账号、(可选)镜像保留策略。之后查镜像/删旧 tag/排障时仍可打开 Harbor UI?*不是发版必经步骤?

_shared/k8s-produ-lib.groovy 是什么?能单独部署吗?

文件 角色 Jenkins Script Path 是否指向?
produ/<服务>/Jenkinsfile 入口(Jenkins 只认这个名字? **?*,每?Job 指向各自路径
_shared/k8s-produ-lib.groovy **共享函数?*(checkout、mvn、Harbor、kubectl? **?*,由入口 load '.../k8s-produ-lib.groovy' 引用
_shared/service-registry.groovy 七个服务列表 + whole/multi 筛? 否,?whole/Jenkinsfile 使用

每个微服?Job 仍是 单独一条流水线(例如只构建 gateway);共享库是为避?7 份重复脚本,*不代? Jenkinsfile?

既要单独发布,又要整体发布?

Jenkins Job(建议名? Script Path 粒度
gateway-k8s ?dining-k8s docs/jenkins/produ/<prodDir>/Jenkinsfile 仅该服务(Maven -pl alien-xxx?
alien-cloud-k8s-whole docs/jenkins/produ/whole/Jenkinsfile whole / single / multi(参?DEPLOY_MODE,语义同 prod-promote?

整体 Job 一?mvn package 打全仓库,再按选中服务依次 build/push/deploy;单服务 Job 只打对应模块,适合热修复单个服务?


一、Jenkins 任务如何组织(对应你截图中的「新建任务」)

1. 是否选「文件夹」?

*是,推荐选「文件夹」?

类型 用?
*文件? 独立命名空间,其下可建多?*流水? 任务,例?gateway-k8sstore-k8s,名称可与其他视图重?
*流水? 真正执行构建?Job,每个微服务一?
多分支流水线 ?Git 分支自动建子 Job;若预生产固定一条分支(?uat-20260202),用普通流水线 + 参数 GIT_BRANCH 更简?

建议结构?

alien-cloud-produ-K8S-from-uat/     ?文件夹(你截图中的名称)
├── alien-cloud-k8s-whole/          ?流水线,Script Path: docs/jenkins/produ/whole/Jenkinsfile(整?多选)
├── gateway-k8s/                    ?流水线,Script Path: docs/jenkins/produ/gateway/Jenkinsfile
├── store-k8s/
├── second-k8s/
├── store-platform-k8s/
├── lawyer-k8s/
├── job-k8s/
└── dining-k8s/

不要在文件夹里再选「文件夹」类型去套微服务——微服务一级用 *流水? 即可?

2. 是否?Pipeline script from SCM?

*可以,且推荐?

每个 *-k8s 流水?Job 配置?

  1. 流水?* ?定义**:Pipeline script from SCM
  2. SCM:Git,仓?http://8.152.195.41:3000/alien/alien_cloud(与现网一致)
  3. 分支*/uat-20260202 ?*/你的预生产分支
  4. Script Path(按服务不同):

    • gateway:docs/jenkins/produ/gateway/Jenkinsfile
    • store:docs/jenkins/produ/store/Jenkinsfile
    • ?见下?
  5. 凭据zhanghaomimapingzheng(与 UAT 流水线一致)

  6. 构建触发:可选手动;稳定后加「上?UAT 构建成功」触?

?Jenkinsfile-prod-promote-from-uat.groovy 的关系:

维度 prod-promote-from-uat produ K8S 流水?
制品 UAT 目录 jar ?生产?compose Maven jar ?镜像 ?Harbor ?ACK
发版粒度 ?Job ?whole/single/multi whole Job + 每服务一?Job
灰度 ? 支持 Ingress 权重灰度(见 README-ACK-GRAY-RELEASE.md?

二、微服务?Script Path 对照

prodDir 模块 Jenkins Script Path ACK Deployment(默认)
gateway alien-gateway docs/jenkins/produ/gateway/Jenkinsfile gateway
store alien-store docs/jenkins/produ/store/Jenkinsfile store
second alien-second docs/jenkins/produ/second/Jenkinsfile second
store-platform alien-store-platform docs/jenkins/produ/store-platform/Jenkinsfile store-platform
lawyer alien-lawyer docs/jenkins/produ/lawyer/Jenkinsfile lawyer
job alien-job docs/jenkins/produ/job/Jenkinsfile job
dining alien-dining docs/jenkins/produ/dining/Jenkinsfile dining
(整体) 全部七个 docs/jenkins/produ/whole/Jenkinsfile ?DEPLOY_MODE

未纳入本目录(属其他仓库或镜像名不同,需另建 Job):

  • Python:py_gateway_produpy_contract_produpy_esign_produ(镜?alien_gateway:local 等)
  • xxl-job-admin-produ、Harbor 自身组件

三、Jenkins 侧必配项(首次)

?Jenkins 全局或文件夹 凭据 中准备:

凭据 ID(示例,按实际改 Jenkinsfile 内常量) 类型 用?
zhanghaomimapingzheng Username/password Git 拉取
harbor-robot-alien Username/password docker login 39.106.135.88
ack-kubeconfig-alien Secret file KUBECONFIG,内容来?ACK「连接信息」下?

Jenkins 节点需具备?

  • mvndocker(能访问 Harbor 443/80)、kubectl
  • ?Jenkins 在容器内:挂?docker.sock,并?kubectl ?kubeconfig 挂入或装在镜像内

Harbor 上建议建项目 alien_cloud,镜像名:39.106.135.88/alien_cloud/<prodDir>:<tag>? 新建项目与机器人账号步骤?README-HARBOR-SETUP.md?

基础镜像 my-openjdk8-ffmpeg:v1?push ?Harbor(如 39.106.135.88/alien_cloud/base/openjdk8-ffmpeg:v1),并在 Job 参数 BASE_IMAGE 中填写,否则 ACK 节点拉不到?


四、ACK 与灰?

详述见同目录 README-ACK-GRAY-RELEASE.md(集群接入、命名空间、Ingress 灰度、节?Unknown 排查)?

K8S 清单示例:k8s/examples/?


五、流水线参数速览

各服?Jenkinsfile 共用?docs/jenkins/produ/_shared/k8s-produ-lib.groovy,主要参数:

  • GIT_BRANCH:预生产分支
  • IMAGE_TAG:默?build-${BUILD_NUMBER},可?uat-20260202-123
  • DEPLOY_STRATEGYrolling(直接替换)?canary(Ingress 权重?
  • CANARY_WEIGHT:灰度流量百分比(仅 canary?
  • K8S_NAMESPACE:默?alien-produ

首次部署前在 ACK 应用 k8s/examples/namespace.yaml 与各服务 deployment-*.yaml(或让流水线 kubectl apply 首次全量 apply)?