企业级生产 GKE 集群和工作负载

创建高度安全的 Google Kubernetes Engine (GKE) 集群和针对生产环境优化的工作负载。本指南介绍了以下模板,您可以使用这些模板来部署生产 Web 应用:

  • 企业级生产 GKE 集群模板:创建生产应用所需的基础架构。此模板可设置一个安全、专用的 GKE 集群,该集群在完整性、高级网络和灾难恢复方面进行了优化。

  • 企业级生产 GKE 工作负载预览版):部署包含高可用性无状态 Web 应用配置的 Helm 图表。工作负载已配置为增强安全性、可靠性和服务连续性。

例如,您可以部署集群和工作负载模板来满足以下业务需求:

示例 业务需求 实现
全球交易平台 某金融机构需要一个低延迟、全球分布的交易平台,该平台具有最长的正常运行时间、严格的安全性,并且可进行合规性审计,以处理高频交易。 使用具有高级网络功能的多区域集群(在全球范围内分布),确保超低延迟和弹性。实施严格的网络政策、专用集群配置和高级安全功能,以实现数据保护和监管合规性。
多租户 SaaS 平台 某软件即服务 (SaaS) 提供商需要为数千家企业客户托管一个高度可伸缩、安全且经济高效的平台,这需要严格的租户隔离、动态资源分配以及持续交付新功能(无停机时间)。 使用具有强大的命名空间隔离、网络分段和配额管理功能的多租户集群,确保租户之间的资源公平共享和安全性。
针对关键运营的实时推理 某组织需要在任务关键型欺诈检测应用中部署 AI/ML 模型以进行实时推理,这要求极低的延迟、高吞吐量,并且能够快速适应新模型版本,同时实现完全可审计性。 配置具有专用节点池的集群,以用于 AI 推理。确保低延迟的网络连接,并实现高效的流量路由,以到达推理端点。

架构

下图显示了模板中的组件和连接:

连接到设计画布中节点池的集群

以下内容介绍了此模板中的组件配置:

  • GKE Standard 集群:运行工作负载的集群。

    下表介绍了此模板中的集群配置:

    配置 用途
    location: us-central1 确保地理边界内的数据本地化和合规性。区域内的多可用区设置可提供高可用性。
    network: projects/PROJECT_ID/global/networks/enterprise-vpc 指定预先存在的 VPC,该 VPC 通常专为网络细分和连接而设计。
    subnetwork: projects/PROJECT_ID/regions/us-central1/subnetworks/gke-subnet 指定 VPC 中集群的子网,该子网通常设计为具有适当的 IP 分配和网络隔离。
    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 到 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 安全强化型 GKE 节点提供安全启动和完整性监控等安全功能,以防范 rootkit 和启动级恶意软件。
    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} 为此节点池配置集群自动扩缩器。确保节点池始终至少包含一个节点,并将上限设置为三个节点,以控制费用和资源消耗。
    node_config: {"machine_type":"e2-medium", "oauth_scopes":["https://www.googleapis.com/auth/cloud-platform"], "shielded_instance_config":{"enable_secure_boot":true}} 相应池中节点的组配置。该机器类型在 CPU 和内存之间实现了平衡,适合通用型工作负载。定义授予服务账号的访问权限。为安全强化型虚拟机实例启用安全启动,有助于防范启动级恶意软件。

Helm 图表配置

下表列出了已针对在 GKE 上部署和伸缩基本 Web 应用进行自定义的 Helm 图表配置。

配置 用途
replicaCount: 3 创建三个初始副本,以建立初始冗余级别并为应用提供基本的高可用性。
image.repository: gcr.io/google-samples/hello-app 使用基本 Web 服务器 Docker 映像作为占位符。
resources.requests: {"cpu": "100m", "memory": "128Mi"} 指定为每个 pod 预留的 CPU 和内存的最低量,确保资源可用并实现高效调度。
resources.limits: {"cpu": "250m", "memory": "256Mi"} 指定为每个 pod 预留的最大 CPU 和内存量,以防止单个 pod 垄断资源。
networkPolicy.enabled: true 为应用启用 Kubernetes 网络政策,以便您定义 pod 之间以及 pod 与其他网络端点之间的通信规则,从而强制执行网络分段和隔离。
service: {"type": "ClusterIP", "port": 80} 配置服务,以便在标准 HTTP 端口上进行集群内部访问。
pdb: {"enabled": true, "minAvailable": 1} 启用 Pod 中断预算,以确保在主动中断期间至少有一个副本保持可用,从而维持高可用性。

创建 Web 应用

使用企业级生产 GKE 集群和工作负载模板来部署 Web 应用。

部署 Web 基础架构

配置并部署企业级生产 GKE 集群模板,以创建运行 Web 工作负载的基础架构。

  1. 复制并部署企业级生产 GKE 集群模板作为应用。

    系统会在您选择的部署项目中创建 GKE 集群。

  2. 配置组件。详情请参阅以下内容:

  3. 点击部署。应用会在几分钟后部署。

  4. 应用详情面板中,点击输出标签页。

  5. 确定应用的 cluster_id。您将在部署 Helm 图表时使用此信息。

部署 Web 工作负载

使用企业级生产 GKE 工作负载模板将 Web 工作负载部署到您创建的集群中。您将部署一个包含 Web 工作负载配置的 Helm 图表。

  1. Google Catalog 页面上,点击 Enterprise-grade production GKE workload(企业级生产 GKE 工作负载)模板中的 Create new application(创建新应用)。

  2. 名称字段中,为应用输入一个唯一名称。

  3. GKE 部署目标区域,执行以下操作:

    1. 项目列表中,选择您在企业级生产 GKE 集群应用中部署 GKE 集群的项目。

    2. 区域列表中,选择您部署 GKE 集群的区域。

    3. 集群列表中选择已部署的 GKE 集群。

    4. 命名空间列表中,输入工作负载的命名空间。如果您未更改名称,请输入 default

    5. 点击创建应用

    系统会创建应用并显示配置文件。

  4. Helm 图表面板中,执行以下操作:

    1. 检查配置详情

    2. 可选:自定义配置以满足您的独特需求。

    3. 如需将 Helm 图表部署到集群,请点击部署

      如需了解详细步骤,请参阅部署应用

    几分钟后,Helm 图表配置会部署到您的 GKE 集群。

后续步骤