APISIX Admin API 实战:Route、Upstream 与 Consumer 管理

来自AI助手的总结
介绍APISIX Admin API及Route等资源的常用管理操作
APISIX Admin API 实战:Route、Upstream 与 Consumer 管理

一、Admin API 描述

Admin API 是一组用于配置 Apache APISIX 路由、上游、服务、SSL 证书等功能的 RESTful API。 你可以通过 Admin API 来获取、创建、更新以及删除资源。同时得益于 APISIX 的热加载能力,资源配置完成后 APISIX 将会自动更新配置,无需重启服务。

官方数据:https://apisix.apache.org/docs/apisix/admin-api/

二、Apisix 组件描述

概念/组件 描述
Route 创建、查询、更新、删除路由规则,定义请求如何映射到对应的上游服务,最后把请求转发给到指定的上游应用。
Upstream 上游的作用是按照配置规则对服务节点进行负载均衡,它的地址信息可以直接配置到路由或服务上。
Service 服务由路由中公共的插件配置、上游目标信息组合而成。服务与路由、上游关联,一个服务可对应一组上游节点、可被多条路由绑定。
Consumer 消费者是路由的消费方,形式包括开发者、最终用户、API 调用等。创建消费者时,需绑定至少一个认证类插件。
Admin API 用户可以通过 Admin API 控制 APISIX 实例。

三、Apisix路由Route

Route 也称之为路由,可以通过定义一些规则来匹配客户端的请求,然后根据匹配结果加载并执行相应 的插件,并把请求转发给到指定 Upstream(上游)。

所有的 Admin API 都采用 Restful 风格,路由资源请求地址为: /apisix/admin/routes/{id}? ttl=0 ,我们可以通过不同的 HTTP 方法来查询、新增、编辑或删除路由资源。

3.1 请求方法

名称 请求 URI 请求 body 描述
GET /apisix/admin/routes 获取资源列表。
GET /apisix/admin/routes/{id} 获取某个 id 的 routes 资源。
PUT /apisix/admin/routes/{id} {…} 根据 id 创建 routes 资源。
POST /apisix/admin/routes {…} id 将会自动生成。创建资源,
DELETE /apisix/admin/routes/{id} 删除指定 routes id 资源。
PATCH /apisix/admin/routes/{id} {…} 标准 PATCH,修改指定 Route 的部 分属性,其他不涉及的属性会原样保 留;如果你需要删除某个属性,可以 将该属性的值设置为 null ;当需要 修改属性的值为数组时,该属性将全量更新。
PATCH /apisix/admin/routes/{id}/{path} {…} SubPath PATCH,通过 {path} 指定Route 要更新的属性,全量更新 该属性的数据,其他不涉及的属性会 原样保留。

3.2 常规查询操作命令

1)首先,需要先获取当前集群中部署 APISIX 的 API-KEY ?

[root@master01 16]# kubectl get configmap apisix -ningress-apisix -oyaml
...
...
        admin_key:
          # admin: can everything for configuration data
          - name: "admin"
            key: <admin-api-key>
            role: admin
          # viewer: only can view configuration data
          - name: "viewer"
            key: <viewer-api-key>
            role: viewer
...
...

2)如何操作基于Kubernetes 的 APISIX 的 Admin API ?


[root@master01 16]# kubectl get svc -ningress-apisix | grep apisix-admin

apisix-admin                               ClusterIP      <apisix-admin-cluster-ip>    <none>        9180/TCP                     6h9m

3)将内部服务通过域名暴漏

[root@master01 16]# vim apisix-admin-ing.yaml
apiVersion: apisix.apache.org/v2
kind: ApisixRoute
metadata:
  name: apisix-admin
  namespace: ingress-apisix
spec:
  http:
    - name: root
      match:
        hosts:
          - apisix-admin.example.com
        paths:
          - '/*'
      backends:
        - serviceName: apisix-admin
          servicePort: 9180
# 应用
[root@master01 16]# kaf apisix-admin-ing.yaml
# 查看
[root@master01 16]# kg -f apisix-admin-ing.yaml
NAME           HOSTS                             URIS     AGE
apisix-admin   ["apisix-admin.example.com"]   ["/*"]   18s

4)测试验证

[root@master01 16]# ping apisix-admin.example.com
PING apisix-admin.example.com (<gateway-ip>) 56(84) bytes of data.
From <gateway-ip> (<gateway-ip>) icmp_seq=1 Destination Port Unreachable
From <gateway-ip> (<gateway-ip>) icmp_seq=2 Destination Port Unreachable
...
...

下面介绍一些常用的流程操作

转换json格式的网址:www.json.cn

1、查询service列表


curl http://apisix-admin.example.com/apisix/admin/services -H 'X-API-KEY: <admin-api-key>'

回显内容


{"total":0,"list":[]}

2、查询route列表


curl http://apisix-admin.example.com/apisix/admin/routes -H 'X-API-KEY: <admin-api-key>'

回显内容


{"total":5,"list":[{"key":"/apisix/routes/1936ab91","value":{"labels":{"managed-by":"apisix-ingress-controller"},"uris":["/apisix/prometheus/metrics"],"status":1,"priority":0,"create_time":1745150648,"upstream_id":"a5f6bfda","update_time":1745150648,"id":"1936ab91","hosts":["metrics.example.com"],"name":"ingress-apisix_metrics-route_metrics-route","desc":"Created by apisix-ingress-controller, DO NOT modify it manually"},"createdIndex":149,"modifiedIndex":149},{"key":"/apisix/routes/50e6793a","value":{"labels":{"managed-by":"apisix-ingress-controller"},"uris":["/tls*","/v1*"],"status":1,"priority":0,"create_time":1745141909,"upstream_id":"2fdb2747","update_time":1745154011,"id":"50e6793a","hosts":["whoami.example.com"],"name":"default_whoami-apisix_whoami-root","plugins":{"proxy-rewrite":{"regex_uri":["^/v1(/|$)(.*)","/"],"use_real_request_uri_unsafe":false},"redirect":{"ret_code":302,"append_query_string":false,"regex_uri":["^(/tls)$","/"],"encode_uri":false},"basic-auth":{"hide_credentials":false}},"desc":"Created by apisix-ingress-controller, DO NOT modify it manually"},"createdIndex":68,"modifiedIndex":160},{"key":"/apisix/routes/51e11523","value":{"labels":{"managed-by":"apisix-ingress-controller"},"uris":["/*"],"status":1,"priority":0,"create_time":1745154778,"upstream_id":"ff9d87bf","update_time":1745154778,"id":"51e11523","hosts":["apisix-admin.example.com"],"name":"ingress-apisix_apisix-admin_root","desc":"Created by apisix-ingress-controller, DO NOT modify it manually"},"createdIndex":162,"modifiedIndex":162},{"key":"/apisix/routes/bc3a78e6","value":{"labels":{"managed-by":"apisix-ingress-controller"},"uris":["/*"],"status":1,"priority":0,"create_time":1745133027,"upstream_id":"65e49f92","update_time":1745133027,"id":"bc3a78e6","hosts":["apisix.example.com"],"name":"ingress-apisix_dashboard_root","desc":"Created by apisix-ingress-controller, DO NOT modify it manually"},"createdIndex":17,"modifiedIndex":17},{"key":"/apisix/routes/f5505b85","value":{"labels":{"managed-by":"apisix-ingress-controller"},"uris":["/httpbin*","/spec.json"],"status":1,"priority":0,"create_time":1745135568,"upstream_id":"5ce57b8e","update_time":1745151611,"id":"f5505b85","hosts":["httpbin.example.com"],"name":"default_default-route_httpbin-route","plugins":{"proxy-rewrite":{"regex_uri":["^/httpbin(/|$)(.*)","/"],"use_real_request_uri_unsafe":false}},"desc":"Created by apisix-ingress-controller, DO NOT modify it manually"},"createdIndex":19,"modifiedIndex":150}]}

3、查询upstream列表


curl http://apisix-admin.example.com/apisix/admin/upstreams -H 'X-API-KEY: <admin-api-key>'

回显内容


{"total":5,"list":[{"key":"/apisix/upstreams/2fdb2747","value":{"pass_host":"pass","labels":{"managed-by":"apisix-ingress-controller"},"create_time":1745141909,"type":"roundrobin","scheme":"http","update_time":1745141909,"id":"2fdb2747","nodes":[{"weight":100,"priority":0,"port":80,"host":"<whoami-pod-ip>"}],"name":"default_whoami_80","hash_on":"vars","desc":"Created by apisix-ingress-controller, DO NOT modify it manually"},"createdIndex":67,"modifiedIndex":67},{"key":"/apisix/upstreams/5ce57b8e","value":{"pass_host":"pass","labels":{"managed-by":"apisix-ingress-controller"},"create_time":1745135568,"type":"roundrobin","scheme":"http","update_time":1745147331,"id":"5ce57b8e","nodes":[{"weight":100,"priority":0,"port":80,"host":"<httpbin-pod-ip>"}],"name":"default_httpbin_80","hash_on":"vars","desc":"Created by apisix-ingress-controller, DO NOT modify it manually"},"createdIndex":18,"modifiedIndex":91},{"key":"/apisix/upstreams/65e49f92","value":{"pass_host":"pass","labels":{"managed-by":"apisix-ingress-controller"},"create_time":1745133027,"type":"roundrobin","scheme":"http","update_time":1745153386,"id":"65e49f92","nodes":[{"weight":100,"port":9000,"priority":0,"host":"<dashboard-pod-ip>"}],"name":"ingress-apisix_apisix-dashboard_80","hash_on":"vars","desc":"Created by apisix-ingress-controller, DO NOT modify it manually"},"createdIndex":16,"modifiedIndex":159},{"key":"/apisix/upstreams/a5f6bfda","value":{"pass_host":"pass","labels":{"managed-by":"apisix-ingress-controller"},"create_time":1745150648,"type":"roundrobin","scheme":"http","update_time":1745150648,"id":"a5f6bfda","nodes":[{"weight":100,"port":9091,"priority":0,"host":"<apisix-pod-ip>"}],"name":"ingress-apisix_apisix-prometheus-metrics_9091","hash_on":"vars","desc":"Created by apisix-ingress-controller, DO NOT modify it manually"},"createdIndex":148,"modifiedIndex":148},{"key":"/apisix/upstreams/ff9d87bf","value":{"pass_host":"pass","labels":{"managed-by":"apisix-ingress-controller"},"create_time":1745154778,"type":"roundrobin","scheme":"http","update_time":1745154778,"id":"ff9d87bf","nodes":[{"weight":100,"port":9180,"priority":0,"host":"<apisix-pod-ip>"}],"name":"ingress-apisix_apisix-admin_9180","hash_on":"vars","desc":"Created by apisix-ingress-controller, DO NOT modify it manually"},"createdIndex":161,"modifiedIndex":161}]}

4、查询consumer列表


curl http://apisix-admin.example.com/apisix/admin/consumers -H 'X-API-KEY: <admin-api-key>'

回显内容


{"total":1,"list":[{"key":"/apisix/consumers/default_whoamibauth","value":{"labels":{"managed-by":"apisix-ingress-controller"},"update_time":1745141330,"create_time":1745141330,"plugins":{"basic-auth":{"username":"admin","password":"<basic-auth-password>"}},"username":"default_whoamibauth","desc":"Created by apisix-ingress-controller, DO NOT modify it manually"},"createdIndex":57,"modifiedIndex":57}]}

四、创建路由Route及上游Upstream

环境准备

# 定义资源
[root@master01 16]#
cat > httpbin-dp-svc.yaml <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
  labels:
    app: httpbin
  name: httpbin
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: httpbin
  template:
    metadata:
      labels:
        app: httpbin
    spec:
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/abroad_images/httpbin:latest
        imagePullPolicy: Always
        name: httpbin
      dnsPolicy: ClusterFirst
      restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: httpbin
  name: httpbin
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: httpbin
  sessionAffinity: None
  type: ClusterIP
EOF
# 定义资源
[root@master01 16]#
cat > httpbin-ing.yaml <<EOF
apiVersion: apisix.apache.org/v2
kind: ApisixRoute
metadata:
  name: default-route
  namespace: default
spec:
  http:
  - backends:
    - serviceName: httpbin
      servicePort: 80
    match:
      hosts:
      - httpbin.example.com
      paths:
      - /httpbin*
      - /spec.json
    name: httpbin-route
    plugins:
    - config:
        regex_uri:
        - ^/httpbin(/|$)(.*)
        - /
      enable: true
      name: proxy-rewrite
EOF
# 应用
[root@master01 16]# kubectl apply -f httpbin-dp-svc.yaml
[root@master01 16]# kubectl apply -f httpbin-ing.yaml
# 删除之前创建名为default-route的ar
[root@master01 16]# k delete ar default-route

1、仍然使用上节课实验中的 httpbin 服务,查看 httpbin 服务的 svc。从输出中获取 Service 的 IP、端口、标签等信息,以便在创建路由时使用。

# 查看svc
[root@master01 16]# kubectl get svc | grep httpbin
httpbin                      ClusterIP      <httpbin-service-ip>    <none>        80/TCP         5h16m
# 以json格式导出名为httpbin的svc
[root@master01 16]# kubectl get svc httpbin -o json
{
    "apiVersion": "v1",
    "kind": "Service",
    "metadata": {
        "annotations": {
            "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{},\"labels\":{\"app\":\"httpbin\"},\"name\":\"httpbin\",\"namespace\":\"default\"},\"spec\":{\"ports\":[{\"port\":80,\"protocol\":\"TCP\",\"targetPort\":80}],\"selector\":{\"app\":\"httpbin\"},\"sessionAffinity\":\"None\",\"type\":\"ClusterIP\"}}\n"
        },
        "creationTimestamp": "2025-04-20T08:05:55Z",
        "labels": {
            "app": "httpbin"
        },
        "name": "httpbin",
        "namespace": "default",
        "resourceVersion": "1724022",
        "uid": "6951bdd8-7ce7-4766-a101-0f761d82c206"
    },
    "spec": {
        "clusterIP": "<httpbin-service-ip>",
        "clusterIPs": [
            "<httpbin-service-ip>"
        ],
        "internalTrafficPolicy": "Cluster",
        "ipFamilies": [
            "IPv4"
        ],
        "ipFamilyPolicy": "SingleStack",
        "ports": [
            {
                "port": 80,
                "protocol": "TCP",
                "targetPort": 80
            }
        ],
        "selector": {
            "app": "httpbin"
        },
        "sessionAffinity": "None",
        "type": "ClusterIP"
    },
    "status": {
        "loadBalancer": {}
    }
}

2、直接创建包含 upstream 的 Route

curl -X POST http://apisix-admin.example.com/apisix/admin/routes \
  -H 'X-API-KEY: <admin-api-key>' \
  -H 'Content-Type: application/json' \
  -d '{
    "hosts": ["httpbin.example.com"],
    "uri": "/*",
    "methods": ["GET"],
    "plugins": {
    },
    "labels": {
      "managed-by": "apisix-ingress-controller"
    },
    "upstream": {
      "type": "roundrobin",
      "nodes": [
        {
          "host": "<httpbin-service-ip>",
          "port": 80,
          "weight": 1
        }
      ]
    }
  }'

回显内容


{"key":"/apisix/routes/00000000000000000165","value":{"labels":{"managed-by":"apisix-ingress-controller"},"upstream":{"pass_host":"pass","nodes":[{"weight":1,"port":80,"host":"<httpbin-service-ip>","priority":0}],"scheme":"http","hash_on":"vars","type":"roundrobin"},"status":1,"priority":0,"create_time":1745155616,"uri":"/*","update_time":1745155616,"methods":["GET"],"hosts":["httpbin.example.com"],"plugins":{},"id":"00000000000000000165"}}

3、访问验证

[root@master01 16]# curl httpbin.example.com
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>httpbin.org</title>
    <link href="https://fonts.googleapis.com/css?family=Open+Sans:400,700|Source+Code+Pro:300,600|Titillium+Web:400,600,700"
        rel="stylesheet">
    <link rel="stylesheet" type="text/css" href="/flasgger_static/swagger-ui.css">
    <link rel="icon" type="image/png" href="/static/favicon.ico" sizes="64x64 32x32 16x16" />
...
...

4、小结

其实如上做法是不符合 APISIX 定义的,不建议直接通过 APISIX Admin API 创建,之所以通过这种方式的目的是让大家熟悉下 APISIX 的接口魅力!

通常建议使用 Ingress 资源和 apisix-ingress-controller 以充分利用Kubernetes 原生的管理和扩展能力。

五、创建路由Route及消费者Consumer

1、创建基于 key-auth 插件的认证 consumer

[root@master01 16]#
curl http://apisix-admin.example.com/apisix/admin/consumers \
  -H 'X-API-KEY: <admin-api-key>' \
  -X PUT \
  -d '{
    "username": "zhdya",
    "plugins": {
      "key-auth": {
        "key": "<consumer-key>"
      }
    }
  }'

回显内容


{"key":"/apisix/consumers/zhdya","value":{"create_time":1745155889,"plugins":{"key-auth":{"key":"<consumer-key>"}},"update_time":1745155889,"username":"zhdya"}}

2、绑定 Consumer 与 Route

[root@master01 16]#
curl -X POST http://apisix-admin.example.com/apisix/admin/routes \
  -H 'X-API-KEY: <admin-api-key>' \
  -H 'Content-Type: application/json' \
  -d '{
    "hosts": ["httpbin.example.com"],
    "uri": "/*",
    "methods": ["GET"],
    "plugins": {
      "key-auth": {
        "username": "zhdya",
        "key": "<consumer-key>"
      }
    },
    "labels": {
      "managed-by": "apisix-ingress-controller"
    },
    "upstream": {
      "type": "roundrobin",
      "nodes": [
        {
          "host": "<httpbin-service-ip>",
          "port": 80,
          "weight": 1
        }
      ]
    }
  }'

回显内容


{"key":"/apisix/routes/00000000000000000169","value":{"labels":{"managed-by":"apisix-ingress-controller"},"upstream":{"pass_host":"pass","nodes":[{"weight":1,"port":80,"host":"<httpbin-service-ip>","priority":0}],"scheme":"http","hash_on":"vars","type":"roundrobin"},"status":1,"priority":0,"create_time":1745155960,"uri":"/*","update_time":1745155960,"methods":["GET"],"hosts":["httpbin.example.com"],"plugins":{"key-auth":{"query":"apikey","header":"apikey","key":"<consumer-key>","hide_credentials":false,"username":"zhdya"}},"id":"00000000000000000169"}}

六、删除操作

1)查询

查询 APISIX 所有路由配置(核心请求转发规则)

[root@master01 16]#
curl http://apisix-admin.example.com/apisix/admin/routes -H 'X-API-KEY: <admin-api-key>'
# 回显内容
{
    "total": 6,
    "list": [
        {
            "key": "/apisix/routes/00000000000000000165",
            "value": {
                "labels": {
                    "managed-by": "apisix-ingress-controller"
                },
                "upstream": {
                    "pass_host": "pass",
                    "nodes": [
                        {
                            "weight": 1,
                            "port": 80,
                            "priority": 0,
                            "host": "<httpbin-service-ip>"
                        }
                    ],
                    "scheme": "http",
                    "hash_on": "vars",
                    "type": "roundrobin"
                },
                "status": 1,
                "priority": 0,
                "create_time": 1745155616,
                "uri": "/*",
                "update_time": 1745155616,
                "methods": [
                    "GET"
                ],
                "hosts": [
                    "httpbin.example.com"
                ],
                "plugins": {
                },
                "id": "00000000000000000165"
            },
            "createdIndex": 166,
            "modifiedIndex": 166
        },
        {
            "key": "/apisix/routes/00000000000000000169",
            "value": {
                "labels": {
                    "managed-by": "apisix-ingress-controller"
                },
                "upstream": {
                    "pass_host": "pass",
                    "nodes": [
                        {
                            "weight": 1,
                            "port": 80,
                            "priority": 0,
                            "host": "<httpbin-service-ip>"
                        }
                    ],
                    "scheme": "http",
                    "hash_on": "vars",
                    "type": "roundrobin"
                },
                "status": 1,
                "priority": 0,
                "create_time": 1745155960,
                "uri": "/*",
                "update_time": 1745155960,
                "methods": [
                    "GET"
                ],
                "hosts": [
                    "httpbin.example.com"
                ],
                "plugins": {
                    "key-auth": {
                        "query": "apikey",
                        "header": "apikey",
                        "hide_credentials": false,
                        "key": "<consumer-key>",
                        "username": "zhdya"
                    }
                },
                "id": "00000000000000000169"
            },
            "createdIndex": 170,
            "modifiedIndex": 170
        },
        {
            "key": "/apisix/routes/1936ab91",
            "value": {
                "labels": {
                    "managed-by": "apisix-ingress-controller"
                },
                "uris": [
                    "/apisix/prometheus/metrics"
                ],
                "status": 1,
                "priority": 0,
                "create_time": 1745150648,
                "upstream_id": "a5f6bfda",
                "update_time": 1745150648,
                "id": "1936ab91",
                "hosts": [
                    "metrics.example.com"
                ],
                "name": "ingress-apisix_metrics-route_metrics-route",
                "desc": "Created by apisix-ingress-controller, DO NOT modify it manually"
            },
            "createdIndex": 149,
            "modifiedIndex": 149
        },
        {
            "key": "/apisix/routes/50e6793a",
            "value": {
                "labels": {
                    "managed-by": "apisix-ingress-controller"
                },
                "uris": [
                    "/tls*",
                    "/v1*"
                ],
                "status": 1,
                "priority": 0,
                "create_time": 1745141909,
                "upstream_id": "2fdb2747",
                "update_time": 1745154011,
                "id": "50e6793a",
                "hosts": [
                    "whoami.example.com"
                ],
                "name": "default_whoami-apisix_whoami-root",
                "plugins": {
                    "proxy-rewrite": {
                        "regex_uri": [
                            "^/v1(/|$)(.*)",
                            "/"
                        ],
                        "use_real_request_uri_unsafe": false
                    },
                    "redirect": {
                        "ret_code": 302,
                        "append_query_string": false,
                        "regex_uri": [
                            "^(/tls)$",
                            "/"
                        ],
                        "encode_uri": false
                    },
                    "basic-auth": {
                        "hide_credentials": false
                    }
                },
                "desc": "Created by apisix-ingress-controller, DO NOT modify it manually"
            },
            "createdIndex": 68,
            "modifiedIndex": 160
        },
        {
            "key": "/apisix/routes/51e11523",
            "value": {
                "labels": {
                    "managed-by": "apisix-ingress-controller"
                },
                "uris": [
                    "/*"
                ],
                "status": 1,
                "priority": 0,
                "create_time": 1745154778,
                "upstream_id": "ff9d87bf",
                "update_time": 1745154778,
                "id": "51e11523",
                "hosts": [
                    "apisix-admin.example.com"
                ],
                "name": "ingress-apisix_apisix-admin_root",
                "desc": "Created by apisix-ingress-controller, DO NOT modify it manually"
            },
            "createdIndex": 162,
            "modifiedIndex": 162
        },
        {
            "key": "/apisix/routes/bc3a78e6",
            "value": {
                "labels": {
                    "managed-by": "apisix-ingress-controller"
                },
                "uris": [
                    "/*"
                ],
                "status": 1,
                "priority": 0,
                "create_time": 1745133027,
                "upstream_id": "65e49f92",
                "update_time": 1745133027,
                "id": "bc3a78e6",
                "hosts": [
                    "apisix.example.com"
                ],
                "name": "ingress-apisix_dashboard_root",
                "desc": "Created by apisix-ingress-controller, DO NOT modify it manually"
            },
            "createdIndex": 17,
            "modifiedIndex": 17
        }
    ]
}

查询 APISIX 所有上游配置(后端服务节点池)

[root@master01 16]#
curl http://apisix-admin.example.com/apisix/admin/upstreams -H 'X-API-KEY: <admin-api-key>'
# 回显内容
{
    "total": 4,
    "list": [
        {
            "key": "/apisix/upstreams/2fdb2747",
            "value": {
                "pass_host": "pass",
                "labels": {
                    "managed-by": "apisix-ingress-controller"
                },
                "create_time": 1745141909,
                "type": "roundrobin",
                "scheme": "http",
                "update_time": 1745141909,
                "id": "2fdb2747",
                "nodes": [
                    {
                        "weight": 100,
                        "priority": 0,
                        "port": 80,
                        "host": "<whoami-pod-ip>"
                    }
                ],
                "name": "default_whoami_80",
                "hash_on": "vars",
                "desc": "Created by apisix-ingress-controller, DO NOT modify it manually"
            },
            "createdIndex": 67,
            "modifiedIndex": 67
        },
        {
            "key": "/apisix/upstreams/65e49f92",
            "value": {
                "pass_host": "pass",
                "labels": {
                    "managed-by": "apisix-ingress-controller"
                },
                "create_time": 1745133027,
                "type": "roundrobin",
                "scheme": "http",
                "update_time": 1745155811,
                "id": "65e49f92",
                "nodes": [
                    {
                        "weight": 100,
                        "port": 9000,
                        "priority": 0,
                        "host": "<dashboard-pod-ip>"
                    }
                ],
                "name": "ingress-apisix_apisix-dashboard_80",
                "hash_on": "vars",
                "desc": "Created by apisix-ingress-controller, DO NOT modify it manually"
            },
            "createdIndex": 16,
            "modifiedIndex": 167
        },
        {
            "key": "/apisix/upstreams/a5f6bfda",
            "value": {
                "pass_host": "pass",
                "labels": {
                    "managed-by": "apisix-ingress-controller"
                },
                "create_time": 1745150648,
                "type": "roundrobin",
                "scheme": "http",
                "update_time": 1745150648,
                "id": "a5f6bfda",
                "nodes": [
                    {
                        "weight": 100,
                        "port": 9091,
                        "priority": 0,
                        "host": "<apisix-pod-ip>"
                    }
                ],
                "name": "ingress-apisix_apisix-prometheus-metrics_9091",
                "hash_on": "vars",
                "desc": "Created by apisix-ingress-controller, DO NOT modify it manually"
            },
            "createdIndex": 148,
            "modifiedIndex": 148
        },
        {
            "key": "/apisix/upstreams/ff9d87bf",
            "value": {
                "pass_host": "pass",
                "labels": {
                    "managed-by": "apisix-ingress-controller"
                },
                "create_time": 1745154778,
                "type": "roundrobin",
                "scheme": "http",
                "update_time": 1745154778,
                "id": "ff9d87bf",
                "nodes": [
                    {
                        "weight": 100,
                        "port": 9180,
                        "priority": 0,
                        "host": "<apisix-pod-ip>"
                    }
                ],
                "name": "ingress-apisix_apisix-admin_9180",
                "hash_on": "vars",
                "desc": "Created by apisix-ingress-controller, DO NOT modify it manually"
            },
            "createdIndex": 161,
            "modifiedIndex": 161
        }
    ]
}

2)删除 Route 和 upstream

通过 route_id 进行删除


[root@master01 16]# curl -X DELETE http://apisix-admin.example.com/apisix/admin/routes/00000000000000000165 -H 'X-API-KEY: <admin-api-key>'

# 回显内容

{"key":"/apisix/routes/00000000000000000165","deleted":"1"}

通过 upstream_id 进行删除


[root@master01 16]# curl -X DELETE http://apisix-admin.example.com/apisix/admin/upstreams/5ce57b8e -H 'X-API-KEY: <admin-api-key>'

# 回显内容

{"key":"/apisix/upstreams/5ce57b8e","deleted":"1"}

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容