BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース HashiCorp TerraformオペレーターによるKubernetesからのインフラストラクチャ管理

HashiCorp TerraformオペレーターによるKubernetesからのインフラストラクチャ管理

原文(投稿日:2020/04/15)へのリンク

HashiCorpKubernetes用のTerraformオペレーターのアルファ版をリリースした。これはインフラストラクチャを、KubernetesからTerraform Cloudを呼び出すコードとして管理するためのものである。オペレーターをインストールした後は、ユーザはKubernetesマニフェストを使用してTerraformワークスペースを同期できる。その後、Kubernetesで実行されているアプリケーションは、ConfigMapを使用してTerraform出力を参照できる。現時点では、この演算子はTerraform Cloudでのみ機能する。

Terraformオペレーターは、開発者がAWS SQSのキューのようなインフラストラクチャをKubernetesインターフェイスを使用してプロビジョニングするユースケースのために作成された。はじめに、ユーザはTerraform Cloud組織でトークンを作成する必要がある。無料版と有料版の両方が機能し、Kubernetesにシークレットとして保存される。次に、Helmを使用してオペレーターをインストールする。オペレーターが実行されると、ユーザはKubernetesマニフェストを使用してTerraformワークスペースの作成を開始できる。オペレーターは、Terraformワークスペースから値を作成、更新、取得し、Terraform Cloudでrunを実行し、KubernetesでTerraformワークスペースのステータスを更新できる。

インフラストラクチャをプロビジョニングするには、最初にTerraformモジュールを定義して、Kubernetesがモジュールの入力パラメータのみを送信するようにする必要がある。開発者は、Kubernetesマニフェスト内でTerraformテンプレートを定義したり操作したりしない。この理由は設計の単純化であり、それによってクラスター内のカスタムリソース定義(CRD)の数を減らすことができる。開発者はTerraformワークスペースマニフェストを作成し、使用する各Terraformモジュール入力の値を定義する。インフラストラクチャリソースの準備ができると、開発者は、AWS SQSエンドポイントのようなConfigMapを介してモジュール出力にアクセスできる。その後、Kubernetesで実行されているアプリケーションからこれらの値を参照できる。

Terraformワークスペースオブジェクトのすべての変更に対して、オペレーターはそのオブジェクトを取得し、auto-approveパラメーターで自動的にその変更を適用する。ただし、AWS秘密鍵などの機密情報は除く。また、リソースを削除するには、kubectl delete workspace sqs-queueのようなコマンドを実行して、Kubernetes APIを使用してTerraformワークスペースを削除できる。

内部的には、Terraformワークスペースコントローラーは、KubernetesワークスペースCRDをTerraform Cloudワークスペースと調整する。変更を実行するには、オペレーターがterraform apply -auto-approveを実行して変更を自動的に実行するが、ユーザはSentinelを使用して適用する前に変更を検証できる。オペレーターは、セキュリティー上の理由から名前空間スコープである。ユーザは、Terraform Cloudと対話するためにシークレットを介してアクセストークンを必要とし、名前空間のみへのアクセスを許可することでリスクを軽減する。

このアルファリリースでは、オペレーターはTerraform Cloudに対してのみ機能する。また、HashiCorpの開発者であるRosemary Wang氏は最近の仮想のオフィス時間において、次のように述べている。TerraformCloudの使用に限定している。その理由は、その動作を確実に理解したいたであり、また、オペレーターにあまり多くのロジックを追加したくないためである。コミュニティがAWS S3のような他のバックエンドのサポートを必要とする場合、Wang氏はTerraformオープンソースバージョンのユーザに対してGitHubリポジトリで問題をオープンして、そのユースケースを説明することを奨励した。

さらに、Terraformオペレーターを使用すると、開発者はオンプレミス環境用のインフラストラクチャをプロビジョニングできる。Open Service Broker APIのように、インフラストラクチャをクラウドまたはSaaSプロバイダーだけにしかプロビジョニングできないということはない。

Terraformオペレーターの詳細については、GitHubページにアクセスしてください

この記事に星をつける

おすすめ度
スタイル

BT