ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Encore Cloud 的 GCP 基础设施深度解析:从自动配置到托管服务的完整指南

Encore Cloud 的 GCP 基础设施深度解析:从自动配置到托管服务的完整指南 Encore Cloud 的 GCP 基础设施深度解析从自动配置到托管服务的完整指南【免费下载链接】encoreThe infrastructure platform for the intelligence era项目地址: https://gitcode.com/GitHub_Trending/encor/encore导读本文基于 Encore 开源仓库中的 GCP Infrastructure 文档系统讲解 Encore Cloud 如何在 Google Cloud PlatformGCP上自动供给并托管你的应用基础设施——包括按环境隔离的专用 GCP Project、私有 VPC 网络、容器仓库、密钥管理以及 Cloud Run / GKE 两大计算平台和 Cloud SQL、Pub/Sub、Cloud Storage、Memorystore 等托管服务。读完本文你将理解 Encore Cloud 在 GCP 上的基础设施拓扑、最小权限安全模型与托管服务的默认配置并能在 Encore 声明式基础设施框架下结合 基础设施配置 与基础设施概览 灵活掌控自己的云资源。一、Encore Cloud 的 GCP 供给模型声明式基础设施云无关代码Encore 的核心设计理念是开发者用声明式方式描述应用需要的基础设施数据库、Pub/Sub 主题、对象存储桶、缓存、密钥而无需在代码中指定任何云厂商的专有配置。这一点在 configuration.md 中有明确说明与传统 IaC 工具不同使用 Encore 的声明式基础设施框架时你不需要在代码中定义任何云服务细节。这让你的代码保持云无关、可移植并且可以针对每个环境按成本、性能等优先级部署到不同的基础设施上。在此基础上Encore Cloud 通过调用云厂商 API 来自动供给和管理基础设施。当你在 GCP 上创建环境时可以选择计算硬件GCP Cloud Run 或 Kubernetes/GKE、数据库GCP Cloud SQL、Neon Serverless Postgres 等等选项创建之后仍可随时通过 Encore Cloud 控制台或直接在云厂商控制台中调整配置。从运行时实现看Encore 的运行时通过统一的基础设施配置结构解析应用所需资源该结构覆盖了 SQL 服务器SQLServers、RedisRedis、Pub/SubPubSub、密钥Secrets、对象存储ObjectStorage等全部资源类型。其中对象存储节点明确支持gcs与s3两种后端例如type ObjectStorage struct { Type string json:type GCS *GCS json:gcs,omitempty S3 *S3 json:s3,omitempty } func (o *ObjectStorage) GetBuckets() map[string]*Bucket { switch o.Type { case gcs: return o.GCS.Buckets case s3: // ... } }这正印证了代码云无关、部署时按环境选择云厂商的设计同一份应用代码在 GCP 上运行时对象存储落到 GCS在 AWS 上则落到 S3而应用逻辑完全不用改动。二、核心基础设施组件2.1 网络架构每环境一个专用 GCP Project 私有 VPCEncore Cloud 为每个环境供给一个独立的 GCP Project这是其安全模型的第一道防线项目级隔离不同环境开发、预览、生产之间彼此独立杜绝跨环境的资源访问并允许对每个项目的资源和权限做细粒度控制私有网络部署项目内所有资源都部署在私有网络配置中资源之间只能通过 VPC 内部通信攻击面收敛公共互联网无法直接访问任何资源流量只能通过指定的入口点ingress进入。这一每环境独立 Project的模型与 gcp-static-ip.md 中Encore Cloud 为每个环境供给专用的 GCP Project 和 VPC 网络的描述完全一致。它也解释了为什么在 GCP 控制台上能找到每个环境各自独立的项目。如果你需要自定义网络的更细粒度行为例如配置自定义域、网络策略等可以参考 configure-network.md 以及 security.md 了解网络与安全加固的最佳实践。2.2 容器管理GCR IAM 最小权限 自动漏洞扫描Encore Cloud 为每个应用供给一个 [Google Container Registry (GCR)] 来存放应用 Docker 镜像并围绕它建立三层安全机制IAM 访问控制注册表实现全面的访问控制只有被授权的用户和服务才能访问、管理容器镜像通过集成 GCP IAM每个服务只被授予拉取其自身镜像所需的最低权限自动漏洞扫描新镜像推送到注册表后GCR 会自动分析操作系统与应用依赖中的已知安全漏洞在部署管线的早期阶段发现问题帮助维持安全的应用环境最小权限服务账户每个部署都有独立的专用服务账户详见下文计算平台部分该账户拥有从 GCR 拉取镜像等运行所需的最小权限。2.3 密钥管理Secret Manager 自动注入与全程审计Encore Cloud 集成 GCP Secret Manager 来管理敏感数据自动注入所有密钥自动以环境变量形式注入到服务中无需手工配置双重加密密钥在存储时和传输过程中都使用行业标准加密保护最小权限访问每个服务只能访问自己需要的特定密钥全程审计所有密钥访问尝试都会被记录和审计。从运行时源码可以确认这一集成的实际工作方式。Go 运行时的 GCP Secret Manager 提供者实现在 gcpsm.go其提供者类型名为gcp_secret_manager配置结构要求project_id字段指定拥有密钥的 GCP 项目const TypeName gcp_secret_manager type Config struct { // ProjectID is the GCP project that owns the secrets. Required. ProjectID string json:project_id }加载密钥时运行时调用 Secret Manager 的AccessSecretVersionAPI 读取指定版本默认latest并将密钥值交给应用func (p *gcpProvider) Load(ctx context.Context, ref provider.Ref) (string, error) { // ... resp, err : p.client.AccessSecretVersion(ctx, secretmanagerpb.AccessSecretVersionRequest{Name: name}) if err ! nil { return , fmt.Errorf(gcpsm: access %s: %w, name, err) } return string(resp.Payload.Data), nil }值得注意的细节是resourceName的构造逻辑Ref.ID既可以是裸密钥名也可以是projects/.../secrets/...的完整资源路径未指定版本时默认使用latest。这从源码层面印证了服务只访问自己声明的特定密钥的设计。三、计算选项Cloud Run 与 GKEEncore Cloud 根据你的选择供给以下两种计算平台之一来运行应用容器。3.1 Google Cloud Run使用 Cloud Run 时Encore Cloud 会自动配置服务部署Service Deployments每个服务配置优化的容器设置与健康检查配置确保可靠运行环境变量自动从 Secret Manager 注入安全地提供配置值集成服务发现实现服务之间的无缝通信。Cloud Run 服务Cloud Run Services采用零停机部署策略应用在更新期间持续可用每个服务集成负载均衡器在实例间高效分发流量配置健康检查宽限期grace period让容器有充足时间启动后再接收流量避免健康实例被过早终止。IAM 配置每个部署获得独立的专用服务账户保证隔离与安全服务账户自动配置运行所需的最小权限包括从 GCR 拉取容器镜像、向 Cloud Logging 写入应用日志、与分配的 GCP 资源Cloud Storage 桶、Pub/Sub 主题等交互以及从 Secret Manager 读取密钥。从运行时源码看Cloud Run 上的容器元数据收集实现在 cloud_run_collector.go。它通过读取 Cloud Run 注入的环境变量来识别服务身份K_SERVICE服务名ServiceIDK_REVISION版本名RevisionID去掉service-前缀K_PODKubernetes Pod 名若该变量不存在则说明运行在 Cloud Run 上此时从 GCE metadata server 获取 InstanceID取后 8 位该文件还注释了一个工程细节在 GKE 上 InstanceID 实际对应的是节点Node如果多个副本运行在同一节点上会产生碰撞因此 GKE 场景下用 Pod 名的最后一段作为实例 ID。这个实现同时兼容 Cloud Run 与 GKE 两种平台恰好对应了文档中Encore Cloud 提供 Cloud Run 与 GKE 两种计算选择的说明。3.2 Google Kubernetes Engine (GKE)使用 GKE 时Encore Cloud 自动配置以下内容集群搭建Cluster Setup供给GKE Autopilot 集群或标准 GKE 集群 托管节点池两者都配置在私有子网中运行Autopilot 模式下GKE 自动管理底层基础设施标准集群模式下Encore Cloud 根据工作负载需求配置并维护优化的节点池节点位于私有子网无法从互联网直接访问所有流量经负载均衡器进入。Kubernetes 资源Kubernetes Resources每个 Encore 服务部署为 KubernetesDeployment保证可靠运行与扩缩容能力Deployment 由配置了适当 IAM 角色的服务账户支撑以安全访问 GCP 资源敏感配置数据以Kubernetes Secrets存储并自动挂载到对应 Pod供给 KubernetesService 与 Ingress资源与 Google Cloud Load Balancer 集成提供安全的外部访问入口。负载均衡集成Load Balancer Integration与 Google Cloud Load Balancer 集成跨服务分发流量并处理 SSL/TLS 终止所有流量使用自动供给和自动续期的托管 SSL/TLS 证书加密无需手工管理证书端点始终以 HTTPS 安全访问。监控配置Monitoring Setup配置指标采集与日志管理自动从每个 Pod 采集容器指标并导出到监控服务提供资源使用、性能和应用行为的详细洞察所有容器日志无缝转发到 Cloud Logging支持集中式日志聚合与分析。服务账户Service Accounts应用中的每个服务拥有独立专用服务账户实现服务间细粒度的访问控制与隔离IAM 角色基于应用声明的资源用量动态配置例如服务需要访问 GCS 桶时自动授予该存储操作所需的最小权限需要发布/订阅 Pub/Sub 主题、连接数据库或获取密钥时自动配置对应的 IAM 角色整套机制保证每个服务遵循最小权限原则principle of least privilege将任何安全入侵可能造成的影响降至最低。这些配置会随着应用开发持续被 Encore Cloud 自动维护和更新使基础设施始终与应用的演进保持一致。四、托管服务4.1 数据库Cloud SQL for PostgreSQLEncore Cloud 为 PostgreSQL 供给 GCP Cloud SQL 实例版本与规格运行最新版 PostgreSQL实例以最小的可用配置起步以优化成本同时保留随应用需求增长自动扩容的能力数据保护启用每日自动备份并保留 7 天支持时间点恢复point-in-time recovery可在保留期内将数据库恢复到任意时刻安全隔离数据库放置在私有子网中隔离于公共互联网严格的访问控制确保只有被授权的服务和用户能连接实例。如果你的数据库由外部托管例如想复用现有的 Cloud SQL 实例可以参考 import-cloud-sql.mdEncore 支持直接导入并连接现有的 Cloud SQL 数据库。此外Encore Cloud 也支持使用 Neon Serverless Postgres 作为替代数据库方案见 configuration.md 与 neon.md。4.2 消息队列Pub/SubEncore Cloud 使用 GCP Pub/Sub 构建消息系统围绕可靠性与安全设计死信主题dead-letter topics自动配置死信主题捕获并保留失败消息供后续分析与调试精确 IAM 授权每个服务获得发布与消费消息的精确 IAM 权限在组件间保持安全通信的同时遵循最小权限原则全托管Encore Cloud 完全管理所有订阅与主题处理复杂的搭建与持续的维护工作让你专注应用逻辑而非基础设施管理。从源码看Rust 运行时实现了完整的 GCP Pub/Sub 客户端支持包括 topic.rs、sub.rs 和基于推送模式的 push_sub.rsGo 运行时在 runtimes/go/pubsub/internal/gcp/ 下同样维护了 GCP 客户端与推送处理器实现包括clients.go、topic.go、push_handler.go。若需要接入现有 Pub/Sub 主题可参考 import-pubsub-topic.md。4.3 对象存储Cloud Storage Cloud CDNEncore Cloud 使用 Google Cloud Storage 满足对象存储需求自动供给应用声明存储桶后Encore Cloud 自动在 GCP 中供给唯一命名的存储桶精确权限每个与存储交互的服务都配置精确的作用域权限只允许访问其需要的桶和操作CDN 加速对公共桶Encore Cloud 集成 Cloud CDN 优化内容分发每个桶通过唯一 URL 访问。Rust 运行时的 GCS 实现位于 runtimes/core/src/objects/gcs/mod.rs它构建了一个惰性初始化的LazyGCSClient在后台异步初始化 GCS 客户端支持自定义endpoint便于本地仿真或自定义网关并支持匿名访问模式——这为本地开发与测试场景提供了便利。若希望复用现有 GCS 存储桶可参考 import-gcs-bucket.md。4.4 缓存Memorystore for RedisEncore Cloud 使用 GCP Memorystore for Redis 提供高性能缓存成本优化起步每个 Redis 实例从最小可用配置起步保留随缓存需求增长自动扩容的能力高可用实例配置为高可用部署即使基础设施更新或可用区故障缓存依然可用、性能不降级认证安全通过 Redis 认证保护缓存访问凭证由 Encore Cloud 自动管理并定期轮换维持强安全态势。4.5 定时任务Cron JobsEncore Cloud 提供简洁而安全的定时任务执行方案加密签名认证每个 cron 任务通过加密签名cryptographically signed的认证 API 请求触发确保只有合法、已验证的请求才能触发定时任务来源验证系统包含健壮的来源验证确认所有请求都来自 Encore Cloud 可信的 cron 基础设施零额外组件该实现无需额外的基础设施组件兼具成本效益与易维护性同时为生产工作负载提供所需的可靠性与安全性。五、环境创建与持续配置根据 configuration.md当你创建新环境时可以决定以下选项使用哪个云厂商AWS 或 GCP使用哪种计算硬件如 AWS Fargate、GCP Cloud Run、Kubernetes若使用 Kubernetes创建新集群还是使用现有集群使用哪个 Kubernetes 提供方GKE 或 EKS使用哪个数据库如 AWS RDS、GCP Cloud SQL、Neon Serverless Postgres进程分配策略process allocation将全部服务部署在单个进程中还是每服务一个进程——这可在不改代码的前提下调整。前者通常推荐用于降低成本并最小化服务间响应时间后者可提升可扩展性并缩小故障爆炸半径通常仅推荐用于生产环境环境创建后你仍可通过 Encore Cloud 控制台继续配置基础设施提供受控的工作流、基于角色的访问控制与可审计的变更历史也可以直接在云厂商控制台中手工修改——Encore Cloud 采用PATCH 式更新、避免全量同步、漂移感知更新的策略只做必要的最小修改且不会覆盖你在控制台的手工变更详见 configuration.md。这也正是 Encore Cloud 能与其他 IaC 工具如 Terraform、CloudFormation及现有基础设施共存的原因。六、与现有 GCP 基础设施共存与进阶场景Encore Cloud 支持与已有 GCP 基础设施无缝协作集成预先存在的云资源而不覆盖手工变更部署到现有的 Kubernetes 集群相关文档import-kubernetes-cluster.md、kubernetes.md与其他 IaC 工具Terraform、CloudFormation共存提供 Terraform Provider 简化与 Terraform 管理的基础设施集成。另一个常见进阶场景是固定出口 IPgcp-static-ip.md默认情况下 Cloud Run 的出站流量使用一组随时间变化的 Google 拥有的 IP导致第三方无法为你的应用做 IP 白名单。解决方案是在 Encore 环境对应的 GCP 项目与 VPC 中创建带保留静态 IP 的Cloud NAT 网关然后在 Encore Cloud 控制台将 Cloud Run 服务的 VPC egress 设为**全部流量All traffic**经 VPC 路由即可获得稳定的出站 IP用于合作伙伴 API 白名单、连接要求 IP 访问控制的外部数据库或满足合规审计要求。七、从源码看 GCP 集成的运行时实现Encore 在运行时层面为 GCP 提供了完整的原生支持贯穿密钥、元数据、指标、对象存储与消息队列等多个模块能力运行时实现关键细节密钥管理runtimes/go/appruntime/infrasdk/secrets/gcpsm/gcpsm.go提供者类型gcp_secret_manager配置要求project_id通过AccessSecretVersion读取密钥默认版本latest容器元数据runtimes/go/appruntime/infrasdk/metadata/cloud_run_collector.go同时兼容 Cloud RunK_SERVICE/K_REVISION metadata server InstanceID与 GKEK_POD指标导出runtimes/go/appruntime/infrasdk/metrics/gcp/cloud_monitoring.go通过 Cloud Monitoring API v3 导出指标附加容器元数据标签对象存储runtimes/core/src/objects/gcs/mod.rs惰性初始化 GCS 客户端支持自定义 endpoint 与匿名访问基础设施配置runtimes/go/appruntime/exported/config/infra/config.go统一描述 SQL、Redis、Pub/Sub、Secrets、ObjectStorageGCS/S3等资源消息队列runtimes/core/src/pubsub/gcp/GCP Pub/Sub 的 topic、sub、push sub 实现这些实现与本文描述的托管服务一一对应构成了 Encore Cloud 在 GCP 上声明式描述 → 自动供给 → 运行时原生接入的完整闭环。无论你的应用需要数据库、消息队列、对象存储、缓存还是定时任务Encore Cloud 都能在 GCP 上以最小权限、私有网络和全托管的方式交付让你专注于业务逻辑本身。【免费下载链接】encoreThe infrastructure platform for the intelligence era项目地址: https://gitcode.com/GitHub_Trending/encor/encore创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表