跳到主要内容

配置文件

API7 Ingress Controller 和 APISIX Ingress Controller 使用 config.yaml 定义日志级别、领导者选举、可观测性端点、提供者同步、Gateway API 处理和准入 Webhook 等核心设置。控制器在启动时读取该文件。

配置通常存储在 Kubernetes ConfigMap 中,并挂载到控制器 Pod。请更新用于定义 ConfigMap 的清单、Chart values 或生成器,再通过部署工作流应用。避免直接编辑实时 ConfigMap,因为部署工作流可能覆盖该更改。

配置

以下示例展示可用配置字段。示例值为 APISIX Ingress Controller 的默认值;API7 Ingress Controller 的差异在行内注释中标明。只有 config.yaml 省略某字段时,控制器才会应用默认值;文件中显式设置的值优先。

对于 Helm 安装,Chart 会将部分 Chart values 渲染到 config.yaml,因此实际安装值可能与控制器默认值不同。用于配置 Kubernetes 资源或部署行为的 Chart values 并不是 config.yaml 字段。请参阅 Helm Chart,比较 Chart 输入与已安装版本渲染出的控制器配置。

config.yaml
log_level: "info" # Ingress Controller 的日志级别。
# 控制器默认值为 "info"。

controller_name: apisix.apache.org/apisix-ingress-controller # Ingress Controller 的控制器名称,
# 用于在 GatewayClass 中标识控制器。
# 控制器默认值为 "apisix.apache.org/apisix-ingress-controller"。
leader_election_id: "apisix-ingress-gateway-leader" # Ingress Controller 的领导者选举 ID。
# 控制器默认值为 "apisix-ingress-gateway-leader"。
leader_election:
lease_duration: 30s # lease_duration 是非领导者在上次观察到领导权续期后,尝试接管领导权前等待的时长。
renew_deadline: 20s # renew_deadline 是当前领导者放弃前重试刷新领导权的时长。
retry_period: 2s # retry_period 是当前控制器两次操作尝试之间的等待时长。
disable: false # 是否禁用领导者选举。

metrics_addr: ":8080" # 指标端点绑定的地址。
# 控制器默认值为 ":8080"。
enable_server: false # 是否启用调试 API。
# 控制器默认值为 false。
server_addr: ":9092" # 调试 API 地址。控制器默认绑定所有网络接口。
# 启用服务器前,请使用 127.0.0.1:9092 或限制网络访问。

enable_http2: false # 是否为服务器启用 HTTP/2。
# 控制器默认值为 false。

probe_addr: ":8081" # 探针端点绑定的地址。
# 控制器默认值为 ":8081"。

secure_metrics: false # 安全指标配置。
# 控制器默认值为 false。

exec_adc_timeout: 15s # ADC 执行的超时时间。
# 控制器默认值为 15s。

listener_port_match_mode: "off" # 为 HTTPRoute、GRPCRoute、TCPRoute 和 UDPRoute
# 从 Gateway 监听器端口注入 server_port 路由变量的模式。
# - "auto": 当 parentRefs 显式指向监听器(sectionName/port),或匹配到多个监听器端口时注入。
# - "explicit": 仅当 parentRefs 显式指向监听器时注入。
# - "off": 从不注入 server_port 变量。
# 控制器默认值为 "off"。

provider:
type: "apisix" # 提供者类型。
# 对于 APISIX Ingress Controller,值可以是 "apisix" 或 "apisix-standalone"。
# APISIX 控制器默认值为 "apisix"。
# API7 控制器默认值为 "api7ee"。

sync_period: 1h # 两次连续完整同步之间的周期。
# apisix 和 apisix-standalone 要求使用正值。
# APISIX 控制器默认值为 1h。
# API7 控制器默认值为 0s。
init_sync_delay: 20m # 启动协调之前的延迟。
# 控制器默认值为 20m。

webhook:
enable: false # 是否启用 Webhook 服务器。
# 控制器默认值为 false。
tls_cert_file: "tls.crt" # tls_cert_dir 中包含 Webhook 服务器 TLS 证书的文件名。
# 控制器默认值为 "tls.crt"。
tls_key_file: "tls.key" # tls_cert_dir 中包含 Webhook 服务器 TLS 私钥的文件名。
# 控制器默认值为 "tls.key"。
tls_cert_dir: "/certs" # 包含 Webhook 服务器 TLS 证书文件的目录。
# 控制器默认值为 "/certs"。
port: 9443 # Webhook 服务器监听的端口。
# 控制器默认值为 9443。
disable_gateway_api: false # 是否禁用 Gateway API。
# 控制器默认值为 false。