Kong 是在客戶端和(微)服務(wù)間轉(zhuǎn)發(fā)API通信的API網(wǎng)關(guān),通過插件擴(kuò)展功能。
創(chuàng)新互聯(lián)專注于企業(yè)成都營銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、陵川網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、商城系統(tǒng)網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為陵川等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
概念術(shù)語
upstream: 是對(duì)上游服務(wù)器的抽象;
target: 代表了一個(gè)物理服務(wù),是 ip + port 的抽象;
service: 是抽象層面的服務(wù),他可以直接映射到一個(gè)物理服務(wù)(host 指向 ip + port),也可以指向一個(gè) upstream 來做到負(fù)載均衡;
route: 是路由的抽象,他負(fù)責(zé)將實(shí)際的 request 映射到 service。
默認(rèn)情況下,KONG監(jiān)聽的端口為:
8000: 此端口是KONG用來監(jiān)聽來自客戶端傳入的HTTP請(qǐng)求,并將此請(qǐng)求轉(zhuǎn)發(fā)到上有服務(wù)器;
8443: 此端口是KONG用來監(jiān)聽來自客戶端傳入的HTTP請(qǐng)求的。它跟8000端口的功能類似,但是它只是用來監(jiān)聽HTTP請(qǐng)求的,沒有轉(zhuǎn)發(fā)功能??梢酝ㄟ^修改配置文件來禁止它;
8001: Admin API,通過此端口,管理者可以對(duì)KONG的監(jiān)聽服務(wù)進(jìn)行配置;
8444: 通過此端口,管理者可以對(duì)HTTP請(qǐng)求進(jìn)行監(jiān)控.
環(huán)境部署
1.安裝docker
export REGISTRY_MIRROR=https://registry.cn-hangzhou.aliyuncs.com
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum repolist
yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
yum install -y docker-ce-18.09.7 docker-ce-cli-18.09.7 containerd.io
systemctl start docker && systemctl status docker && systemctl daemon-reload
2.禁用防火墻
systemctl disable firewalld && systemctl stop firewalld && systemctl status firewalld
setenforce 0 && sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
3.禁用交換分區(qū),設(shè)置路由轉(zhuǎn)發(fā)
swapoff -a && yes | cp /etc/fstab /etc/fstab_bak
cat /etc/fstab_bak | grep -v swap > /etc/fstab
cat /etc/fstab
sudo vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
安裝
1.創(chuàng)建docker網(wǎng)絡(luò)
docker network create kong-net
2.運(yùn)行prostgres 9.6數(shù)據(jù)庫鏡像
docker run -d --name kong-database \
--network=kong-net \
-p 5432:5432 \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
postgres:9.6
3.數(shù)據(jù)庫準(zhǔn)備,初始化Kong數(shù)據(jù)
docker run --rm \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
kong:0.14.1 kong migrations up
4.啟動(dòng)kong
docker run -d --name kong \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
-e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
-e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
-e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \
-p 8000:8000 \
-p 8443:8443 \
-p 8001:8001 \
-p 8444:8444 \
kong:0.14.1
5.創(chuàng)建并運(yùn)行Kong dashboard容器
docker run -d \
--network=kong-net \
--link kong:kong -p 8008:8080 pgbi/kong-dashboard start \
--kong-url http://kong:8001 \
--basic-auth kong=kong
然后訪問 http://你的IP:8008,
登錄賬號(hào)為kong,密碼為kong
1.為 http://mockbin.org 添加一個(gè)名為 example-service 的服務(wù)
使用Admin API添加服務(wù),發(fā)出以下cURL請(qǐng)求以將您的第一個(gè)服務(wù)(指向Mockbin API)添加到Kong:
curl -i -X POST \
--url http://localhost:8001/services/ \
--data 'name=example-service' --data 'url=http://mockbin.org'
2.為上面創(chuàng)建的服務(wù)添加一個(gè)路由
curl -i -X POST \
--url http://localhost:8001/services/example-service/routes \
--data 'hosts[]=example.com'
勾選"strip_path"選項(xiàng),并點(diǎn)擊”updata“
3. 運(yùn)行下面的命令,會(huì)返回 http://mockbin.org 的信息
curl -i -X GET --url http://localhost:8000/ --header 'Host: example.com'
添加認(rèn)證
1.配置密鑰身份驗(yàn)證插件
curl -i -X POST \
--url http://localhost:8001/services/example-service/plugins/ \
--data 'name=key-auth'
注意:此插件還接受一個(gè)config.key_names參數(shù),默認(rèn)為['apikey']。它是應(yīng)該在請(qǐng)求期間包含apikey的標(biāo)頭和參數(shù)名稱(均受支持)的列表
2.確認(rèn)插件配置正確
curl -i -X GET --url http://localhost:8000/ --header 'Host: example.com'
由于您未指定所需的apikey標(biāo)題或參數(shù),因此響應(yīng)應(yīng)為401 Unauthorized
增加消費(fèi)者
curl -i -X POST \
--url http://localhost:8001/consumers/ \
--data "username=Jason"
為上面的用戶添加一個(gè) key。下面命令中的 “ENTER_KEY_HERE” 需要替換成想要設(shè)置的密鑰。
curl -i -X POST \
--url http://localhost:8001/consumers/Jason/key-auth/ \
--data 'key=ENTER_KEY_HERE'
在第3步的請(qǐng)求中添加 key 的信息后,可以正常訪問了。命令如下:
curl -i -X GET \
--url http://localhost:8000 \
--header "Host: example.com" \
--header "apikey: ENTER_KEY_HERE"
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。