在没有 Kubernetes 的本地开发环境中运行 Ambassador

Posted

技术标签:

【中文标题】在没有 Kubernetes 的本地开发环境中运行 Ambassador【英文标题】:Run Ambassador in local dev environment without Kubernetes 【发布时间】:2021-03-22 17:48:12 【问题描述】:

我正在尝试在我的本地开发环境中运行 Ambassador API 网关,因此我将模拟我最终将在生产环境中得到的结果 - 不同之处在于,在生产环境中我的解决方案将在 Kubernetes 中运行。为此,我将 Ambassador 安装到 Docker Desktop 中,并添加所需的配置以将请求路由到我的微服务。不幸的是,它对我不起作用,我收到以下错误:

upstream connect error or disconnect/reset before headers. reset reason: connection failure

我认为这是由于映射文件中的问题,如下所示:

apiVersion: ambassador/v2
kind:  Mapping
name:  institutions_mapping
prefix: /ins/
service: localhost:44332

所以我基本上想要做的是将所有到达http://ambassador_url/ins 的请求重写为在端口44332 上的IIS Express(通过Visual Studio)中本地运行的服务。

我错过了什么?

【问题讨论】:

尝试将service 中的localhost 更改为您机器的本地IP,例如192.168.5.10:44332。不要使用环回地址(例如 127.0.0.1)。 很遗憾这不起作用。 这可能是因为IP地址毕竟不是服务。我的错。它会产生任何日志吗?您是否尝试过创建外部名称或无头服务来将主机的 IP 作为服务创建? 如何将主机的 IP 创建为对 Docker 中的大使可见的服务?一个例子将不胜感激。 试试这个:``` apiVersion: v1 kind: Service metadata: name: my-localhost spec: type: ClusterIP clusterIP: None --- kind: Endpoints apiVersion: v1 metadata: name: my-本地主机子集:-地址:-ip:10.1.1.5 #你的主机IP在这里```。抱歉格式化。 【参考方案1】:

我认为您最好使用 Ambassador Labs 的另一种工具,称为 Telepresence。

https://www.telepresence.io/

使用 Telepresence,您可以将您在 localhost 上运行的本地服务投射到您的集群中,以查看它的性能。这样您就不需要启动本地集群,并且可以获得有关您的服务如何与集群中的其他服务一起运行的实时反馈。

【讨论】:

当我想在推送代码之前进行某种集成测试时,这很方便。但是工程师会积极编写代码、运行代码、调试并重复直到代码准备好推送的开发体验(内部开发循环)呢? 通过将远程呈现添加到您的内部开发循环中,您始终可以针对真正的依赖项测试代码。我写了一篇关于在你的内部开发循环中使用 Skaffold 和 Telepresence 的文章。 blog.getambassador.io/…

以上是关于在没有 Kubernetes 的本地开发环境中运行 Ambassador的主要内容,如果未能解决你的问题,请参考以下文章

一键在本地搭建运行Istio 1.0的分布式Kubernetes集群

Kubernetes 学习总结(36)—— Kubernetes 本地运行的四种方法

Kubernetes 学习总结(36)—— Kubernetes 本地运行的四种方法

Kubernetes 学习总结(36)—— Kubernetes 本地运行的四种方法

安装指定版本的minikube

kubernetes发布springboot项目