|
|
@@ -1,42 +1,42 @@
|
|
|
-# 预生产分支 → Harbor → ACK 生产 K8S �水线
|
|
|
+# 预生产分��Harbor �ACK 生产 K8S �水�
|
|
|
|
|
|
-Harbor 宿主机:**39.106.135.88**(与 Jenkins �机或� VPC)。ACK 集群:**alien-ack-cluster**(�北2 北京)。
|
|
|
+Harbor 宿主机:**39.106.135.88**(与 Jenkins �机或� VPC)。ACK 集群�*alien-ack-cluster**(�� 北京)�
|
|
|
|
|
|
-本目录支æŒ� **å�•æœ�务å�‘版** 与 **整体/多选å�‘版**(Harbor + ACK);与宿主机 `docker compose` 晋å�‡æµ�水线(`Jenkinsfile-prod-promote-from-uat.groovy`)并行å˜åœ¨ï¼Œäº’ä¸�替代,直到 ACK å…¨é‡�切æµ�。
|
|
|
+本目录支æŒ?**å�•æœ�务å�‘ç‰?* ä¸?**整体/多选å�‘ç‰?*(Harbor + ACK);与宿主机 `docker compose` 晋å�‡æµ�水线(`Jenkinsfile-prod-promote-from-uat.groovy`)并行å˜åœ¨ï¼Œäº’ä¸�替代,直åˆ?ACK å…¨é‡�切æµ�ã€?
|
|
|
|
|
|
---
|
|
|
|
|
|
-## 常�问题(Harbor / 目录结构 / �版粒度)
|
|
|
+## 常�问题(Harbor / 目录结构 / �版粒度�
|
|
|
|
|
|
-### Harbor ���在 Web 界�手工�作?
|
|
|
+### Harbor ���在 Web 界�手工�作�
|
|
|
|
|
|
-**日常�版�需�。** �水线在 `k8s-produ-lib.groovy` 里自动完�:
|
|
|
+**日常�版�需��* �水线在 `k8s-produ-lib.groovy` 里自动完�:
|
|
|
|
|
|
-1. `docker login 39.106.135.88`ï¼ˆå‡æ�® `harbor-robot-alien`)
|
|
|
-2. `docker build` → 打 tag `39.106.135.88/alien/<�务�>:<tag>`
|
|
|
-3. `docker push` 到 Harbor
|
|
|
-4. `kubectl set image` 让 ACK 拉�一 tag
|
|
|
+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,**ä¸�是å�‘版必ç»�æ¥éª¤**。
|
|
|
+è¿�ç»´**仅需一次æ€?*åœ?Harbor Web(或 API)完æˆ�:`alien` 项目ã€�机器人账å�·ã€�(å�¯é€‰ï¼‰é•œåƒ�ä¿�ç•™ç–略。之å�ŽæŸ¥é•œåƒ�/åˆ æ—§ tag/排障时ä»�å�¯æ‰“å¼€ Harbor UIï¼?*ä¸�是å�‘版必ç»�æ¥éª¤**ã€?
|
|
|
|
|
|
-### `_shared/k8s-produ-lib.groovy` 是什么?能�独部署�?
|
|
|
+### `_shared/k8s-produ-lib.groovy` 是什么?能�独部署��
|
|
|
|
|
|
-| 文件 | 角色 | Jenkins Script Path 是�指�它 |
|
|
|
+| 文件 | 角色 | 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` 使用 |
|
|
|
+| `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`。
|
|
|
+�个微��Job �是 **�独一��水线**(例如�构建 gateway);共享库是为��7 份��脚本,**�代�* `Jenkinsfile`�
|
|
|
|
|
|
### 既��独�布,��整体�布?
|
|
|
|
|
|
-| Jenkins Job(建议�) | Script Path | 粒度 |
|
|
|
+| 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) |
|
|
|
+| `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 å�ªæ‰“对应模å�—,适å�ˆçƒä¿®å¤�å�•个æœ�务。
|
|
|
+整体 Job 一æ¬?`mvn package` 打全仓库,å†�æŒ‰é€‰ä¸æœ�务ä¾�次 build/push/deployï¼›å�•æœ�务 Job å�ªæ‰“对应模å�—,适å�ˆçƒä¿®å¤�å�•个æœ�务ã€?
|
|
|
|
|
|
---
|
|
|
|
|
|
@@ -44,20 +44,20 @@ Harbor 宿主机:**39.106.135.88**(与 Jenkins �机或� VPC)。ACK 集
|
|
|
|
|
|
### 1. 是�选「文件夹�?
|
|
|
|
|
|
-**是,推�选「文件夹�。**
|
|
|
+**是,推�选「文件夹��*
|
|
|
|
|
|
-| 类型 | 用途 |
|
|
|
+| 类型 | 用�|
|
|
|
|------|------|
|
|
|
-| **文件夹** | 独立命�空间,其下�建多个 **�水线** 任务,例如 `gateway-k8s`�`store-k8s`,�称�与其他视图�� |
|
|
|
-| **æµ�水线** | çœŸæ£æ‰§è¡Œæž„建的 Job,æ¯�个微æœ�务一æ�¡ |
|
|
|
-| **多分支æµ�水线** | 按 Git 分支自动建å� Job;若预生产固定一æ�¡åˆ†æ”¯ï¼ˆå¦‚ `uat-20260202`),用普通æµ�水线 + å�‚æ•° `GIT_BRANCH` 更简å�• |
|
|
|
+| **文件�* | 独立命�空间,其下�建多�**�水�* 任务,例�`gateway-k8s`�`store-k8s`,�称�与其他视图��|
|
|
|
+| **æµ�æ°´çº?* | çœŸæ£æ‰§è¡Œæž„建çš?Job,æ¯�个微æœ�务一æ�?|
|
|
|
+| **多分支æµ�水线** | æŒ?Git 分支自动建å� Job;若预生产固定一æ�¡åˆ†æ”¯ï¼ˆå¦?`uat-20260202`),用普通æµ�水线 + å�‚æ•° `GIT_BRANCH` 更简å�?|
|
|
|
|
|
|
-建议结构:
|
|
|
+建议结构�
|
|
|
|
|
|
```text
|
|
|
-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
|
|
|
+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/
|
|
|
@@ -66,36 +66,36 @@ alien-cloud-produ-K8S-from-uat/ â†� æ–‡ä»¶å¤¹ï¼ˆä½ æˆªå›¾ä¸çš„å��称)
|
|
|
└── dining-k8s/
|
|
|
```
|
|
|
|
|
|
-**��**在文件夹里�选「文件夹�类型去套微�务——微�务一级用 **�水线** ��。
|
|
|
+**��**在文件夹里�选「文件夹�类型去套微�务——微�务一级用 **�水�* ���
|
|
|
|
|
|
-### 2. 是�用 Pipeline script from SCM?
|
|
|
+### 2. 是��Pipeline script from SCM�
|
|
|
|
|
|
-**�以,且推�。**
|
|
|
+**�以,且推��*
|
|
|
|
|
|
-�个 `*-k8s` �水线 Job �置:
|
|
|
+�个 `*-k8s` �水�Job �置�
|
|
|
|
|
|
-1. **�水线** → **定义**:Pipeline script from SCM
|
|
|
-2. **SCM**:Git,仓库 `http://8.152.195.41:3000/alien/alien_cloud`(与现网一致)
|
|
|
-3. **分支**:`*/uat-20260202` 或 `*/ä½ çš„é¢„ç”Ÿäº§åˆ†æ”¯`
|
|
|
+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 构建æˆ�功ã€�触å�‘
|
|
|
+6. **构建触å�‘**:å�¯é€‰æ‰‹åŠ¨ï¼›ç¨³å®šå�ŽåŠ ã€Œä¸Šæ¸?UAT 构建æˆ�功ã€�触å�?
|
|
|
|
|
|
-与 `Jenkinsfile-prod-promote-from-uat.groovy` 的关系:
|
|
|
+�`Jenkinsfile-prod-promote-from-uat.groovy` 的关系:
|
|
|
|
|
|
-| 维度 | prod-promote-from-uat | produ K8S �水线 |
|
|
|
+| 维度 | 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) |
|
|
|
+| 制� | UAT 目录 jar �生产�compose | Maven jar �镜� �Harbor �ACK |
|
|
|
+| �版粒度 | �Job �whole/single/multi | **whole Job** + **��务一�Job** |
|
|
|
+| �度 | �| 支� Ingress ���度(� README-ACK-GRAY-RELEASE.md�|
|
|
|
|
|
|
---
|
|
|
|
|
|
-## 二�微�务与 Script Path 对照
|
|
|
+## 二�微�务�Script Path 对照
|
|
|
|
|
|
| prodDir | 模� | Jenkins Script Path | ACK Deployment(默认) |
|
|
|
|---------|------|---------------------|-------------------------|
|
|
|
@@ -106,52 +106,53 @@ alien-cloud-produ-K8S-from-uat/ â†� æ–‡ä»¶å¤¹ï¼ˆä½ æˆªå›¾ä¸çš„å��称)
|
|
|
| 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` |
|
|
|
+| **(整体)** | 全部七个 | `docs/jenkins/produ/whole/Jenkinsfile` | �`DEPLOY_MODE` |
|
|
|
|
|
|
**未纳入本目录**(属其他仓库或镜����,需�建 Job):
|
|
|
|
|
|
-- Python:`py_gateway_produ`ã€�`py_contract_produ`ã€�`py_esign_produ`(镜åƒ� `alien_gateway:local` ç‰ï¼‰
|
|
|
+- Python:`py_gateway_produ`ã€�`py_contract_produ`ã€�`py_esign_produ`(镜åƒ?`alien_gateway:local` ç‰ï¼‰
|
|
|
- `xxl-job-admin-produ`�Harbor 自身组件
|
|
|
|
|
|
---
|
|
|
|
|
|
## 三�Jenkins 侧必�项(首次)
|
|
|
|
|
|
-在 Jenkins **全局**或文件夹 **凿�®** ä¸å‡†å¤‡ï¼š
|
|
|
+åœ?Jenkins **全局**或文件夹 **凿�®** ä¸å‡†å¤‡ï¼š
|
|
|
|
|
|
-| 凿�® ID(示例,按实际改 Jenkinsfile 内常é‡�) | 类型 | 用途 |
|
|
|
+| 凿�® ID(示例,按实际改 Jenkinsfile 内常é‡�) | 类型 | 用é€?|
|
|
|
|---------------------------------------------|------|------|
|
|
|
| `zhanghaomimapingzheng` | Username/password | Git 拉� |
|
|
|
| `harbor-robot-alien` | Username/password | `docker login 39.106.135.88` |
|
|
|
-| `ack-kubeconfig-alien` | Secret file | `KUBECONFIG`,内容�自 ACK「连接信��下载 |
|
|
|
+| `ack-kubeconfig-alien` | Secret file | `KUBECONFIG`,内容��ACK「连接信��下�|
|
|
|
|
|
|
-Jenkins 节点需具备:
|
|
|
+Jenkins 节点需具备�
|
|
|
|
|
|
- `mvn`�`docker`(能访问 Harbor 443/80)�`kubectl`
|
|
|
-- 若 Jenkins 在容器内:挂载 `docker.sock`,并将 `kubectl` 与 kubeconfig 挂入或装在镜�内
|
|
|
+- �Jenkins 在容器内:挂�`docker.sock`,并�`kubectl` �kubeconfig 挂入或装在镜�内
|
|
|
|
|
|
-Harbor 上建议建项目 **`alien`**,镜��:`39.106.135.88/alien/<prodDir>:<tag>`。
|
|
|
+Harbor 上建议建项目 **`alien_cloud`**,镜��:`39.106.135.88/alien_cloud/<prodDir>:<tag>`�
|
|
|
+**新建项目与机器人账å�·æ¥éª¤**è§?**[README-HARBOR-SETUP.md](./README-HARBOR-SETUP.md)**ã€?
|
|
|
|
|
|
-基础镜åƒ� `my-openjdk8-ffmpeg:v1` 需 **å…ˆ push 到 Harbor**(如 `39.106.135.88/alien/base/openjdk8-ffmpeg:v1`),并在 Job å�‚æ•° `BASE_IMAGE` ä¸å¡«å†™ï¼Œå�¦åˆ™ ACK 节点拉ä¸�到。
|
|
|
+基础镜åƒ� `my-openjdk8-ffmpeg:v1` 需 **å…?push åˆ?Harbor**(如 `39.106.135.88/alien_cloud/base/openjdk8-ffmpeg:v1`),并在 Job å�‚æ•° `BASE_IMAGE` ä¸å¡«å†™ï¼Œå�¦åˆ™ ACK 节点拉ä¸�到ã€?
|
|
|
|
|
|
---
|
|
|
|
|
|
-## 四�ACK 与�度
|
|
|
+## 四�ACK 与��
|
|
|
|
|
|
-详述��目录 **[README-ACK-GRAY-RELEASE.md](./README-ACK-GRAY-RELEASE.md)**(集群接入�命�空间�Ingress �度�节点 Unknown 排查)。
|
|
|
+详述��目录 **[README-ACK-GRAY-RELEASE.md](./README-ACK-GRAY-RELEASE.md)**(集群接入�命�空间�Ingress �度�节�Unknown 排查)�
|
|
|
|
|
|
-K8S 清�示例:`k8s/examples/`。
|
|
|
+K8S 清�示例:`k8s/examples/`�
|
|
|
|
|
|
---
|
|
|
|
|
|
## 五��水线�数速览
|
|
|
|
|
|
-��务 Jenkinsfile 共用库 `docs/jenkins/produ/_shared/k8s-produ-lib.groovy`,主��数:
|
|
|
+���Jenkinsfile 共用�`docs/jenkins/produ/_shared/k8s-produ-lib.groovy`,主��数:
|
|
|
|
|
|
- `GIT_BRANCH`:预生产分支
|
|
|
-- `IMAGE_TAG`:默认 `build-${BUILD_NUMBER}`,�填 `uat-20260202-123`
|
|
|
-- `DEPLOY_STRATEGY`:`rolling`(直接替�)或 `canary`(Ingress ��)
|
|
|
-- `CANARY_WEIGHT`:�度��百分比(仅 canary)
|
|
|
-- `K8S_NAMESPACE`:默认 `alien-produ`
|
|
|
+- `IMAGE_TAG`:默�`build-${BUILD_NUMBER}`,��`uat-20260202-123`
|
|
|
+- `DEPLOY_STRATEGY`:`rolling`(直接替�)�`canary`(Ingress ���
|
|
|
+- `CANARY_WEIGHT`:�度��百分比(仅 canary�
|
|
|
+- `K8S_NAMESPACE`:默�`alien-produ`
|
|
|
|
|
|
-首次部署�在 ACK 应用 `k8s/examples/namespace.yaml` 与��务 `deployment-*.yaml`(或让�水线 `kubectl apply` 首次全� apply)。
|
|
|
+首次部署�在 ACK 应用 `k8s/examples/namespace.yaml` 与��务 `deployment-*.yaml`(或让�水线 `kubectl apply` 首次全� apply)�
|