📌

GKE Fleet

2025/02/22に公開

GKE Fleet(フリート)は、複数のGKEクラスターを一元的に管理・監視するためのGoogle Cloudの機能です。マルチクラスター管理を簡素化し、セキュリティ、ポリシー、構成管理を統一的に行うことができます。

主な特徴:

  1. 集中管理
fleet.tf
# Fleet の作成
resource "google_container_fleet" "primary" {
  project  = var.project_id
  location = "global"
  name     = "my-fleet"
}

# Fleet メンバーシップの設定
resource "google_container_fleet_membership" "primary" {
  project    = var.project_id
  location   = "global"
  fleet      = google_container_fleet.primary.name
  membership = "cluster-membership"

  membership_spec {
    cluster_ref {
      cluster = google_container_cluster.primary.id
    }
  }
}
  1. Fleet機能の有効化
fleet_features.tf
# Fleet 機能の有効化
resource "google_container_fleet_feature" "multicluster_service_discovery" {
  project = var.project_id
  name    = "multiclusterservicediscovery"
  fleet   = google_container_fleet.primary.name
  spec {
    multiclusterservicediscovery {
      # 設定オプション
    }
  }
}

resource "google_container_fleet_feature" "mesh" {
  project = var.project_id
  name    = "mesh"
  fleet   = google_container_fleet.primary.name
  spec {
    mesh {
      management = "MANAGEMENT_AUTOMATIC"
    }
  }
}

主な機能:

  1. セキュリティ管理
security_policy.tf
resource "google_container_fleet_feature" "security_policy" {
  project = var.project_id
  name    = "securitypostureconfig"
  fleet   = google_container_fleet.primary.name

  spec {
    securitypostureconfig {
      security_posture = "BASIC"
      vulnerability_mode = "VULNERABILITY_BASIC"
    }
  }
}
  1. Config Management
config_management.tf
resource "google_container_fleet_feature" "config_management" {
  project = var.project_id
  name    = "configmanagement"
  fleet   = google_container_fleet.primary.name

  spec {
    configmanagement {
      config_sync {
        source_format = "hierarchy"
        git {
          sync_repo   = "https://github.com/org/repo"
          sync_branch = "main"
          policy_dir  = "/policies"
          secret_type = "none"
        }
      }
    }
  }
}
  1. マルチクラスターIngress
multi_cluster_ingress.tf
resource "google_container_fleet_feature" "mci" {
  project = var.project_id
  name    = "multiclusteringress"
  fleet   = google_container_fleet.primary.name

  spec {
    multiclusteringress {
      config_membership = google_container_fleet_membership.primary.name
    }
  }
}

利点:

  1. 統一管理
  • 複数クラスターの一元管理
  • 共通ポリシーの適用
  • 構成の標準化
  1. セキュリティ強化
  • 集中的なセキュリティポリシー
  • 脆弱性スキャン
  • コンプライアンス管理
  1. 運用効率化
  • 監視の一元化
  • 構成管理の自動化
  • トラブルシューティングの効率化

使用例:

complete_fleet_example.tf
# Fleet の作成
resource "google_container_fleet" "primary" {
  project  = var.project_id
  location = "global"
  name     = "my-fleet"
}

# 複数クラスターのメンバーシップ
resource "google_container_fleet_membership" "clusters" {
  for_each = {
    cluster1 = google_container_cluster.cluster1.id
    cluster2 = google_container_cluster.cluster2.id
    cluster3 = google_container_cluster.cluster3.id
  }

  project    = var.project_id
  location   = "global"
  fleet      = google_container_fleet.primary.name
  membership = "membership-${each.key}"

  membership_spec {
    cluster_ref {
      cluster = each.value
    }
  }
}

# 機能の有効化
resource "google_container_fleet_feature" "features" {
  for_each = toset([
    "multiclusteringress",
    "multiclusterservicediscovery",
    "mesh",
    "configmanagement"
  ])

  project = var.project_id
  name    = each.key
  fleet   = google_container_fleet.primary.name

  spec {
    dynamic "multiclusteringress" {
      for_each = each.key == "multiclusteringress" ? [1] : []
      content {
        config_membership = google_container_fleet_membership.clusters["cluster1"].name
      }
    }
    # 他の機能の設定...
  }
}

使用シナリオ:

  1. マルチリージョン展開
  • グローバルな負荷分散
  • 地理的冗長性
  • ローカライゼーション
  1. 環境分離
  • 開発/ステージング/本番環境の管理
  • チーム別のクラスター管理
  • プロジェクト間の標準化
  1. ハイブリッド/マルチクラウド
  • オンプレミスとクラウドの統合
  • 複数クラウドプロバイダーの管理
  • 移行戦略の実装

GKE Fleetは、大規模なKubernetesデプロイメントを管理する組織にとって特に有用なツールです。

Discussion