This story was adapted from an original guest post written by Marc Campbell and Grant Miller, co-founders of Replicated. For a more in-depth look at how Campbell and Miller leveraged Cloudflare Access and Argo Tunnel to develop a cloud-based IaaS solution, visit the Cloudflare Blog.
毫无疑问,这个世界的 Internet 连接程度越来越高,部署环境也越发复杂。我们有足够的理由相信,所有软件开发都通过 Internet 完成并与 Internet 保持协同只是时间问题。
成立于 2014 年的 Replicated 是一家基础设施软件公司,致力于开发一种新型企业软件交付模型,称为 Kubernetes 现成(KOTS)软件。他们的目标是方便用户安装并操作第三方软件,这样一来,将数据发送给多租户 SaaS 提供商就不再是使用这些提供商服务的唯一方式了。
“我们认为,在不产生大量运营开销的前提下安全地为你的数据提供应用程序,既是可能做到的,也是很容易做到的,”Campbell 和 Miller 说。
Replicated 的开发环境需要在 Kubernetes 上运行,这是因为 KOTS 在 Kubernetes 中运行并在 Kubernetes 群集中管理第三方应用程序的生命周期。构建和验证产品需要开发人员能够访问群集。
Replicated 的工程团队已经扩大了规模,包含了专门的前端工程师和其他专家,而这些专家不应该为如何构建和维护自己的群集而担心,因此,管理本地环境变得十分复杂,成为了一种负担。为了保持开发人员的生产力,他们需要进行简化。
“我们的工程师每周都要浪费几个小时来对本地环境进行故障排除,”Campbell 和 Miller 解释说。“当不太熟悉 Kubernetes 的前端工程师遇到问题时,他们需要与后端工程师配对并从后端工程师那里获得帮助;这样占用的就不仅仅是一个人,而是两个人的宝贵时间。我们需要有更好的解决方案。”
在寻找一款易于实施和维护的解决方案时,Replicated 将目光投向了 Cloudflare。他们起初使用 Cloudflare 进行 DNS 和 DDoS 保护,但随着时间的推移,他们开始利用其他 Cloudflare 服务来保障自己的服务可用性和安全性。
Replicated 设计出一种解决方案,使用基于云的基础设施组件将其开发环境迁移至基础设施即服务(IaaS)资源,而这些基于云的基础设施组件是通过 Cloudflare Access 和 Argo Tunnel 访问并加以保护的。换句话说,他们的整个开发环境都位于云中。
最终,他们减少了开发人员对本地环境进行故障排除所耗用的时间,使 团队中的每个工程师都可以维护全栈开发环境——即使他们没有丰富的 Kubernetes 专业知识也无妨。
“与传统部署相比,这种配置具有多种优势,”Campbell and Miller 表示。“例如,服务器没有公用 IP,我们不需要在 Google Load Balancer 中打开任何端口,包括用于 SSH。要连接到这些服务器,唯一方法是通过 Argo Tunnel,而 Argo Tunnel 是由 Cloudflare Access 保护的。Access 提供了 BeyondCorp 式的身份验证方法,可确保无需使用 VPN 即可从全球任何地方访问环境。”
现在,Replicated 可以编写一个策略来定义用户应有权访问哪些计算机,并确保将该策略应用于所有地方。他们可以允许开发人员使用在其他任何地方使用的相同 Google 凭据来登录,而不必管理 SSH 证书(这些证书使用寿命长且难以撤销)。即使开发人员离开,他们也可以立即撤销这些凭据,不必担心仍有公钥流落在外。
借助 Cloudflare Access,Replicated 的开发人员可以轻松设置多个环境(例如尝试新的 k8s 版本),而且不需要为此动用最强大的笔记本电脑。他们还可以选择其本地操作系统和环境(MacOS、Windows、Linux),因为只要支持 SSH,就可以支持每个版本。此外,由于代码不在开发人员的笔记本电脑上,因此也不会被开发人员带到咖啡店或其他不安全的地方。这是安全方面的一项重大优势,再也不会因为丢失笔记本电脑而使代码库遭到破坏了。
“得益于 Cloudflare Access 和 Argo Tunnel,每个开发环境都发挥了协作平台的作用,”Campbell 和 Miller 说道。“当两个工程师不在同一房间时,这一点就特别有用。此外,我们也减少了对开发环境的依赖——如果我的服务器由于未知原因无法正常工作,我就可以直接删除,然后获得一个全新的服务器,而不必花费数小时进行故障排除。”
入门
资源