kong接入网关

2022-09-11 17:27:57 浏览数 (1)

环境(linux虚拟机)

准备工作

  • virtualboxvagrant版本不兼容会出现很多未知问题(坑),官方网站也没有介绍哪个版本对应兼容,我这里分享一个兼容性不错的版本
  • virtualbox5.2.8
  • vagrant2.1.1
  • ubuntu/xenial64下载地址
  • boxes 下载地址
  • 具体安装细节请参考Ubuntu安装docker准备篇
  • vagrant 操作虚拟机常用命令
代码语言:javascript复制
 1. 显示当前版本
 # vagrant --version  
 2. 列出所有Box
 # vagrant box list
 3. 添加一个Box
 # vagrant box add [options] <name, url, or path>
 3.1 可以从https://app.vagrantup.com/boxes/search下载各种Vagrant映像文件       
 # vagrant box add ubuntu/trusty64
 3.2 通过指定的URL添加远程box
 # vagrant box add https://atlas.hashicorp.com/ubuntu/boxes/trusty64
 3.3 添加一个本地box      
 # vagrant box add {box_name} {file_path}  
 4. 初始化一个新VM
 # vagrant init ubuntu/trustry64
 5. 启动一个VM
 # vagrant up
 6. 启用SSH登陆VM
 # vagrant ssh
 7. 查看VM当前的状态
 # vagrant status
 8. 关闭VM
 # vagrant halt
 9. 从box列表移除
 # vagrant box remove [name]
 10. 重启虚拟机
 # vagrant reload
 11. 挂起虚拟机
 # vagrant suspend   
 12. 唤醒虚拟机
 # vagrant resum

假设你已经安装好虚拟机(以ubuntu为例)

安装docker

  • 具体安装细节以及权限问题解决请参考Ubuntu安装docker

假设你已经安装好docker

我们使用docker安装kong

  • kong官网
  • Kong采用插件机制进行功能定制,插件集(可以是0或N个)在API请求响应循环的生命周期中被执行。插件使用Lua编写,目前已有几个基础功能:HTTP基本认证、密钥认证、CORS(Cross-Origin Resource Sharing,跨域资源共享)、TCP、UDP、文件日志、API请求限流、请求转发以及Nginx监控。
  • kong插件地址
  • kong文档地址
  • kong安装
  • kong 安装详细
代码语言:javascript复制
# 创建kong-net网络
docker network create kong-net
# 安装postgres
docker run -d --name kong-database 
            -p 5432:5432 
            -e "POSTGRES_USER=kong" 
            -e "POSTGRES_DB=kong" 
            -e "POSTGRES_PASSWORD=kong" 
            postgres:9.6
#运行临时Kong容器迁移数据库
docker run --rm 
--link kong-database:kong-database 
-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/kong-gateway kong migrations bootstrap
# 启动Kong容器
docker run -d --name kong 
--link kong-database:kong-database 
-e "KONG_DATABASE=postgres" 
-e "KONG_PG_HOST=kong-database" 
-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 8001:8001 
-p 8444:8444 
kong/kong-gateway
注意

我们是用本地访问虚拟机中docker容器,所以需要注意端口对应

docker

虚拟机

本地

port

8000

8000

8000

port

8001

8001

8001

port

8443

8443

8443

port

8444

8444

8444

修改Vagrantfile文件并重启虚拟机

Kong(8000端口) 是请求进入端口,用户发送请求先到 Kong 项目的 8000 端口,kong根据配置的规则转发到真实的后台服务地址。

Kong(8001端口) 是管理端口,插件设置、API的增删改查、以及负载均衡等一系列的配置都是通过8001端口进行管理。

代码语言:javascript复制
# 本地端口host对应虚拟机端口guest
  config.vm.network "forwarded_port", guest: 8000, host: 8000
  config.vm.network "forwarded_port", guest: 8001, host: 8001
  config.vm.network "forwarded_port", guest: 8444, host: 8444
  config.vm.network "forwarded_port", guest: 8443, host: 8443
  config.vm.network "forwarded_port", guest: 8080, host: 8080
# 设置虚拟机静态Ip便于访问(注意IP端要和本地IP在一个网段)
  config.vm.network "private_network", ip: "192.168.56.2"
# 设置虚拟机和本地的共享目录
  config.vm.synced_folder "D:/dev/study/php/vagrant/code", "/data/www/"    

测试访问

最后、浏览器访问IP:8000,如果出现 说明安装成功。

0 人点赞