本番環境向けに最適化された高セキュリティの 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: trueKubernetes ネットワーク ポリシーを有効にします。これにより、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_configとmonitoring_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: trueShielded 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 クラスタ テンプレートを構成してデプロイし、ウェブ ワークロードが実行される基盤となるインフラストラクチャを作成します。
複製してデプロイします。エンタープライズ グレードの本番環境 GKE クラスタ テンプレートをアプリケーションとして。
選択したデプロイ プロジェクトに GKE クラスタが作成されます。
コンポーネントを構成します。詳しくは以下をご覧ください。
[デプロイ] をクリックします。数分後にアプリケーションがデプロイされます。
[アプリケーションの詳細] パネルで、[出力] タブをクリックします。
アプリケーションの cluster_id を確認します。この情報は、Helm チャートをデプロイするときに使用します。
ウェブ ワークロードをデプロイする
エンタープライズ グレードの本番環境 GKE ワークロード テンプレートを使用して、作成したクラスタにウェブ ワークロードをデプロイします。ウェブ ワークロードの構成を含む Helm チャートをデプロイします。
[Google カタログ] ページの [エンタープライズ グレードの本番環境 GKE ワークロード] テンプレートで、[新しいアプリケーションを作成] をクリックします。
[名前] フィールドに、アプリケーションの一意の名前を入力します。
[GKE デプロイ ターゲット] 領域で、次の操作を行います。
[プロジェクト リスト] から、 _エンタープライズ グレードの本番環境 GKE クラスタ_ アプリケーションから GKE クラスタをデプロイしたプロジェクトを選択します。
[リージョン] リストから、GKE クラスタをデプロイしたリージョンを選択します。
[クラスタ] リストから、デプロイされた GKE クラスタを選択します。
[Namespace] リストに、ワークロードの Namespace を入力します。名前を変更していない場合は、「
default」と入力します。[アプリケーションを作成] をクリックします。
アプリケーションが作成され、構成ファイルが表示されます。
[Helm チャート] パネルで、次の操作を行います。
構成の詳細を確認します。
省略可: 独自のニーズに合わせて構成をカスタマイズします。
Helm チャートをクラスタにデプロイするには、[デプロイ] をクリックします。
詳細な手順については、アプリケーションをデプロイするをご覧ください。
数分後、Helm チャートの構成が GKE クラスタにデプロイされます。
次のステップ
- Google テンプレートを基に、このテンプレートを複製してカスタマイズする。
- アプリケーション テンプレートを設計して、独自の構成を定義する。
- アーキテクチャ フレームワークを使用して、一般的なアーキテクチャのベスト プラクティスを確認する。Google Cloud