kong安装
centos7安装kong
数据库安装
kong支持两种模式,一种是DB-less模式,即所有的配置采用yml的方式配置,也可以采用数据库,一般情况下,Kong 会使用 PostgreSQL 或 Cassandra 作为其主要数据库,这两个数据库都具有高可靠性和高扩展性,能够满足大多数应用场景的需求。如果您需要将 Kong 部署到生产环境中,建议选择 PostgreSQL 或 Cassandra 数据库。本次采用postgresql数据库,具体安装查看:postgresql安装
安装完成后创建数据库
#登陆pgsql执行以下命令
CREATE USER kong WITH PASSWORD 'super_secret'; #密码自行设置
CREATE DATABASE kong OWNER kong;
kong安装
下载开源版的安装包,本次版本采用2.8.1版本
wget https://download.konghq.com/gateway-2.x-centos-7/Packages/k/kong-2.8.1.el7.amd64.rpm
下载完成后直接安装
yum install kong-2.8.1.el7.amd64.rpm
# 关闭防火墙
systemctl stop firewalld.service && systemctl disabled firewalld.service
修改配置文件启动
复制配置文件
cp /etc/kong/kong.conf.default /etc/kong/kong.conf
修改配置文件
vim /etc/kong/kong.conf
postgres配置
database = postgres # Determines which of PostgreSQL or Cassandra
# this node will use as its datastore.
# Accepted values are `postgres`,
# `cassandra`, and `off`.
pg_host = 172.16.0.38 # 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 = PASSWORD # Postgres user's password.
pg_database = kong # The database name to connect to.
admin端口配置
admin_listen = 0.0.0.0:8001 reuseport backlog=16384, 0.0.0.0:8444 http2 ssl reuseport backlog=16384
proxy端口配置
proxy_listen = 0.0.0.0:8000 reuseport backlog=16384, 0.0.0.0:8443 http2 ssl reuseport backlog=16384
初始化数据库
kong migrations bootstrap up -c /etc/kong/kong.conf
kong migrations up
kong migrations finish
启动kong
kong start -c /etc/kong/kong.conf
测试启动
curl http://localhost:8001
# 正常启动的kong此命令会输出大量信息
centos7安装konga
Konga 是一个 Kong 管理面板,它是一个开源项目,允许您通过基于 Web 的用户界面管理 Kong。
Konga 具有用户友好的界面,可帮助开发人员和管理员管理其 Kong API 网关实例。 它允许您更轻松地执行各种 Web 管理任务,包括配置路由和目标服务、管理插件、用户管理以及监控 Kong 网关的状态和性能等。
Konga 与 Kong 的集成非常紧密,使得在 Kong 上进行更改,反应会立即在 Konga 上进行更新。此外,Konga 还提供了一些功能,如访问控制、角色管理、LDAP支持等,使其在企业环境中也非常有用。
docker安装
docker安装一条命令即可启动
docker run -d -p 1337:1337 --name konga pantsel/konga
源代码node安装
nodejs以及相应依赖安装
curl -sL https://rpm.nodesource.com/setup_12.x | bash -
yum install -y nodejs
npm install -g bower
npm install -g gulp
konga安装
# 安装git,如已安装可忽略
yum install -y git
# 克隆源代码
git clone https://github.com/pantsel/konga.git
# 安装依赖
npm install --save node-sass
npm install --unsafe-perm
# 创建数据库,可和kong使用同一个postgres
sudo -u postgres psql
postgres=# create user konga with password '123456';
postgres=# create database konga owner konga ;
postgres=# grant all privileges on database konga to konga;
# 修改konga配置文件
## 复制一份配置文件
cp .env_example .env
## 编辑配置文件
vi .env
### 根据实际填写
PORT=1337
NODE_ENV=production
KONGA_HOOK_TIMEOUT=120000
DB_ADAPTER=postgres
DB_URI=postgresql://konga:123456@localhost:5432/konga
# 依赖安装
npm i
npm install -g pm2
# 安装完成后打开页面访问可能会出现浏览器报错,所以虚额外执行一步
npm run bower-deps # 具体原因可查看https://github.com/pantsel/konga/issues/729
# 初始化konga数据库
node ./bin/konga.js prepare –adapter postgres –uri postgresql://konga:konga-db-pass@192.168.56.210:5432/konga
# 启动konga
pm2 start app.js --name konga
# 设置开机自启
pm2 save
pm2 startup
打开浏览器访问http://$ip:1337随便创建个账号即可
helm安装kong和konga
k8s种安装kong的方式多样,本次安装使用helm安装kong,并且安装kong-ingress来作为入口控制器,简单介绍下kong-ingress:
Kong Ingress 是 Kong API 网关针对 Kubernetes 的特定插件。它与 Kubernetes Ingress 控制器紧密集成,提供了一个强大的 API 网关解决方案,同时利用 Kong 的能力和扩展性。
通过将 Kong 带入 Kubernetes 集群中,Kong Ingress 可以对访问集群中的服务进行流量控制、负载均衡和安全性,包括请求路由、服务发现、认证和授权等。Kong Ingress 还支持嵌入式插件,可在流量处理的不同阶段中添加额外的逻辑和功能。
Kong Ingress 使用 Kong 的 Admin API 来管理 API 网关配置,这意味着 Kubernetes 集群中的所有服务都可以通过 Kubernetes API Server 进行管理。此外,它还支持动态更新配置,并使用基于数据平面的负载平衡算法,以确保流量始终被正确路由到目标服务中。
总之,Kong Ingress 提供了一个完整而灵活的 API 网关解决方案,可与 Kubernetes 及其生态系统紧密集成,提供高可用性、可扩展性和安全性。
helm安装kong
以下为DB-less模式,简单理解就是无数据库模式,所有配置以yaml文件保存
# 添加helm-kong仓库
helm repo add kong https://charts.konghq.com
# 更新仓库
helm repo update
# 搜索可用版本
helm search repo kong/kong
# 拉取指定版本,如果需要安装指定版本可执行这步,不然默认拉取最新版本
helm pull kong/kong --version=2.15.3
# 解压文件
tar -zxvf kong-2.15.3.tgz
# 修改配置文件
cd kong
vim values.yaml
# 修改安装模式为daemonset,如果只是测试使用可采用默认方式
daemonset: false 修改为 daemonset: true
# 打开http-admin端口
admin: enable: false 修改为 admin:enable: true
http: enable: false 修改为 http: enable: true
# 安装
helm install kong-dev -f values.yaml . -n kong
# 如果修改了配置需要升级
helm upgrade kong-dev -f values.yaml -n kong ./
如果需要使用数据库,只需要打开数据库的配置
# 使用默认数据库
postgresql:
enabled: false #将false改为true
# 如果希望使用外置数据库或者自己独立部署的数据库,修改方式如下,只需要在env下添加数据库信息,前提是已经创建好相应的库
env:
database: "postgres"
pg_host: "10.99.220.83"
pg_port: "5432"
pg_user: kong
pg_password: kong
pg_database: kong
pg_ssl: false
pg_ssl_verify: false
其它说明
1.如果使用外部数据库模式 env下配置数据库变量
2.暴露admin api端口 admin: enable
3.使用daemonset模式 daemonset: true
4.安装ingress-controller做域名转发 默认安装
4.proxy端口为loadbalancer模式,admin端口为cluster IP
4.konga和kong处于同一环境,可以直连
helm安装的kong配置自定义插件
# 使用插件代码创建 ConfigMap 或 Secret
kubectl create configmap kong-plugin-myplugin --from-file=myplugin -n kong #configmap示例
kubectl create secret generic -n kong kong-plugin-myheader --from-file=myheader # secret示例
# 创建自定义kong插件资源
touch myplugin.yaml
#######################################################################
apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
name: myplugin
annotations:
kubernetes.io/ingress.class: kong
config: # confimap根据插件具体信息填写
header_value: "myplugin"
plugin: myplugin
######################################################################
kubectl apply -f myplugin.yaml
# 修改helm values.yaml文件,在文件末尾新增以下内容
#############################################
plugins:
configMaps:
- name: kong-plugin-myplugin
pluginName: myplugin
#############################################
# 更新helm chart
cd kong
helm upgrade kong-dev -f values.yaml -n kong ./
k8s安装konga
整体yaml如下
apiVersion: apps/v1
kind: Deployment
metadata:
name: konga
namespace: kong
spec:
replicas: 1
selector:
matchLabels:
app: konga
template:
metadata:
labels:
app: konga
spec:
containers:
- name: konga
image: pantsel/konga:latest
env:
- name: KONGA_LOG_LEVEL
value: info
- name: NODE_ENV
value: development # 此处可能有的安装文档写的production,使用production可能会有问题
- name: DB_ADAPTER
value: postgres
- name: DB_HOST
value: postgresql.kong.svc.cluster.local # 数据库地址
- name: DB_PORT
value: "5432"
- name: DB_USER
value: konga
- name: DB_PASSWORD
value: konga
- name: DB_DATABASE
value: konga
ports:
- containerPort: 1337
imagePullSecrets:
- name: IfNotPresent
---
apiVersion: v1
kind: Service
metadata:
name: konga
namespace: kong
spec:
selector:
app: konga
ports:
- name: http
port: 1337
protocol: TCP
targetPort: 1337
type: ClusterIP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: konga
namespace: kong
annotations:
annotations:
kubernetes.io/ingress.class: "nginx"
prometheus.io/http_probe: "true"
spec:
tls:
- hosts:
- konga.test.com
secretName: test.com
rules:
- host: konga.test.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: konga
port:
number: 1337
k8s里面直接apply以上文件即可,里面的配置根据自己需求修改,安装完成后添加解析访问konga.test.com即可