ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Encore Cloud 基础设施配置完全指南:声明式基础设施、进程分配与漂移感知的 IaC 实践

Encore Cloud 基础设施配置完全指南:声明式基础设施、进程分配与漂移感知的 IaC 实践 Encore Cloud 基础设施配置完全指南声明式基础设施、进程分配与漂移感知的 IaC 实践【免费下载链接】encoreThe infrastructure platform for the intelligence era项目地址: https://gitcode.com/GitHub_Trending/encor/encore本篇指南聚焦于 Encore Cloud 平台的基础设施配置体系如何在创建环境时选定云厂商与计算硬件、通过 Dashboard 完成日常配置尤其是进程分配策略、在云厂商控制台进行安全的旁路手动修改以及与 Terraform 等既有 IaC 工具协同工作。读完本文你将掌握 Encore Cloud 声明式基础设施模型的完整配置路径理解其PATCH 式更新 漂移感知的底层机制并能据此在自己的 AWS/GCP 账户中安全、可控地管理 Encore 应用的基础设施。声明式基础设施代码无关云厂商配置由 Dashboard 掌控Encore Cloud 的基础设施管理思路与传统的 Infrastructure-as-CodeIaC工具有着本质区别。传统 IaC如 Terraform要求你在代码中显式声明云服务规格而 Encore 采用的是声明式基础设施框架你在应用代码中以类型安全对象的形式声明需要的基础设施资源数据库、缓存、队列、定时任务等不在代码中定义任何云服务细节。这一设计带来两个直接收益代码保持云无关Cloud-Agnostic同一套应用代码可以在 AWS 与 GCP 之间自由移植不需要为某个云厂商改写代码。按环境差异化供给每个环境可以按照你的优先级成本、性能、可靠性等使用不同的基础设施而代码完全不变。在 Encore 的整个技术栈中这一能力由开源的 后端框架 支撑编译期 Encore 解析应用代码生成 Application ModelEncore Cloud 基于该元数据构建一张高分辨率的基础设施图infrastructure graph再通过 AWS/GCP 的 API 在云账户中完成资源的供给与管理。这意味着不存在基础设施配置文件无 Terraform、无 YAML也不存在云厂商依赖。基础设施的配置动作集中在Encore Cloud Dashboard完成它提供了受控的工作流controlled workflow、基于角色的访问控制RBAC以及可审计的变更历史。这份指南的余下部分将按创建环境时的初始决策 → 日常持续配置 → 云控制台手动修改 → 与既有基础设施协同四个阶段展开。创建新环境时的基础设施决策当你创建新环境时需要针对基础设施做出以下决策详见 创建与配置环境 的完整流程决策项可选范围云厂商Cloud ProviderAWS 或 GCP计算硬件Compute Hardware如 AWS Fargate、GCP Cloud Run、KubernetesKubernetes 集群策略新建集群或复用既有集群需先接入云账户Kubernetes 厂商GKEGCP或 EKSAWS数据库选型如 AWS RDS、GCP Cloud SQL、Neon Serverless Postgres进程分配策略Process Allocation单进程或每服务一进程详见下文这些决策在每个环境上是独立生效的Encore 支持任意数量的环境每个环境可配置不同的云厂商因此可以按需构建混合云或多云应用参见 连接你的云账户。需要说明的适用前提将环境部署到自己的云账户需要先在 Dashboard 的App Settings Integrations Connect Cloud页面完成云账户接入。GCP 侧通过为 Encore 分配服务账号并授予按功能分组的最小权限角色如roles/cloudsql.admin对应数据库、roles/run.admin对应 Cloud Run、roles/container.admin对应 GKE实现权限收敛AWS 侧则默认创建一个带Require external ID的 IAM Role 建立信任。接入完成后Encore Cloud 使用你的云厂商 API 供给并管理基础设施但出于安全考虑它不会自动销毁不再需要的基础设施——删除必须在 Dashboard 中由你显式批准。不同环境类型的供给目标不同环境类型的基础设施供给遵循各自适配的目标详见 基础设施供给与环境Local本地Encore Cloud HostingGCP / AWS自有云账户环境类型DevelopmentPreview、DevelopmentDevelopment、Production供给目标供给速度供给速度、成本可靠性、安全性、可扩展性日常基础设施配置Dashboard 配置 UI环境创建后你可以在 Encore Cloud Dashboard 中持续配置基础设施。Dashboard 暴露了最常用的配置选项并提供受控的变更工作流包括审计日志与 RBAC 权限控制。在 Dashboard 中可完成的典型操作更多 Day-2 运维细节参见 基础设施管理包括数据库可用性配置在环境的Infrastructure页面切换Regionalmulti-AZ默认生产推荐与Zonalsingle-AZ低成本切换会造成停机应安排在维护窗口执行数据库凭据轮换在环境的 Infrastructure 页面的数据库集群区域使用轮换控件凭据遵循每实例独立凭据 每容器独立凭据的隔离模型基础设施审批Infrastructure Approval在Settings Infrastructure Approval中启用后任何包含基础设施变更含 IAM 变更的部署都需 Admin 手动批准灾备相关设置备份计划、保留周期等 DR 设置针对有状态资源可直接在配置 UI 中调整。进程分配配置Process Allocation进程分配是 Encore 提供的一项核心配置能力它决定微服务在计算硬件上如何部署——要么把所有服务放进一个进程要么每个服务独立一个进程。整个过程无需任何代码改动并且可以在每个环境上分别选择。两种模式的取舍如下单进程Single Process部署全部服务通常推荐能显著降低成本并最小化服务间响应时间服务间调用退化为进程内调用。是否采用取决于你的具体场景适合对延迟敏感、资源利用率要求高的应用。每服务一个进程Separate Processes每个服务独立部署提升可扩展性并在出问题时缩小爆炸半径blast radius。官方建议仅在生产环境使用因为进程与资源开销更高。你可以在创建每个环境时选择部署模型对应环境创建流程中的 Choose process allocation: single or separate processes生产与开发环境可以选用不同模型而代码完全一致。在管理基础设施的 创建与配置环境 文档中该能力被描述为Single process: All services run in one process (simpler, lower cost) 与 Separate processes: Each service runs independently (better isolation, independent scaling)。从源码结构看进程分组能力同样存在于本地运行链路的实现中——cli/daemon/run/proc_groups.go 负责本地运行时的进程组管理印证了进程分配是贯穿本地与云端的一致抽象。手动配置在云厂商控制台直接修改在某些场景下你需要手动配置某些配置选项尚未在 Encore Cloud Dashboard 中开放或者你希望直接修改云资源。此时你拥有完整的权限直接在云厂商控制台修改资源——这正是声明式模型的重要红利由于应用代码不绑定云服务细节你可以安全地旁路修改。Encore Cloud 会尽最大努力确保你在云控制台的手动修改不会被覆盖。具体而言它部署新变更时只对基础设施做最小必要修改采用以下三种策略PATCH 式更新PATCH-style updates资源更新采用 compare-and-set 等类似技术只修改需要变更的属性不触碰其他字段。避免全量同步Avoid full syncs与 Terraform 不同Encore Cloud 只更新完成一次基础设施变更所必需的特定资源而不是对整个基础设施做一次完整刷新refresh。漂移感知更新Drift-aware updates在修改任何资源之前Encore Cloud 会拉取资源的当前属性。如果检测到漂移例如某项设置在云控制台被直接改过Encore 会将其内部表示更新为与当前状态一致——除非 Encore Cloud Dashboard 中存在一个待处理、尚未应用的变更请求pending, unapplied change request。这三点共同保证了高效且可预测的工作流最大限度减少非预期变更、缩短部署时间让你可以放心地使用云厂商控制台修改已供给的资源。这一行为也与 基础设施管理 文档中的漂移检测说明一致When deploying, Encore pulls the current resource properties before making any changes. If drift is detected... Encore updates its internal representation to match the current state, unless there is a pending, manually requested property change in the Encore Cloud dashboard that hasnt been applied yet.生产基础设施的默认构成理解哪些资源可被手动修改的前提是知道 Encore Cloud 默认给你供给了什么。以自有云账户的生产环境为例详见 AWS 基础设施 与 GCP 基础设施资源AWSGCP网络每环境独立 VPC双 AZ、三层子网Public/Compute/Storage每环境独立 GCP Project 私有网络计算Fargate ECS 或 EKSCloud Run 或 GKESQL 数据库Amazon RDSPostgreSQL每日自动备份保留 7 天GCP Cloud SQLPostgreSQL每日备份 7 天 PITRPub/SubSQS 与 SNS自动配置死信队列GCP Pub/Sub自动配置死信主题对象存储S3公开桶自动接入 CloudFront 独立域名GCS公开桶接入 Cloud CDN缓存ElastiCache for RedisMulti-AZ 复制Memorystore for Redis高可用配置Cron JobsEncore Cloud Managed加密签名请求触发Encore Cloud ManagedSecretsAWS Secrets ManagerSecret Manager这些资源全部按最小权限原则配置 IAM/服务账号因此你在控制台手动调整时如修改备份保留期、开启跨区域复制只需遵循云厂商的常规操作即可Encore 不会在下一次部署时将其重置。与既有基础设施协同工作Encore Cloud 的另一大优势是与既有基础设施无缝协作。因为不采用全量同步full sync的方式它可以集成既有云资源不覆盖手动修改部署到既有 Kubernetes 集群创建环境时选择使用既有集群而非新建与其他 IaC 工具共存如 Terraform 和 CloudFormation 管理的资源可以共存于同一云账户。这意味着 Encore Cloud 非常适合基础设施部分由 Encore 之外管理的环境——你可以在既有基础设施旁边部署 Encore 应用而不必担心互相踩踏。使用 Terraform Provider 集成既有 Terraform 体系对于 Terraform 用户Encore 维护了一个官方的Terraform Providerencoredev/encore提供面向所有 Encore 供给资源的数据源data source用于简化与既有 Terraform 管理的基础设施集成。完整文档见 Terraform Provider。核心概念数据源 vs 资源。Encore 的数据源是只读引用指向 Encore 已代你供给的资源——与 Terraform 资源创建/修改基础设施不同数据源只检索信息。你只需提供资源名称和所在环境即可取回由 Encore 管理的资源数据库、缓存等的云标识符cloud identifiers。声明 Providerterraform { required_providers { encore { source registry.terraform.io/encoredev/encore } } }声明后terraform init会自动下载该 Provider 插件。认证配置Provider 需要 Encore Auth Key在 Encore Cloud Dashboard 中生成。既可以在配置中硬编码provider encore { env your-env auth_key your-auth-key }也可以通过环境变量ENCORE_AUTH_KEY设置避免把密钥写进配置文件。使用数据源可用的数据源包括encore_database、encore_cache、encore_pubsub_topic等。例如将 AWS IoT Core 连接到 Encore PubSub topicdata encore_pubsub_topic topic { name my-topic env my-env } resource aws_iot_topic_rule rule { name my-rule sql SELECT * FROM my-topic sns { message_format RAW role_arn aws_iam_role.role.arn target_arn data.encore_pubsub_topic.topic.aws_sns.arn } }每个数据源有各自的属性集如encore_pubsub_topic的aws_sns.arn用于在 Terraform 中引用 Encore 已供给资源的标识符从而将 Encore 资源编织进既有的 Terraform 基础设施图中。源码视角基础设施配置的生成与校验作为开源仓库Encore 的 CLI 侧提供了基础设施配置能力的实现佐证。在 cli/daemon/export/infra_config.go 中buildAndValidateInfraConfig函数展示了基础设施配置infra.config.json默认挂载路径为/encore/infra.config.json见defaultInfraConfigPath的构建与校验逻辑从应用元数据meta.Data推导出需要托管的服务HostedServices与网关HostedGateways校验配置中引用的服务/网关是否真实存在于应用元数据未知服务/网关会直接报错依次核对Secrets、Databases、Redis 缓存、Pub/Sub 主题与订阅、Object Storage 桶是否在配置中完整声明缺少的项会汇总为Missing Resource Configurations对每个配置项执行语义校验例如公开桶必须设置public_base_url错误以Validation Errors形式返回基于声明的资源反向推导出运行所需的环境变量与 Cron 任务清单formatCronJobInstructions/formatEnvVars在部署前以表格形式提示开发者。这段代码印证了声明式的落地方式应用代码是唯一的事实来源source of truth基础设施配置围绕它生成并接受严格校验最终运行时配置由 runtimes/go/appruntime/exported/config/infra 包中的infra.InfraConfig结构与Validate函数承载。值得注意的是仓库中该文件还引用了encore.dev/appruntime/exported/config/infra包即基础设施配置结构体定义位于 runtimes/go 运行时的exported/config目录——配置格式本身是跨 CLI 与运行时的共享契约。总结Encore Cloud 的基础设施配置体系可以概括为一条清晰的主线代码声明资源 → 平台供给与追踪 → Dashboard 受控配置 → 云控制台自由旁路 → 漂移感知的增量同步。它既避免了传统 IaC 的全量刷新覆盖手动修改痛点又通过 PATCH 式更新和漂移检测保留了云厂商控制台作为逃生舱口进程分配能力则在零代码改动的前提下让你在成本/延迟与可扩展性/隔离性之间按环境自由取舍。若你需要更进一步了解供给原理、安全模型与灾备策略可以继续阅读本仓库中的 基础设施供给与环境、AWS 基础设施、GCP 基础设施 与 基础设施管理 文档。【免费下载链接】encoreThe infrastructure platform for the intelligence era项目地址: https://gitcode.com/GitHub_Trending/encor/encore创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表