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 说道。“当两个工程师不在同一房间时,这一点就特别有用。此外,我们也减少了对开发环境的依赖——如果我的服务器由于未知原因无法正常工作,我就可以直接删除,然后获得一个全新的服务器,而不必花费数小时进行故障排除。”
销售
入门