配置文件参考
ADC 使用单个或多个配置文件在 API7 企业版中定义服务、路由、插件和其他配置。配置文件可以采用 YAML 或 JSON 格式,并作为单一事实来源。
本文档提供了一个示例配置文件,可作为参考来创建你自己的配置文件。有关使用 ADC 配置文件的更多信息,请参见命令参考。
示例配置文件
以下配置文件定义了两个带有多个路由和标签的服务、两个带有 key-authentication 凭证的消费者,以及一个配置了 Prometheus 插件的全局规则:
adc.yaml
services:
- name: mockbin-service
labels:
deployment: staging
upstream:
name: Default Upstream
scheme: http
type: roundrobin
hash_on: vars
nodes:
- host: mock.api7.ai
port: 80
weight: 100
priority: 0
timeout:
connect: 60
send: 60
read: 60
retry_timeout: 0
keepalive_pool:
size: 320
idle_timeout: 60
requests: 1000
pass_host: pass
strip_path_prefix: true
routes:
- uris:
- /api
name: api
methods:
- GET
enable_websocket: false
priority: 0
- name: httpbin-service
labels:
deployment: production
upstream:
name: Default Upstream
scheme: http
nodes:
- host: httpbin.org
port: 80
routes:
- uris:
- /ip
name: ip
labels:
app: catalog
methods:
- GET
- uris:
- /anything/*
name: anything
methods:
- GET
consumers:
- username: Jane
labels:
organisation: ACME
credentials:
- name: primary-key
labels:
type: internal
type: key-auth
config:
key: c1_yN0nCWousUfiR4EzfH
metadata:
namespace: api7
id: 9ae2df2b-e578-46d9-8357-cf7c3cd64d51
- username: John
labels:
organisation: API7.ai
credentials:
- name: primary-key
type: key-auth
config:
key: EIul6mAuYkLJ27on1aJD4
metadata:
namespace: api7
id: c5e8c41e-37c5-4329-87a9-ba2e6916cfe3
global_rules:
prometheus:
_meta:
disable: false
prefer_name: false
配置文件中的变量
ADC 支持几种不同的语法来引用配置文件中的变量,每种语法在运行时从不同的来源解析值。
数据面环境变量
ADC 支持在符合条件的字段中使用 $env:// 语法引用数据面环境变量。这允许从运行中的数据面(网关)实例的环境动态解析配置值。请参见自定义环境变量。
ADC 环境变量
ADC 支持在所有 ADC 字段中使用 ${ENV} 语法引用 ADC 侧的环境变量。这由 ADC 本身解析,通常用于在文件之外进行配置,而不是将值直接硬编码到文件中。
内置变量
ADC 支持在符合条件的字段中使用 \${} 语法配置内置变量。
例如,下面的插件使用内置变量从 HTTP 请求头 X-User-Info 中的值动态决定限流键和限制值:
plugins:
limit-count:
count: "\${http_x_user_info.low_rate_limit}"
key: "\${http_x_user_info.rate_limit_key}"
time_window: 60
key_type: var