エンタープライズ グレードのプロダクション GKE クラスタとワークロード

本番環境向けに最適化された高セキュリティの Google Kubernetes Engine(GKE)クラスタとワークロードを作成します。このガイドでは、本番環境のウェブ アプリケーションのデプロイに使用できる次のテンプレートについて説明します。

  • エンタープライズ グレードの本番環境 GKE クラスタ テンプレート: 本番環境アプリケーションに必要な 基盤となるインフラストラクチャを作成します。このテンプレートは、整合性、高度なネットワーキング、障害復旧に最適化された安全なプライベート GKE クラスタを設定します。

  • エンタープライズ グレードの本番環境 GKE ワークロードプレビュー版): 高可用性のステートレス ウェブ アプリケーションの構成を含む Helm チャートをデプロイします。このワークロードは、セキュリティ、信頼性、サービスの継続性を強化するように構成されています。

たとえば、クラスタ テンプレートとワークロード テンプレートをデプロイして、次のようなビジネスニーズに対応できます。

ビジネスニーズ 実装
グローバル取引プラットフォーム 金融機関は、高頻度取引を処理するために、低レイテンシでグローバルに分散された取引プラットフォームを必要としています。このプラットフォームは、最大稼働時間、厳格なセキュリティ、監査可能なコンプライアンスを備えている必要があります。 高度なネットワーキングを備えたグローバルに分散されたマルチリージョン クラスタを使用して、超低レイテンシと復元力を確保します。データ保護と規制遵守のために、強力なネットワーク ポリシー、プライベート クラスタ構成、高度なセキュリティ機能を実装します。
マルチテナント SaaS プラットフォーム Software-as-a-Service(SaaS)プロバイダは、数千のエンタープライズ顧客向けに、スケーラビリティが高く、安全で、費用対効果の高いプラットフォームをホストする必要があります。これには、厳格なテナント分離、動的なリソース割り当て、ダウンタイムなしでの新機能の継続的な提供が必要です。 堅牢な Namespace 分離、ネットワーク セグメンテーション、割り当て管理を備えたマルチテナント クラスタを使用して、テナント間の公平なリソース共有とセキュリティを確保します。
クリティカルなオペレーションのリアルタイム推論 組織は、ミッション クリティカルな不正検出アプリケーションでリアルタイム推論を行うために AI/ML モデルをデプロイする必要があります。これには、非常に低いレイテンシ、高いスループット、完全な監査可能性を備えた新しいモデル バージョンに迅速に適応できることが求められます。 AI 推論用の専用ノードプールを使用してクラスタを構成します。低レイテンシのネットワーク接続を確保し、推論エンドポイントへの効率的なトラフィック ルーティングを有効にします。

アーキテクチャ

次の図は、テンプレートのコンポーネントと接続を示しています。

デザイン キャンバスでノードプールに接続されたクラスタ

このテンプレートのコンポーネント構成は次のとおりです。

  • GKE Standard クラスタ: ワークロードが実行されるクラスタ。

    次の表に、このテンプレートのクラスタ構成を示します。

    構成 目的
    location: us-central1 地理的な境界内でデータの局所性とコンプライアンスを確保します。リージョン内のマルチゾーン構成により、高可用性が実現します。
    network: projects/PROJECT_ID/global/networks/enterprise-vpc 通常はネットワーク セグメンテーションと接続用に設計された既存の VPC を指定します。
    subnetwork: projects/PROJECT_ID/regions/us-central1/subnetworks/gke-subnet 通常は適切な IP 割り当てとネットワーク分離で設計された VPC 内のクラスタのサブネットワークを指定します。
    master_authorized_networks_config: [{"cidr_block": "10.0.0.0/8", "display_name": "Internal Network"}] コントロール プレーン エンドポイントへのアクセスを、特定の信頼できる IP CIDR ブロックに制限します。これにより、クラスタ管理 API への不正アクセスを防ぐことができます。
    private_cluster_config.enable_private_endpoint: true コントロール プレーンには、VPC 内の内部 IP アドレスまたは承認済みネットワークを使用してのみアクセスできるようにします。これにより、公開を削除してセキュリティを強化します。
    private_cluster_config.enable_private_nodes: true すべてのワーカー ノードにプライベート IP アドレスのみを割り当て、パブリック インターネットから隔離して攻撃対象領域を縮小します。
    release_channel: STABLE 予測可能で十分にテストされた更新により、本番環境の安定性が維持されます。
    network_policy.enabled: true Kubernetes ネットワーク ポリシーを有効にします。これにより、Pod 間の通信を制御して、セキュリティとマイクロセグメンテーションを強化できます。
    binary_authorization: true デプロイ ポリシーを適用し、信頼できる署名付きコンテナ イメージのみをクラスタで実行できるようにします。
    database_encryption: {"state": "ENCRYPTED_WITH_CMEK", "key_name": "projects/PROJECT_ID/locations/us-central1/keyRings/gke-keyring/cryptoKeys/gke-etcd-key"} 顧客管理の暗号鍵(CMEK)はデータベースを暗号化し、データ セキュリティを確保してコンプライアンス要件を満たします。
    workload_identity_config: {"enabled": true} Kubernetes サービス アカウントが Google Cloud サービス アカウントとして機能できるようにします。これにより、IAM を使用してリソースへのきめ細かい安全なアクセスが可能になります。
    logging_configmonitoring_config{"component_config": {"enable_components": ["SYSTEM_COMPONENTS", "WORKLOADS"]}} に設定されています。 Cloud Logging と Cloud Monitoring と統合し、本番環境ワークロードの包括的なオブザーバビリティ、監査、アラートを確保します。
    maintenance_policy: {"daily_maintenance_window": {"start_time": "03:00"}, "recurring_window": {"start_time": "00:00", "end_time": "04:00", "recurrence": "FREQ=WEEKLY;BYDAY=SAT,SUN"}} メンテナンスの時間枠は、GKE が自動アップグレードを実行するタイミングを制御し、重要なアプリケーションの中断を最小限に抑えます。
    enable_shielded_nodes: true Shielded GKE Nodes は、セキュアブートや整合性モニタリングなどのセキュリティ機能を提供し、ルートキットやブートレベルのマルウェアから保護します。
    gateway_api_config: {"channel": "CHANNEL_STANDARD"} エンタープライズ アプリケーションの複雑なルーティング、ロード バランシング、API 管理のための高度なトラフィック管理。
    security_posture_config: {"mode": "ENTERPRISE", "vulnerability_mode": "VULNERABILITY_ENTERPRISE"} 脆弱性スキャンやポリシー適用など、高度なセキュリティ ポスチャー管理。
  • GKE ノードプール: アプリケーションのコンテナを実行するワーカー ノードのグループ。

    次の表に、このテンプレートのノードプール構成を示します。

    構成 目的
    location: us-central1 このノードプールが作成されるリージョンを指定します。クラスタのロケーションと同様に、ノードプール リソースが単一の地理的領域に配置されます。
    autoscaling: {"max_node_count":3, "min_node_count":1} このノードプールのクラスタ オートスケーラーを構成します。 ノードプールに常に 1 つ以上のノードが維持されるようにし、上限を 3 つのノードに設定して費用とリソース消費を制御します。
    node_config: {"machine_type":"e2-medium", "oauth_scopes":["https://www.googleapis.com/auth/cloud-platform"], "shielded_instance_config":{"enable_secure_boot":true}} このプール内のノードの構成をグループ化します。マシンタイプは、汎用ワークロードに適した CPU とメモリのバランスです。サービス アカウントに付与されるアクセス権を定義します。Shielded VM インスタンスのセキュアブートを有効にし、ブートレベルのマルウェアから保護します。

Helm チャートの構成

次の表に、GKE で基本的なウェブ アプリケーションをデプロイしてスケーリングするためにカスタマイズされた Helm チャートの構成を示します。

構成 目的
replicaCount: 3 3 つの初期レプリカを作成して、アプリケーションの初期レベルの冗長性と基本的な高可用性を確立します。
image.repository: gcr.io/google-samples/hello-app プレースホルダとして基本的なウェブサーバー Docker イメージを使用します。
resources.requests: {"cpu": "100m", "memory": "128Mi"} 各 Pod に予約される CPU とメモリの最小量を指定し、利用可能なリソースと効率的なスケジューリングを確保します。
resources.limits: {"cpu": "250m", "memory": "256Mi"} 各 Pod に予約される CPU とメモリの最大量を指定し、単一の Pod によるリソースの独占を防ぎます。
networkPolicy.enabled: true アプリケーションの Kubernetes ネットワーク ポリシーを有効にします。これにより、Pod 間や他のネットワーク エンドポイントとの通信方法のルールを定義し、ネットワークのセグメンテーションと分離を強制できます。
service: {"type": "ClusterIP", "port": 80} 標準の HTTP ポートでクラスタ内の内部アクセス用にサービスを構成します。
pdb: {"enabled": true, "minAvailable": 1} Pod Disruption Budget を有効にして、自発的な中断中に少なくとも 1 つのレプリカが使用可能な状態を維持し、高可用性を維持します。

ウェブ アプリケーションを作成する

ウェブ アプリケーションをデプロイするには、 エンタープライズ グレードの本番環境 GKE クラスタとワークロード テンプレートを使用します。

ウェブ インフラストラクチャをデプロイする

エンタープライズ グレードの本番環境 GKE クラスタ テンプレートを構成してデプロイし、ウェブ ワークロードが実行される基盤となるインフラストラクチャを作成します。

  1. 複製してデプロイします。エンタープライズ グレードの本番環境 GKE クラスタ テンプレートをアプリケーションとして。

    選択したデプロイ プロジェクトに GKE クラスタが作成されます。

  2. コンポーネントを構成します。詳しくは以下をご覧ください。

  3. [デプロイ] をクリックします。数分後にアプリケーションがデプロイされます。

  4. [アプリケーションの詳細] パネルで、[出力] タブをクリックします。

  5. アプリケーションの cluster_id を確認します。この情報は、Helm チャートをデプロイするときに使用します。

ウェブ ワークロードをデプロイする

エンタープライズ グレードの本番環境 GKE ワークロード テンプレートを使用して、作成したクラスタにウェブ ワークロードをデプロイします。ウェブ ワークロードの構成を含む Helm チャートをデプロイします。

  1. [Google カタログ] ページの [エンタープライズ グレードの本番環境 GKE ワークロード] テンプレートで、[新しいアプリケーションを作成] をクリックします。

  2. [名前] フィールドに、アプリケーションの一意の名前を入力します。

  3. [GKE デプロイ ターゲット] 領域で、次の操作を行います。

    1. [プロジェクト リスト] から、 _エンタープライズ グレードの本番環境 GKE クラスタ_ アプリケーションから GKE クラスタをデプロイしたプロジェクトを選択します。

    2. [リージョン] リストから、GKE クラスタをデプロイしたリージョンを選択します。

    3. [クラスタ] リストから、デプロイされた GKE クラスタを選択します。

    4. [Namespace] リストに、ワークロードの Namespace を入力します。名前を変更していない場合は、「default」と入力します。

    5. [アプリケーションを作成] をクリックします。

    アプリケーションが作成され、構成ファイルが表示されます。

  4. [Helm チャート] パネルで、次の操作を行います。

    1. 構成の詳細を確認します。

    2. 省略可: 独自のニーズに合わせて構成をカスタマイズします。

    3. Helm チャートをクラスタにデプロイするには、[デプロイ] をクリックします。

      詳細な手順については、アプリケーションをデプロイするをご覧ください。

    数分後、Helm チャートの構成が GKE クラスタにデプロイされます。

次のステップ