HashiCorp 发布 Terraform 操作符管理Kubernetes基础设施

HashiCorp发布了用于Kubernetes的Terraform操作符(Alpha版本),用于将基础设施作为代码予以管理。安装该操作符之后,用户可以使用Kubernetes清单同步Terraform工作空间。然后,运行于Kubernetes中的应用程序就可以使用ConfigMaps引用Terraform输出了。目前,该操作符只适用于Terraform Cloud。

因为开发人员希望使用Kubernetes接口在AWS SQS中像队列一样提供基础设施,该Terraform操作符正是出于实现这一需求。首先,用户需要在他们的Terraform Cloud组织中创建一个令牌(免费和付费版均可),并将其作为密钥保存在Kubernetes中。然后,用Helm安装这个操作符。一旦它运行起来,用户就可以开始使用Kubernetes清单创建Terraform工作空间了。该操作符可以创建、更新和检索源自于Terraform工作空间的值,在Terraform云中执行run,并在Kubernetes中更新Terraform工作空间状态。

为了提供基础设施,需要首先定义一个Terraform模块,以便Kubernetes只为该模块发送输入参数。开发人员既不定义Kubernetes清单中的Terraform模板,也不与之交互。这样做旨在简化设计,并减少集群中自定义资源定义(crd)的数量。开发人员创建Terraform工作空间清单,并为想要使用的每个Terraform模块输入定义值。如果基础设施资源准备就绪,开发人员可以通过ConfigMaps(如AWS SQS端点)访问模块输出,之后可以引用运行在Kubernetes中的应用程序中的定义的值。

对于Terraform工作空间对象中的每一处变更,除了AWS密钥之类的敏感信息之外,该操作符都会提取出来,并使用auto-approve参数自动应用。另外,若要删除资源,用户可以通过运行kubectl delete workspace sqs-queue命令,使用Kubernetes API删除Terraform工作空间。

在内部,Terraform工作空间控制器将协调Kubernetes工作空间CRD与Terraform云工作空间。若要执行变更,可运行terraform apply -auto-approve自动执行,但是用户可以在应用它们之前使用Sentinel进行验证。出于安全考虑,该操作符的作用域限定于命名空间。用户需要通过访问令牌才能与Terraform Cloud交互,只允许访问命名空间可以降低风险。

在这个Alpha版中,该操作符只对Terraform Cloud有效。HashiCorp的开发大使Rosemary Wang在最近的一次虚拟办公会中说:我们将它的应用范围限定于Terraform Cloud,因为我们想彻底了解它的表现,不想给这个操作符添加太多的逻辑。如果社区需要对其他后端(如AWS S3)的支持,Wang 希望Terraform开源版本的用户在GitHub库中提出问题,解释其应用场景。

此外,该Terraform操作符可以为本地环境提供基础设施,而不只是在云或SaaS提供商中提供。

要了解关于Terraform操作符的更多信息,请访问该GitHub页面

原文链接:

Managing Infrastructure From Kubernetes with the HashiCorp Terraform Operator

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/3mYgARwRtQ0IfG5qOowF
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券