网关服务KONG(一):安装

前言:本文的安装环境是CentOS7 64位,虽然有官方安装demo,但实际依葫芦画瓢时,还是遇到一些问题,所以根据自身经验,重新整理一下
附:官方各环境下的KONG安装索引

方式一:docker方式

  1. 创建一个Docker网络
    实现容器间的网络通信

    docker network create kong-net
    
  2. 安装数据库

    此处我采用的9.6版本的postgres
    docker run -d --name kong-database \
               --network=kong-net \
               -p 5432:5432 \
               -e "POSTGRES_USER=postgres" \
               -e "POSTGRES_PASSWORD=postgres" \
               -e "POSTGRES_DB=postgres" \
               postgres:9.6
    数据库安装后,可进入postgres容器,创建kong用户及数据库kong,操作步骤如下:
    # 切换用户
    su postgres
    # 进入命令
    psql;
    # 创建用户kong及密码
    create user kong with password 'kong';
    # 创建数据库kong
    create database kong owner kong;
    
  3. 初始化数据库

    docker run --rm \
     --network=kong-net \
     -e "KONG_DATABASE=postgres" \
     -e "KONG_PG_HOST=kong-database" \
     -e "KONG_PG_PASSWORD=kong" \
     kong:0.13.1 kong migrations up
    
    或者
    docker run --rm \
     --network=kong-net \
     -e "KONG_DATABASE=postgres" \
     -e "KONG_PG_HOST=kong-database" \
     -e "KONG_PG_PORT=5432" \
     -e "KONG_PG_USER=kong" \
     -e "KONG_PG_PASSWORD=kong" \
     -e "KONG_PG_DATABASE=kong" \
     kong:0.13.1 kong migrations up
    

    这里有两点需要注意
    1. kong:latest 表示安装最新版本,但是由于前端管理工具Dashboard目前只支持到0.14.x,如果管理kong版本过高,界面有点bug,所以我实际安装时这里选择kong:0.13.1
    2. 如果kong版本低于0.15时,kong migrations bootstrap应改为kong migrations up,>=0.15时使用 bootstrap

  4. 安装kong镜像并启动kong
    数据库安装好了,并按指定kong版本进行对应的初始化后,现在可以通过docker拖取镜像并启动kong了

    docker run -d --name kong \
    --network=kong-net \
     -e "KONG_DATABASE=postgres" \
    -e "KONG_PG_HOST=kong-database" \
    -e "KONG_PG_PASSWORD=kong" \
    -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:0.13.1
    
    如果数据库是本地化部署,可以直接写IP及相关信息,注意这样写后面启动dashbord时不需要--network kong-net了,且url里直接写IP
    docker run -d --name kong \
    -e "KONG_DATABASE=postgres" \
     -e "KONG_PG_HOST=172.20.10.4" \
     -e "KONG_PG_PORT=5432" \
    -e "KONG_PG_USER=kong" \
    -e "KONG_PG_PASSWORD=kong" \
    -e "KONG_PG_DATABASE=kong" \
    -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:0.13.1
     
    

    启动成功后我们可以看到两个运行中的容器
    在这里插入图片描述
    可以在浏览器输入:http://IP:8001,查看结果
    或者服务器上执行,是否正常响应:

    curl -i http://localhost:8001/
    

这里注意下,IP地址选择本地可以,但是其他IP也可以的前提是ADMIN_LISTEN参数设置为0.0.0.0:8001,否则adminAPI只能本机调用。

  1. 安装管理工具
    kong有官方的管理工具,但是收费,开源的有kong-dashboard和kongA,这里先选择官方推荐的dashboard
    但是按官方来,启动一直报错,类似这样:
    网关服务KONG(一):安装_第1张图片
    应该是网络的问题,解决方法是可以这样执行:

    docker run --rm --network kong-net -p 8080:8080 \
    --name kong-dashboard \
    pgbi/kong-dashboard start --kong-url http://kong:8001
    

    界面如下
    网关服务KONG(一):安装_第2张图片
    由于该工具列表不支持分页查询和筛选查询,最终放弃!使用KONGA:

    1.先初始化konga自身表,注意先创建用户konga和数据库konga,此处省略不写了
    docker run -it --rm \
    --name kong_dashboard_a \
    -e "DB_ADAPTER=postgres" \
    -e "DB_HOST=172.20.10.4" \
    -e "DB_PORT=5432" \
    -e "DB_USER=konga" \
    -e "DB_PASSWORD=konga" \
     -e "DB_DATABASE=konga" \
     -e "NODE_ENV=development" \
     pantsel/konga
    
    2.启动
    docker run -d \
    --name kong_dashboard_konga \
    -p 1337:1337 \
     -e "DB_ADAPTER=postgres" \
     -e "DB_HOST=172.20.10.4" \
    -e "DB_PORT=5432" \
    -e "DB_USER=konga" \
    -e "DB_PASSWORD=konga" \
    -e "DB_DATABASE=konga" \
    -e "NODE_ENV=production" \
    pantsel/konga
    

方式二:Node+npm方式

    我一开始使用的是这种方式安装,后来发现docker会方便快捷一些,踩的坑也少些,但是可能对服务的配置相关理解就少了,所以建议先使用npm方式安装一下

  1. 环境准备
    安装gcc编译环境

    yum install -y gcc gcc-c++
    

    pcre安装
    pcre(Perl Compatible Regular Expressions) 是一个 Perl 库,包括 perl 兼容的正则表达式,nginx 的 http 库使用 pcre 解析正则表达式。

    yum install -y pcre pcre-deve
    

    openssl安装
    openssl 是一个请打的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议

    yum install -y openssl openssl-devel
    
  2. 数据库安装(此处选择postgresql)
    PostgreSQL是完全由社区驱动的开源项目,由全世界超过1000名贡献者所维护。它提供了单个完整功能的版本。可靠性是PostgreSQL的最高优先级。Kong 默认使用 postgresql 作为数据库。安装步骤可以参考简书,以下是我整理的,请笑纳:

    1.下载yum源文件
     yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
    2.安装PostgreSQL客户端
     yum install postgresql96
    3.安装PostgreSQL核心服务端、附加模块
     yum install postgresql96-server postgresql96-contrib
    4.安装PostgreSQL拓展包(可选)
     yum install postgresql96-devel
    5.检安装是否成功
     rpm -aq| grep postgres
    6.设置开机自启
     chkconfig postgresql-9.6 on 
    7.自选数据库存放路径(可选,怕麻烦就采用默认)
     为方便进行统一管理,可以建立统一的路径进行存放,这里有两种方式,一种直接编辑环境变量文件/etc/profile,一种是修改postgresql文件修改初始化参数,如下
     #这里的初始化配置文件路径根据版本或docker安装可能存在不同
     vi /etc/init.d/postgresql-9.6 
     #修改属性PGDATA、PGLOG为你指定的路径,这里我没有修改
     PGDATA=/var/lib/pgsql/9.6/data
     假如你想修改的话,假设PGDATA=/data/pg/data,那么你在初始化数据库前请预先执行:
     #存放数据库的文件夹
     mkdir -p /data/pg/data 
     #为新创建的pg文件夹分配数据库服务的操作权限
     chown -R postgres:postgres /data/pg 
     #为存放数据库的文件夹分配权限
     chown -R postgres:postgres /data/pg/data 
     chmod 750 /data/pg/data 
    8.初始化数据库
     service postgresql-9.6 initdb
    9.启动数据库服务
     service postgresql-9.6 start
    10.修改postgresql配置,重要!
     修改上面data目录下配置文件postgresql.conf 和 pg_hba.conf,如果你指定数据存放目录,那默认路径应该是:/var/lib/pgsql/9.6/data
     #配置监听所有服务器请求
     vim postgresql.conf 
     listen_addresses=‘localhost’将localhost改为 * ,记得注释打开
     #配置允许远程访问
     vim pg_hba.conf
     #将第80行、82行、85行METHOD参数修改为trust;
     #IPv4 local connections新增一条记录
     host    all         all        0.0.0.0/0       trust
    11.创建用户及数据库
     #切换数据库初始化的默认用户postgres
     su postgres;
     #进入数据库命令行
     psql;
     (注意命令结尾处加上分号';')
     create user 用户名 WITH PASSWORD 密码 ;
     create database 数据库名 OWNER 用户 ;
     #这里创建kong用户及kong数据库,如 
     create user kong with password 'kong';
     create databse kong OWNER kong;
     #退出命令
     \q
    

    至此,数据库安装、初始化、kong数据库用户及数据库已创建。

  3. kong安装及启动

    1.安装
     yum install epel-release
     yum install -y https://kong.bintray.com/kong-community-edition-rpm/centos/7/kong-community-edition-0.13.1.el7.noarch.rpm
    2.初始化数据库
     #这里bootstrap请根据kong版本选择是up还是bootstrap,上面docker安装有描述
     kong migrations bootstrap
    3.配置kong.yml
     这里有两处改动,必改的是配置数据库连接信息,如下图,可选的是admin_listen参数修改,决定是否只能本地调用api接口,可以修改为:0.0.0.0/8001,0.0.0.0:8444 ssl
    4.启动
      kong start [-c /path/to/kong.conf]
    5.验证
      curl -i http://localhost:8001/
    

    网关服务KONG(一):安装_第3张图片
    成功安装kong验证界面:
    网关服务KONG(一):安装_第4张图片

  4. 管理界面安装
    选用dashboard,安装比较简单,直接贴上官方说明

    # Install Kong Dashboard
    npm install -g kong-dashboard
    
    # Start Kong Dashboard
    kong-dashboard start --kong-url http://kong:8001
    
    # Start Kong Dashboard on a custom port
    kong-dashboard start \
     --kong-url http://kong:8001 \
     --port [port]
    
    # Start Kong Dashboard with basic auth
    kong-dashboard start \
     --kong-url http://kong:8001 \
     --basic-auth user1=password1 user2=password2
    
    # See full list of start options
    kong-dashboard start --help
    

    这里有点需要说明的就是这种启动方式切换命令后服务会停止,以后台进程启动方式即可,如

    nohup kong-dashboard start --kong-url http://kong:8001 &
    

到此两种安装方式都已介绍完,相信你们在照例安装时肯定会遇到一些其他问题,自己再研究研究~~~


参考文档:
1.https://blog.csdn.net/qq_30553235/article/details/79004961
2.https://blog.csdn.net/jiangyu1013/article/details/80195583
3.https://www.jianshu.com/p/cc5bc168e5e1
4.https://www.linzepeng.com/2018/06/22/kong-dashboard-note/

你可能感兴趣的:(kong)