markhuyong / git-favorites

pocket collenction arititcles
Apache License 2.0
2 stars 0 forks source link

kong api gateway的安装与使用(二) #1

Open markhuyong opened 2 years ago

markhuyong commented 2 years ago

https://mp.weixin.qq.com/s?src=11&timestamp=1628847638&ver=3250&signature=GwNmOK9vYL4jFoLL1CBix-y4Z3pftCSSZO8ac5UcnlE0XO5UMA-9n2zZ3vgadYWKM-n3SzJsT1PaIk*5RvP1QFVO94zPsek5*tuXEreIut17W4BYXXOh1mk1HqZqbdAL&new=1

github-actions[bot] commented 2 years ago

kong api gateway的安装与使用(二) by 平平的山外小楼

2018-04-13 一. 使用kong

①配置服务

1.添加服务

curl -XPOST \

http://localhost:8008/services\

-d'name=liangyunxiao&protocol=http&host=10.18.3.94&path=%2F&port=8080'

{"host":"10.18.3.94","created_at":1523326499,"connect_timeout":60000,"id":"97015349-066d-49cc-bd48-13b86aca5076","protocol":"http","name":"liangyunxiao","read_timeout":60000,"port":8080,"path":"\/","updated_at":1523326499,"retries":5,"write_timeout":60000}

2.添加服务的路线

curl -XPOST \

http://localhost:8008/routes\

 -d'protocols%5B%5D=http&protocols%5B%5D=https&paths%5B%5D=%2Fesim-platform&service.id=97015349-066d-49cc-bd48-13b86aca5076'

3.通过kong转发请求

curl -i -X GET   --urlhttp://localhost:8000/esim-platform/esim-platform/

以上 ,配置完成

4.快速版本(使用service和route)

一.项目全路径都作为服务

--------------------------------

curl -i -X POST \

 --url http://localhost:8001/services/ \

 --data 'name=test95' \

 --data 'url=http://10.18.3.95:8080/esim-platform/'

 curl-i -X POST \

 --url http://localhost:8001/services/test95/routes \

 --data 'hosts[]=test95host'

curl -i -X GET \

 --url http://localhost:8000/ \

 --header 'Host: test95host'

二.只有项目的ip和port作为服务

-------------------------------------

curl -i -X POST \

 --url http://localhost:8001/services/ \

 --data 'name=test95little' \

 --data 'url=http://10.18.3.95:8080/'

 curl-i -X POST \

 --url http://localhost:8001/services/test95little/routes \

 --data 'hosts[]=test95little'

curl -i -X GET \

 --url http://localhost:8000/esim-platform/ \

 --header 'Host: test95little'

②启用插件

1. 添加认证插件 (密钥认证)

服务的插件

curl-i -X POST \

--url http://localhost:8001/services/liangyunxiao/plugins/\

--data 'name=key-auth'

路由的插件

curl -X POSThttp://localhost:8001/routes/85b90b66-a2a5-437b-89e9-9d2d64e7be07/plugins     --data "name=key-auth"

{"created_at":1522823821932,"config":{"key_in_body":false,"run_on_preflight":true,"anonymous":"","hide_credentials":false,"key_names":["apikey"]},"id":"b69fb07d-5126-452f-98fb-dab4cccbfff8","name":"key-auth","route_id":"85b90b66-a2a5-437b-89e9-9d2d64e7be07","enabled":true}

设置插件后访问 

curl -i -X GET   --url http://localhost:8000/liangyunxiao

2.添加消费者

curl -i -X POST \

 --url http://localhost:8001/consumers/ \

 --data "username=dapp"

3.为消费者配置密钥

curl -i -X POST \

>  --url http://localhost:8001/consumers/dapp/key-auth/ \

>  --data 'key=ENTER_KEY_HERE'

4.访问验证

curl -i -X GET \

>  --url http://localhost:8000/liangyunxiao \

>  --header "apikey: ENTER_KEY_HERE"

③负载均衡

一.环平衡器

1.设置upstreams的名称

curl -X POSThttp://localhost:8001/upstreams \

--data"name=address.v1.service"                                                                                      

{"created_at":1523408573277,"hash_on":"none","id":"eb811644-abcd-4063-8e7f-bc5203685228","healthchecks":{"active":{"unhealthy":{"http_statuses":[429,404,500,501,502,503,504,505],"tcp_failures":0,"timeouts":0,"http_failures":0,"interval":0},"http_path":"\/","healthy":{"http_statuses":[200,302],"interval":0,"successes":0},"timeout":1,"concurrency":10},"passive":{"unhealthy":{"http_failures":0,"http_statuses":[429,500,503],"tcp_failures":0,"timeouts":0},"healthy":{"successes":0,"http_statuses":[200,201,202,203,204,205,206,207,208,226,300,301,302,303,304,305,306,307,308]}}},"name":"address.v1.service","hash_fallback":"none","slots":10000}

2.设置upstream指向的服务器地址

94的权重为100

curl -X POSThttp://localhost:8001/upstreams/address.v1.service/targets \

--data"target=10.18.3.94:8080" --data "weight=100"

{"created_at":1523408775968,"id":"9575db6e-b56b-4656-a380-f9cce7c9980d","upstream_id":"eb811644-abcd-4063-8e7f-bc5203685228","target":"10.18.3.94:8080","weight":100}

95的权重为50

curl -X POSThttp://localhost:8001/upstreams/address.v1.service/targets \

   --data "target=10.18.3.95:8080" --data "weight=50"

{"created_at":1523408798849,"id":"631bafa8-c936-4d84-8a2f-9df363dd52ae","upstream_id":"eb811644-abcd-4063-8e7f-bc5203685228","target":"10.18.3.95:8080","weight":50}

3.添加服务

(这里用的PATCH方法 , 之前用的POST提交的service端口设置的是80 ,用PATCH更新为8080)

(之前的方法是curl -X POST http://localhost:8001/services/ \

>     --data "name=address-service" \

>     --data "host=address.v1.service"\

>     --data "path=/address"  )

curl -X UPDATEhttp://localhost:8001/services/ \

   --data "name=address-service" \

   --data "host=address.v1.service" \

   --data "path=/" \

   --data "port=8080"

4.添加服务路由

curl -X POSThttp://localhost:8001/services/address-service/routes/ \

-d 'protocols%5B%5D=http&protocols%5B%5D=https&paths%5B%5D=%2Faddress&service.id=027a93a4-1878-4580-8d86-222bf863dcd0'

{"created_at":1523411118,"strip_path":true,"hosts":null,"preserve_host":false,"regex_priority":0,"updated_at":1523411118,"paths":["\/address"],"service":{"id":"027a93a4-1878-4580-8d86-222bf863dcd0"},"methods":null,"protocols":["http","https"],"id":"31361367-8be3-4d22-a617-e506879aa87e"}

5.通过kong转发请求

92服务器请求多次

curl -i -X GET   --url http://localhost:8000/address/esim-platform/

92kong日志

95服务器响应

94服务器响应

6.设置蓝绿开关(the Blue/Greenswitch)

之前1-5为蓝色开关 , 下面设置绿色开关: service v2

# create a new Greenupstream for address service v2

curl -X POSThttp://localhost:8001/upstreams    --data "name=address.v2.service"

{"created_at":1523431892892,"hash_on":"none","id":"13576723-c6b7-4fd9-a69f-ae7ebef6e121","healthchecks":{"active":{"unhealthy":{"http_statuses":[429,404,500,501,502,503,504,505],"tcp_failures":0,"timeouts":0,"http_failures":0,"interval":0},"http_path":"\/","healthy":{"http_statuses":[200,302],"interval":0,"successes":0},"timeout":1,"concurrency":10},"passive":{"unhealthy":{"http_failures":0,"http_statuses":[429,500,503],"tcp_failures":0,"timeouts":0},"healthy":{"successes":0,"http_statuses":[200,201,202,203,204,205,206,207,208,226,300,301,302,303,304,305,306,307,308]}}},"name":"address.v2.service","hash_fallback":"none","slots":10000}

# add targets to theupstream

curl-X POST http://localhost:8001/upstreams/address.v2.service/targets \

--data"target=10.18.3.95:8080" --data "weight=100"

{"created_at":1523433520250,"id":"254fbf23-f168-49a7-b137-aace7f934da8","upstream_id":"13576723-c6b7-4fd9-a69f-ae7ebef6e121","target":"10.18.3.95:8080","weight":100}

curl-X POST http://localhost:8001/upstreams/address.v2.service/targets \

--data"target=10.18.3.96:8080" --data "weight=100"

{"created_at":1523433725832,"id":"8c0f549c-fc0c-4090-8a80-ccc7035e2f86","upstream_id":"13576723-c6b7-4fd9-a69f-ae7ebef6e121","target":"10.18.3.96:8080","weight":100}

# Switch the Servicefrom Blue to Green upstream, v1 -> v2

curl-X PATCH http://localhost:8001/services/address-service \

--data "host=address.v2.service"\

--data "path=/" \

--data "port=8080"

{"host":"address.v2.service","created_at":1523409597,"connect_timeout":60000,"id":"027a93a4-1878-4580-8d86-222bf863dcd0","protocol":"http","name":"address-service","read_timeout":60000,"port":8080,"path":"\/","updated_at":1523434020,"retries":5,"write_timeout":60000}

kong转发请求

curl -i -X GET   --url http://localhost:8000/address/esim-platform/

以上设置成功