KONG v1.3.0 的环境搭建和路由设置

环境

    • vagrant (coreos)

 

    • docker (docker-compose)

 

    • postgresql

 

    kong (1.3.0)

参考网页

Qiita – Docker for MacからVagrant + CoreOSに切り替えた

固定IPとかポートフォワードとかは作業しやすいよう修正

DockerHub – kong

DESCRIPTIONを参考にdocker-composeを記述

Kong – GettingStarted

Kongの使い方を知る① ~Service & Route編~

今回kongaは使ってないです

环境建设

流浪者

请复制CoreOS的Vagrantfile并完成配置。
请按照您喜欢的方式安装docker-compose。

    Qiita – Docker for MacからVagrant + CoreOSに切り替えた

为了使浏览器等也可以访问,将端口8000和8001进行转发。

Docker配置

在kong的DockerHub页面上,详细写了从postgres进行配置的方法。只需将环境变量和端口设置直接写入docker-compose up。

version: "3"
volumes:
  kong-vol:

services:
  kong-db:
    image: "postgres:9.6"
    container_name: "kong-db"
    environment:
      POSTGRES_USER: "kong"
      POSTGRES_PASSWORD: "kong"
      POSTGRES_DB: "kong"

  kong-migrate:
    image: "kong:latest"
    container_name: "kong-migrate"
    depends_on:
      - "kong-db"
    environment:
      KONG_DATABASE: "postgres"
      KONG_PG_HOST: "kong-db"
      KONG_PG_USER: "kong"
      KONG_PG_PASSWORD: "kong"
      KONG_CASSANDRA_CONTACT_POINTS: "kong-db"
    command: "kong migrations bootstrap"
    restart: "on-failure:3"

  kong:
    image: "kong:latest"
    container_name: "kong"
    environment:
      KONG_DATABASE: "postgres"
      KONG_PG_HOST: "kong-db"
      KONG_PG_USER: "kong"
      KONG_PG_PASSWORD: "kong"
      KONG_CASSANDRA_CONTACT_POINTS: "kong-db"
      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"
    ports:
      - "8000:8000"
      - "8443:8443"
      - "8001:8001"
      - "8444:8444"
    depends_on:
      - "kong-migrate"
    restart: "on-failure:3"

由于数据库初始化时间问题,kong-migrate和kong启动失败,因此设置了重启。如果有更好的方法,请告诉我。

服务注册

孔 – 入门

当访问管理API(:8001)的 /services 接口时,可以进行服务注册。

$ curl -X POST http://localhost:8001/services --data 'name=example-service' --data 'url=http://mockbin.org' | jq .
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current                                                                                                                                                   
                                 Dload  Upload   Total   Spent    Left  Speed                                                                                                                                                     
100   339  100   296  100    43    977    142 --:--:-- --:--:-- --:--:--   980                                                                                                                                                    
{                                                                                                                                                                                                                                 
  "host": "mockbin.org",                                                                                                                                                                                                          
  "created_at": 1570950317,                                                                                                                                                                                                       
  "connect_timeout": 60000,                                                                                                                                                                                                       
  "id": "18e5e341-14bf-4998-849e-31d7c10194ef",                                                                                                                                                                                   
  "protocol": "http",                                                                                                                                                                                                             
  "name": "example-service",                                                                                                                                                                                                      
  "read_timeout": 60000,                                                                                                                                                                                                          
  "port": 80,                                                                                                                                                                                                                     
  "path": null,                                                                                                                                                                                                                   
  "updated_at": 1570950317,                                                                                                                                                                                                       
  "retries": 5,                                                                                                                                                                                                                   
  "write_timeout": 60000,                                                                                                                                                                                                         
  "tags": null,                                                                                                                                                                                                                   
  "client_certificate": null                                                                                                                                                                                                      
}               

注册一个名为example-service的服务
以下是可以传递的参数说明
了解Kong的使用方法① ~服务和路由篇~

路由设置

当调用/services/<服务名称>时,可以进行根路径的设置。

$ curl -X POST --url http://localhost:8001/services/example-service/routes --data 'hosts[]=localhost' --data 'paths[]=/test' | jq .
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   443  100   412  100    31  14531   1093 --:--:-- --:--:-- --:--:-- 14714
{                                                       
  "id": "44f2c7b0-f263-4faa-af5e-681093067d21",
  "tags": null,                                         
  "updated_at": 1570950317,                             
  "destinations": null,                                 
  "headers": null,                                      
  "protocols": [                                        
    "http",                                             
    "https"                                             
  ],                                                    
  "created_at": 1570950317,                             
  "snis": null,                                         
  "service": {                                          
    "id": "18e5e341-14bf-4998-849e-31d7c10194ef"
  },                                                    
  "name": null,                                         
  "preserve_host": false,                               
  "regex_priority": 0,                                  
  "strip_path": true,                                   
  "sources": null,                                      
  "paths": [                                            
    "/test"                                             
  ],                                                    
  "https_redirect_status_code": 426,
  "hosts": [                                            
    "localhost"                                         
  ],                                                    
  "methods": null                                       
}

当访问localhost:8000/test时,可以设置将请求转发到刚刚注册的example-service的URL上。

广告
将在 10 秒后关闭
bannerAds