Skip to main content

FAQ

How to install APISIX only?#

The Charts will install ETCD 3.4.14 by default. If you want to install Apache APISIX only, please set etcd.enabled=false and set etcd.host={http://your_etcd_address:2379}.

Please use the FQDN or the IP address of the ETCD cluster.

# if etcd export by kubernetes service need spell fully qualified name
helm install apisix apisix/apisix \
--set etcd.enabled=false \
--set etcd.host={http://etcd_node_1:2379\,http://etcd_node_2:2379}

How to install Apache APISIX running in standalone mode?#

Helm chart does not provide a direct way to deploy Apache APISIX running in standalone mode. You can install it in the following manner.

Create a deploy.yaml with the following content.

# deploy.yaml
kind: ConfigMap
apiVersion: v1
metadata:
name: apisix-gw-config.yaml
data:
config.yaml: |
deployment:
role: data_plane
role_data_plane:
config_provider: yaml
---
kind: ConfigMap
apiVersion: v1
metadata:
name: apisix.yaml
data:
apisix.yaml: |
routes:
-
uri: /hi
upstream:
nodes:
"127.0.0.1:1980": 1
type: roundrobin
#END
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: apisix-deployment
spec:
replicas: 1
selector:
matchLabels:
app: apisix-deployment
strategy:
rollingUpdate:
maxSurge: 50%
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
labels:
app: apisix-deployment
spec:
terminationGracePeriodSeconds: 0
containers:
- livenessProbe:
failureThreshold: 3
initialDelaySeconds: 1
periodSeconds: 2
successThreshold: 1
tcpSocket:
port: 9080
timeoutSeconds: 2
readinessProbe:
failureThreshold: 3
initialDelaySeconds: 1
periodSeconds: 2
successThreshold: 1
tcpSocket:
port: 9080
timeoutSeconds: 2
image: "apache/apisix:2.99.0-centos"
imagePullPolicy: IfNotPresent
name: apisix-deployment
# Create a soft link to link the apisix.yaml file in the mount directory to /usr/local/apisix/conf/apisix.yaml.
command: ["sh", "-c","ln -s /apisix-config/apisix.yaml /usr/local/apisix/conf/apisix.yaml && /docker-entrypoint.sh docker-start"]
ports:
- containerPort: 9080
name: "http"
protocol: "TCP"
- containerPort: 9443
name: "https"
protocol: "TCP"

volumeMounts:
- mountPath: /usr/local/apisix/conf/config.yaml
name: apisix-config-yaml-configmap
subPath: config.yaml
# configMap directory mounts
- mountPath: /apisix-config
name: apisix-admin
volumes:
- configMap:
name: apisix-gw-config.yaml
name: apisix-config-yaml-configmap
- configMap:
name: apisix.yaml
name: apisix-admin
---
apiVersion: v1
kind: Service
metadata:
name: apisix-service
spec:
selector:
app: apisix-deployment
ports:
- name: http
port: 9080
protocol: TCP
targetPort: 9080
- name: https
port: 9443
protocol: TCP
targetPort: 9443
type: NodePort

Apply the configuration in deploy.yaml to pod.

kubectl apply -f deploy.yaml
note
  1. The mount of the apisix.yaml file requires the injection of the softlink command, so do not change the configMap mount directory to /usr/local/apisix/conf, to avoid other configuration files being overwritten.
  2. The apisix.yaml is mounted as a configMap, so there will be a delay in reloading the rules after apisix.yaml is changed; please refer to this document for details.

Why get 403 when I access Apache APISIX admin api?#

We can define admin.allow.ipList in CIDR.

helm install apisix apisix/apisix \
--set admin.allow.ipList="10.22.100.12/8" \
--set admin.allow.ipList="172.0.0.0/24"

If you want to allow all IPs for a quick test, just set admin.allow.ipList=""

helm install apisix apisix/apisix \
--set admin.allow.ipList=""

Creating resources such as ApisixRoute has no effect?#

  1. check the synchronization status of CRD
  2. Find the current version of the CRD declaration in https://github.com/apache/apisix-ingress-controller, located in the samples/deploy/crd directory, overwrite and install them.

Note: this operation may result in loss or corruption of historical data. You should back up the relevant data in advance.