内容目录
单机版本
首先创建虚拟网络,以便应用之间通讯:
docker network create apisix-network --driver bridge
创建 etcd 持久化存储卷:
docker volume create --name etcd-data
启动单机版本的 etcd:
docker run -d --name etcd \
--network apisix-network \
--volume=etcd-data:/etcd-data \
-p 2379:2379 \
-p 2380:2380 \
-e ALLOW_NONE_AUTHENTICATION=yes \
-e ETCD_ADVERTISE_CLIENT_URLS=http://127.0.0.1:2379 \
bitnami/etcd:latest
创建 apisix 配置文件
cat << EOF > /data/apisix/apisix_conf/config.yaml
deployment:
role: traditional
role_traditional:
config_provider: etcd
admin:
allow_admin:
- 0.0.0.0/0 # Please set it to the subnet address you obtained.
# If not set, by default all IP access is allowed.
etcd:
host:
- "http://etcd:2379"
prefix: "/apisix"
timeout: 30
EOF
部署 apisix:
docker run -d --name apache-apisix \
--network apisix-network \
-p 9080:9080 \
-p 9180:9180 \
-v /data/apisix/apisix_conf/config.yaml:/usr/local/apisix/conf/config.yaml \
apache/apisix
测试是否有反应:
curl "http://127.0.0.1:9180/apisix/admin/services/" \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1'
编辑 apisix-dashboard 配置文件:
/data/apisix/apisix-dashboard/conf.yaml
配置文件参考:https://github.com/apache/apisix-dashboard/blob/master/api/conf/conf.yaml
conf:
listen:
host: 0.0.0.0
port: 9000
etcd:
endpoints:
- "http://etcd:2379" # etcd 的端口地址
log:
error_log:
level: warn
file_path:
logs/error.log
access_log:
file_path:
logs/access.log
authentication:
secret:
secret # secret for jwt token generation.
expire_time: 3600 # jwt token expire time, in second
users: # yamllint enable rule:comments-indentation
- username: admin # username and password for login <code>manager api</code>
password: admin
- username: user
password: user
plugins:
- api-breaker
- authz-casbin
- authz-casdoor
- authz-keycloak
- aws-lambda
- azure-functions
- basic-auth
# - batch-requests
- clickhouse-logger
- client-control
- consumer-restriction
- cors
- csrf
- datadog
# - dubbo-proxy
- echo
- error-log-logger
# - example-plugin
- ext-plugin-post-req
- ext-plugin-post-resp
- ext-plugin-pre-req
- fault-injection
- file-logger
- forward-auth
- google-cloud-logging
- grpc-transcode
- grpc-web
- gzip
- hmac-auth
- http-logger
- ip-restriction
- jwt-auth
- kafka-logger
- kafka-proxy
- key-auth
- ldap-auth
- limit-conn
- limit-count
- limit-req
- loggly
# - log-rotate
- mocking
# - node-status
- opa
- openid-connect
- opentelemetry
- openwhisk
- prometheus
- proxy-cache
- proxy-control
- proxy-mirror
- proxy-rewrite
- public-api
- real-ip
- redirect
- referer-restriction
- request-id
- request-validation
- response-rewrite
- rocketmq-logger
- server-info
- serverless-post-function
- serverless-pre-function
- skywalking
- skywalking-logger
- sls-logger
- splunk-hec-logging
- syslog
- tcp-logger
- traffic-split
- ua-restriction
- udp-logger
- uri-blocker
- wolf-rbac
- zipkin
- elasticsearch-logge
- openfunction
- tencent-cloud-cls
- ai
- cas-auth
部署管理面板:
docker run -d --name apisix-dashboard \
--network apisix-network \
-p 9000:9000 \
-v /data/apisix/apisix-dashboard/conf.yaml:/usr/local/apisix-dashboard/conf/conf.yaml \
apache/apisix-dashboard:2.15.0-centos
docker-conpose
使用 docker-compose 一键部署,参考:
https://github.com/apache/apisix-docker/blob/master/example/docker-compose.yml
helm
首先创建三个 pv
apiVersion: v1
kind: PersistentVolume
metadata:
name: apisi-etcd-pv0
spec:
capacity:
storage: 8Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
hostPath:
path: /data/etcd0
type: DirectoryOrCreate
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: apisi-etcd-pv1
spec:
capacity:
storage: 8Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
hostPath:
path: /data/etcd1
type: DirectoryOrCreate
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: apisi-etcd-pv2
spec:
capacity:
storage: 8Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
hostPath:
path: /data/etcd2
type: DirectoryOrCreate
---
kubectl -n apisix apply -f pv.yaml
命名空间需要按照实际修改。
安装 apisix
helm install apisix apisix/apisix --create-namespace --namespace apisix
安装 dashboard
helm install apisix-dashboard apisix/apisix-dashboard --create-namespace --namespace apisix
文章评论
kubernetes 可以用这个快速部署 https://github.com/zaunist/apisix-on-kubernetes
国内源比较旧,可以使用
registry.docker.com/apache/apisix:latest
拉取最新的镜像。