【问题标题】:Ambassador API Gateway doesn't pickup services大使 API 网关不提供服务
【发布时间】:2019-06-15 23:08:24
【问题描述】:

我是这里的新大使用户。我已经通过tutorial,努力了解如何使用大使网关。我正在尝试通过 Docker Compose 在本地运行它,直到它准备好部署到生产中的 K8s。

我的用例是所有 http 流量都进入端口 80,然后定向到相应的服务。在工作目录中有一个引用 /config 目录中服务的 docker-compose.yaml 文件是否被认为是最佳实践?我问是因为这似乎并没有真正提取我的文件(postgres 启动没有显示在控制台中)。当我运行“docker ps”时,我只显示:

CONTAINER ID        IMAGE                                PORTS                NAMES
8bc8393ac04c        05a916199684                         k8s_statsd_ambassador-8564bfb874-q97l9_default_e775d686-a93c-11e8-9caa-025000000001_0
1c00f2341caf        d7cf7cf837f9                         k8s_ambassador_ambassador-8564bfb874-q97l9_default_e775d686-a93c-11e8-9caa-025000000001_0
fe20c4819514        05a916199684                         k8s_statsd_ambassador-8564bfb874-xzvkl_default_e775ffe6-a93c-11e8-9caa-025000000001_0
ba6415b028ba        d7cf7cf837f9                         k8s_ambassador_ambassador-8564bfb874-xzvkl_default_e775ffe6-a93c-11e8-9caa-025000000001_0
9df07dc5083d        05a916199684                         k8s_statsd_ambassador-8564bfb874-w5vsq_default_e773ed53-a93c-11e8-9caa-025000000001_0
682e1f9902a0        d7cf7cf837f9                         k8s_ambassador_ambassador-8564bfb874-w5vsq_default_e773ed53-a93c-11e8-9caa-025000000001_0
bb6d2f749491        quay.io/datawire/ambassador:0.40.2   0.0.0.0:80->80/tcp   apigateway_ambassador_1

我有一个 docker-compose.yaml:

version: '3.1'

# Define the services/containers to be run
services:
  ambassador:
    image: quay.io/datawire/ambassador:0.40.2
    ports:
      - 80:80
    volumes:
      # mount a volume where we can inject configuration files
      - ./config:/ambassador/config
  postgres:
    image: my-postgresql
    ports:
    - '5432:5432'

并在 /config/mapping-postgres.yaml 中:

---
apiVersion: ambassador/v0
kind: Mapping
name: postgres_mapping
rewrite: ""
service: postgres:5432
volumes:
  - ../my-postgres:/docker-entrypoint-initdb.d
environment:
  - POSTGRES_MULTIPLE_DATABASES=db1, db2, db3
  - POSTGRES_USER=<>
  - POSTGRES_PASSWORD=<>

【问题讨论】:

    标签: kubernetes docker-compose api-gateway


    【解决方案1】:

    volumesenvironment 不是 Ambassador Mappings 的有效配置。 Ambassador 允许您代理到 postgres,但身份验证必须由您的应用程序处理。

    话虽如此,您的 Postgres 容器似乎没有启动。 (也许是因为它需要一个初始配置)。您可以通过以下方式检查错误:

    $ docker ps -a | grep postgres
    $ docker logs <container-id-from-previous-step>
    

    您还可以查看 postgres docker compose 示例 here

    在工作目录中有一个引用 /config 目录中服务的 docker-compose.yaml 文件是否被认为是最佳实践?

    这是相当标准的,但你可以使用任何你喜欢的目录。

    【讨论】:

    • 我的 postgres 有一个项目,该 docker-compose.yml 文件包含与上述 mapping-postgres.yaml 相同的卷和环境值。我的理解是我可以这样做,其中大使配置文件有效地替换了独立的 docker-compose 文件。这不正确吗?
    • 我不知道,您在文档中的某个地方看到过吗?
    • 我只是想了解如何使用 Ambassador 来管理我的图像、Web 和 Postgres 等。在我启动我的 postgres docker-compose 之后,听起来我需要通过我的大使 docker-compose 启动我的网络服务?
    • 我在本地(本地主机)运行 Postgres,但我的 docker-compose 服务都不能真正连接。我需要对 Docker 网络做些什么吗?
    猜你喜欢
    • 2019-08-07
    • 2011-03-08
    • 2017-06-08
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 2018-11-05
    相关资源
    最近更新 更多