Kong 系列 -- Kong 101

隨着微服務、開放平臺等概念的興起,實踐過程中 API 數量呈現爆發式增長,對外、對內如何治理?網關是針對這一系列疑問的部分迴應,才疏學淺,只能留下一些爛筆頭。

目前 API 網關實現比較多,KongOrangeTraefikTykIstio 等。Kong 就是其中一個開源的 API 網關實現,有社區支持,相對比較活躍,也有商業版本提供給企業客戶。最近要在 k8s 中試用 Kong,所以接下來一段時間的博客主要就圍繞 Kong 做一些記錄。


本篇主要是參照了 官方安裝文檔 ,在本地安裝的筆記。

OS:Ubuntu 19.04 Desktop x64
Kong:1.4.0
Postgresql:11.5

1、安裝 Kong

Kong 支持很多種安裝模式
在這裏插入圖片描述
這裏用的 Ubuntu 下手工安裝的方式,先下載 deb 包。因官網沒有提供 Ubuntu-19.04 的包,所以下載了 Ubuntu-18.04 的 deb 包,後面跑起來也沒發現有什麼問題。

 $ sudo apt-get update
 $ sudo apt-get install openssl libpcre3 procps perl
 $ sudo dpkg -i <kong-download-path>/kong-1.4.0.bionic.amd64.deb

安裝完後,相關目錄分別是 /etc/kong/usr/local/kong

# 這個 kong.conf 是我 cp 了 kong.conf.default 的一個修改版本
cq@ubuntu /etc/kong % ls
kong.conf  kong.conf.default

以上是默認配置文件模板,詳細配置項此處還用不上,就不提前引入,增加本篇的理解難度了。
Kong 本體
以上是程序的本體所在,因 Kong 是對 Openresty 的封裝,而 Openresty 底下又是 Nginx。對 kong 標準配置文件的修改,會映射到這裏的配置修改,如果你直接改這裏,在重啓或 reload 後可能會發現被 kong 的配置覆蓋。

附:如果想用 APT 來安裝,也有命令,搬運如下(國內的網有些時候讓人很抓狂,官網一句命令的事兒,有可能需要你瘋狂改源。。)

$ sudo apt-get update
$ sudo apt-get install -y apt-transport-https curl lsb-core
$ echo "deb https://kong.bintray.com/kong-deb `lsb_release -sc` main" | sudo tee -a /etc/apt/sources.list
$ curl -o bintray.key https://bintray.com/user/downloadSubjectPublicKey?username=bintray
$ sudo apt-key add bintray.key
$ sudo apt-get update
$ sudo apt-get install -y kong

2、數據庫準備

Kong 提供兩種模式,一種叫 db-less mode,就是不用數據庫,配置全擼到配置文件裏,啓動時加載到內存,這是從1.1版本開始支持的模式。另一種就是使用數據庫,多節點的情況下,這就是共享的配置中心,牽一髮動全身,目前 kong 僅支持兩種:PostgreSQL 9.5+Cassandra 3.x.x

關於 db-less mode,咱們後面單開一篇來學習,這裏就用 pg 來做實驗。

2.1 安裝 PG

sudo apt install postgresql

安裝完畢,默認會創建好組和用戶。

cq@ubuntu /etc/kong % cat /etc/passwd|grep postgres
postgres:x:127:133:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash
cq@ubuntu /etc/kong % cat /etc/group|grep postgres
ssl-cert:x:111:postgres
postgres:x:133:

使用管理員 postgres 登錄後創建 kong 相關的數據庫和用戶。

sudo su - postgres
psql
postgres=# CREATE USER kong; CREATE DATABASE kong OWNER kong;
postgres=# ALTER USER kong WITH PASSWORD 'kong';

查看5432端口是否正常監聽

netstat -tnlp | grep 5432

否則需要修改配置文件 /etc/postgresql/11/main/postgresql.conf

2.2 初始化數據庫

拷貝一份 /etc/kong/kong.conf.default 爲 kong.conf,在 kong.conf 中設置好連接 pg 數據庫的參數。

#database = off            
#decalrative_config = /home/cq/kong/kong-local-install/kong.yml

database = postgres             # Determines which of PostgreSQL or Cassandra
                                 # this node will use as its datastore.
                                 # Accepted values are `postgres`,
                                 # `cassandra`, and `off`.

pg_host = 127.0.0.1             # Host of the Postgres server.
pg_port = 5432                  # Port of the Postgres server.
#pg_timeout = 5000               # Defines the timeout (in ms), for connecting,
                                 # reading and writing.

pg_user = kong                  # Postgres user.
pg_password = kong                  # Postgres user's password.
pg_database = kong              # The database name to connect to.

初始化 kong 數據庫

kong migrations bootstrap -c /etc/kong/kong.conf

3、啓動 Kong

kong start -c /etc/kong/kong.conf

啓動完畢就可以通過瀏覽器或者 curl 來訪問 kong 了。kong 提供了4個端口供訪問,兩個 http,兩個 https,流量代理端口爲 8000/8443,管理端口爲 8001/8444。

如果想遠程訪問管理端口,需要修改配置文件 /etc/kong/kong.conf 中相應配置,改完 kong reload 一把。
admin_port
最後驗證一把訪問正常。

# 在 hosts 中對 kong_test 做了映射
curl -i http://kong_test:8001/

在這裏插入圖片描述

ps:近期學習 kong 的時候,也翻了一些網友的文章,感謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章