感謝Docker。在沒有Docker 面世前添瓷,微服務(wù)三大件(網(wǎng)關(guān)梅屉、隊(duì)列、內(nèi)存)一直是困擾并讓我神往的技術(shù)流鳞贷。技術(shù)總歸是技術(shù)坯汤,組件總歸是組件。掌握并學(xué)習(xí)好不是一件困難的事情搀愧,最困難的反而都是這些組件的部署安裝惰聂。
如果想要的是官方安裝文檔,點(diǎn)擊即可跳轉(zhuǎn)
1.創(chuàng)建docker 共享網(wǎng)絡(luò)
由于kong 需要依賴三方數(shù)據(jù)庫作為存儲(chǔ)支持咱筛,所以在安裝Kong前需要先配置本地?cái)?shù)據(jù)庫搓幌。目前Kong支持Cassandra和PostgreSQL兩種數(shù)據(jù)庫,通常來講選用PostgreSQL關(guān)系型數(shù)據(jù)庫更估迅箩。為了保證Kong以及PostgreSQL網(wǎng)絡(luò)共享溉愁,我們需要先創(chuàng)建一個(gè)共享網(wǎng)絡(luò)。
docker network create kong-net
2.創(chuàng)建PostgreSQL 數(shù)據(jù)庫
docker run -d --name pgsql \
--network=kong-net \
-p 5432:5432 \
-v $HOME/kong/db:/var/lib/postgresql/data \
-e "POSTGRES_USER=root" \
-e "POSTGRES_DB=kong" \
-e "POSTGRES_PASSWORD=qwer1234" \
postgres:9.6
3.初始化數(shù)據(jù)庫環(huán)境
docker run --rm \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=pgsql" \
-e "KONG_PG_USER=root" \
-e "KONG_PG_PASSWORD=qwer1234" \
kong:latest kong migrations bootstrap
4.配置kong.yml 文件
創(chuàng)建文件kong.yml沙热,路徑如下:$HOME/kong/config/kong.yml叉钥。
_format_version: "1.1"
services:
- name: admin-api
url: http://127.0.0.1:8001
routes:
- paths:
- /admin-api
plugins:
- name: key-auth
consumers:
- username: admin
keyauth_credentials:
- key: secret
說明:
- 這里采用了Key Authentiaction,設(shè)置
key
為secret
篙贸,實(shí)際使用時(shí)需要將該key設(shè)置為復(fù)雜難以猜測的字符串投队。 - 另外為了安全起見,實(shí)際使用中運(yùn)行Kong的服務(wù)器不要對(duì)外開啟8001端口爵川,所有訪問Kong的流量都通過8000進(jìn)來敷鸦。
5.導(dǎo)入Kong配置:
docker run --rm \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=pgsql" \
-e "KONG_PG_USER=root" \
-e "KONG_PG_PASSWORD=qwer1234" \
-v $HOME/kong/config:/home/kong \
kong:latest kong config db_import /home/kong/kong.yml
6.啟動(dòng)kong
docker run -d --name kong \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=pgsql" \
-e "KONG_PG_USER=root" \
-e "KONG_PG_PASSWORD=qwer1234" \
-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 127.0.0.1:8001:8001 \
-p 127.0.0.1:8444:8444 \
kong:latest
7.進(jìn)行本地檢驗(yàn)
http://localhost:8001
http://localhost:8000/admin-api?apikey=secret
http://本機(jī)IP地址:8000/admin-api?apikey=secret
注:在調(diào)用Kong API 時(shí),需要用本機(jī)真實(shí)IP 寝贡,有部分API 是不能使用localhost 或者127.0.0.1
Mac 獲取IP可使用命令:ipconfig getifaddr en0
Window 的命令:ipconfig