跳到主要内容

私有化安装

使用 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 安装默认使用主机端口 543280807944。请确保这些端口可用,或配置其他主机端口映射。有关各组件、流量方向和建议暴露方式,请参阅端口参考

控制面组件

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

服务作用
cp-api管理组织、环境、资源和计费
dp-manager签发 mTLS 证书,并向数据面下发配置
dashboardWeb 控制台
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-apidp-managerdashboard 和 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-apidp-managerdashboard 分配应用持久卷。容器镜像和平台管理的日志应计入 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 \
--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

Chart 源码和 values 发布在 api7/api7-helm-chart 仓库中。

注意

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

离线内网部署

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

离线包 URL 会解析到当前版本。

在可以访问互联网的机器上下载部署包:

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

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

tar -xzf aisix-self-hosted-offline-latest.tar.gz
cd aisix-self-hosted
./run.sh

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

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

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

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

配置外部访问

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

对于 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 端点,可以是 DNS 名称或 IP 地址。

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

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

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

可信登录源站

登录请求只接受来自可信浏览器源站的请求。公开 base URL 的源站会自动受信任,同时还会信任它的 loopback 对应源站。这个对应源站会在 localhost127.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 打开控制台。对于新安装,请创建第一个管理员账号,然后登录。当前运行的控制面版本显示在控制台左侧导航底部,格式可能是以下两种之一:

  • v0.5.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": "0.5.0",
"cp_commit": "2f9c1ab"
}

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

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

下一步

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

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