在 Kubernetes 上部署开源 AISIX 网关
api7/aisix Helm Chart 用于在 Kubernetes 上部署开源 AISIX 网关。将 controlPlane.enabled 设为 false,无需控制面或网关证书包即可运行网关,并从声明式 resources.yaml 文件加载资源。
服务提供方密钥、模型、调用方 API Key、护栏、MCP 服务器和限流策略均来自该文件;Kubernetes 则管理网关 Pod、Service、健康检查和滚动更新。如果要为 AISIX Cloud 部署网关,请参阅在 Kubernetes 上部署 AISIX 网关。
前置条件
- 一个已配置
kubectl访问权限的 Kubernetes 集群。 - Helm 3 和 Docker。
- 一个上游服务提供方密钥和一个调用方 API Key。示例使用 OpenAI 和模型别名
gpt-4o-mini。
准备集群和凭据
导出示例使用的服务提供方凭据和调用方凭据:
# 替换为你的 OpenAI API Key。
export OPENAI_API_KEY="YOUR_PROVIDER_API_KEY"
# 选择一个调用 AISIX 时使用的 API Key。
export CALLER_API_KEY="YOUR_CALLER_API_KEY"
添加 Chart 仓库、创建命名空间,并将两个凭据存储为 Kubernetes Secret:
helm repo add api7 https://charts.api7.ai
helm repo update
kubectl create namespace aisix
kubectl -n aisix create secret generic openai-credentials \
--from-literal=api-key="$OPENAI_API_KEY"
kubectl -n aisix create secret generic aisix-caller-keys \
--from-literal=my-caller="$CALLER_API_KEY"
选择资源来源
controlPlane.enabled 默认为 true。下方每个完整的 values.yaml 都将其设为 false,并从三种来源中的一种提供 resources.yaml。省略来源或同时设置多个来源都会导致 Helm 渲染失败。
| 配置值 | 文件位置 | 适用场景 |
|---|---|---|
standalone.resources | 作为 YAML Map 内联在 values 中。Chart 将其渲染到自己管理的 Secret。 | 文件与 Release 一同管理。 |
standalone.existingSecret | 位于你创建的 Secret 中,键名为 resources.yaml。 | 文件包含明文凭据,或由其他系统管理其生命周期。 |
standalone.existingConfigMap | 位于你创建的 ConfigMap 中,键名为 resources.yaml。 | 文件中的每个凭据都是 ${VAR} 引用,而非明文值。 |
每个安装示例都只启动一个网关副本,因为限流计数器默认使用每个副本自己的内存。增加副本数前,请先配置共享 Redis。
Chart 会将 standalone.resources 渲染到 Secret 而非 ConfigMap,因为服务提供方密钥属于凭据。凭据仍无需直接写入 values 文件:文件加载时会从容器环境解析 ${VAR} 引用,因此可通过 extraEnvVars 提供取值。参见环境变量插值。
选择下方一种方式。Secret 和 ConfigMap 方式都从相同的文件准备步骤开始。每种方式都会提供完整的 values.yaml,随后继续执行安装网关。
使用内联资源
将以下 Chart 配置保存为 values.yaml。Chart 会把内联资源文档存储到 Secret,而两个凭据值仍保存在前面创建的独立 Secret 中:
replicaCount: 1
image:
repository: ghcr.io/api7/aisix
tag: dev
controlPlane:
enabled: false
standalone:
resources:
_format_version: "1"
provider_keys:
- display_name: openai-main
provider: openai
adapter: openai
api_key: ${OPENAI_API_KEY}
api_base: https://api.openai.com/v1
models:
- display_name: gpt-4o-mini
provider: openai
model_name: gpt-4o-mini
provider_key: openai-main
api_keys:
- display_name: my-caller
key_env: CALLER_API_KEY
allowed_models:
- gpt-4o-mini
extraEnvVars:
- name: OPENAI_API_KEY
valueFrom:
secretKeyRef:
name: openai-credentials
key: api-key
- name: CALLER_API_KEY
valueFrom:
secretKeyRef:
name: aisix-caller-keys
key: my-caller
内联资源并不存在可单独验证的文件。安装前,渲染由 Chart 管理的 Secret,并提取从 values.yaml 组装出的确切资源文档:
helm template aisix api7/aisix --namespace aisix \
-f values.yaml --show-only templates/secret.yaml |
awk '
/^ resources\.yaml: \|$/ { in_resources = 1; next }
in_resources && /^---$/ { exit }
in_resources { sub(/^ /, ""); print }
' > rendered-resources.yaml
使用文档引用的凭据验证渲染结果:
docker run --rm -v "$(pwd):/work:ro" \
-e OPENAI_API_KEY -e CALLER_API_KEY \
--entrypoint /usr/local/bin/aisix ghcr.io/api7/aisix:1.5.0 \
validate --resources /work/rendered-resources.yaml
准备资源文件
Secret 和 ConfigMap 方式都从本地文件开始。按照开源 AISIX 网关快速入门和资源文件参考创建 resources.yaml。保留快速入门中的 ${OPENAI_API_KEY} 和 key_env: CALLER_API_KEY 引用。
使用与网关将接收的环境变量相同的环境变量验证文件。validate 子命令会解析文件,但不会绑定监听器:
docker run --rm -v "$(pwd):/work:ro" \
-e OPENAI_API_KEY -e CALLER_API_KEY \
--entrypoint /usr/local/bin/aisix ghcr.io/api7/aisix:1.5.0 \
validate --resources /work/resources.yaml
使用现有 Secret
将经过验证的文件存入 Secret:
kubectl -n aisix create secret generic aisix-resources \
--from-file=resources.yaml=./resources.yaml
将以下 Chart 配置保存为 values.yaml。extraEnvVars 会让 resources.yaml 引用的凭据变量在网关容器中可用:
replicaCount: 1
image:
repository: ghcr.io/api7/aisix
tag: dev
controlPlane:
enabled: false
standalone:
existingSecret: aisix-resources
extraEnvVars:
- name: OPENAI_API_KEY
valueFrom:
secretKeyRef:
name: openai-credentials
key: api-key
- name: CALLER_API_KEY
valueFrom:
secretKeyRef:
name: aisix-caller-keys
key: my-caller
使用现有 ConfigMap
只有经过验证的 resources.yaml 文件中的每个凭据都是环境变量引用时,才使用 ConfigMap。创建 ConfigMap:
kubectl -n aisix create configmap aisix-resources \
--from-file=resources.yaml=./resources.yaml
将以下 Chart 配置保存为 values.yaml:
replicaCount: 1
image:
repository: ghcr.io/api7/aisix
tag: dev
controlPlane:
enabled: false
standalone:
existingConfigMap: aisix-resources
extraEnvVars:
- name: OPENAI_API_KEY
valueFrom:
secretKeyRef:
name: openai-credentials
key: api-key
- name: CALLER_API_KEY
valueFrom:
secretKeyRef:
name: aisix-caller-keys
key: my-caller