Kubernetes のオーケストレーション ツールでコンテナ ベースのサービスを開発する場合、Terraform はアーティファクトのエコシステムに欠かせないものとなります。これらの infrastructure-as-code 設定ファイルは K8s アプリケーションを実行するクラウド環境でのプロビジョニングと保守の自動化に役立ちます。
そのためソフトウェアのサプライチェーンの一部として Terraform モジュール、プロバイダ、リモート ステート ファイルを Artifactory に格納できるようになったことは素晴らしいお知らせです。これらの IaC ファイルを Docker イメージや Helm chart と一緒に JFrog のリポジトリに格納することで、Artifactory は包括的な Kubernetes レジストリとして機能し、クラウドネイティブアプリの追跡可能でセキュアな信頼関係を通して配布できるようになります。
Terraform とは?
Terraform はクラウド基盤のソフトウェア開発におけるライフサイクル全体を管理するために広く利用されている、オープンソースの Infrastructure-as-Code ソフトウェア ツールです。Terraform はクラウド API を宣言型の設定ファイルにコード化することで、クラウド プロバイダーのインフラを多くのインスタンスに渡って統一した方法でプロビジョニング、調整、破棄を可能にします。
これは GitOps の基幹的なプロセスで、ソフトウェア開発に使われた同じツールとプロセスを通してインフラのプロビジョニングとデプロイメントを管理するという、開発者中心のエクスペリエンスです。このプロセスでは、Terraform モジュールは Git VCS リポジトリに格納され、本番システムの状態は Git プルリクエストで自動的に管理されます。これによってシステムの状態遷移を開発者が確認できます。
Artifactory に装備された Terraform
では、なぜ Terraform モジュールのレジストリを Artifactory のようなバイナリ リポジトリ マネジャーで管理する必要があるのでしょうか。それはビルドと同様、Terraform モジュールはソフトウェアのサプライチェーンと本番 Kubernetes へのソフトウェア配信で重要だからです。
すべてのアプリケーションはソースコードから始まりますが、パイプラインを経て成果物であるソフトウェアになるのはバイナリです。また、最近のアプリケーションの複雑な依存関係においては、そのサプライチェーンに変更があれば、新しいビルドの引き金となる可能性があります。
Terraform モジュールとプロバイダを Artifactory レジストリに格納することで、それらは JFrog Platform の認証済みのアクセス、チェックサム検証、きめ細かい権限管理で保護され、ソフトウェアのサプライチェーンのセキュアな信頼関係の一部になります。これで、 Terraform の資産を不変的なビルドやその他のアーティファクトとより良く関連付けることができます。Terraform のモジュール、プロバイダ、Helm Chart を Docker イメージと一緒に配置することで、開発からテスト、本番までの SDLC 全体において、より簡単に管理できるようになります。
Terraform と Helm のアーティファクトを Artifactory のパッケージとビルド メタデータに組み込むことで、本番環境に至るまでの直接的な追跡が可能になります。もし過去のビルドにロールバックする必要がある場合、自動化はそのビルドに適用する Terraform の構成も得られます。
Terraform レポジトリの種類
Artifactory では3種類の Terraform アーティファクトのレジストリを管理できます。
- Terraform モジュール – 1 つのディレクトリにある 1 つ以上の Terraform 設定 (.tf) ファイル群です。ファイル毎に Terraform に特定のインフラストラクチャの集合をどのように管理するかを伝える宣言的な言語を使用
- Terraform プロバイダ – クラウド プラットフォームやサービスを設定するための上流 API を管理できるようにする Terraform プラグイン
- Terraform バックエンド リポジトリ – バックエンドとして使用する際に、チーム メンバー全員で共有する State スナップ ショットのためのリモート state のデータ ストレージとして機能
Artifactory は Terraform バックエンド リポジトリ用のローカル リポジトリをサポートし、Terraform モジュールと Terraform プロバイダレジストリの両方で、そのすべてのタイプのリポジトリをサポートします。
- ローカル リポジトリ – 組織のネットワーク内でのみアクセス可能なプライベート レジストリ
- リモート リポジトリ– ローカル化と可用性のためにキャッシュされたバージョンを提供する外部レジストリ (パブリックな Terraform レジストリなど) のプロキシ
- バーチャル リポジトリ – 同じパッケージ タイプのローカルとリモート リポジトリのセットをカプセル化し、単一 URL からアクセスできる論理上のリポジトリ
GitOps を強化する JFrog BinOps
Terraform のような宣言型 IaC ツールや Helm chart のようなオーケストレーション ツールは開発者が K8s のクラウド インフラを管理できる方法として GitOps の重要な部分を担っています。
Terraform のレジストリを Artifactory で管理し、Kubernetes レジストリの一部にすることで、BinOps の原則 (JFrog DevOps platform のバイナリ中心のアプローチによるソフトウェアデリバリーの成功) を実践し、クラウド ネイティブ開発をより加速させることも可能です。
JFrog Platform が実現するこれらの BinOps メソッドは、GitOps との競合や置換するものではありません。GitOps の手順をソフトウェアのサプライチェーン管理でのベスト プラクティスと組み合わせて、開発者にさらなる力を与えます。
*本記事は、JFrog Japan 株式会社が提供している以下の記事から抜粋・転載したものです。