米亚的鱼 - Kong
type: channel
link: https://blog.miacraft.cn/index.php/tag/Kong/
items: Kong插件开发
items: Kong安装部署

Kong插件开发
type: item
date: 2021-03-17T07:24:00+00:00
description: Kong插件开发新建Kong配置文件配置文件/etc/kong/kong.conf，可以先随便建一个，后面拷贝Kong容器里面的kong.conf.default出来新建插件目录/kongdev/kong/plugins，在目录内以插件名称再创建插件目录文件新建必须的插件模块文件handler.lua-- 根据插件beta_switch配置打印日志或返回相应头部内容 local BasePlugin = require "kong.plugins.base_plugin" local BetaHandler = BasePlugin:extend() BetaHandler.PRIORITY = 2000 function BetaHandler:new() BetaHandler.super.new(self, "betahandler") end function BetaHandler:access(conf) BetaHandler.super.access(self) if conf.beta_switch then -- 日志里面打印内容 ngx.log(ngx.ERR, "Beta Opening") -- 头部里面增加信息 ngx.header["Beta"] = "Opening" else -- 日志里面打印内容 ngx.log(ngx.ERR, "Beta Closed") -- 头部里面增加信息 ngx.header["Beta"] = "Closed" end end return BetaHandlerschema.lua-- 配置信息设置 return { no_consumer = true, fields = { beta_switch = { type = "boolean", default = true } } }部署Kong、KongA和Postgresql由于配置和插件文件需要映射到主机的目录，所以Kong的启动参数需要添加卷映射，KongA和Postgresql的部署可以参考Kong部署的文章Kong Docker启动脚本docker run -d --name kong \ --network=kong-net \ -e "KONG_DATABASE=postgres" \ -e "KONG_PG_HOST=kong-database" \ -e "KONG_PG_USER=kong" \ -e "KONG_PG_PASSWORD=kong" \ -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \ -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 0.0.0.0:8001:8001 \ -p 0.0.0.0:8444:8444 \ -v /kongdev/kong/plugins:/kongdev/kong/plugins\ -v /etc/kong/kong.conf:/etc/kong/kong.conf\ kong:latest注意由于映射目录需要将SELinux关闭setenforce 0编辑kong.conf的配置，找到以下2项改为相应的配置plugins = bundled,beta lua_package_path = /kongdev/?.lua;./?.lua;./?/init.lua;;验证插件KongA界面添加服务、路由和插件添加服务添加路由添加插件命令添加服务、路由和插件创建一个servicecurl -i -X POST --url http://127.0.0.1:8001/services/ --data 'name=beta-service' --data 'url=https://blog.miacraft.cn/'为服务指定路由curl -i -X POST --url http://127.0.0.1:8001/services/beta-service/routes --data 'paths[]=/beta'添加插件curl -i -X POST --url http://127.0.0.1:8001/services/beta-service/…

Kong安装部署
type: item
date: 2021-03-09T03:46:00+00:00
description: Kong是一个API网关，基于OpenResty可以在其基础上扩展API管理以及相关安全插件，其社区还有好多免费或收费的安全插件Kong安装部署Docker部署创建网络docker network create kong-net准备数据库cassandra和postgres二选一安装cassandradocker run -d --name kong-database \ --network=kong-net \ -p 9042:9042 \ cassandra:3安装postgresdocker run -d --name kong-database \ --network=kong-net \ -p 5432:5432 \ -e "POSTGRES_USER=kong" \ -e "POSTGRES_DB=kong" \ -e "POSTGRES_PASSWORD=kong" \ postgres:9.6安装Kong迁移数据docker run --rm \ --network=kong-net \ -e "KONG_DATABASE=postgres" \ -e "KONG_PG_HOST=kong-database" \ -e "KONG_PG_USER=kong" \ -e "KONG_PG_PASSWORD=kong" \ -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \ kong:latest kong migrations bootstrap开启Kongdocker run -d --name kong \ --network=kong-net \ -e "KONG_DATABASE=postgres" \ -e "KONG_PG_HOST=kong-database" \ -e "KONG_PG_USER=kong" \ -e "KONG_PG_PASSWORD=kong" \ -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \ -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 0.0.0.0:8001:8001 \ -p 0.0.0.0:8444:8444 \ kong:latest常规RPM包部署安装PostGreSQL下载PostGreSQL RPM安装包并安装wget https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm yum -y install pgdg-redhat-repo-latest.noarch.rpm yum install -y postgresql96 yum install -y postgresql96-server初始化开启服务并登录/usr/pgsql-9.6/bin/postgresql96-setup initdb systemctl enable postgresql-9.6 systemctl start postgresql-9.6 su - postgres创建Kong相关的数据库和账号psql CREATE USER kong WITH PASSWORD 'kong'; CREATE DATABASE kong OWNER kong; GRANT ALL PRIVILEGES ON DATABASE kong to kong;编辑配置文件，将其监听端口范围放开sed -i "s|#listen_addresses = 'localhost'|listen_addresses = '*'|g" /var/lib/pgsql/9.6/data/postgresql.conf修改pg_hba.conf文件，将其# IPv4 local connections:修改成如图所示，主要将ident和peer改为trustvi /var/lib/pgsql/9.6/data/pg_hba.conf设置环境变量vi /etc/profileexport PATH=$PATH:/usr…