0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IaC(Infrastructure as Code)の概念とTerraform・Helmの活用方法

Posted at

1. IaC(Infrastructure as Code)とは?

1.1. 概要

IaC(Infrastructure as Code)は、サーバーやネットワークなどのインフラをコードとして管理する手法です。手動でインフラを構築するのではなく、設定ファイル(YAML、JSON、HCLなど)を用いて、インフラを自動的にプロビジョニングできます。

1.2. IaCのメリット

メリット 説明
再現性の確保 同じコードを実行すれば、常に同じインフラ環境が構築できる
自動化 手作業を減らし、人的ミスを防ぐ
バージョン管理 Gitなどのバージョン管理システムでインフラの変更履歴を追跡可能
スケーラビリティ サーバーやリソースの増減を簡単に行える
ドキュメントとしての活用 インフラ構成がコードとして残るため、設計の理解がしやすい

2. Terraformの基本

2.1. Terraformとは?

Terraformは、HashiCorpが開発したオープンソースのIaCツールです。クラウド環境(AWS, GCP, Azureなど)やオンプレミス環境のインフラを宣言的に構築・管理できます。

2.2. Terraformの特徴

  • マルチクラウド対応(AWS, GCP, Azure, Kubernetes など)
  • 宣言型(Declarative):最終的なインフラの状態をコードで定義し、それに合わせてリソースを作成
  • 状態管理(State Management)terraform.tfstate でリソースの状態を記録
  • 変更プラン(Plan)と適用(Apply):インフラ変更前にプレビューが可能

2.3. Terraformの基本的な使い方

① Terraform のインストール

# Linux/macOS
brew install terraform

# Windows(Chocolatey)
choco install terraform

② Terraform の基本コマンド

コマンド 説明
terraform init 初期化(プロバイダーのダウンロードなど)
terraform plan 変更プランの確認(実行前のチェック)
terraform apply 実際にインフラを構築
terraform destroy すべてのリソースを削除

③ Terraform 設定ファイル(HCL)

Terraformでは、HCL(HashiCorp Configuration Language)を用いて、インフラを定義します。

provider "aws" {
  region = "us-west-2"
}

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"
}

④ TerraformでAWSのEC2を作成

terraform init   # 初期化
terraform plan   # 変更プランの確認
terraform apply  # EC2インスタンス作成

3. Helmの基本

3.1. Helmとは?

Helmは、Kubernetesのパッケージマネージャーです。Kubernetesのマニフェスト(YAMLファイル)をテンプレート化し、簡単に管理・デプロイできます。

3.2. Helmの特徴

  • パッケージ管理(Helm Chart)でKubernetesリソースを統一管理
  • バージョン管理ができ、ロールバック(戻し作業)も簡単
  • 環境ごとのカスタマイズ(開発環境・本番環境など)
  • CI/CDとの統合が容易

3.3. Helmの基本的な使い方

① Helm のインストール

# macOS/Linux
brew install helm

# Windows(Chocolatey)
choco install kubernetes-helm

② Helm の基本コマンド

コマンド 説明
helm repo add <リポジトリ名> <URL> Helmリポジトリの追加
helm search repo <キーワード> Helmリポジトリ内を検索
helm install <リリース名> <チャート名> KubernetesにHelm Chartをデプロイ
helm upgrade <リリース名> <チャート名> 既存のリリースを更新
helm rollback <リリース名> <リビジョン番号> 過去のバージョンに戻す
helm uninstall <リリース名> Helmリリースを削除

③ Helm Chart の作成

helm create mychart

このコマンドを実行すると、以下のようなディレクトリ構成が作成されます。

mychart/
  Chart.yaml      # チャートのメタデータ
  values.yaml     # 変数のデフォルト値
  templates/      # Kubernetesのマニフェスト(YAMLのテンプレート)

④ Helm を使って Nginx をデプロイ

helm repo add bitnami https://charts.bitnami.com/bitnami
helm install my-nginx bitnami/nginx

⑤ Helm でアプリケーションのバージョン管理

helm upgrade my-nginx bitnami/nginx --set service.type=LoadBalancer

4. TerraformとHelmの違い

項目 Terraform Helm
用途 クラウドインフラ管理(AWS, GCP, Azure) Kubernetesアプリケーション管理
言語 HCL(Terraform言語) YAML(テンプレート可能)
対象 VM, ネットワーク, ストレージ KubernetesのPod, Service, ConfigMap
バージョン管理 .tfstate による管理 Helm Chartのバージョン管理

5. まとめ

TerraformとHelmは、IaCの異なる用途で活躍するツールです。

  • Terraform は、AWSやGCPのようなクラウド環境のインフラをコードで管理
  • Helm は、Kubernetes環境におけるアプリケーションのデプロイと管理を簡単にする

どちらもMLOpsやクラウド環境の運用で重要な役割を果たします。実際に環境を作成し、TerraformとHelmを活用してインフラをコード化してみましょう!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?