【KONG】KONG的部署及简单使用

docker部署:

一、创建容器网络,保证KONG的各个组件在一个网络环境下:

docker network create kong-net

二、kong需要依赖数据库来存储各种配置信息,官方建议使用postgre,下面先用docker来启一个postgre实例:

docker run  --name kong-database \
              --network=kong-net \
              -p 5432:5432 \
              -e "POSTGRES_USER=kong" \
              -e "POSTGRES_DB=kong" \
              -e "POSTGRES_PASSWORD=123456" \
              -v /home/kong/data/postgres:/var/lib/postgresql/data \
              postgres:9.5

三、为KONG初始化数据库

docker run --rm \
    --network=kong-net \
    -e "KONG_DATABASE=postgres" \
    -e "KONG_PG_PASSWORD=123456" \
    -e "KONG_PG_HOST=kong-database" \
    -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
    kong:1.5 kong migrations bootstrap

四、接下来启动KONG

docker run -d --name kong \
    --network=kong-net \
    -e "KONG_DATABASE=postgres" \
    -e "KONG_PG_HOST=kong-database" \
    -e "KONG_PG_PASSWORD=123456" \
    -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" \
    -v /home/kong/data/log/kong:/var/log \
    -p 8000:8000 \
    -p 8443:8443 \
    -p 8001:8001 \
    -p 8444:8444 \
    kong:1.5

  • 8001/8444端口用于监听对kong admin的操作;
  • 8000/8443端口用于监听客户端请求。

五、启动kong admin UI(可选)

docker run -d --name kong-admin-ui -p 8899:80 pocketdigi/kong-admin-ui:0.5.2

docker ps查看一下:

至此,kong服务已经成功启动。接下来我们用restful api创建一个服务和路由:

六、创建服务和路由

  • 创建服务
curl -i -X POST http://localhost:8001/services \
 --data name=baidu_service \
 --data host='www.baidu.com'

创建了一个名为baidu_service的服务。

  • 为服务创建路由
curl -i -X POST http://localhost:8001/services/baidu_service/routes \
  --data 'paths[]=/my-baidu' \
  --data 'name=baidu'

为baidu_service这个服务创建了一个路由,路径为my-baidu。

七、测试

访问http://localhost:8000/my-baidu,kong就会把请求转发到真正的服务上。

当然也可以通过访问我们部署的kong admin ui来查看管理kong后台:http://localhost:8899/,效果如下:

docker-compose部署:

版本一:

version: "3"

networks:
 project-net:
  driver: bridge

services:
  # 为kong创建数据库 postgres
  kong-database:
    container_name: kong-database
    image: postgres:9.5
    restart: always
    networks:
      - project-net
    environment:
      POSTGRES_USER: kong
      POSTGRES_DB: kong
      POSTGRES_PASSWORD: 123456
      TZ: Asia/Shanghai
    ports:
      - "5432:5432"
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "kong"]
      interval: 5s
      timeout: 5s
      retries: 5

  # 为kong数据库初始化
  kong-migration:
    container_name: kong-migration
    image: kong:1.5
    command: "kong migrations bootstrap"
    networks:
      - project-net
    restart: on-failure
    environment:
      KONG_PG_HOST: kong-database
      KONG_DATABASE: postgres
      KONG_PG_USER: kong
      KONG_PG_PASSWORD: 123456
      KONG_CASSANDRA_CONTACT_POINTS: kong-database
    links:
      - kong-database
    depends_on:
      - kong-database

  # 启动kong
  kong:
    container_name: kong
    image: kong:1.5
    restart: always
    networks:
      - project-net
    environment:
      KONG_PG_HOST: kong-database
      KONG_DATABASE: postgres
      KONG_PG_PASSWORD: 123456
      KONG_CASSANDRA_CONTACT_POINTS: kong-database
      KONG_PROXY_LISTEN: 0.0.0.0:8000
      KONG_PROXY_LISTEN_SSL: 0.0.0.0:8443
      KONG_ADMIN_LISTEN: 0.0.0.0:8001,0.0.0.0:8444 ssl
      TZ: Asia/Shanghai
    depends_on:
      - kong-migration
      - kong-database
    healthcheck:
      test: ["CMD", "curl", "-f", "http://kong:8001"]
      interval: 5s
      timeout: 2s
      retries: 15
    ports:
      - "8001:8001"
      - "8000:8000"
      - "8443:8443"
      - "8444:8444"

  # kong UI
  kong-admin-ui:
    container_name: kong-admin-ui
    image: pocketdigi/kong-admin-ui:0.5.2
    networks:
      - project-net
    restart: always
    ports:
      - "8899:80"
    depends_on:
      - kong-database
      - kong-migration
      - kong

版本二(cmdb项目中实际使用的):

version: '3'

volumes:
  kong_data: { }

services:
  kong-database:
    container_name: kong-database
    image: postgres:9.6
    restart: always
    hostname: kong-database
    ports:
      - "5432:5432"
    environment:
      POSTGRES_USER: kong
      POSTGRES_DB: kong
      POSTGRES_PASSWORD: kong
    volumes:
      - kong_data:/var/lib/postgresql/data
  kong:
    container_name: kong
#    image: tyhub.touch4.me/ops/tyops-kong-with-go-plugin:0.0.3
    image: kong:2.5.0-alpine
    restart: always
    hostname: kong
    ports:
      - "8000:8000"
      - "8001:8001"
    depends_on:
      - kong-database
    environment:
      KONG_ADMIN_LISTEN: 0.0.0.0:8001
      KONG_PROXY_LISTEN: 0.0.0.0:8000
      KONG_PG_HOST: kong-database
      KONG_PG_PASSWORD: kong
      KONG_CASSANDRA_CONTACT_POINTS: kong-database
#      KONG_PLUGINS: bundled,go-hello
#      KONG_PLUGINSERVER_NAMES: go-hello
#      KONG_PLUGINSERVER_GO_HELLO_QUERY_CMD: go-hello -dump
  konga:
    container_name: kong-dashboard
    image: pantsel/konga
    restart: always
    hostname: konga
    ports:
      - "1337:1337"
    environment:
      NODE_ENV: development
      TOKEN_SECRET: 123456
  kong-migration:
    image: kong:2.5.0-alpine
    command: "kong migrations bootstrap"
    restart: on-failure
    environment:
      - KONG_DATABASE=postgres
      - KONG_PG_DATABASE=kong
      - KONG_PG_PASSWORD=kong
      - KONG_PG_HOST=kong-database
    links:
      - kong-database #连接的是kong-database服务的
    depends_on:
      - kong-database #依赖于kong-database服务

konga启动后,需要配置kong-admin url,注意不要使用127.0.0.1或localhost,需要使用你机器的真正ip地址或docker-compose中配置的kong的hostname即kong。

 

 简单配置一下就可以使用了。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值