Kong 在与 PostgreSQL 一起使用时不加载实体

问题描述 投票:0回答:2

我想使用 Kong 作为 API 网关。我正在使用 Kong 图像。

这是我的撰写文件:

services:
  api_gateway:
    container_name: api_gateway
    image: kong
    volumes:
      - ./:/app
    environment:
      - KONG_DATABASE=postgres
      - KONG_PG_HOST=kong_postgresql
      - KONG_PG_PORT=5432
      - KONG_PG_USER=kong
      - KONG_PG_DB=kong
      - KONG_PG_PASSWORD=password
      - 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
      - KONG_DECLARATIVE_CONFIG=/app/kong.yml
    ports:
      - 8000:8000
      - 8443:8443
      - 8001:8001
      - 8444:8444
    command: bash -c "while !</dev/tcp/kong_postgresql/5432; do sleep 10; done; kong migrations bootstrap && kong start"
    restart: always

  kong_postgresql:
    image: postgres
    container_name: kong_postgresql
    restart: always
    expose:
      - 5432
    environment:
      POSTGRES_USER: kong
      POSTGRES_PASSWORD: password
      POSTGRES_DB: kong
    ports:
      - 5432:5432




这是我的 kong.yml:

_format_version: "3.0"

_transform: true

services:
  - name: customer_service
    url: http://customer:81/

  - name: auth_service
    url: http://auth:84/

routes:
  - name: basket-requests
    service: basket_service
    paths:
      - /basket

  - name: auth-requests
    service: auth_service
    paths:
      - /auth

plugins:
  - name: jwt
    service: basket_service
    enabled: true
    config:
      uri_param_names:
        - jwt
      key_claim_name: kid
      maximum_expiration: 100
      claims_to_verify:
        - exp


数据库和Kong启动成功。但是当我在 http://localhost:8001/services 发出请求时,它返回一个空数组。为什么会这样? Kong 不支持使用数据库的声明式配置吗?我想从我的 kong.yml 文件加载我的实体到 postgresql。

我试过设置KONG_DATABASE=off然后就OK了。如果在 http://localhost:8001/services 发出请求,它会返回 kong.yml 文件中的服务。

api-gateway kong
2个回答
0
投票

Kong 在使用数据库时不支持从声明配置加载。它专为无数据库模式而设计,您不需要 Postgres 数据库。

要以声明方式管理配置,我建议使用 deck,这是一个使用 Kong 的管理 API 将声明配置文件应用于数据库的 CLI。


0
投票

如果要同时使用声明式配置文件和数据库,可以使用kong config db_import 命令将文件中的配置导入到数据库中。

试试这个:

docker exec -it api_gateway bash
kong config db_import /app/kong.yml

在这里你可以找到一些关于

db_import
命令的重要说明:https://docs.konghq.com/deck/latest/faqs/

© www.soinside.com 2019 - 2024. All rights reserved.