跳转到主要内容
工程的博客

民主化云基础设施起程拓殖和詹金斯

通过子恒廖

2018年10月31日, 工程的博客

分享这篇文章

这篇文章是我们一系列的一部分内部砖上工程博客平台,基础设施管理、集成、工具、监视和配置。bob体育客户端下载

今年夏天在砖我设计和实现一个服务协调和部署云提供商的基础设施资源,显著提高操作的速度在我们的自我管理的云平台。bob体育客户端下载起程拓殖部署该服务被称为“管道”,和我与云计算和可观察性工作团队使其成为可能。

在这个博客中,我解释了我们如何使用起程拓殖的增强现有的工作流,并解决了痛点大大减少操作负担和错误的风险。我将总结其对工程的影响速度,我整体的实习经验数据砖。

介绍

在砖、工程师与各云提供商的(即交互。AWS, Azure)日常管理的资源。为了缓解供应,我们利用起程拓殖,云不可知论者,开源资源配置工具。bob下载地址结合砖”jsonnet-based模板系统,工程师可以通过声明指定所需的资源,并跨多个地区和云提供商提供这些资源。一个丢失在实现运营效率是部署编制的模板提供各自的资源。

起程拓殖:基础设施代码

为读者不熟悉起程拓殖,我们简要描述如何利用起程拓殖管理云资源。为了提供云基础设施使用起程拓殖,用户定义他们的资源在一个模板文件中,通常使用JSON,或Hashicorp配置语言(HCL)(一个配置语言由起程拓殖的创造者)。一个示例JSON模板提供一个Azure keyvault看起来如下:

{“资源”:{“azurerm_key_vault”:{“databricks_example_key_vault”:{“位置”:“westus”,“tenant_id”:“YOUR_TENANT_ID”“名称”:“db-example-kv”,“resource_group_name”:“dbwestus”,…一些KeyVault参数…}}}}

由起程拓殖模板时,生成一个输出tfstate文件。的tfstate文件描述当前状态的云资源配置相应的起程拓殖模板。这些文件是起程拓殖执行后续的关键资源更新已部署资源,自起程拓殖计算你所期望的状态差异从现有的基线状态tfstate文件,并执行相应的更新来实现所需的云资源的最终状态。

改变或破坏现有资源,用户只需更改模板使用起程拓殖和重新应用它。如果相应的tfstate文件存在,起程拓殖将正确修改资源,生成一个新的tfstate文件来取代旧的。如果tfstate文件丢失,起程拓殖将对所有的资源作为新模板中指定。状态管理是一件棘手的管理,但起程拓殖有效迁移所必需的资源所需的状态。异常的应用程序行为可以发生在起程拓殖利用tfstate文件不匹配当前云资源状态。

现有的痛点

起程拓殖是一个非常强大的工具,它已经有了极大的提高砖的时候利用云资源的效率。然而,成千上万的模板和云资源管理在生产环境中对砖工程带来了许多新的挑战。一些最重要的问题包括:

  1. 操作部署生产瓶颈资源——在砖,数量有限的人特权访问资源部署到生产环境中。对于一个工程师来部署他们的资源,他们需要一个请求到基础设施团队批准请求和部署生产变化。即使如此,似乎轻如更新生产数据库参数变化。完成请求可能会需要几个小时甚至几天的时间初步工程要求。
  2. 缺乏强制tfstate一致性Git -砖商店tfstate文件,提供版本控制等细节(特别是变更跟踪)。然而,由于Git允许用户在不同的时间点视图代码设计,两个用户可以使用tfstate文件的相互矛盾的看法。随着系统的尺度,就无法阻止用户在不同的分支机构部署相同的资源,覆盖现有资源,或进入不一致的状态。
  3. 缺乏支持部署资源与敏感信息——一个非常常见的用例在砖起程拓殖部署每个服务数据库。在部署时,需要指定一组初始的凭证。如果简单地添加到模板,证书将在Git中可见,在模板和物化tfstate文件,这是一个明显的违反安全。作为变通方法,模板包含占位符的凭证和tfstate文件被修订凭证因果消毒。占位符尤其有问题,工程师们需要记住手动删除之前真正的凭证。

起程拓殖部署管道:资源配置简单、安全

在前一节中提到的问题,我们起程拓殖部署管道,设计了一个自助服务资源配置工具。管道是由Jenkins和提供了一个简单的用户界面来部署起程拓殖模板:

图1:起程拓殖部署管道UI。

提供资源云,一个工程师需要构造一个起程拓殖模板,输入的路径作为参数工作,和部署工作。管道将解决模板,利用各自的云提供商的凭证,并应用模板使用起程拓殖。确保部署是有意为之,管道将暂停短暂显示提出改变的资源和提示用户确认。确认后,资源无缝部署!

图2:一个例子diff显示当部署一个起程拓殖模板(在这种情况下,Azure KeyVault)。

如果任何资源目标生产环境中,管道实施我们的基础设施团队的批准才能进行。虽然干预仍然需要为安全目的,工作流是大大简化了,因为基础设施团队只需要批准请求并允许管道处理自动化交付。另外,管道支持两人授权生产资源的变化经历了代码评审过程(包括基础设施团队批准),并合并到主分支。在这种情况下,管道生成一个链接请求工程师发送到另一个工程师批准。

赞同者评论和接受请求后,管道收益和应用起程拓殖模板。这些工作流最小化所需的努力更新生产资源,防止未经授权的部署。

管道完成后应用起程拓殖模板,生成的tfstate文件将被上传到一个分布式tfstate服务(由Azure blob存储支持),而不是提交到版本控制中。这种设计确保tfstate文件是一致的,消除了用户从tfstates起程拓殖模板应用的风险代表国家在历史上不同的点。

部署秘密

允许部署云资源与敏感的凭证,我们与中央凭证管理系统综合管道Hashicorp库的支持。在起程拓殖资源模板,用户可以指定一个参考凭证需要引导资源。在运行时,管道将从库获取参考凭证并无缝地注入他们起程拓殖通过运行时参数。凭证传递服务之间不需要用户手动干预。通过利用凭证注入和因果tfstate编校,用户可以安全地提供云资源而不用担心泄露凭证。

结论

起程拓殖部署管道旨在提高效率和安全的云资源配置在砖。在内部发布2018年8月,成为微软的标准管道资源部署到Azure。我们看到大幅减少的时间引导新云资源,并增加由于采用新解锁工作流。通常,生产资源配置将在几分钟内完成的任务。此外,这些工作流现在更安全由于凭证注入。

我的实习经验在砖是非凡的。我在多家公司实习,砖的实习是实习的不同,从一开始,我从来没有觉得我是作为一名实习生,但是我是团队的一部分,该公司。我有机会和创造价值几乎立即产生影响。砖的工程师是谦逊和支持,总是打开反馈尽管更多的行业经验。最重要的是,我已经能够成长和学习,在技术上和本书初版,从各种各样的经验你不会得到在其他公司:与合伙人跟聊天,参加火花和艾城的峰会,会议上最大的火花,听CEO重新提出他的董事会表示,与VPs整个公司参加午餐会议,跟踪砖面试的过程。

最后,我还要感谢每个人在公司,尤其是我的队友从云端和可观察性的团队,作为我美好的暑期实习经验的一部分。我深深了解的心态当我方法设计和构建可伸缩的云基础设施。

阅读更多

找出我们的工程实习生工作:

内部工程相关的博客系列:

免费试着砖
看到所有工程的博客的帖子