0

我对 Kong API Gateway 非常陌生,目前正在尝试使用 PostgreSQL 作为我的数据库容器运行 Kong 容器。

我怎样才能做到这一点?

4

6 回答 6

2

您可以按照Kong 安装指南进行操作。它按预期对我有用。

第 1 步:启动 Postgres 容器

docker run -d --name kong-database \
          -p 5432:5432 \
          -e "POSTGRES_USER=kong" \
          -e "POSTGRES_DB=kong" \
          postgres:9.5

第二步:迁移数据库

docker run --rm \
--link kong-database:kong-database \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
kong:latest kong migrations up

第三步:启动Kong

docker run -d --name kong \
--link kong-database:kong-database \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-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" \
-e "KONG_ADMIN_LISTEN_SSL=0.0.0.0:8444" \
-p 8000:8000 \
-p 8443:8443 \
-p 8001:8001 \
-p 8444:8444 \
kong:latest

第四步:验证

curl -i http://localhost:8001/
于 2018-05-22T07:25:01.323 回答
2

1. 启动你的数据库:

 $ docker run -d --name kong-database \
                  -p 5432:5432 \
                  -e "POSTGRES_USER=kong" \
                  -e "POSTGRES_DB=kong" \
                  postgres:9.4

2.开工:

启动一个 Kong 容器并将其链接到您的数据库容器,使用 postgres 配置 KONG_DATABASE 环境变量。

$ docker run -d --name kong \
              --link kong-database:kong-database \
              -e "KONG_DATABASE=postgres" \
              -e "KONG_PG_HOST=kong-database" \
              -p 8000:8000 \
              -p 8443:8443 \
              -p 8001:8001 \
              -p 7946:7946 \
              -p 7946:7946/udp \
              kong

3.验证Kong是否正在运行:

$ curl http://127.0.0.1:8001
于 2017-02-14T05:37:16.243 回答
1

回答@StefanWalther 的问题,这是一个关于如何使其与 docker-compose 一起使用的示例:

version: "2.1"
services:
  kong:
    image: kong:latest
    depends_on:
      kong-database:
        condition: service_healthy
    healthcheck:
      test:
        - CMD
        - nc
        - -z
        - localhost
        - "8443"
      retries: 10
    links:
      - kong-database:kong-database
    command: 
      - "kong"
      - "start"
      - "--vv"
    environment:
      - KONG_DATABASE=cassandra
      - KONG_CASSANDRA_CONTACT_POINTS=kong-database
      - KONG_ADMIN_LISTEN=0.0.0.0:8001
      - KONG_ADMIN_LISTEN_SSL=0.0.0.0:8444
      - KONG_NGINX_DAEMON=off
    ports:
      - "443:8443"
      - "8001:8001"
    restart: always
    network_mode: "bridge"
  kong-database:
    image: cassandra:3
    healthcheck:
      test:
        - "CMD-SHELL"
        - "[ $$(nodetool statusgossip) = running ]"
    volumes:
      - ~/kong-database/cassandra:/var/lib/cassandra
    expose:
      - "9042"
    restart: always
    network_mode: "bridge"

此外,您可以添加 kongfig 以再次重新配置实例:

  kong-configurer:
    image: mashupmill/kongfig
    depends_on:
      kong:
        condition: service_healthy
    links:
      - kong:kong
    volumes:
      - ~/config.yml:/config.yml:ro
    command: --path /config.yml --host kong:8001
    network_mode: "bridge"

您可以转储配置以在最后一个容器中使用:

kongfig dump --host localhost:8001 > ~/config.yml

关于 Kongfig 的更多信息,请点击此处

干杯。

于 2019-03-19T18:38:07.830 回答
0

2020 年更新

  1. 为容器创建桥接网络可以互相访问
docker network create my-net
  1. 启动 kong-database 容器
docker run -d --name kong-database --network my-net  -p 5432:5432  -e "POSTGRES_USER=kong" -e "POSTGRES_HOST_AUTH_METHOD=trust" -e "POSTGRES_DB=kong"  postgres:alpine
  1. 运行临时容器为 kong-database 初始化数据
docker run --rm \
    --network my-net \
    -e "KONG_DATABASE=postgres" \
    -e "KONG_PG_HOST=kong-database" \
    kong:latest kong migrations bootstrap
  1. 运行kong容器
docker run -d --name kong \
    --network my-net \
    -e "KONG_DATABASE=postgres" \
    -e "KONG_PG_HOST=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" \
    -e "KONG_ADMIN_LISTEN_SSL=0.0.0.0:8444" \
    -p 8000:8000 \
    -p 8443:8443 \
    -p 8001:8001 \
    -p 8444:8444 \
    kong:latest
  1. 核实
curl http://127.0.0.1:8001
于 2020-07-24T04:12:23.887 回答
0

你检查了以下回购吗?

https://github.com/Mashape/docker-kong

于 2017-02-13T13:16:46.987 回答
0

这是我自己的 docker compose,它运行良好(来自 kong 在 github 上的 docker 项目,我使用了 kong-oidc,你可以选择你喜欢的任何版本)。

kong:
    image: kong:1.3.0-alpine-oidc
    container_name: kong
    depends_on:
      - kong-db
    healthcheck:
      test: ["CMD", "kong", "health"]
      interval: 10s
      timeout: 10s
      retries: 10
    restart: on-failure
    ports:
      - "8000:8000" # Listener
      - "8001:8001" # Admin API
      - "8443:8443" # Listener  (SSL)
      - "8444:8444" # Admin API (SSL)
    environment:
      KONG_DATABASE:         postgres
      KONG_PG_HOST:          kong-db
      KONG_PG_PORT:          5432
      KONG_PG_DATABASE:      api-gw
      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_PROXY_LISTEN:     0.0.0.0:8000, 0.0.0.0:8443 ssl
      KONG_ADMIN_LISTEN:     0.0.0.0:8001, 0.0.0.0:8444 ssl
      KONG_PLUGINS:          bundled,oidc
      KONG_LOG_LEVEL:        debug

  kong-migrations:
    image: kong:1.3.0-alpine-oidc
    command: kong migrations bootstrap
    container_name: kong-migrations
    depends_on:
      - kong-db
    environment:
      KONG_DATABASE: postgres
      KONG_PG_DATABASE: api-gw
      KONG_PG_HOST: kong-db
      KONG_PG_PASSWORD:
      KONG_PG_USER: kong
    links:
      - kong-db:kong-db
    restart: on-failure

  kong-migrations-up:
    image: kong:1.3.0-alpine-oidc
    container_name: kong-migrations-up
    command: kong migrations up && kong migrations finish
    depends_on:
      - kong-db
    environment:
      KONG_DATABASE: postgres
      KONG_PG_DATABASE: api-gw
      KONG_PG_HOST: kong-db
      KONG_PG_PASSWORD:
      KONG_PG_USER: kong
    links:
      - kong-db:kong-db
    restart: on-failure

于 2019-10-18T09:02:21.440 回答