Gravitee.io 是一个相对比较完整的api gateway 平台,包含了api 相对比较完整的生命周期管理
同时在访问控制以及日志监控上也做的比较好,是一款可以尝试试用的api gateway 平台

环境准备

  • docker-compose 文件
 
version: '3'
networks:
  default:
services:
  nginx:
    image: nginx:1.15-alpine
    container_name: gio_platform_nginx
    restart: always
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/ssl/gio-selfsigned.crt:/etc/ssl/certs/gio-selfsigned.crt
      - ./nginx/ssl/gio-selfsigned.key:/etc/ssl/private/gio-selfsigned.key
      - ./nginx/ssl/gio.pem:/etc/ssl/certs/gio.pem
    ports:
      - "80:80"
      - "443:443"
    depends_on:
      - apim_gateway
      - apim_portal
      - apim_management
      - am_gateway
      - am_management
      - am_webui
  mongodb:
    image: mongo:3.4
    restart: always
    container_name: gio_platform_mongo
    ports:
      - 27017:27017
    environment:
      - MONGO_INITDB_DATABASE=gravitee
    volumes:
      - ./mongo/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
      - ./data/mongo:/data/db
      - ./logs/mongodb:/var/log/mongodb
  elasticsearch:
    image: elasticsearch:6.4.0
    container_name: gio_platform_elasticsearch
    restart: always
    ports:
      - 9200:9200
    environment:
      - http.host=0.0.0.0
      - transport.host=0.0.0.0
      - xpack.security.enabled=false
      - xpack.monitoring.enabled=false
      - cluster.name=elasticsearch
    ulimits:
      nofile: 65536
    volumes:
      - ./data/elasticsearch:/usr/share/elasticsearch/data
      - ./logs/elasticsearch:/var/log/elasticsearch
  apim_gateway:
    image: graviteeio/gateway:latest
    container_name: gio_platform_apim_gateway
    restart: always
    volumes: 
      - ./logs/apim-gateway:/opt/graviteeio-gateway/logs
    environment:
      - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
      - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
      - gravitee_reporters_elasticsearch_endpoints_0=http://elasticsearch:9200
    depends_on:
      - mongodb
      - elasticsearch
  apim_portal:
    image: graviteeio/management-ui:latest
    container_name: gio_platform_apim_portal
    restart: always
    environment:
      - MGMT_API_URL=https:\/\/localhost\/apim\/management\/
    depends_on:
      - apim_management
  apim_management:
    image: graviteeio/management-api:latest
    container_name: gio_platform_apim_mgmt_api
    restart: always
    volumes:
      - ./logs/apim-management-api:/opt/graviteeio-management-api/logs
    environment:
      - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
      - gravitee_ratelimit_mongodb_uri=mongodb://mongodb:27017/gravitee?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
      - gravitee_analytics_elasticsearch_endpoints_0=http://elasticsearch:9200
      - gravitee_jwt_cookiepath=/apim/management
      - gravitee_jwt_cookiesecure=true
    depends_on:
      - mongodb
      - elasticsearch
  am_gateway:
    image: graviteeio/am-gateway:2
    container_name: gio_platform_am_gateway
    restart: always
    volumes:
      - ./logs/am-gateway:/opt/graviteeio-am-gateway/logs
    environment:
      - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee-am?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
      - gravitee_oauth2_mongodb_uri=mongodb://mongodb:27017/gravitee-am?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
    depends_on:
      - mongodb
  am_management:
    image: graviteeio/am-management-api:2
    container_name: gio_platform_am_management
    restart: always
    volumes:
      - ./logs/am-management-api:/opt/graviteeio-am-management-api/logs
    environment:
      - gravitee_management_mongodb_uri=mongodb://mongodb:27017/gravitee-am?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
      - gravitee_oauth2_mongodb_uri=mongodb://mongodb:27017/gravitee-am?serverSelectionTimeoutMS=5000&connectTimeoutMS=5000&socketTimeoutMS=5000
      - gravitee_jwt_cookiepath=/am/management
      - gravitee_jwt_cookiesecure=true
    depends_on:
      - mongodb
  am_webui:
    image: graviteeio/am-management-ui:2
    container_name: gio_platform_am_webui
    restart: always
    environment:
      - MGMT_API_URL=https:\/\/localhost\/am\/
      - MGMT_UI_URL=https:\/\/localhost\/am\/ui\/
    volumes:
      - ./logs/am-webui:/var/log/nginx
    depends_on:
      - am_management
 
 
  • 简单说明
    docker compose 文件包含了api gateway 以及访问管理以及日志的基础组件,访问入口通过nginx,同时官方
    也提供了一个基于trafic 的demo,也挺不错
    nginx.conf 主要是proxy 的配置,同时添加了https 证书的处理(自签名的),nginx 配置文件处理了对于重定向
    的配置,好多配置对于我们来说还是有借鉴意义的。
    因为使用了mongo 所以在初始化数据库的时候进行了一些索引的创建,详细的配置可以参考github

运行

  • 运行
 
docker-compose up -d
 

UI 效果 账户admin admin

访问控制管理UI 账户 admin adminadmin

试用

  • 创建api


中间的一些步骤按照提示操作即可

同时可以需要进行api 的发布以及启动,界面上还是很全的,直接参考提示操作即可

  • 使用api

需要创建app

然后需要创建api 的订阅,我们可以进行审核处理

说明

Gravitee.io 对于api 的管理功能比较全,后边会写一些关于如果使用的简单demo

参考资料

https://docs.gravitee.io/apim_quickstart_publish.html
https://docs.gravitee.io/apim_quickstart_consume.html
https://github.com/gravitee-io/gravitee-docker

Gravitee.io docker-compose运行的更多相关文章

  1. dotnet跨平台 - 使用Nginx+Docker Compose运行.NETCore项目

    参考文档: https://docs.docker.com/install/linux/docker-ce/centos/ http://www.dockerinfo.net/document htt ...

  2. .NET遇上Docker - 使用Docker Compose组织Ngnix和.NETCore运行

    本文工具准备: Docker for Windows Visual Studio 2015 与 Visual Studio Tools for Docker 或 Visual Studio 2017 ...

  3. Docker深入浅出系列 | Docker Compose多容器实战

    目录 前期准备 Docker Compose是什么 为什么要用Docker Compose Docker Compose使用场景 Docker Compose安装 Compose Yaml文件结构 C ...

  4. Docker 容器编排利器 Docker Compose

    Compose 简介 通过前面几篇文章的学习,我们可以通过 Dockerfile 文件让用户很方便的定义一个单独的应用容器.然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况,例如 ...

  5. Docker小白到实战之Docker Compose在手,一键足矣

    前言 Docker可以将应用程序及环境很方便的以容器的形式启动,但当应用程序依赖的服务比较多,或是遇到一个大系统拆分的服务很多时,如果还一个一个的根据镜像启动容器,那就有点累人了,到这有很多小伙伴会说 ...

  6. Docker Compose 容器编排 NET Core 6+MySQL 8+Nginx + Redis

    环境: CentOS 8.5.2111Docker 20.10.10Docker-Compose 2.1.0 服务: db  redis  web nginx NET Core 6+MySQL 8+N ...

  7. Docker从入门到精通(八)——Docker Compose

    恭喜大家,学到这里,对于 docker 的基础玩法大家应该都会了,下面会介绍 docker的一些编排工具. 1.为什么需要 Docker Compose? 官网镇楼:https://www.runoo ...

  8. docker Compose 部署springboot+vue前端端分离项目

    温馨提示:如果有自己的服务器最好不过了,这样部署网项目就可以上线了.没有的话,只能使用localhost 本机访问啦,记得替换 ngixn 中的ip地址.域名为localhost. (一) 准备工作 ...

  9. Docker:Docker Compose 详解

    Docker Compose 概述与安装? 前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build.docker run 等命令操作容器.然而微服务架 ...

  10. 使用 pycharm调试docker环境运行的Odoo

    2019日 星期一 安装docker windows系统,参考 docker官方文档 Mac系统,参考 docker官方文档 构建自定义ODOO镜像 标准ODOO镜像可能不包含特别的python模块, ...

随机推荐

  1. Oauth2.0:Access Token 与 Refresh Token

    access token 是客户端访问资源服务器的令牌.拥有这个令牌代表着得到用户的授权.然而,这个授权应该是临时的,有一定有效期.这是因为,access token 在使用的过程中可能会泄露.给 a ...

  2. vs2013 跳过IE10

    安装 VS2013要安装IE10,却安装不了..以下为跳过IE10,直接安装VS2013方法 复制以下代码,保存为bat文件 @ECHO OFF :IE10HACK REG ADD "HKL ...

  3. 8.3 C++格式标识和操纵器

    参考:http://www.weixueyuan.net/view/6409.html 总结: 我们需要借助格式标识符来控制cout对象的输出格式. 在ios_base类中,系统已经定义了很多格式标识 ...

  4. Android开发 --代码布局

    Android开发 --代码布局 在线性布局LinearLayout里加入view比较简单,因为属性比较少,布局简单 示例,加入一个TextView LinearLayout layout = (Li ...

  5. centos installation of matlab R2015b

    the source of installation is in the website: http://blog.csdn.net/hejunqing14/article/details/50265 ...

  6. day 29 socket 理论

    网络编程(socket,套接字)   服务端地址不变 ip + mac 标识唯一一台机器 ip +端口 标识唯一客户端应用程序 套接字: 网络编程   网络编程 一.python提供了两个级别访问的网 ...

  7. Sample Credential Providers

        Windows Vista Sample Credential Providers Overview Contents Terms of Use Release Notes SampleCre ...

  8. shell脚本实例-mysql多机部署

    今天我给大家分享shell 安装mysql 多机部署的实例,本次实验是基于各个主机的公钥已经配置好了,如果还不会推送公钥的同学,可以看看我以前写的文章,那里面有写推公钥的实例,mysql 多机部署一般 ...

  9. ubuntu安装scrapy方法

    sudo apt-get install python-dev   [默认安装python2] sudo apt-get install python3-dev   [指定安装python3最新的] ...

  10. C# Notepad++ 环境配置

    第一种方法,使用NppExec插件 1.下载安装插件 NppExec https://nchc.dl.sourceforge.net/project/npp-plugins/NppExec/NppEx ...