KONG网关 — 介绍安装
网关是微服务中不可或缺的一部分,它承载了所有请求流量入口,参数验证拦截,用户权限验证,但是除了JAVA的spring cloud之外,公共网关屈指可数,其中最受关注的就是KONG了,笔者半年前就已经在使用kong的那时候使用的是0.11.2-bate版本(之前还被官方坑了一次),前不久终于等到了1.X的正式版发布了,笔者就在这里给大家分享一下kong网关的基本情况以及使用安装的方式。
附上:
喵了个咪的博客:w-blog.cn
kong官网:https://konghq.com/
PS:本文使用的是Kong1.0.3版本
一,kong是什么
kong在girhub有不小的人气,star都有2W多次了相比也知道大家对于kong的热爱(确实也不使用JAVA栈没有什么好的选择),从下面这张官方配图可以看出,kong把本身每个服务都需要重复编写的操作汇总到了一起,让业务关注业务实现不用在为很多的规则进行重复的处理。
从笔者总结数来kong的主要优势:
- 插件市场丰富,很多插件可以降低开发成本;
- 可扩展性,可以编写lua脚本来定制自己的参数验证权限验证等操作;
- 基于openResty,openResty基于Nginx保障了强劲的性能;
- 便捷性能扩容,只需要水平增加服务器资源性能就能提升 ;
- 负载均衡健康检查
二,Docket部署kong
PS:postgreSql数据库版本必须 > 9.4
因为不是通过docker-composer启动的容器需要互相访问需要在同一个网络名下才可以互相访问
docker network create kong-net
数据库使用 postgres
docker run -d --name kong-database \--network=kong-net \-p 5432:5432 \-e "POSTGRES_USER=kong" \-e "POSTGRES_DB=kong" \postgres:9.6
准备数据库数据和配置,只需要运行一遍运行完成后会自动结束
docker run --rm \--network=kong-net \-e "KONG_DATABASE=postgres" \-e "KONG_PG_HOST=kong-database" \-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \kong:1.0.3 kong migrations bootstrap
启动kong-service
docker run -d --name kong \--network=kong-net \-e "KONG_DATABASE=postgres" \-e "KONG_PG_HOST=kong-database" \-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 8001:8001 \-p 8444:8444 \kong:1.0.3
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d82c2b7729ae kong:1.0.3 "/docker-entrypoin..." 3 seconds ago Up 2 seconds 0.0.0.0:8000-8001->8000-8001/tcp, 0.0.0.0:8443-8444->8443-8444/tcp kong
9b7f5a9c808f postgres:9.6 "docker-entrypoint..." 26 seconds ago Up 25 seconds 0.0.0.0:5432->5432/tcp kong-database
然后调用了一下地址有输出即可:
curl -i http://localhost:8001/
使用docker-compose部署kong
version: '2.1'
services:kong-migrations:image: "kong:1.0.3"command: kong migrations bootstrapdepends_on:db:condition: service_healthyenvironment:KONG_DATABASE: postgresKONG_PG_DATABASE: kongKONG_PG_HOST: dbKONG_PG_PASSWORD: kongKONG_PG_USER: konglinks:- db:dbkong:image: "kong:1.0.3"depends_on:db:condition: service_healthyenvironment:KONG_ADMIN_ACCESS_LOG: /dev/stdoutKONG_ADMIN_ERROR_LOG: /dev/stderrKONG_ADMIN_LISTEN: '0.0.0.0:8001'KONG_CASSANDRA_CONTACT_POINTS: dbKONG_DATABASE: postgresKONG_PG_DATABASE: kongKONG_PG_HOST: dbKONG_PG_PASSWORD: kongKONG_PG_USER: kongKONG_PROXY_ACCESS_LOG: /dev/stdoutKONG_PROXY_ERROR_LOG: /dev/stderrlinks:- db:dbports:- "8000:8000/tcp"- "8001:8001/tcp"- "8443:8443/tcp"- "8444:8444/tcp"restart: on-failuredb:image: postgres:9.6environment:POSTGRES_DB: kongPOSTGRES_PASSWORD: kongPOSTGRES_USER: konghealthcheck:test: ["CMD", "pg_isready", "-U", "kong"]interval: 30stimeout: 30sretries: 3restart: on-failurestdin_open: truetty: true
db的 healthcheck 做了数据层初始化完成检测,数据库完成之后才会按照顺序继续启动接下来的容器
docker-compose up -d
三,使用外部数据库
很多使用我们并不在容器中运行DB实例,因为如果出现任何问题数据丢失,我们先准备好对应的postgres数据库
{DB-host}:{DB-port}
{DB-user}
{DB-pass}
创建数据库
CREATE DATABASE "kong" WITH ENCODING='UTF8';
初始化kong需要的数据库
version: '2.1'
services:kong-migrations:image: "kong:1.0.3"command: kong migrations bootstrapenvironment:KONG_DATABASE: postgresKONG_PG_DATABASE: kongKONG_PG_HOST: {DB-host}KONG_PG_PORT: {DB-port}KONG_PG_PASSWORD: {DB-pass}KONG_PG_USER: {DB-user}
> docker-compose up -d
Creating network "kong_default" with the default driver
Creating kong_kong-migrations_1 ...
Creating kong_kong-migrations_1 ... done
在通过docker-compose来运行kong服务
version: '2.1'
services:kong:image: "kong:1.0.3"environment:KONG_ADMIN_ACCESS_LOG: /dev/stdoutKONG_ADMIN_ERROR_LOG: /dev/stderrKONG_ADMIN_LISTEN: '0.0.0.0:8001'KONG_CASSANDRA_CONTACT_POINTS: dbKONG_DATABASE: postgresKONG_PG_DATABASE: kongKONG_PG_HOST: {DB-host}KONG_PG_PORT: {DB-port}KONG_PG_PASSWORD: {DB-pass}KONG_PG_USER: {DB-user}KONG_PROXY_ACCESS_LOG: /dev/stdoutKONG_PROXY_ERROR_LOG: /dev/stderrports:- "8000:8000/tcp"- "8001:8001/tcp"- "8443:8443/tcp"- "8444:8444/tcp"restart: on-failure
docker-compose up -d
Creating kong_kong_1 ...
Creating kong_kong_1 ... done
kubernetes编排
apiVersion: extensions/v1beta1 # K8S对应的API版本
kind: Deployment # 对应的类型
metadata:name: konglabels:name: kongnamespace: kong # namespace
spec:replicas: 1 # 镜像副本数量template:metadata:labels: # 容器的标签 可和service关联app: kongspec:containers:- name: kong # 容器名和镜像image: kong:1.0.3imagePullPolicy: Alwaysports:- containerPort: 8000env: # 环境变量- name: KONG_DATABASEvalue: postgres- name: KONG_PG_DATABASEvalue: dev-kong- name: KONG_PG_HOSTvalue: {DB-host}- name: KONG_PG_PORTvalue: {DB-port}- name: KONG_PG_PASSWORDvalue: {DB-pass}- name: KONG_PG_USERvalue: {DB-user}- name: KONG_LOG_LEVELvalue: warnresources: # 资源限制requests:memory: "256Mi"cpu: "200m"limits:memory: "512Mi"cpu: "400m"
---
apiVersion: v1
kind: Service
metadata:namespace: kong # 在哪个命名空间中创建name: kong # 名称labels:name: kong
spec:type: NodePort # 开放端口的类型selector: # service负载的容器需要有同样的labelsapp: kongports:- name: httpport: 8000 # 通过service来访问的端口targetPort: 8000 # 对应容器的端口nodePort: 30180- name: httpsport: 8443 # 通过service来访问的端口targetPort: 8443 # 对应容器的端口nodePort: 30143- name: apiport: 8001 # 通过service来访问的端口targetPort: 8001 # 对应容器的端口nodePort: 30801
KONG网关 — 介绍安装相关推荐
- kong java_KONG网关 — 介绍安装
网关是微服务中不可或缺的一部分,它承载了所有请求流量入口,参数验证拦截,用户权限验证,但是除了JAVA的spring cloud之外,公共网关屈指可数,其中最受关注的就是KONG了,笔者半年前就已经在 ...
- Kong网关简介安装
转载 李亚飞 大佬的文章:https://www.lyafei.com/ 背景 我们有批设备卖给了海外的服务商,老外请了第三方检测机构,检测设备与我们系统的安全性,结果找到了近 40+ 的安全漏洞,有 ...
- Kong 网关API安装部署以及应用实例----------腾云驾雾
背景介绍 之前项目上api的接口用的是自己nginx搭建的反向代理接口,觉得功能性比较查差,故而另辟蹊径找到了kong作为接口网关服务. 工作原理 kong会把所有的后端接口对应的数据放到cassan ...
- 开源API网关Kong基本介绍和安装验证
本文将介绍开源API网关Kong.在GitHub搜索API网关类的开源产品,可以看到Kong网关常年都是排第一的位置,而且当前很多都有一定研发能力的企业在API网关产品选项的时候基本也会选择Kong网 ...
- 开源syslog服务器_开源API网关Kong基本介绍和安装验证
今天准备介绍下开源API网关Kong,在Gtihub搜索API网关类的开源产品,可以看到Kong网关常年都是排第一的位置,而且当前很多都有一定研发能力的企业在API网关产品选型的时候基本也会选择Kon ...
- centos6.5 安装 kong 网关
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 最近要求了解下kong网关,然后在网上一顿找,说实话,度娘的力量还是不行啊,找出来的那些跟着配置,不 ...
- 以Docker方式安装和配置Kong网关和Konga控制台
文章目录 以Docker方式安装和配置Kong网关和Konga控制台 前言 安装Kong 创建容器网络 启动PostgreSQL数据库 初始化数据 对Kong Admin API作安全防护 启动Kon ...
- Tyk API网关介绍及安装说明
Tyk API网关介绍及安装说明 Tyk是一个开源的轻量级API网关程序. 什么是API网关 API网关是一个各类不同API的前置服务器.API网关封装了系统内部架构,对外提供统一服务.此外还可以实现 ...
- kong 网关日志格式修改
kong 网关日志格式修改 kong网关默认日志在/usr/local/kong/logs,主要有access.log,admin_access.log,error.log,access.log和ng ...
最新文章
- Android 数据存储-内外部存储测试
- 通过对比对象掩码建议的无监督语义分割
- ASP.NET虚拟主机安全漏洞解决方案
- Android:AS与Unity3D之间打包的各种坑及解决方案
- 基于S3C2440A+SDRAM(K4M51163)
- Java Web的Struts2的多语种网站的多语言切换实例
- 2015 年,我和华大基因立下一个小目标……
- python入门之函数调用第一关_零基础学习 Python 之与函数的初次相见
- hdu 2049 不容易系列之(4)——考新郎
- 小心 Enum Parse 中的坑
- LeetCode 1909. 删除一个元素使数组严格递增
- Classpath entry org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER will not be exported or published. Runtim
- Redis实战篇(视频学习来自黑马程序员)
- 适应浏览器自带断点下载
- cad没有命令输入框_cad命令输入框没了(CAD 输入命令栏显示在绘图的屏幕上怎么设置)...
- 【3-hexo】为啥我又搭建了一个博客?【服务器自建博客】
- 畅捷通T+密码清除后,空密码无法登录账套解决办法
- 打开计算机首先映入眼帘的一整屏称之为桌面,利用“活动桌面” 让桌面也“闪”起来...
- 微信浏览器字体调整 PHP,微信h5禁止微信内置浏览器调整字体大小-爬坑
- APICloud 自定义模块开发的一些坑
热门文章
- 51单片机学习篇-- --红外通信(PPM脉时)笔记
- 哈佛导师经典评论:不要轻易和少妇上床(转贴)
- 钉钉统一身份认证对接前后端代码
- ruoyi对接CAS统一身份认证
- Adobe MAX 2016
- 药品研发--工艺技术人员积分和职务考核评估管理办法
- java copy 软连接文件夹_文件文件夹映射junction和mklink,创建软硬链接
- 转载:普及一下junction和mklink,让你的c盘空闲起来
- 两分钟了解HTTP请求报文和响应报文
- Vue第二天学习总结—— Vue全家桶之组件化开发(组件化开发思想、组件注册、Vue调试工具用法、组件间数据交互传递、组件插槽、基于组件的案例——购物车)