Categories
程式開發

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