Skip to content

Commit 12c8790

Browse files
authored
docs(docs/sync_apigateway.md): update doc for sync_apigateway (TencentBlueKing#225)
1 parent 9e35d48 commit 12c8790

1 file changed

Lines changed: 74 additions & 47 deletions

File tree

sdks/apigw-manager/docs/sync_apigateway.md

Lines changed: 74 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,25 @@
22

33
SDK 同步网关配置到 API 网关,支持多种方案:
44

5-
- [直接使用 Django Command 同步](./sync-apigateway-with-django.md):此方案适用于 Django 项目;Django 项目,可直接执行 SDK 提供的 Django Command 指令
6-
- [通过镜像方式同步](./sync-apigateway-with-docker.md)此方案适用于非 Django 项目;非 Django 项目无法直接执行 SDK 提供的 Django Command 指令
5+
- [直接使用 Django Command 同步](./sync-apigateway-with-django.md):此方案适用于 `Django 项目`;(可直接执行 SDK 提供的 Django Command 指令)
6+
- [通过镜像方式同步](./sync-apigateway-with-docker.md)此方案适用于 `非 Django 项目`;(无法直接执行 SDK 提供的 Django Command 指令)
77

88
## 1. 准备工作
99

1010
同步网关配置到 API 网关,需要准备网关配置、资源配置、资源文档、自定义同步脚本等数据,可参考目录:
1111

1212
```shell
1313
support-files
14-
├── definition.yaml # 维护网关、环境、资源文档路径、主动授权、发布等配置,但不包含资源配置
15-
├── resources.yaml # 维护资源配置;资源配置可通过 API 网关管理端直接导出,数据量较大,因此单独管理
16-
├── bin
17-
│   └── sync-apigateway.sh # 自定义同步脚本,Django 项目也可以自定义 Django Command
18-
├── bk_apigw_docs_demo.tgz # 资源文档归档文件,可选;可通过 API 网关管理端导出;与资源文档目录 apidocs 二选一
19-
└── apidocs # 资源文档目录,可选;可通过 API 网关管理端导出并解压,或者直接维护 markdown 格式文档文件
20-
├── zh # 中文文档目录
21-
│   └── anything.md
22-
└── en # 英文文档目录
23-
└── anything.md
14+
├── definition.yaml # 维护网关、环境、资源文档路径、主动授权、发布等配置,但不包含资源配置
15+
├── resources.yaml # 维护资源配置;资源配置可通过 API 网关管理端直接导出,数据量较大,因此单独管理
16+
├── bin
17+
│   └── sync-apigateway.sh # 自定义同步脚本,Django 项目也可以自定义 Django Command
18+
├── bk_apigw_docs_demo.tgz # 资源文档归档文件,可选;可通过 API 网关管理端导出;与资源文档目录 apidocs 二选一
19+
└── apidocs # 资源文档目录,可选;可通过 API 网关管理端导出并解压,或者直接维护 markdown 格式文档文件
20+
├── zh # 中文文档目录
21+
│   └── anything.md
22+
└── en # 英文文档目录
23+
└── anything.md
2424
```
2525

2626
### 1.1 definition.yaml
@@ -44,19 +44,21 @@ support-files
4444

4545
definition.yaml 中可以使用 Django 模版语法引用和渲染变量,内置以下变量:
4646

47-
- `settings`:Django 提供的配置对象,优先适合用于使用 Django Command 同步
48-
- `environ`:环境变量,推荐镜像同步方式使用
47+
- `settings`:Django 提供的配置对象,适合用于使用 Django Command 同步
48+
- `environ`:环境变量,适合用于通过镜像方式同步方式使用
4949

5050
推荐在一个文件中统一进行定义,用命名空间区分不同配置间的定义,definition.yaml 样例:
5151

52-
目前有两种配置文件版本:spec_version=1/2,主要区别就是 stage 相关的配置方式上有一些不一样。
53-
新接入系统请使用 spec_version=2,旧有系统如果需要配置多个 stage/配置多个 backend,建议也升级到 spec_version=2 并变更相关 yaml 配置。
54-
区别如下:
55-
spec_version: 1
52+
注意:
53+
54+
- 目前有两种配置文件版本:`spec_version=1/2`, 主要区别是 stage 相关的配置方式上不一样
55+
- 新接入系统请使用 `spec_version=2`
56+
- 旧有系统如果需要配置多个 stage/配置多个 backend,建议也升级到 `spec_version=2` 并变更相关 yaml 配置
57+
58+
> spec_version: 1 (deprecated, 不推荐使用)
5659
5760
```yaml
58-
# definition.yaml 配置文件版本号,必填,固定值 1/2
59-
# 1:key 为 stage; 只支持单个 stage,并且 proxy_http 只能配置一个后端服务
61+
# spec_version: 1 => key 为 stage; 只支持单个 stage,并且 proxy_http 只能配置一个后端服务
6062
spec_version: 1
6163
stage:
6264
name: "prod"
@@ -71,11 +73,10 @@ stage:
7173
weight: 100
7274
```
7375
74-
spec_version: 2
76+
> spec_version: 2 (推荐使用)
7577
7678
```yaml
77-
# definition.yaml 配置文件版本号,必填,固定值 1/2
78-
# 2:key 为 stages; 支持多个 stages,并且每个 stage 可以配置多个 backend 后端服务
79+
# spec_version: 2 => key 为 stages; 支持多个 stages,并且每个 stage 可以配置多个 backend 后端服务
7980
spec_version: 2
8081
stages:
8182
- name: "prod"
@@ -101,13 +102,12 @@ stages:
101102
weight: 100
102103
```
103104
104-
> 📢 注意:如果之前接入过的,建议将 sepc_version 改成 2,并将原先 `stage:{}`改成 `stages: []`
105+
> 📢 注意:如果之前接入过的,建议将 spec_version 改成 2,并将原先 `stage:{}`改成 `stages: []`
105106

106107
整体的样例:
107108

108109
```yaml
109-
# definition.yaml 配置文件版本号,必填,固定值 1/2
110-
spec_version: 2 # 如果之前接入过的,建议将 sepc_version 改成 2,并将原先 stage:改成 stages: []
110+
spec_version: 2 # 如果之前接入过的,建议将 spec_version 改成 2,并将原先 stage:改成 stages: []
111111
112112
# 定义发布内容,用于命令 `create_version_and_release_apigw`,具体生效的环境取决于参数 --stage prod test 等方式来指定
113113
release:
@@ -126,7 +126,7 @@ apigateway:
126126
description_en: "English description"
127127
# 是否公开;公开,则用户可查看资源文档、申请资源权限;不公开,则网关对用户隐藏
128128
is_public: true
129-
# 标记网关为官方网关,网关名需以 `bk-` 开头,可选;非官方网关,可去除此配置
129+
# 标记网关为官方网关,网关名需以 `bk-` 开头,可选;非官方网关,去除此配置
130130
api_type: 1
131131
# 网关维护人员,仅维护人员有管理网关的权限
132132
maintainers:
@@ -237,10 +237,36 @@ resource_docs:
237237

238238
### 1.2 resources.yaml
239239

240-
用于定义资源配置,建议通过网关管理端导出。为了方便用户直接使用网关导出的资源文件,资源定义默认没有命名空间。
240+
用于定义资源配置,建议通过**网关管理端导出**。为了方便用户直接使用网关导出的资源文件,资源定义默认没有命名空间。
241+
242+
- 可以在产品端表单录入所有资源后导出,用于其他环境的自动化注册配置
243+
- [建议] 从程序中直接导出 swagger 或 openapi 定义,然后在网关产品端导入后,根据实际需求调整配置,发布测试确认没问题后,导出资源配置作为其他环境的自动化注册配置
241244

242245
样例可参考:[resources.yaml](../examples/django/use-custom-script/support-files/resources.yaml)
243246

247+
字段配置说明:
248+
249+
```yaml
250+
x-bk-apigateway-resource:
251+
isPublic: true # 是否公开,公开,则用户可查看资源文档、申请资源权限;不公开,则资源对用户隐藏
252+
allowApplyPermission: false # 是否允许用户申请资源权限,允许,则任何蓝鲸应用可在蓝鲸开发者中心申请资源的访问权限;否则,只能通过网关管理员主动授权为某应用添加权限
253+
matchSubpath: false # 匹配所有子路径
254+
backend:
255+
type: HTTP
256+
method: get
257+
path: /anything
258+
matchSubpath: false
259+
timeout: 0
260+
upstreams: {}
261+
transformHeaders: {}
262+
pluginConfigs: [] # 插件配置
263+
authConfig:
264+
appVerifiedRequired: true # 是否开启应用认证,开启后请求方需提供蓝鲸应用身份信息
265+
userVerifiedRequired: false # 是否开启用户认证,请求方需提供蓝鲸用户身份信息
266+
resourcePermissionRequired: false # 是否校验应用权限,开启后,蓝鲸应用需申请资源访问权限; 前提必须开启应用认证;
267+
descriptionEn: # 资源描述的英文翻译
268+
```
269+
244270
> 详细的插件配置见:[插件配置说明](./plugin-use-guide.md)
245271

246272
### 1.3 apidocs(可选)
@@ -271,10 +297,11 @@ resource_docs:
271297
- 网关采用 Jinja 模板 支持文档文件的引用。对于需采用 Jinja 模板渲染的资源文档,需将文件名后缀设置为 .md.j2
272298
- 对于被引用的公共文档片段,文件名可以以下划线(_)开头。
273299

274-
> 网关导入文档时,将分别进入 zh、en 目录,处理中文、英文文档,不同类型的文档,处理方式不同:
275-
> - .md 为后缀的文档,将直接读取文档内容
276-
> - .md.j2 为后缀的文档,将以文档所在目录为基准,采用 Jinja 模板进行渲染
277-
> - 下划线 (_) 开头的文档,将跳过解析,此类文档为公共文档片段,非具体资源的文档
300+
网关导入文档时,将分别进入 zh、en 目录,处理中文、英文文档,不同类型的文档,处理方式不同:
301+
302+
- .md 为后缀的文档,将直接读取文档内容
303+
- .md.j2 为后缀的文档,将以文档所在目录为基准,采用 Jinja 模板进行渲染
304+
- 下划线 (_) 开头的文档,将跳过解析,此类文档为公共文档片段,非具体资源的文档
278305

279306
例如资源 get_user,采用 Jinja 模板渲染时,其文档文件名应为 get_user.md.j2,其引用其它文档示例如下:
280307

@@ -341,22 +368,22 @@ stage:
341368

342369
```yaml
343370
x-bk-apigateway-resource:
344-
isPublic: false
345-
allowApplyPermission: false
346-
matchSubpath: false
347-
backend:
348-
type: HTTP
349-
method: get
350-
path: /anything
371+
isPublic: false
372+
allowApplyPermission: false
351373
matchSubpath: false
352-
timeout: 0
353-
upstreams: {}
354-
transformHeaders: {}
355-
authConfig:
356-
appVerifiedRequired: true
357-
userVerifiedRequired: false
358-
resourcePermissionRequired: false
359-
descriptionEn: anything
374+
backend:
375+
type: HTTP
376+
method: get
377+
path: /anything
378+
matchSubpath: false
379+
timeout: 0
380+
upstreams: {}
381+
transformHeaders: {}
382+
authConfig:
383+
appVerifiedRequired: true
384+
userVerifiedRequired: false
385+
resourcePermissionRequired: false
386+
descriptionEn: anything
360387
```
361388

362389
## 2. 同步方案

0 commit comments

Comments
 (0)