跳到主要内容
版本:1.4.0

私有化安装

使用 Docker Compose、Helm 或离线包,在你运营的基础设施中安装 AISIX Cloud 控制面。本指南可帮助你选择安装方式、配置控制面端点,并验证持久化环境。

该安装方式提供与混合云相同的 AISIX Cloud 控制面工作流,包括资源管理、网关证书签发、用量上报和预算执行。控制面服务及数据均保留在你的基础设施中,也支持完全隔离的内网环境。

如需在本地评估环境中继续创建网关资源并发送第一个 AI 请求,请改用 AISIX Cloud 快速入门。

许可证

在生产环境中使用 AISIX Cloud 控制面和控制台需要商业许可证。在生产环境中部署控制面前,请联系 API7,或发送邮件至 support@api7.ai。

规划安装​

根据目标基础设施和网络访问条件选择安装方式:

安装方式目标环境要求
Docker Compose可访问互联网的主机Docker 与 Docker Compose V2、cURL、tar、OpenSSL,以及 Docker Hub 访问权限
Helm可访问互联网的 Kubernetes 集群可用的集群、Helm、kubectl、OpenSSL,以及 Docker Hub 访问权限
离线部署包隔离网络主机Docker 与 Docker Compose V2、tar、OpenSSL,以及一台可以使用 cURL 下载部署包的独立机器

使用 Helm 安装前,请决定使用随包提供的 PostgreSQL 数据库,还是使用外部数据库。Docker Compose 和离线部署包只能使用随包数据库。还需确定公开控制台源站,以及网关要连接的数据面管理器端点。可以先使用本地端点,但在公开控制台或连接其他主机上的网关前,必须配置外部可访问的端点。

Docker Compose 安装默认使用主机端口 5432、8080 和 7944。请确保这些端口可用,或配置其他主机端口映射。有关各组件、流量方向和建议暴露方式,请参阅端口参考。

控制面组件​

每种安装方式都包含以下组件:

服务作用
cp-api管理组织、环境、资源和计费
dp-manager签发 mTLS 证书,并向数据面下发配置
dashboard浏览器界面
PostgreSQL 数据库共享数据存储。Docker Compose 部署包包含该数据库;Helm 可以部署随包数据库,也可以连接外部数据库。

在线和离线 Docker Compose 部署包必须使用随包提供的 PostgreSQL 16 服务。Helm Chart 可以部署随包 PostgreSQL 实例,也可以连接外部数据库。

AISIX 网关会作为数据面单独运行。数据面通过 mTLS 主动连接到 dp-manager,因此控制面不需要能够入站访问网关主机。

生产资源建议基线​

以下规格是部署容量规划的起点,不是 Helm Chart 的默认值、基准测试得出的容量保证,也不是适用于所有工作负载的固定下限。请根据请求速率、请求大小、已启用的流量控制策略、网关数量以及数据保留期进行压测和调整。

在主机上使用 Docker Compose 或离线部署包​

在线和离线 Docker Compose 部署包提供单主机拓扑,为每个控制面服务启动一个实例,并启动随包提供的 PostgreSQL 数据库。它们不支持外部数据库,也不提供控制面高可用所需的多主机服务配置。

生产高可用拓扑请使用 Helm,并参考下表中的实例数量。使用部署包进行评估或非高可用部署时,可以根据 CPU、内存和存储列评估主机容量。

CPU、内存和主机存储均按单个组件实例计算。主机存储是为操作系统、容器镜像、平台管理的日志以及组件本地状态预留的主机容量,不等同于 Kubernetes 中应用持久卷的容量要求。

组件CPU内存主机存储起始实例数规划说明
AISIX 网关4 核8–16 GB≥100 GB每个网关部署至少 3 个,建议 4 个随业务流量横向扩容。高并发或启用安全护栏时从 16 GB 起步;需要保留更长时间的本地日志时,请增加主机存储。
cp-api2 核4 GB≥32 GB2无状态服务;将实例分布到不同故障域。
dp-manager2–4 核4–8 GB≥32 GB2处理配置下发、网关心跳和用量遥测;将实例分布到不同故障域。
dashboard1–2 核2 GB≥20 GB2无状态服务;将实例分布到不同故障域。
PostgreSQL4–8 核16 GB≥500 GB NVMe SSD3关键有状态组件。生产高可用部署请使用 Helm 并连接外部 PostgreSQL,例如主节点、同步备用节点和异步备用节点;根据用量事件保留期调整存储。
Prometheus(可选)4 核8–16 GB≥200 GB1–2用于存储监控指标。如果已有 Prometheus,可以复用现有部署;根据指标基数和保留期调整存储。

对于较小的部署,cp-api、dp-manager、dashboard 和 Prometheus 可以共用服务器,但必须为各组件预留 CPU 和内存,并为容器镜像和日志提供充足的共享主机容量。请将冗余实例分布到不同故障域。

使用 Helm 部署到 Kubernetes​

在 Kubernetes 中,应按副本规划计算资源,并根据性能与容量规划单独扩缩 AISIX 网关。下列规格是容量规划建议,而不是 Chart 的默认值:

组件单个副本 CPU单个副本内存起始副本数规划说明
AISIX 网关4 核8–16 GB每个网关部署至少 3 个,建议 4 个随业务流量横向扩容。高并发或启用安全护栏时从 16 GB 起步。
cp-api2 核4 GB2无状态服务;将副本分布到不同故障域。
dp-manager2–4 核4–8 GB2将副本分布到不同故障域。
dashboard1–2 核2 GB2无状态服务;将副本分布到不同故障域。
PostgreSQL4–8 核16 GB生产高可用部署使用 3 个使用外部高可用部署,而不是随包提供的单实例数据库。
Prometheus(可选)4 核8–16 GB1–2如果已有 Prometheus,可以复用现有部署。

默认控制面 Helm Chart 不会为 cp-api、dp-manager 或 dashboard 分配应用持久卷。容器镜像和平台管理的日志应计入 Kubernetes Node 容量,而不是作为每个 Pod 的存储要求。如果在集群中自行运行 PostgreSQL 或 Prometheus,请单独配置持久存储,并根据用量事件或指标的保留期调整容量。建议起始容量为每个 PostgreSQL 实例至少 500 GB NVMe SSD、每个 Prometheus 实例至少 200 GB。

不要将 PostgreSQL 副本放在同一故障域或共享存储上。随附的 PostgreSQL Chart 默认不提供复制数据库,请参阅高可用和外部数据库。

这些规格只覆盖 AISIX 组件,不包含上游模型推理所需的计算资源。AISIX 本身不要求 GPU。

在线部署​

当主机或 Kubernetes 集群可以从 Docker Hub 拉取容器镜像时,请使用在线部署。

Docker Compose​

对于已安装 Docker 和 Docker Compose 的主机,可以使用 Docker Compose。快速开始 URL 会解析到当前版本。

curl -sL "https://run.api7.ai/aisix-self-hosted/quickstart" | bash

该脚本会将部署包下载到 ./aisix-self-hosted,生成包含新密钥的 .env 文件,从 Docker Hub 拉取镜像,并启动整个服务栈。

该部署包使用随包提供的 PostgreSQL 服务,不支持外部数据库。如需使用外部 PostgreSQL 数据库,请使用 Helm 安装。

启动完成后,脚本会打印控制台 URL。默认 URL 为 http://localhost:8080。打开控制台后,创建第一个管理员账号。

在 ./aisix-self-hosted 中管理服务栈:

./aisix-self-hosted/run.sh logs # 查看日志
./aisix-self-hosted/run.sh stop # 停止容器
./aisix-self-hosted/run.sh down # 删除容器(保留数据卷)

使用 Helm 部署到 Kubernetes​

在 Kubernetes 中,可以从 API7 Helm 仓库安装 chart:

helm repo add api7 https://charts.api7.ai
helm repo update

helm install aisix-cp api7/aisix-cp --version 1.4.0 \
--set secrets.masterKey="$(openssl rand -base64 32)" \
--set secrets.betterAuthSecret="$(openssl rand -base64 48)" \
--set postgresql.auth.password="$(openssl rand -hex 24)" \
--set postgresql.auth.postgresPassword="$(openssl rand -hex 24)"

默认情况下,该 chart 会部署核心 API、数据面管理器、控制台和随包 PostgreSQL 实例。

配置外部访问前,可以通过端口转发访问 cp-api 服务:

kubectl port-forward svc/aisix-cp-api 8080:8080

端口转发运行期间,打开 http://localhost:8080。

如果需要使用已有数据库,请先准备外部数据库和角色。然后将 postgresql.builtin=false 禁用随包 PostgreSQL chart,并配置顶层 externalDatabase.* 值。

如需在本地查看默认 chart values,请运行:

helm show values api7/aisix-cp --version 1.4.0

Chart 源码和软件包发布在 aisix-cp-1.4.0 Helm Chart Release 中。

注意

请使用 URL 安全的数据库密码,例如通过 openssl rand -hex 24 生成的值。数据库密码会嵌入 postgres:// 连接 URL 中,openssl rand -base64 生成的 +、/、= 等字符可能破坏 URL。

在 OpenShift 上安装​

控制面 chart 可以在 OpenShift 默认的 restricted-v2 security context constraint 下安装。既不需要自定义 SCC,也不需要 anyuid,更不需要改动 ServiceAccount。

chart 不再固定 UID。cp-api、dp-manager 和控制台——即 api、dpm、ui 三个 values 键——的默认 Pod 安全上下文就是:

podSecurityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault

restricted-v2 会从命名空间分配的区间中提供 runAsUser 和 fsGroup,Pod 接受它分配的任意值。容器镜像声明了数字用户——cp-api 和 dp-manager 为 10001,控制台为 1001——并且每个进程读取的文件都对所有用户可读,因此以任意 UID 搭配 GID 0 运行都可以。运行期唯一被写入的路径是 emptyDir 卷。

容器级安全上下文未作改动,本身已满足 restricted-v2:丢弃全部 capability、只读根文件系统、禁止提权。

如果需要改为固定 UID——集群不分配 UID,或者需要匹配已有卷的属主——把这些 values 设置回去即可:

helm install aisix-cp api7/aisix-cp --version 1.4.0 \
--set api.podSecurityContext.runAsUser=10001 \
--set api.podSecurityContext.runAsGroup=101 \
--set api.podSecurityContext.fsGroup=101

在 OpenShift 上使用随包 PostgreSQL​

随包 PostgreSQL chart 是控制面 chart 的依赖 chart,它仍然固定了自己的 UID,而依赖 chart 的 values 无法由父 chart 按条件控制。请在安装时关闭它的两个安全上下文,让 restricted-v2 分配 UID:

helm install aisix-cp api7/aisix-cp --version 1.4.0 \
--set postgresql.primary.podSecurityContext.enabled=false \
--set postgresql.primary.containerSecurityContext.enabled=false

除此之外不需要关闭其他项。特别是不要关闭 postgresql.shmVolume——那样 PostgreSQL 会退回到容器运行时提供的 64 MB /dev/shm,并行查询会以 could not resize shared memory segment 失败。

使用外部数据库可以完全回避这个问题,并且无论在哪个平台上都是推荐的生产选择。

离线内网部署​

对于无法访问镜像仓库的主机,请使用离线部署包。离线包包含所有必要的容器镜像。

离线包按 CPU 架构分别发布,下面的 URL 已固定到本版本。请选择与离线主机匹配的那一个:

主机架构下载 URL
linux/amd64(x86-64)https://run.api7.ai/aisix-self-hosted/aisix-self-hosted-offline-1.4.0-linux-amd64.tar.gz
linux/arm64(AArch64)https://run.api7.ai/aisix-self-hosted/aisix-self-hosted-offline-1.4.0-linux-arm64.tar.gz

同一目录下还发布有 aisix-self-hosted-offline-latest-linux-<arch>.tar.gz 形式的 latest URL,它会解析到当前版本。

在可以访问互联网的机器上,下载与目标主机架构匹配的部署包:

curl -fSL "https://run.api7.ai/aisix-self-hosted/aisix-self-hosted-offline-1.4.0-linux-amd64.tar.gz" \
-o aisix-self-hosted-offline-1.4.0-linux-amd64.tar.gz

不带架构后缀的 aisix-self-hosted-offline-1.4.0.tar.gz 仍然继续发布,内容就是 linux/amd64 包,因此已有自动化无需改动。linux/arm64 包只通过它自己的后缀提供。

将部署包传输到离线主机,然后启动服务栈:

tar -xzf aisix-self-hosted-offline-1.4.0-linux-amd64.tar.gz
cd aisix-self-hosted
./run.sh

每个部署包只内置一个架构的镜像。如果包与主机不匹配,run.sh 会在加载任何镜像之前停下并打印正确的下载 URL——而不是让 docker load 成功之后,每个容器再以 exec format error 退出。

启动脚本会执行以下操作:

  • 加载内置容器镜像
  • 生成包含新密钥的 .env 文件
  • 在无互联网访问的情况下启动服务栈
  • 启动完成后打印控制台 URL

默认控制台 URL 为 http://localhost:8080。

随包提供的 cp-api 镜像包含模型价格快照,因此用量和预算计算可以在不访问 models.dev 的情况下初始化。启动时,控制面会从该快照加载模型价格目录。如需改用在线价格,请在 .env 中设置 AISIX_CLOUD_PRICESYNC_SNAPSHOT_PATH=,并重新创建 api 服务。价格目录相关设置请参见私有化部署配置。

配置外部访问​

在将控制面暴露到本地主机或集群之外之前,请配置公开控制台源站和数据面管理器端点。

对于 Docker Compose,请编辑 .env。对于 Kubernetes,请更新 Helm values:

Docker Compose 设置Helm value作用
AISIX_CLOUD_PUBLIC_BASE_URLapi.publicBaseURL面向浏览器的源站,例如 https://aisix.example.com。登录时会根据该值校验 session issuer。
AISIX_CLOUD_DPMGR_BASE_URLapi.dpmgrBaseURL数据面主机连接的 dp-manager mTLS 端点,需为 https:// URL,例如 https://dpm.example.com:7944,其主机可以是 DNS 名称或 IP 地址。

Helm Chart 默认将 cp-api、dp-manager 和控制台服务公开为 ClusterIP。请通过适合你集群的网络端点公开 cp-api 和 dp-manager 服务,再将上述两个公开访问参数设置为相应端点。

dp-manager 同样会接收数据面管理器端点,并为该主机签发 TLS 服务器证书。数据面会根据实际连接的地址验证证书,因此该值必须与生成的网关安装命令中的端点一致,无论该端点是 DNS 名称还是 IP 地址。

更新这些设置后,请使用 docker compose up -d 重新创建相关服务,或使用 helm upgrade 应用变更。

可信登录源站​

登录请求只接受来自可信浏览器源站的请求。公开 base URL 的源站会自动受信任,同时还会信任它的 loopback 对应源站。这个对应源站会在 localhost 与 127.0.0.1 之间替换主机名,并保持与 base URL 相同的 scheme 和端口。例如,base URL 为 http://localhost:8080 时,也会信任 http://127.0.0.1:8080,但不会信任不同端口或不同 scheme。这样,本地安装可以从两个地址访问。无需在其它位置再次列出 base URL。

只有当控制台会通过多个主机名访问时,才需要设置额外源站,例如第二个域名或反向代理地址。请以逗号分隔:

Docker Compose 设置Helm value作用
AISIX_TRUSTED_ORIGINSui.extraEnvVars(添加 AISIX_TRUSTED_ORIGINS)额外登录源站,逗号分隔,例如 https://console.example.com,https://admin.example.com。

来自不可信源站的登录尝试会失败,并提示该地址不允许访问。将该源站添加到这里即可解决。

更多 Docker Compose 环境变量和 Helm values 请参见私有化部署配置。

验证安装​

通过配置的公开 base URL 打开控制台。对于新安装,请创建第一个管理员账号,然后登录。当前运行的控制面版本显示在控制台左侧导航底部,格式可能是以下两种之一:

  • v1.0.0:正式发布版本。查看发布说明或报告问题时,请提供该版本号。
  • dev · 2f9c1ab:基于开发提交而非正式版本构建,并以缩写的提交 SHA 标识。

无需登录也可以获取相同的版本标识,便于在脚本和支持信息包中使用。如果控制面不是通过默认本地地址访问,请将下面的 base URL 替换为实际公开 base URL:

AISIX_CP_URL="http://localhost:8080"

curl -sS "${AISIX_CP_URL}/api/config/public" | jq '{cp_version, cp_commit}'
{
"cp_version": "1.0.0",
"cp_commit": "a22f131"
}

API 返回的正式版本号不包含控制台所显示的 v 前缀。如果构建并非来自正式版本,cp_version 为空;无论哪种情况,cp_commit 都会标识对应提交。

各网关实例的版本会单独显示在环境的 Data planes 视图中,因为控制面和网关分别升级。

下一步​

创建或选择目标组织和环境,然后连接 AISIX 网关,签发网关证书并接入提供流量服务的运行时。

使用私有化部署配置参考查看 Docker Compose 环境变量和 Helm values。