Kong的安装

一、Kong的安装:

1、二进制方式安装:

  1. 创建Kong运行目录:

    mkdir kong                        # 创建Kong目录
    mkdir kong/data                   # 创建Kong运行数据目录
    
  2. 下载Kong安装包:

    cd kong                                                            # 切换到Kong目录
    wget https://github.com/Kong/kong/archive/refs/tags/2.4.0.tar.gz   # 下载Kong安装包
    
  3. 解压Kong安装包:

    tar -zvxf 2.4.0.tar.gz            # 解压Kong安装包
    
  4. 编辑kong.conf配置文件:

    cp kong.conf.default kong.conf    # 拷贝一份Kong配置文件
    vim kong.conf
    # 1、使用PostgreSQL数据库
    database = postgres               # postgres、cassandra、off
    pg_host = 127.0.0.1
    pg_port = 5432
    pg_user = kong
    pg_password = kong
    # 2、使用Cassandra数据库
    database = cassandra
    cassandra_contact_points = 127.0.0.1
    cassandra_port = 9042
    cassandra_keyspace = kong
    cassandra_username = kong
    cassandra_password = kong
    # 3、不使用数据库,基于内存存储数据
    database = off
    # 定位到NGINX
    # 1、
    proxy_listen = 0.0.0.0:80, 0.0.0.0:443 ssl            # 为了方便使用,将8080调整为80,将8443调整为443
    admin_listen = 0.0.0.0:8001, 127.0.0.1:8444 ssl       # 管理ip调整为0.0.0.0是方便外部访问
    :wq!                                                  # 保存并退出
    
  5. 初始化Kong数据库(前提是使用PostgreSQL):

    ./kong migrations bootstrap         # Kong版本 >= 0.15
    ./kong migrations up                # Kong版本 <  0.15
    
  6. 启动Kong

    ./kong start 
    ./kong start -vv                    # -vv: 表示可以看到详细的启动过程日志信息 
    
  7. 停止Kong

    ./kong stop                         # 直接停止正在运行的Kong 
    ./kong quit -t 10                   # 优雅地关闭关闭正在运行的Kong,-t 10 表示等待10秒后关闭
    
  8. 将Kong注册成服务:

    vim kong.service
    [Unit]
    Description=dashboard system
    After=NetworkManager.service
     
    [Service]
    Type=forking
    ExecStart=/usr/local/dev/kong/start # 启动服务的命令或者脚本的绝对路径
    ExecStop=/usr/local/dev/kong/stop   # 停止服务的命令或者脚本的绝对路径
    PrivateTmp=true
     
    [Install]
    WantedBy=multi-user.target
    :wq!                                # 保存并退出
    chmod u+x kong.service              # 赋予文件可执行权限
    cp kong.service //usr/lib/systemd/system/       
    
  9. 通过systemd的方式管理Kong

    sysyemctl start kong                # 启动Kong服务
    systemctl stop kong                 # 停止Kong服务
    systemctl enable kong               # 设置Kong服务开机自启动
    systemctl disable kong              # 设置Kong服务停止开机自启动
    systemctl restart kong              # 重新启动Kong服务
    systemctl status kong               # 查看Kong服务的当前状态
    

2、Docker容器化方式安装:

1、编写docker-compose.yml

  • Kong基于PostgreSQL存储:

    version: '3'
    services:
      kong-database:
        image: postgres:9.6                              #  PostgreSQL数据库镜像
        container_name: kong-database      
        ports:
          - "5432:5432"
        environment:
          - POSTGRES_USER=kong                          # PostgreSQL数据库用户名
          - POSTGRES_DB=kong                            # PostgreSQL数据库名          
          - POSTGRES_PASSWORD=kong                      # PostgreSQL数据库密码
        volumes:
          - "/usr/local/dev/kong/data:/var/lib/postgresql/data"
    
      kong-migrations:
        image: kong:latest                               # Kong的镜像
        container_name: kong-migrations
        environment:
          - KONG_DATABASE=postgres                       # 定义Kong使用的数据库类型
          - KONG_PG_HOST=kong-database                   # 定义PostgreSQL数据库的主机名
          - KONG_PG_USER=kong                            # 定义PostgreSQL数据库的用户名
          - KONG_PG_PASSWORD=kong                        # 定义PostgreSQL数据库密码
        command: kong migrations bootstrap               # Kong数据库初始化脚本
        restart: on-failure
        depends_on:
          - kong-database
    
      kong:
        image: kong:latest                               # Kong的镜像
        container_name: kong
        environment:
          - KONG_DATABASE=postgres                       # 定义Kong使用的数据库类型
          - KONG_PG_HOST=kong-database                   # 定义PostgreSQL数据库的主机名
          - KONG_PG_USER=kong                            # 定义PostgreSQL数据库的用户名
          - KONG_PG_PASSWORD=kong                        # 定义PostgreSQL数据库密码
          - 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的端口
        container_name: konga
        environment:
          - NODE_ENV=production                       # production development 
        links:
          - kong:kong
    
  • Kong基于Cassandra存储:

    version: "3.3"
    services:
      kong-database:
        image: cassandra:3
        ports:
          - "9042:9042"
        volumes:
          - /usr/local/dev/kong/data:/var/lib/cassandra
    
      kong:
        image: kong:latest 
        container_name: kong
        environment:
          - KONG_DATABASE=cassandra 
          - KONG_CASSANDRA_CONTACT_POINTS=kong-database
          - 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" 
          - "8443:8443"
          - "8001:8001"
          - "8444:8444"
        links:
          - kong-database:kong-database
    
      konga:
        image: pantsel/konga:0.14.9
        ports:
          - "1337:1337"
        links:
          - kong:kong
        container_name: konga
        environment:
          - NODE_ENV=production
    
  • Kong基于DB-less存储:

    version: "3.3"
    services:
      kong:
        image: kong:latest
        container_name: kong
        environment:
          - KONG_DATABASE=off
          - 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"
          - "8443:8443"
          - "8001:8001"
          - "8444:8444"
    
      konga:
        image: pantsel/konga:0.14.9
        ports:
          - "1337:1337"
        links:
          - kong:kong
        container_name: konga
        environment:
          - NODE_ENV=production
    

2、通过docker-compose命令管理kong

  1. 通过docker-compose命令启动容器:

    docker-compose up -d
    
  2. 通过docker-compose命令停止容器:

    docker-compose stop
    
  3. 通过docker-compose命令查看容器状态:

    docker-compose ps
    
  4. 通过docker-compose移除容器及网络:

    docker-compose down
    
上一篇:云原生微服务网关 Kong 和Kong 管理UI Konga快速安装攻略


下一篇:升级API网关Kong