HashiCorpはTerraform Cloud Operator for Kubernetesのv2をリリースした。このオペレータは単一のKubernetesカスタムリソースを通してTerraform Cloudワークスペースを管理できる。このリリースでは、複数のカスタマーリソースのサポート、ウォッチスコープを特定のネームスペースに設定すること、同期の改善、新しく公開されたメトリクスが追加された。
Terraform Cloud Operator for Kubernetes を使うことで、Kubernetes の内部と外部の両方のインフラストラクチャを、Kubernetes のコントロールプレーンから直接プロビジョニング可能になる。HashiCorpのシニアソフトウェアエンジニアであるJohn Houston氏とプロダクトマネージャーのVishnu Ravindra氏が説明している。"[p]latformチームは、承認されたTerraformモジュールの使用を保証しながら、Kubernetesネイティブなワークフローをアプリケーション開発者に提供できるようになった。"
Terraform Cloud Operator for Kubernetesのハイレベルアーキテクチャ(出典:HashiCorp)
バージョン2のリリースでは、複数のカスタムリソースが用意され、それぞれが異なるTerraform Cloudリソース用の独立したコントローラを持つようになった。さらに、各コントローラーに割り当てられるワーカースレッドの数を変更できるようになった。デフォルトでは、各コントローラーにはワーカーが1つあるが、コントローラーが同時に処理できるカスタムリソースの数を増やすために追加が可能だ。
オペレータはAgentPool
を介してTerraform Cloud エージェントプールとTerraform Cloud エージェントトークンを管理するために使用できる。Module
はAPI駆動の実行ワークフローを実装するために使われ、Workspace
はTerraform Cloudワークスペースを管理するために使われる。以下の例では、agent-pool-development
というエージェントプールを作成し、token-red
というトークンを生成している。
---apiVersion: app.terraform.io/v1alpha2kind: AgentPoolmetadata: name: thisspec: 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
これが実行されると、token-red
エージェントトークンはmy-agent-pool-token-red
Kubernetesシークレットに格納される。オートスケーリング部分によって、オペレータはリソースの必要性に基づいて、少なくとも1つのエージェントポッドが最大3まで稼働していることを確認できる。この評価は、targetWorkspaces
の下にリストされたワークスペースの負荷を監視することによって行われる。
オペレータは各Custom ResourceのTerraform Cloudクライアントを管理するようになった。この改善により、1つのオペレータデプロイメントを複数のTerraform Cloud組織で使用できるようになった。
このリリースでは、標準 Prometheus フォーマットのメトリクスも公開され、HTTPS ポート8443
を介して標準の/metrics
パスで利用可能になる。オペレータは、controller-runtimeによって提供されるすべてのメトリクスをエクスポートする。公開されるメトリクスの詳細なリストは、Kubebuilderのリリースドキュメントに記載されている。
このリリースでは、オペレータのウォッチスコープを特定のネームスペースにフォーカスするための新しい--namespace
オプションも追加された。新しい--sync-period
オプションはカスタムリソースと Terraform Cloud の同期を改善する。
Terraform Cloud Operator for Kubernetes はTerraform Cloud のユーザー向けに提供されている。バージョン1からバージョン2に移行するユーザーのために移行ガイドが用意されている。詳細はリリースのブログ記事かTerraformのディスカッションフォーラムで確認できる。Terraform Cloud Operator for KubernetesはGitHubで公開されている。