HashiCorp发布了Kubernetes的Terraform Cloud Operator的第二版本。该Operator通过单一的Kubernetes自定义资源(CR)允许对Terraform Cloud工作区进行管理。新版本增加了对多个客户资源的支持、设置特定命名空间的观察范围、改进的同步功能以及新公开的指标。
借助Kubernetes的Terraform Cloud Operator,可以直接从Kubernetes控制平面部署内部和外部基础设施。正如HashiCorp的高级软件工程师John Houston和产品经理Vishnu Ravindra所指出的:“平台团队现在可以为应用开发人员提供Kubernetes原生的工作流程,同时确保使用批准的Terraform模块。”
Terraform Cloud Operator for Kubernetes的高级架构(图片来源:HashiCorp)
随着第二版本的发布,现在有多个自定义资源,每个资源都有其各自独立的控制器来管理不同的Terraform Cloud资源。现在可以修改分配给每个控制器的工作线程数量。默认情况下,每个控制器有一个工作线程,但可以增加更多工作线程以同时处理更多的自定义资源。
该Operator能够通过Kubernetes秘密管理Terraform Cloud代理池和Terraform Cloud代理令牌。它用于实施基于API的运行工作流程,并可用于管理Terraform Cloud工作区。以下示例创建了代理池,并生成了令牌:AgentPool
Module
Workspace
agent-pool-development
token-red
---
apiVersion: app.terraform.io/v1alpha2
kind: AgentPool
metadata:
name: this
spec:
organization: kubernetes-operator
token:
secretKeyRef:
name: tfc-operator
key: token
name: agent-pool-development
agentTokens:
- name: token-red
agentDeployment:
replicas: 1
autoscaling:
targetWorkspaces:
- name: us-west-development
- id: ws-NUVHA9feCXzAmPHx
- wildcardName: eu-development-*
minReplicas: 1
maxReplicas: 3
运行时,代理令牌被存储在Kubernetes秘密中。自动伸缩部分允许操作员确保至少运行一个代理pod,并且根据资源需求最多可以有3个。这是通过监控下列出的工作区的负载来完成的。token-redmy-agent-pool-token-redtargetWorkspaces
现在,操作员为每个自定义资源管理一个Terraform Cloud客户端。有了这一改进,单个Operator部署可以跨多个Terraform Cloud组织使用。
新版本还在标准的HTTPS端口上公开了遵循Prometheus格式的标准指标,每个控制器都可以在标准路径/metrics上以8443端口访问。Operator导出了controller-runtime提供的所有指标。公开指标的完整列表可以在Kubebuilder文档中找到。
新版本还增加了一个新选项,用于将Operator的观察范围聚焦到特定的命名空间。这个新的--namespace选项改进了自定义资源和Terraform Cloud之间的同步功能。--sync-period
Kubernetes的Terraform Cloud Operator适用于Terraform Cloud的用户。