网关是微服务中不可或缺的一部分,它承载了所有请求流量入口,参数验证拦截,用户权限验证,但是除了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网关 — 介绍安装相关推荐

  1. kong java_KONG网关 — 介绍安装

    网关是微服务中不可或缺的一部分,它承载了所有请求流量入口,参数验证拦截,用户权限验证,但是除了JAVA的spring cloud之外,公共网关屈指可数,其中最受关注的就是KONG了,笔者半年前就已经在 ...

  2. Kong网关简介安装

    转载 李亚飞 大佬的文章:https://www.lyafei.com/ 背景 我们有批设备卖给了海外的服务商,老外请了第三方检测机构,检测设备与我们系统的安全性,结果找到了近 40+ 的安全漏洞,有 ...

  3. Kong 网关API安装部署以及应用实例----------腾云驾雾

    背景介绍 之前项目上api的接口用的是自己nginx搭建的反向代理接口,觉得功能性比较查差,故而另辟蹊径找到了kong作为接口网关服务. 工作原理 kong会把所有的后端接口对应的数据放到cassan ...

  4. 开源API网关Kong基本介绍和安装验证

    本文将介绍开源API网关Kong.在GitHub搜索API网关类的开源产品,可以看到Kong网关常年都是排第一的位置,而且当前很多都有一定研发能力的企业在API网关产品选项的时候基本也会选择Kong网 ...

  5. 开源syslog服务器_开源API网关Kong基本介绍和安装验证

    今天准备介绍下开源API网关Kong,在Gtihub搜索API网关类的开源产品,可以看到Kong网关常年都是排第一的位置,而且当前很多都有一定研发能力的企业在API网关产品选型的时候基本也会选择Kon ...

  6. centos6.5 安装 kong 网关

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 最近要求了解下kong网关,然后在网上一顿找,说实话,度娘的力量还是不行啊,找出来的那些跟着配置,不 ...

  7. 以Docker方式安装和配置Kong网关和Konga控制台

    文章目录 以Docker方式安装和配置Kong网关和Konga控制台 前言 安装Kong 创建容器网络 启动PostgreSQL数据库 初始化数据 对Kong Admin API作安全防护 启动Kon ...

  8. Tyk API网关介绍及安装说明

    Tyk API网关介绍及安装说明 Tyk是一个开源的轻量级API网关程序. 什么是API网关 API网关是一个各类不同API的前置服务器.API网关封装了系统内部架构,对外提供统一服务.此外还可以实现 ...

  9. kong 网关日志格式修改

    kong 网关日志格式修改 kong网关默认日志在/usr/local/kong/logs,主要有access.log,admin_access.log,error.log,access.log和ng ...

最新文章

  1. Android 数据存储-内外部存储测试
  2. 通过对比对象掩码建议的无监督语义分割
  3. ASP.NET虚拟主机安全漏洞解决方案
  4. Android:AS与Unity3D之间打包的各种坑及解决方案
  5. 基于S3C2440A+SDRAM(K4M51163)
  6. Java Web的Struts2的多语种网站的多语言切换实例
  7. 2015 年,我和华大基因立下一个小目标……
  8. python入门之函数调用第一关_零基础学习 Python 之与函数的初次相见
  9. hdu 2049 不容易系列之(4)——考新郎
  10. 小心 Enum Parse 中的坑
  11. LeetCode 1909. 删除一个元素使数组严格递增
  12. Classpath entry org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER will not be exported or published. Runtim
  13. Redis实战篇(视频学习来自黑马程序员)
  14. 适应浏览器自带断点下载
  15. cad没有命令输入框_cad命令输入框没了(CAD 输入命令栏显示在绘图的屏幕上怎么设置)...
  16. 【3-hexo】为啥我又搭建了一个博客?【服务器自建博客】
  17. 畅捷通T+密码清除后,空密码无法登录账套解决办法
  18. 打开计算机首先映入眼帘的一整屏称之为桌面,利用“活动桌面” 让桌面也“闪”起来...
  19. 微信浏览器字体调整 PHP,微信h5禁止微信内置浏览器调整字体大小-爬坑
  20. APICloud 自定义模块开发的一些坑

热门文章

  1. 51单片机学习篇-- --红外通信(PPM脉时)笔记
  2. 哈佛导师经典评论:不要轻易和少妇上床(转贴)
  3. 钉钉统一身份认证对接前后端代码
  4. ruoyi对接CAS统一身份认证
  5. Adobe MAX 2016
  6. 药品研发--工艺技术人员积分和职务考核评估管理办法
  7. java copy 软连接文件夹_文件文件夹映射junction和mklink,创建软硬链接
  8. 转载:普及一下junction和mklink,让你的c盘空闲起来
  9. 两分钟了解HTTP请求报文和响应报文
  10. Vue第二天学习总结—— Vue全家桶之组件化开发(组件化开发思想、组件注册、Vue调试工具用法、组件间数据交互传递、组件插槽、基于组件的案例——购物车)