V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
vocalman
V2EX  ›  分享创造

几种部署 Goku API Gateway 的方式,最快一分钟可使用上网关

  •  
  •   vocalman · 2019-11-08 17:09:47 +08:00 · 2427 次点击
    这是一个创建于 1850 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本文将介绍几种部署 Goku API Gateway 的方式,最快一分钟可使用上为网关,详情请看全文。

    什么是 Goku API Gateway ?

    Goku API Gateway (中文名:悟空 API 网关)是一个基于 Golang 开发的运行在企业系统服务边界上的微服务网关。当您构建网站、App、IOT 甚至是开放 API 交易时,Goku API Gateway 能够帮你将内部系统中重复的组件抽取出来并放置在 Goku 上运行,如进行用户授权、访问控制、防火墙、数据转换等;并且 Goku 提供服务编排的功能,让企业可以快速从各类服务上获取需要的数据,对业务实现快速响应。

    Goku API Gateway 的社区版本( CE )拥有完善的使用指南和二次开发指南,代码使用纯 Go 语言编写,拥有良好的性能和扩展性,并且内置的插件系统能够让企业针对自身业务进行定制开发。使用 Goku API Gateway 能让业务开发团队更加专注地实现业务。

    一套完整的 Goku API Gateway 由一个 控制台若干个 网关节点 组成。节点通过 IP 地址注册在控制台中,控制台内的配置项会对所有节点生效。控制台用于配置网关的运行信息,例如访问策略、转发的 API 信息等等;节点用于实际的转发。当控制台上发布了最新的配置,所有节点都会主动更新自己的运行配置;在控制台发布的配置支持版本管理,可以手动发布和回滚。

    Goku API Gateway 支持管理多个网关节点的集群,实现让用户访问不同的集群从而访问不同的服务地址的目的。

    下面是以两个 DC ( Data Center )为例的部署架构简图: 在这里插入图片描述 Goku 的网关节点除了能够直接获取控制台的配置外,也支持采用直接读取配置文件的方式来使用。配置文件可以通过 EOLINKER 官方提供的线上控制台来导出,线上控制台可让用户方便修改配置,修改完后导出配置文件,放到节点的服务器上即可。

    线上控制台地址: http://goku-console.eolinker.com

    使用线上控制台的话无法区分不同集群,如需使用更强功能建议还是部署自己的私有云控制台。

    本文给出几种 Goku API Gateway 的部署方式:

    一、节点 docker+线上控制台

    二、节点 docker+线上控制台 Docker

    三、使用安装包直接安装

    部署安装时需要用到的链接:

    一、节点 Docker+线上控制台

    Goku API Gateway 提供节点 Docker 和控制台 Docker,最快的方式就是仅部署节点 Docker,然后通过线上控制台来配置网关信息,配置完成后导出文件并上传到节点服务器,最后启动节点 Docker。

    使用步骤

    1、配置完毕后,在线上控制台的首页导出配置: 在这里插入图片描述 2、将配置上传到服务器,启动 docker:

    docker run -dt -p {转发端口号}:6689 \
    -v {日志挂载地址}:/app/goku-ce/node/work \
    -v {配置文件地址}:/app/goku-ce/node/work/goku-node.json \
    eolinker/goku-api-gateway-ce-node
    

    完整配置示例如下:

    docker run -dt -p 6689:6689 \
    -v /app/goku-ce/node/work:/app/goku-ce/node/work \
    -v /app/goku-ce/node/versionConfig_b14a1af4-b961-4dfb-8bfe-d4d157dd651e.json:/app/goku-ce/node/work/goku-node.json \
    eolinker/goku-api-gateway-ce-node
    

    用户通过网关访问 API 地址为:{{节点 IP:端口}}/{{转发 URL}} 。

    二、节点 Docker+控制台 Docker

    (一)部署控制台

    1、 创建 goku-ce 专属网络

    docker network create --driver bridge --subnet=172.18.12.0/24 --gateway=172.18.12.1 goku-ce
    

    2、运行控制台程序

    docker run -dt -p {浏览器访问端口号}:7000 \
    -v {sqlite 数据库挂载地址}:/app/goku-ce/console/work \
    -e GOKU_ADMIN_PASSWORD={控制台 admin 密码} \
    --network=goku-ce \
    --ip 172.18.12.2 \
    --name goku-ce-console \
    eolinker/goku-api-gateway-ce-console
    

    完整示例启动如下:

    docker run -dt -p 7000:7000 \
    -v /app/goku-ce/work:/app/goku-ce/console/work \
    -e GOKU_ADMIN_PASSWORD=123456 \
    --network=goku-ce \
    --ip 172.18.12.2 \
    --name goku-ce-console \
    eolinker/goku-api-gateway-ce-console
    

    3、 登录控制台

    打开浏览器,输入 域名 /IP+浏览器访问端口号,进入控制台页面,输入用户名( admin )及密码(启动设置的 admin 密码)进行登录: 在这里插入图片描述

    (二)部署网关节点

    1、进入控制台,新建节点

    节点 IP 需要和启动节点 docker 容器时绑定的 IP 一致: 在这里插入图片描述 点击查看 新建节点详细教程

    2、在控制台生成并发布配置

    发布配置后,节点会读取控制台的最新配置来运行。

    点击查看 发布配置的教程链接

    3、启动节点 docker 容器

    docker run -dt -p {转发端口号}:6689 \
    --network goku-ce \
    --ip {节点 IP} \
    -v {日志挂载地址}:/app/goku-ce/node/work \
    -e GOKU_ADMIN_ADDRESS={控制台 IP}:7005 \
    eolinker/goku-api-gateway-ce-node
    

    完整示例如下:

    docker run -dt -p 6689:6689 \
    --network goku-ce \
    --ip 172.18.12.3 \
    -v /app/goku-ce/work:/app/goku-ce/node/work \
    -e GOKU_ADMIN_ADDRESS=172.18.12.2:7005 \
    eolinker/goku-api-gateway-ce-node
    

    4、查看节点运行状态

    进入节点管理页面,若节点的状态显示为运行中,则节点正常启动: 在这里插入图片描述

    三、通过安装包直接部署

    安装准备:到 Github 上下载最新的 Release 包。

    项目地址: https://github.com/eolinker/goku-api-gateway

    (一)安装控制台

    1、安装命令:

    mkdir -p {install dir} mv console-{version}.tar.gz {tmp}/ cd {tmp}/ tar -xzf console-{version}.tar.gz cd console-{version} && ./install.sh {install dir} cd {install dir}

    2、首次安装进入{install dir}/console/config 文件夹,编辑配置文件内容,配置语法参照 yaml。

    goku.conf 如下:

    admin_bind: 绑定节点获取配置的地址,形如 IP:Port,填写内网地址或本机地址 listen_port: 管理后台监听端口,可以开放给外网访问 db_type: 数据库类型,v3.1.0 只支持 sqlite db_path: sqlite db 的文件路径

    3、进入{install dir}/console 文件夹,运行 run.sh 文件以启动控制台。

    首次运行:

    ./run.sh start {config file} 管理员账号 管理员密码
    

    示例:

    ./run.sh start config/goku.conf admin 123456
    

    非首次运行:

    ./run.sh start|restart
    

    4、在浏览器输入服务器 IP+程序监听端口号,进入控制台页面

    注:程序监听端口号为 goku.conf 的配置项 listen_port 的值

    (二)、节点安装

    1、安装命令:

      mkdir -p {install dir}
      mv goku-node-{version}.tar.gz {tmp}/
      cd {tmp}/
      tar -xzf goku-node-{version}.tar.gz
      cd goku-node-{version} && ./install.sh {install dir}
      cd {install dir}
    

    2、在控制台新建节点

    ( 1 )登录控制台,一级菜单选择 网关节点,创建集群: 在这里插入图片描述 ( 2 )进入相应的集群,为不同集群 添加节点在这里插入图片描述 ( 3 )点击 新增节点 按钮,填写节点信息后点击 确定

    • 新建节点时的节点 IP 字段填写内网 IP 或本地 IP
    • 若配置文件( goku.conf )中的 admin_bind 字段值 IP 部分为 127.0.0.1 或 localhost,此处节点 IP 必须填写 127.0.0.1

    3、启动节点程序:

     {install dir}/run.sh {start|stop|reload|restart|force-reload} [admin url] [port]
    

    此处的 admin url 值与配置文件( goku.conf )中的 admin_bind 字段值一致。

    示例:

     {install dir}/run.sh start 127.0.0.1:7005 7702
    

    4、检查节点是否正常运行:

    进入控制台的网关节点页面,若节点的状态显示为运行中,则节点正常启动: 在这里插入图片描述 最后,你也可以通过编译 Github 上 Master 分支的代码,编译最新的内容来安装,编译教程:https://help.eolinker.com/#/tutorial/?groupID=c-372&productID=19

    相关链接

    节点 Dockerhttps://hub.docker.com/r/eolinker/goku-api-gateway-ce-node

    控制台 Dockerhttps://hub.docker.com/r/eolinker/goku-api-gateway-ce-console

    新上控制台http://goku-console.eolinker.com

    项目地址https://github.com/eolinker/goku-api-gateway

    项目官网https://www.eolinker.com

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2834 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:22 · PVG 20:22 · LAX 04:22 · JFK 07:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.