API網關Kong系列(二)部署


部署環境:

[OS]

centos 6.8(如果是centos6.5,請自行先升級到6.8,否則不支持docker)

 

[Docker]

Client version: 1.7.1

Client API version: 1.19

推薦使用Docker engine 1.9以上版本,支持docker-compose

 

[Kong]

Version: 0.9.9

由於眾所周知的原因,國內鏈接dockerhub以及github都有不同程度的問題,建議用daocloud.io的docker鏡像加速服務提高image pull的速度

 

部署過程


1.部署數據庫

kong支持2類數據庫 cassandra 和 postgres,這邊應用場景不大,所以使用postgres

使用命令:

sudo docker run -d \

--name kong-database \

--restart=always \

-p 5432:5432 \

-e POSTGRES_USER=kong \

-e POSTGRES_DB=kong \

-v /var/lib/containers/kong/data:/var/lib/postgresql/data \

postgres

完成后容器自動啟動

P.S:注意最后 volume的映射,將容器內數據庫映射到了本地/var/lib/containers/kong/data下做持久化用,如果遷移的時候不要忘記了挪數據

 

2.部署kong服務

sudo docker run -d \

--name kong-core \

--restart=always \

-p 8001:8001 \

-p 20802:8443 \

-p 20801:8000 \

-p 7946:7946 \

-p 7946:7946/udp \

--link kong-database:kong-database \

-e KONG_DATABASE=postgres \

-e KONG_PG_HOST=kong-database \

-v /etc/localtime:/etc/localtime:ro \

-v /etc/letsencrypt:/etc/letsencrypt:ro \

-v /usr/local/container/kong/kong.conf:/usr/local/kong/kong.conf:ro \

-v /usr/local/container/kong/nginx-kong.conf/:/usr/local/kong/nginx-kong.conf:ro \

kong

 

配置SSL:

這里使用letsencrypt的免費證書,如何生成,見另一篇文章

sudo vi /usr/local/container/kong/kong.conf

1.修改ssl_cert_key為你的私鑰pem(這邊路徑對應上面的 /etc/letsencrypt/live/your.domain.com/privkey.pem)

2.修改ssl_cert為你的證書 pem(這邊路徑對應上面的 /etc/letsencrypt/live/your.domain.com/fullchain.pem)

 

sudo vi /usr/local/container/kong/nginx-kong.conf

1.修改 ssl_certificate_key 為你的私鑰pem(這邊路徑對應上面的 /etc/letsencrypt/live/your.domain.com/privkey.pem)

2.修改 ssl_certificate 為你的證書 pem(這邊路徑對應上面的 /etc/letsencrypt/live/your.domain.com/fullchain.pem)

 

完成后進入容器:

sudo docker exec -it kong-core /bin/bash

重新加載配置

kong reload

退出容器

exit

 

P.S:

1.這里先將時區修正下,如果不對的話 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime (否則會由於服務端/客戶端時間不一致影響之后的 hmac-sha1插件的驗證)

2.kong.conf以及nginx-kong.conf是為了之后配置ssl使用,掛載為readOnly,初次啟動的時候先根據kong默認的,建立起這2個文件,否則如果不生成文件就啟動會發生問題,也可以第一次run的時候先不要加載為ro,讓它自動生成,然后rm掉這個容器,重新掛載為ro再啟動一下,那本地就會先自動生成了。最后對這兩個文件chomd 700。

 

3.部署kong-dashboard

為方便通過ui增改插件,裝一個方便的插件ui

sudo docker run -d \

--name kong-ui \

--restart=always \

--link kong-core:kong-core \

-p 8080:8080 \

pgbi/kong-dashboard

啟動后Kong node URL,輸入上面 link過的kong-core(這里就是"kong-core")名稱(我之前嘗試用ip什么都不太正常)

 

備注 docker-compose.yml

 1 version: "2"
 2 
 3 services:
 4   kong-database:
 5     image: postgres
 6     container_name: kong-database
 7     restart: always
 8     ports:
 9       - "5432:5432"
10     environment:
11       - POSTGRES_USER=kong
12       - POSTGRES_DB=kong
13     volumes:
14       - "/var/lib/containers/kong/data:/var/lib/postgresql/data"
15   kong:
16     image: kong:0.9.9
17     container_name: kong-core
18     environment:
19       - KONG_DATABASE=postgres
20       - KONG_PG_HOST=kong-database
21     restart: always
22     ports:
23       - "20801:8000"
24       - "20802:8443"
25       - "8001:8001"
26       - "7946:7946"
27       - "7946:7946/udp"
28     links:
29       - kong-database
30     volumes:
31       - "/etc/localtime:/etc/localtime:ro"
32       - "/etc/letsencrypt:/etc/letsencrypt:ro"
33       - "/usr/local/container/kong/kong.conf:/usr/local/kong/kong.conf:ro"
34       - "/usr/local/container/kong/nginx-kong.conf/:/usr/local/kong/nginx-kong.conf:ro"
35   kong-ui:
36     image: pgbi/kong-dashboard
37     container_name: kong-ui
38     restart: always
39     links:
40       - kong-core
41     ports:
42       - "8080:8080"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM