kong安装

kong官网文档:https://docs.konghq.com/gateway/latest/

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即可

posted @ 2023-05-03 16:53  pollosD  阅读(340)  评论(0编辑  收藏  举报