创建针对生产环境优化的高安全性 Google Kubernetes Engine (GKE) 集群和工作负载。本指南介绍了以下模板,您可以使用这些模板部署生产 Web 应用:
企业级生产 GKE 集群模板:创建 生产应用所需的基础架构。此模板用于设置经过优化且安全私密的 GKE 集群,以确保完整性、高级网络功能和灾难恢复能力。
企业级生产 GKE 工作负载 (预览版):部署 Helm 图表,其中包含高可用性 无状态 Web 应用的配置。该工作负载经过配置,可增强安全性、可靠性和服务连续性。
例如,您可以部署集群和工作负载模板来满足以下业务需求:
| 示例 | 业务需求 | 实现 |
|---|---|---|
| 全球交易平台 | 金融机构需要一个低延迟、全球分布式交易平台,该平台具有最长的正常运行时间、严格的安全性以及可审核的合规性,以处理高频交易。 | 使用具有高级网络功能的全球分布式多区域集群,以确保超低延迟和弹性。实施强大的网络政策、专用集群配置和高级安全功能,以实现数据保护和监管合规。 |
| 多租户 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_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: 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 图表配置
下表列出了 Helm 图表配置,这些配置已针对在 GKE 上部署和伸缩基本 Web 应用进行了自定义。
| 配置 | 用途 |
|---|---|
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 如何相互通信以及与其他网络端点通信的规则,从而强制执行网络分段和隔离。 |
service: {"type": "ClusterIP", "port": 80} |
在标准 HTTP 端口上配置集群内部访问的服务。 |
pdb: {"enabled": true, "minAvailable": 1} |
启用 Pod 中断预算,以确保在自愿中断期间至少有一个副本保持可用,从而保持高可用性。 |
创建 Web 应用
使用 企业级生产 GKE 集群和工作负载 模板部署 Web 应用。
部署 Web 基础架构
配置并部署 企业级生产 GKE 集群 模板,以创建运行 Web 工作负载的基础架构。
复制并部署 企业级生产 GKE 集群 模板作为应用。
系统会在您选择的部署项目中创建 GKE 集群。
配置组件。详情请参阅以下内容:
点击部署 。应用会在几分钟后部署完毕。
在应用详情 面板中,点击输出 标签页。
确定应用的 cluster_id 。部署 Helm 图表时,您将使用此信息。
部署 Web 工作负载
使用 企业级生产 GKE 工作负载 模板将 Web 工作负载部署到您创建的集群中。您将部署包含 Web 工作负载配置的 Helm 图表。
在 Google 目录 页面上,点击 Enterprise-grade production GKE workload (企业级生产 GKE 工作负载)模板上的 Create new application (创建新应用)。
在名称 字段中,输入应用的唯一名称。
在 GKE Deployment Target (GKE 部署目标)区域中,执行以下操作:
从 Project list(项目列表)中,选择您从中部署 GKE 集群的项目(来自 企业级生产 GKE 集群 应用)。
从区域 列表中,选择您部署 GKE 集群的区域。
从集群 列表中,选择已部署的 GKE 集群。
从命名空间 列表中,输入工作负载的命名空间。如果您未更改名称,请输入
default。点击创建应用 。
系统会创建应用并显示配置文件。
在 Helm chart (Helm 图表)面板中,执行以下操作:
几分钟后,Helm 图表配置会部署到您的 GKE 集群。
后续步骤
- 通过基于 Google 模板进行构建,复制并自定义此模板。
- 通过设计应用模板来定义您自己的配置。
- 使用Google Cloud 架构框架确定一般架构最佳实践。