--- title: "通过 INFINI Console 集中管理 INFINI Gateway 配置" date: 2025-03-16 lastmod: 2025-03-16 description: "通过 INFINI Console 可以便捷管理多个 Gateway 实例的配置,无需手动登录多台服务器修改。配置变更后,Console 下发更新,Gateway 自动同步并应用新配置,提升运维效率。" tags: ["Gateway", "Console"] summary: "之前有做过介绍实现 INFINI Gateway 配置动态加载,这是一个 Gateway 实例的操作,直接在服务器上修改配置文件。如果有多个 Gateway 实例需要调整,登录多台主机修改配置文件就有些繁琐,有没有简便的方法呢? 答案是: 当然有! INFINI Gateway 有配套的管理页面,那就是 INFINI Console。 Gateway 注册到 Console 后,就可以在如下的页面上进行管理。 其中 Config 可以查看到当前 Gateway 的配置。 当然不止有查看功能,也可以在这里修改配置,然后下发给 Gateway。 要实现这一功能,需要有相应的配置。 需要将下发的配置进行存储(存到 Console 的系统集群索引 .infini_configs 中) PUT .infini_configs/_doc/gateway_proxy_yml { "payload": { "content": """ entry: - name: my_es_entry enabled: true router: my_router max_concurrency: 200000 network: binding: 0.0.0.0:8000 flow: - name: simple_flow filter: - http: schema: https host: 192.168.0.102:9200 router: - name: my_router default_flow: simple_flow""", "version": 1, "name": "gateway_proxy." --- 之前有做过介绍实现 INFINI Gateway [配置动态加载](./gateway-auto-reload-config.md),这是一个 Gateway 实例的操作,直接在服务器上修改配置文件。如果有多个 Gateway 实例需要调整,登录多台主机修改配置文件就有些繁琐,有没有简便的方法呢? 答案是: 当然有! INFINI Gateway 有配套的管理页面,那就是 [INFINI Console](https://docs.infinilabs.com/console/main/)。 Gateway 注册到 Console 后,就可以在如下的页面上进行管理。 {{% load-img "/img/blog/2025/use-console-manage-gateway-config/01.png" "" %}} 其中 Config 可以查看到当前 Gateway 的配置。 {{% load-img "/img/blog/2025/use-console-manage-gateway-config/02.png" "" %}} 当然不止有查看功能,也可以在这里修改配置,然后下发给 Gateway。 要实现这一功能,需要有相应的配置。 1. 需要将下发的配置进行存储(存到 Console 的系统集群索引 .infini_configs 中) ``` PUT .infini_configs/_doc/gateway_proxy_yml { "payload": { "content": """ entry: - name: my_es_entry enabled: true router: my_router max_concurrency: 200000 network: binding: 0.0.0.0:8000 flow: - name: simple_flow filter: - http: schema: https host: 192.168.0.102:9200 router: - name: my_router default_flow: simple_flow""", "version": 1, "name": "gateway_proxy.yml" }, "metadata": { "labels": { "instance": "_all" }, "category": "app_settings", "name": "gateway" }, "id": "gateway_proxy_yml" } ``` | 字段 | 是否必须 | 说明 | | ----------------- | -------- | --------------------------------------------------------------- | | payload.content | 是 | 具体的 Gateway 配置 | | payload.version | 是 | 当前配置的版本,用于确认是否同步配置 | | payload.name | 是 | 配置下发后落地的文件名 | | metadata.labels | 是 | 配置标签,instance: \_all 表明所有 Gateway 实例都可以同步该配置 | | metadata.category | 是 | 配置属于应用配置,Gateway 应填写 app_settings | | metadata.name | 是 | 配置属于哪类应用,可选 gateway、agent | | id | 是 | 配置 ID | 2. 配置 Gateway ```yaml env: CONFIG_SERVER: http://192.168.0.102:9000 path.data: data path.logs: log path.configs: config # directory of additional gateway configurations configs: auto_reload: true # set true to auto reload gateway configurations #for managed client's setting managed: true # managed by remote servers panic_on_config_error: false #ignore config error interval: "10s" servers: # config servers - $[[env.CONFIG_SERVER]] soft_delete: false max_backup_files: 5 api: enabled: true network: binding: 0.0.0.0:2900 ``` 配置中心参数详情请查阅[文档](https://docs.infinilabs.com/gateway/main/zh/docs/references/config/#configs)。 3. 创建额外配置存储目录并启动 Gateway。 ```bash mkdir config ./gateway-mac-amd64 ``` {{% load-img "/img/blog/2025/use-console-manage-gateway-config/03.png" "" %}} 从日志中,可以看到 Gateway 已经注册到配置管理,获取到 gateway_proxy.yml,然后配置重新加载。 通过 Console 的 Gateway 配置管理页面查看下发的配置: {{% load-img "/img/blog/2025/use-console-manage-gateway-config/04.png" "" %}} 在页面上调整配置,点击 Save 保存。 {{% load-img "/img/blog/2025/use-console-manage-gateway-config/05.png" "" %}} 注:更新完配置后,需同时增大配置的版本号(MANAGED_CONFIG_VERSION)。 从 Gateway 日志中可以看到,配置文件进行了同步并应用。 {{% load-img "/img/blog/2025/use-console-manage-gateway-config/06.png" "" %}}