在 Kubernetes 上部署 AISIX 网关
使用 api7/aisix Helm Chart 在 Kubernetes 集群中部署、暴露和扩缩 AISIX 网关。网关在你的环境中承载实时 AI 流量,并连接现有 AISIX Cloud 控制面以接收配置。
该 Chart 需要数据面管理器端点,以及为目标环境签发的网关证书包。连接后,网关会从控制面接收模型、调用方 API Key 和策略。
前提条件
- 一个 Kubernetes 集群,已配置
kubectl访问权限并安装 Helm 3。 - 可以访问一个能够签发网关证书的 AISIX Cloud 环境。
- 集群可以通过网络访问 AISIX Cloud 数据面管理器端点。如果使用 On-Premises,请先完成 On-Premises 安 装。
安装 Chart
在控制台中打开目标环境的 Data planes 视图并签发网关证书。Kubernetes (Helm) 标签页会提供下文使用的数据面管理器端点和证书包。本示例还将初始部署固定为一个副本。私钥只显示一次。
将证书包存储在 Secret 中,避免私钥出现在 values 文件中:
kubectl create namespace aisix
kubectl -n aisix create secret generic aisix-gateway-certificate \
--from-file=cert.pem=./cert.pem \
--from-file=key.pem=./key.pem \
--from-file=ca.pem=./ca.pem
使用同一视图中的数据面管理器端点安装 Chart:
helm repo add api7 https://charts.api7.ai
helm repo update
helm install aisix api7/aisix --namespace aisix --version 1.2.0 \
--set controlPlane.baseURL=https://dp-manager.example.com:7944 \
--set controlPlane.certificate.existingSecret=aisix-gateway-certificate \
--set replicaCount=1
网关首次上报心跳后,会出现在环境的 Data planes 视图中。Chart 默认为两个副本,但此初始命令只启动一个副本,因为在配置共享 Redis 之前,限流计数器使用每个副本各自的内存。控制台 Helm 代码片段省略了 replicaCount,因此原样安装会启动两个副本。如上所示,请在配置 Redis 前添加 --set replicaCount=1。增加副本数或启用自动扩缩容器前,请先在副本间共享限流计数器。
每个副本会注册为独立实例,并共享同一个证书。
查看 Chart 接受的所有值:
helm show values api7/aisix --version 1.2.0
Chart 源码和软件包发布在 aisix-1.2.0 Helm Chart Release 中。
暴露网关
Chart 默认为代理创建 ClusterIP 类型的 Service。如需通过云负载均衡器发布:
service:
type: LoadBalancer
port: 80
# 保留客户端源 IP,按模型配置的 IP 允许列表会使用该地址进行匹配。
externalTrafficPolicy: Local
网关默认在容器内绑定端口 3000。Service 可以暴露端口 80 或 443,无需让进程绑定特权容器端口。
只有当网关必须直接监听某个低于 1024 的端口时,才在容器内绑定该端口。发布的镜像以非 root 用户 UID 10001 运行,网关二进制文件具有生效的 CAP_NET_BIND_SERVICE 文件能力:
containerPorts:
proxy: 80
如果你自定义渲染后的 Pod 并丢弃所有 capability,请为 AISIX 容器重新添加 NET_BIND_SERVICE:
spec:
containers:
- name: aisix
securityContext:
capabilities:
drop: ["ALL"]
add: ["NET_BIND_SERVICE"]
Kubernetes Restricted Pod Security Standard 允许此 capability。由于二进制文件的文件 capability 已设置 effective bit,如果运行时阻止授予该 capability,容器可能会因 exec: Operation not permitted 而失败。
只有当网关必须直接绑定节点且集群策略允许时,才使用 hostNetwork 或 hostPort。这些选项会引入节点端口冲突并降低网络隔离;Baseline 和 Restricted Pod Security Standard 也不允许使用它们。
完整的网络暴露和凭证模型请参阅网络与安全。