牧场主开发环境

Rancher development environment

最近为了一个项目开始使用rancher。 几天之内,我建立了一个标准的微服务架构,其中包含 4 个基本服务(托管在 Digital Ocean 上),试图让它尽可能地准备好生产

服务:

它还包括负载平衡器健康检查等...

我很惊讶它有多好,因此我在我的配置中大量使用了 rancher 提供的所有功能,例如 DNS 约定 <service>.<stack>、sidekicks、rancher-compose 等。 .

以上 服务 位于它们自己的存储库中,并且它们有自己的 拥有 Dockerfiledocker-compose.ymlrancher-compose.yml 用于生产,以便它们可以独立部署。

既然我已经证明了 rancher 将成为我的新 "friend",我需要一个 策略 到 运行 我本地环境中的相同应用程序,并且能够开发我的服务,就像我对 Vagrant.

所做的那样

我想知道将 rancher 上的 运行 应用程序移植到 development 环境的最佳方法是什么.

我对如何解决这个问题有一些想法,但是,none 似乎允许我在不重新配置整个开发服务的情况下实现它。

1 - 本地机器上的 Rancher

这是我采用的第一种方法,在本地安装 rancher-serverrancher-client,然后像在生产环境中一样部署整个堆栈。这对我来说似乎是最合乎逻辑的想法。但是,这不允许我更改服务代码并实时反映到容器中。也许使用共享卷可能有效,但对我来说这看起来微不足道,如果您有任何想法请告诉我。对我来说,这个解决方案已经消失了:(

2 - Docker 撰写

我的第二次尝试是简单地使用 docker compose 和共享卷,省略 load balancers 和 rancher 的所有 功能 :( 但是,这可能有效,我需要更改我所有服务的所有配置,它们指向牧场主特定的 DNS 域 <service>.<stack> 以仅在桥接网络上使用 <service>。但这意味着为不同的环境维护 2 种不同的配置,这很奇怪,也不好玩。

3 - 流浪汉

因为第二个解决方案已经很混乱了(服务的双 docker-compose 和双重配置)为什么不在 vagrant 中重新创建整个环境(没有 rancher 功能,可能有 ansible),其中一个 nginx 可以反向代理并解析服务之间的请求。然而,这也需要相当多的工作和双倍的努力:(

是否有任何其他方法可以使 rancher 以非痛苦的方式适合开发环境?依赖 rancher 或任何其他平台工具的公司如何解决这个问题?

本地机器上的Rancher是一种常见的模式。如果您 运行 Rancher 在 VM 上,或者在本地 Linux 盒子上,当您启动堆栈时,细微的变化是您向主机添加卷..

services: myapp: volumes: - /Users/myhome/code:/src ...

您现在可以在撰写文件和 Rancher CLI 中使用模板功能。类似于:

services: myapp: {{ if dev-local == "true"}} volumes: - /Users/blah:/src {{end}} ...

然后你可以得到一个答案文件 dev-local="false"