安装 APISIX
Apache APISIX 是一个动态、实时、高性能的 API 网关。它是 Apache 软件基金会的顶级项目。
你可以使用 APISIX API 网关作为流量入口来处理所有业务数据。它提供的功能包括动态路由、动态上游、动态证书、A/B 测试、金丝雀发布、蓝绿发布、限流限速、抵御恶意攻击、指标监控、监控报警、服务可观测性、服务治理等。
此外,该项目还提供 APISIX Ingress Controller,这是一个开源 Ingress Controller,允许你管理进入 Kubernetes 集群中运行服务的外部客户端流量。APISIX Ingress Controller 根据请求的 URL 路径或主机名将传入流量路由到特定服务。
本教程介绍了两种安装方法,供你快速开始使用 APISIX:
- 使用快速启动脚本在 Docker 中启动 APISIX。
- 在 kind Kubernetes 集群上启动 APISIX,并使用 APISIX Ingress Controller 管理资源。
前置条件
- Docker
- Kubernetes
获取 APISIX
- Docker
- Kubernetes
为了在本教程中提供更好的体验,Admin API key 的要求默认已关闭。在生产环境中,请务必开启 Admin API 的 API key 要求。
使用快速启动脚本在 Docker 中启动 APISIX:
curl -sL "https://run.api7.ai/apisix/quickstart" | sh
该脚本会在 apisix-quickstart-net Docker 网络中启动两个 Docker 容器:apisix-quickstart 和 etcd-quickstart,其中 etcd 用于存储 APISIX 配置。
一旦 APISIX 准备就绪,你应该会看到以下消息:
✔ APISIX is ready!
在本节中,你将创建一个 kind 集群并在该集群上启动 APISIX Ingress Controller。
启动 Kind 集群
确保 Docker 正在运行并启动 kind 集群:
kind create cluster
你应该看到以下响应:
Creating cluster "kind" ...
✓ Ensuring node image (kindest/node:v1.30.0) 🖼
✓ Preparing nodes 📦
✓ Writing configuration 📜
✓ Starting control-plane 🕹️
✓ Installing CNI 🔌
✓ Installing StorageClass 💾
Set kubectl context to "kind-kind"
You can now use your cluster with:
kubectl cluster-info --context kind-kind
创建命名空间
创建一个新的命名空间 ingress-apisix:
kubectl create namespace ingress-apisix
你应该看到响应:
namespace/ingress-apisix created
设置首选命名空间
将命名空间设置为 ingress-apisix,以便后续命令无需每次都显式指定命名空间:
kubectl config set-context --current --namespace=ingress-apisix
验证默认命名空间是否已修改:
kubectl config view --minify | grep namespace:
你应该看到命名空间已设置:
namespace: ingress-apisix
安装 APISIX 和 APISIX Ingress Controller
添加 APISIX chart 仓库并更新:
helm repo add apisix https://apache.github.io/apisix-helm-chart \
&& helm repo update
安装 APISIX(以独立的 API 驱动模式)和 APISIX Ingress Controller:
helm install apisix \
--namespace ingress-apisix \
--create-namespace \
--set apisix.deployment.role=traditional \
--set apisix.deployment.role_traditional.config_provider=yaml \
--set etcd.enabled=false \
--set ingress-controller.enabled=true \
--set ingress-controller.config.provider.type=apisix-standalone \
--set ingress-controller.apisix.adminService.namespace=ingress-apisix \
--set ingress-controller.gatewayProxy.createDefault=true \
apisix/apisix
你应该看到显示 APISIX Ingress Controller 已部署的响应:
NAME: apisix
LAST DEPLOYED: Fri Jul 11 16:34:49 2025
NAMESPACE: ingress-apisix
STATUS: deployed
REVISION: 1
TEST SUITE: None
验证安装
- Docker
- Kubernetes
发送请求以查看 APISIX 是否正在运行:
curl -sI "http://127.0.0.1:9080" | grep Server
如果一切正常,你应该看到 APISIX 版本:
Server: APISIX/3.15.0
APISIX 现在已安装并正在运行。
检查 Pod 状态
要验证 APISIX Ingress Controller 是否已安装并正在运行,请检查 pod 的状态:
kubectl get pods
如果一切正常,你应该看到所有 pod 都处于 Running 状态:
NAME READY STATUS RESTARTS AGE
apisix-bffb459b8-rcqz7 1/1 Running 0 2m53s
apisix-ingress-controller-ff66c9585-wlxfh 2/2 Running 0 2m53s
检查 Service 状态
你还可以检查 service 的状态:
kubectl get services
如果一切正常,你应该看到类似于以下的响应:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
apisix-admin ClusterIP 10.96.61.223 <none> 9180/TCP 2m54s
apisix-gateway NodePort 10.96.108.211 <none> 80:30834/TCP 2m54s
apisix-ingress-controller ClusterIP 10.96.249.157 <none> 8080/TCP 2m54s
apisix-ingress-controller-webhook-svc ClusterIP 10.96.161.96 <none> 443/TCP 2m54s
验证已安装的 APISIX 版本
要验证已安装的 APISIX 版本,首先将 apisix-gateway 服务的端口 80 映射到本地机器的端口 9080:
kubectl port-forward svc/apisix-gateway 9080:80 &
然后向网关发送请求:
curl -sI "http://127.0.0.1:9080" | grep Server
如果一切正常,你应该看到 APISIX 版本:
Server: APISIX/3.15.0
如果你想使用负载均衡器在 kind 集群上公开服务,作为端口转发的替代方案,请参阅 kind 负载均衡器文档。
APISIX Ingress Controller 现在已安装并正在运行。
下一步
按照其余的快速入门教程学习并比较配置 APISIX 的不同方法,包括使用:
- Admin API
- Kubernetes Manifest Files
- API Declarative CLI (ADC)
- APISIX Model Context Protocol (APISIX-MCP)
如果你想使用 ADC 声明式地配置 APISIX,或者通过 LLM 模型使用自然语言通过 APISIX-MCP 配置 APISIX,请在访问其他教程之前先访问它们的文档进行安装和设置。
请注意,使用快速启动脚本启动的 APISIX 实例和使用 kind 启动的 APISIX Ingress Controller 实例并未针对生产环境进行优化。有关生产安装,请参阅 生产环境安装选项 以获取更多信息。