图灵奖获得者、美国国家科学院院士、计算机科学家巴特勒・兰普森(Butler Lampson)有句著名的格言:“计算机科学中的任何问题大都可以通过增加中间层解决(Any problem in computer science can be solved with another level of indirection)”,分层使我们有更多想象空间,实现了 “不可能” 到 “可能”,从逻辑电路、硬件体系、汇编语言、高级语言,到操作系统、软件设计、软件架构、网络协议、网络设备等,都充分体现了分层的思想。分层不仅可以使彼此之间边界清晰、职责分离、共享复用,而且可以进行进一步的信息处理、流程控制、行为控制,还有助于后期的移植扩展、维护管理。最为常见的有交换机、路由器、计算机主板、缓存、队列、虚拟内存管理、CDN、CPU Cache、TCP、HTTP、HTTPS、HTTP2、WebSocket、Thrift、Protobuf、AOP、JIT、JVM、LVS、HAProxy、Envoy、Docker、CGroup、Ingress 等。
网关是上承后端服务下接前端用户的咽喉之地、关隘要道,是所有客户端请求响应出入流量的必经之路。它除了可以做最基础的反向代理之外,还可以处理通用的公共服务逻辑,如负载均衡、认证授权、动态路由、流量调度、数据缓存、限流限频、灰度发布、蓝绿发布、滚动发布、协议转换、请求转换、请求映射、服务编排、服务预热、服务降级、智能熔断、流量镜像、健康检查、跨域请求、监控报警、安全防御等。
Kong是一个全新的支持亿级流量、低延迟的云原生网关平台,在GitHub上28.3K+ 星,是一个具有分布式、高可用、可伸缩、可扩展、高并发、高性能、可观测,可运维、全生态等特点的高度可扩展微服务网关。可供选择的开源插件多达百个,支持公有云、私有云、混合云等多种部署环境和云平台。
进入正题, 正所谓万事开头难,你也许可能经历过,当你满怀热情的将要准备正式学习一个开源软件时,仅仅只是软件的环境搭建、安装配置的过程,就可能让你千头万绪失去了信心,为什么,因为对于一个初次接触的陌生软件,你可能会需要花费更多精力和时间,去解决思考中途所遇到的各种各样的问题。
那么Kong的搭建配置过程又是如何的呢?只需5分钟即可。
下面我们将详细介绍Kong的三种最常用、最快捷的安装方式,以便你快速学习入门:
第1种:一键式安装All-In-One
在这种方式下,将一键式整套自动安装配置Kong(网关)/Konga(UI管理工具)/PostgreSQL(数据库),并立即启动、即刻使用。
工欲善其事,必先利其器,首先需要安装Docker compose (如果已有直接跳过),这是Docker 提供的一个命令行工具,用来管理和运行由多个容器组成的应用,相关命令如下:
$ yum install epel-release -- 安装并启用epel 源
$ yum install -y python-pip -- 安装python-pip
$ pip install --upgrade pip -- 更新pip
$ yum -y install python-devel python-subprocess32 -- 安装python-devel/subprocess32
$ pip install docker-compose -- 安装docker-compose
安装好后,将下面的docker-compose.yml文件放置到服务器,此文件是在前面提到的Kong、PostgreSQL、Konga 镜像容器的组合(除PostgreSQL也可选择Cassandra),然后只需要运行docker-compose up 一行命令即可完成整个Kong、PostgreSQL 和Konga 的下载、安装、配置、启动,过程中你可通过控制台看到整个安装过程。
version: '3'
services:
kong-database:
image: postgres:9.6 --镜像postgres
container_name: kong-database
ports:
- 5432:5432 --postgres端口
environment:
- POSTGRES_USER=kong
- POSTGRES_DB=kong
- POSTGRES_PASSWORD=kong
volumes:
- "/opt/kong-db-data-postgres:/var/lib/postgresql/data" –数据目录映射
kong-migrations:
image: kong:2.3 --镜像kong
environment:
- KONG_DATABASE=postgres
- KONG_PG_HOST=kong-database
- KONG_PG_USER=kong
- KONG_PG_PASSWORD=kong
command: kong migrations bootstrap --kong数据库自动初使化
restart: on-failure
depends_on:
- kong-database
kong:
image: kong:2.3 --镜像kong
container_name: kong
environment:
- KONG_DATABASE=postgres
- KONG_PG_HOST=kong-database
- KONG_PG_USER=kong
- KONG_PG_PASSWORD=kong
- KONG_PROXY_ACCESS_LOG=/dev/stdout
- KONG_ADMIN_ACCESS_LOG=/dev/stdout
- KONG_PROXY_ERROR_LOG=/dev/stderr
- KONG_ADMIN_ERROR_LOG=/dev/stderr
- KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl
restart: on-failure
ports:
- 8000:8000 -- kong代理端口
- 8443:8443 -- kong管理端口
- 8001:8001 -- kong SSL代理端口
- 8444:8444 -- kong SSL管理端口
links:
- kong-database:kong-database
depends_on:
- kong-migrations
konga:
image: pantsel/konga:0.14.9 --镜像konga
ports:
- 1337:1337 --konga端口
links:
- kong:kong
container_name: konga
environment:
- NODE_ENV=production
最后,看到以下信息表示Kong安装启动成功:
using the "epoll" event method
openresty/1.15.8.3
built by gcc 9.2.0 (Alpine 9.2.0)
OS: Linux 3.10.0-693.el7.x86_64
getrlimit(RLIMIT_NOFILE): 1048576:1048576
start worker processes
最后访问以下地址即刻体验:
Kong代理端口:http://ip:8000
Konga UI管理:http://ip:8001
第2种:直接安装
不像其他软件那样,安装过程冗长、复杂且存在各种依赖项错误,Kong的安装过程非常简洁。只需要从https://docs.konghq.com/install/centos下载CentOS 7(为例)所需要编译后的rpm安装包,然后用下面一行命令安装即可:
$ yum install kong-2.3.3.el7.amd64.rpm --nogpgcheck --安装部署
或者通过仓库在线安装:
$ wget https://bintray.com/kong/kong-rpm/rpm -O bintray-kong-kong-rpm.repo
$ export major_version=`grep -oE '[0-9]+\.[0-9]+' /etc/redhat-release | cut -d "." -f1`
$ sed -i -e 's/baseurl.*/&\/centos\/'$major_version''/ bintray-kong-kong-rpm.repo
$ sudo mv bintray-kong-kong-rpm.repo /etc/yum.repos.d/
$ sudo yum install -y kong
安装成功后,使用kong version命令,可显示出当前所安装的版本号,表示安装成功。
Kong可以通过YML配置文件,在无数据库DB-less模式下运行。首先生成声明性配置文件,通过下面命令将自动生成kong.yml 配置在您当前的文件夹。
$ kong config init
再编辑默认路径/etc/kong/kong.conf配置文件。 打开文件将database选项设置为off,并将declarative_config选项设置为刚生成的kong.yml文件的路径:
database = off
declarative_config = /path/to/kong.yml
最后一行命令启动:
$ kong start
访问http://ip:8000,进行立即体验。
第3种:Kubernetes上安装
有以下2种方式,安装Kong for Kubernetes:
YAML manifests
Helm Chart
通过kubectl 部署Kong:
$ kubectl apply -f https://bit.ly/kong-ingress-dbless
通过Helm部署Kong:
$ helm repo add kong https://charts.konghq.com
$ helm repo update
$ helm install kong/kong
之后通过Service直接访问Kong即可。
以上介绍了3种方式来快速安装配置Kong,你可以选择任意其一进行体验。
福利
想了解更多关于Kong的知识点,推荐一本书《Kong入门与实战:基于Nginx和OpenResty的云原生微服务网关》,本书内容如下:
作者为了感谢粉丝的支持特意准备了6本书作为福利送给大家,留言评论想获得此书的原因,一人一楼,5-10-15-25-35-45楼中奖。中奖者我会回复你的评论与你联系。截至时间为本周四(3月25日)12:00,为了防止刷楼等楼,评论暂不放出(周四12:00统一放出)。
最后,希望你能中奖,也希望你能有收获。如果没中奖的同学可以点击下方链接购买。
Kubernetes管理员认证(CKA)培训
本次CKA培训在深圳开班,基于最新考纲,通过线下授课、考题解读、模拟演练等方式,帮助学员快速掌握Kubernetes的理论知识和专业技能,并针对考试做特别强化训练,让学员能从容面对CKA认证考试,使学员既能掌握Kubernetes相关知识,又能通过CKA认证考试,学员可多次参加培训,直到通过认证。点击下方图片或者阅读原文链接查看详情。