Terraform 控制器:云资源自助服务

了解 Kubernetes 如何帮助应用程序依赖性和消费不再创建进展的主要瓶颈

每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?3分钟?学习?何乐而不为?,希望?大家?点赞?,加?关注?,你的?支持?是我?最大?的?动力?。
Kubernetes 在为开发人员提供生态系统、提高运输速度、将组件置于通用框架和 DSL 之下,以及扩展和扩展产品的灵活性方面表现出色。因此,难以置信的是,与客户对话、应用程序依赖性和消费仍然是进展的主要瓶颈,团队被阻止等待数据库、队列、对象存储等等。

问题是

  • 大多数应用程序甚至还没有投入生产——软件交付周期的很大一部分是原型开发和实验。它被驱使着快速展示价值: 尝试,展示,看看是否失败
  • 这种说法常常与平台工程相冲突,这是自然而然的。他们的产品化设置、可靠性、成本和安全性的所有权的目标是一个非常不同的世界观
  • 在消除应用程序交付的障碍方面非常成功,使得开发团队和为了将平台体验为一种服务,大量组织中的应用程序依赖项仍然是一个票据系统; 单击、打开支持票据、等待响应,等等
  • 虽然地形控制器并没有试图解决所有这些问题,但这是朝着正确方向迈出的一步。

  • 重复使用 Terraform 模块和已有的代码; 没有支点或技术选择
  • 允许团队在维护对资产(Terraform 模块)和安全配置文件(Checkov)的控制的同时使用它
  • 让团队意识到他们自己的成本,允许他们改进他们
  • The Why and the What For

    为什么和做什么

    开发商须知

  • 工作流在开发人员的名称空间之外运行,因此可以集中管理和共享凭据,而不必公开
  • 可以事先批准更改,遵循计划并应用工作流
  • 开发人员可以从他们的名称空间查看和调试 Terraform 工作流
  • 将输出作为环境变量交付,准备直接从库伯内特秘密中使用,而不需要进一步操作这些值
  • 平台工程师

  • 它并非对所有人都是免费的; 平台工程师可以实现一些策略,应用程序团队可以围绕这些策略使用模块
  • 配置可以是特定于环境的,使工程师能够将特定于环境的数据注入到模块配置中。可以注入环境标签、过滤器、项目标签、成本代码等用例
  • 使开发人员能够看到他们在 Kubernetes 内配置的相关成本
  • 支持 pod 标识(AWS 上的 IRSA)并将凭证管理移交给云供应商
  • Integrates 与Infracost并提供查看预期成本和潜在执行政策(预算控制)的能力
  • 重用Terraform 你可能已经写过了,你几乎肯定已经得到了经验
  • 放置护栏周围的模块,你的团队可以使用,而不是参考或从互联 上拉任何 Terraform 模块
  • 孤立资源的能力,即删除自定义资源而不删除支持它的云资源
  • 先决条件

  • Helm CLI
  • Kind
  • 启动和运行的最快方法是通过Helm。

    部署控制器

    Shell

    
    

    为开发人员配置凭据

    Shell

    
    

    创建第一个配置

    Shell

    
    

    路线图上有什么?

    预算限制

    随着预算控制的引入,预算控制已经整合了一个想法。虽然它不会直接增加成本,而且一些资源是基于使用的(例如,一个 S3存储桶是免费的,但是在里面转储10TB,并且成本很高)。它可以是一种获取成本的轻量级方法,允许开发人员发挥/调整他们的依赖关系,并促进对成本的更好理解。

    YAML

    
    

    政策执行

    将 Checkov 集成到管道中,并允许平台工程师从上面驱动策略。

    YAML

    
    

    注意: 虽然这是一个障碍,但如果这是针对生产工作负载应用的,并且没有真正遵循 shift-left 方法,那么在游戏中就非常晚了。对于耦合方法(即在发布版本之前在 Terraform 模块 CI 工作流中使用相同的 PaC 存储库,以及在部署时在集群中强制执行) ,我们的 Policy As (Versioned) Code (PaC)博客绝对值得一读。

    更新: 已经完成,可以从 v0.1.1开始使用:
    https://github.com/appvia/terraform-controller/releases/tag/v0.1.1

    那么,还有什么选择呢?

    这并不意味着是一个独家的列表或比较,有很多博客谷歌搜索以外,但它值得强调一些著名的项目。

    Crossplane

    Crossplane 是一个有趣的项目,正好符合美国 DevOps 所喜爱的“金砖四国”模式。简而言之,它由被管理的资源(想想 Terraform 资源)组成,这些资源被打包成“组合”(想想 Terraform 模块的固执己见的集合) ,并作为可消费的 CRD 呈现给 Application Developer。最初试图复制 Terraform 云支持的广度,最近它加入了 Terrajet 项目俱乐部,该项目由 Terraform 供应商的编码控制器控制。

  • 它有很多优点,但是确实伴随着技术上的支点和平台团队的学习曲线
  • 不能重用以前的投资或经验。机会是你有一个尝试和测试的地形模块,即将被废弃的集合
  • 没有演习或计划支持。对资源所做的任何更改都将尝试立即应用,这存在风险,因为修改特定资源属性可能会引发破坏性更改
  • Terraform Operator

    也许是第一次谷歌点击时键入地形控制器。该项目的工作方式类似——通过 Kubernetes 工作协调一系列工作流程,并将其映射到“ terraform init”和“ terraform application”。

  • T那个自定义资源定义 是非常灵活的,允许调整; 图像,版本,后期和预运行脚本,以及许多其他设置(虽然可以说,你可能不得不以某种方式阻止一些这种功能,因为它增加了表面积滥用)
  • 目前,操作员无法共享凭据。这可以被看作是一种专业技术,但是,它确实使得开发人员的部署和使用更加复杂,因为您现在需要为团队管理凭据,或者可能需要与类似的产品集成Vault .
  • 它具有 spec.resource 下载的特性,这个特性非常有用,可以用来提供特定于环境的配置
  • 不支持批准或审查变更——所有东西都是“自动批准”的
  • 该策略之后必须通过另一个组件(即 GateKeeper 或Kynervo admission controller Kynervo 入场控制器.
  • Terraform 输出是作为 Kubernetes Secret 中的 JSON 对象编写的,因此您的应用程序可能需要更改来解析和使用这些值
  • 声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2022年5月24日
    下一篇 2022年5月24日

    相关推荐