ARTICLE DETAIL

资讯详情

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

KubeVela v1.1 版本深度解析:多集群混合云交付控制平面与 Workflow 工作流机制

KubeVela v1.1 版本深度解析:多集群混合云交付控制平面与 Workflow 工作流机制 云原生DevOps运维微服务【免费下载链接】kubevelaThe Modern Application Platform.项目地址https://gitcode.com/gh_mirrors/ku/kubevela点击查看免费下载KubeVela v1.1 是项目从单集群应用平台升级为多集群 / 混合云 / 多云应用交付控制平面的关键版本它引入了 Workflow 工作流机制、Environment 环境初始化器Initializer、开箱即用的 Addon 体系、Terraform 云资源支持与vela def定义管理工具集。本文以官方发布说明CHANGELOG/CHANGELOG-1.1.md为骨架结合仓库内apis、pkg/workflow、vela-templates等源码与配置逐项解析 v1.1 系列v1.1.0 → v1.1.3的核心能力、参数细节与底层实现帮助你理解并上手这套以 OAM 为统一模型的应用交付控制平面。版本总览从单集群应用到多云交付控制平面v1.1.0 是 v1.1 系列的功能里程碑版本其核心定位在发布说明中明确表述为In the new release, we have fully upgraded KubeVela to a multi-cluster/hybrid-cloud/multi-cloud app delivery control plane with leverage of OAM as the consistent app delivery model across clouds and infrastructures.即借助 OAM 作为跨云、跨基础设施的一致应用交付模型KubeVela 被全面升级为多云交付控制平面。围绕这一目标v1.1.0 主要包含以下新能力详见 CHANGELOG-1.1.md新特性一句话说明混合环境应用交付控制平面支持多集群、混合云、多云的应用编排与下发Workflow 工作流机制用 CUE 以声明式、数据驱动方式串联任意运维任务定制控制逻辑Environment Initializer允许用户定义环境的组成环境可包含集群、系统组件、策略等资源且可轻松销毁开箱即用 Addons通过vela addon命令即可列出 / 启用 / 禁用各类插件云资源支持基于 Terraform 供应几乎任意云资源并透传给 KubeVela 应用中的其他组件vela def工具集基于统一 CUE 能力的 X-Definition 管理工具此外 v1.1.0 还允许为 Application 自动生成的组件版本Component Revision与 Definition 版本自定义名称并将 controller-runtime 依赖升级到兼容 Kubernetes v1.21整体支持Kubernetes v1.18 ~ v1.21。需要说明的是v1.1.0 因官方文档尚在编写中WIP被标记为预发布版本后续 v1.1.1 / v1.1.2 / v1.1.3 为修复与增强版本官方明确建议用户使用 v1.1.2 或更高版本。核心特性一Workflow 工作流机制Workflow 是 v1.1 最具代表性的新能力。发布说明指出Workflow 让用户可以把任意运维任务胶水在一起定制控制逻辑以构建更复杂的操作Workflow 按模块化设计每个模块主要由 CUE 编写因此可以用声明式、数据驱动的方式定义复杂操作。工作流在 API 中的位置从类型定义看工作流是Application的一个一等公民字段application_types.go// Workflow defines workflow steps and other attributes type Workflow struct { Ref string json:ref,omitempty Mode *wfTypesv1alpha1.WorkflowExecuteMode json:mode,omitempty Steps []wfTypesv1alpha1.WorkflowStep json:steps,omitempty }即spec.workflow支持steps步骤列表、mode执行模式包含 Steps/SubSteps 的串并行组合以及ref引用外部工作流。在 pkg/workflow/workflow.go 中ConvertWorkflowStatus将底层工作流运行状态转换为common.WorkflowStatus其中Mode由Steps-SubSteps拼接而成说明同一 Application 内可以嵌套使用不同粒度的并行/串行模式。WorkflowStepDefinition可插拔的步骤能力每个工作流步骤的行为由WorkflowStepDefinition定义workflow_step_definition.go其Spec包含definitionRef引用定义该步骤类型的 CRDSchematic封装模板当前仅支持 CUE 图式Version定义版本Restrictions使用范围限制缺省表示任意位置可用。该 CRD 是命名空间级资源shortName 为workflowstep并维护configMapRef与latestRevision状态供平台侧校验与查询。内置工作流步骤以 suspend 与 depends-on 为例仓库内置了大量 workflow-step 定义见 vela-templates/definitions/internal/workflowstep 目录。以suspend步骤为例suspend.cuesuspend: { type: workflow-step annotations: { category: Process Control } description: Suspend the current workflow, it can be resumed by vela workflow resume command. } template: { suspend: builtin.#Suspend { $params: parameter } parameter: { // usageSpecify the wait duration time to resume workflow such as 30s, 1min or 2m15s duration?: string // usageThe suspend message to show message?: string } }可以看到步骤的参数通过parameter块暴露duration支持30s、1min、2m15s这类 Go duration 格式message用于展示挂起原因。depends-on-app步骤则演示了工作流如何等待另一个 Application 完成depends-on-app.cue它通过kube.#Read读取目标 Application若不存在则回退读取同名的 ConfigMap 并yaml.Unmarshal后kube.#Apply再以builtin.#ConditionalWait轮询status.status running。其参数为name被依赖 Application 名称与namespace命名空间这是多应用编排 / 多环境部署场景的典型用法。步骤间的依赖、传参与控制命令v1.1 系列围绕工作流持续补齐了可组合性能力发布说明中可梳理出如下能力演进步骤依赖depends-onv1.1.1 增加depends-on workflow step definition#2190并支持vela workflow子命令族v1.1.0-rc.1 起 Workflow 支持通过字段标签指定步骤顺序#2022。参数传递input/outputv1.1.1 将input.ParameterKey调整为路径path记法#2214outputs支持脚本记法#2218并将字段exportKey重构为valueFrom#2284——这套 input/output 机制让步骤之间可以传递数据。控制命令v1.1.0 起新增vela workflow suspend#2108、vela workflow resume#2114、vela workflow terminate与vela workflow restart#2131命令配合suspend步骤实现人工审批 / 暂停恢复流程。内置步骤持续扩充包括内置 dingtalk 通知步骤#2152、webhook 通知支持 dingding 与 slack#2213、op.#Task动作#2220、apply-application工作流步骤#2186等。工作流模式的修复与增强修复了 revision 在 workflow 模式下的 GC 问题#2355、为工作流 reconcile 增加指数退避等待#2279并使工作流步骤可以修改 applicationComponent#2304。在实现侧pkg/workflow/providers/legacy/legacy.golegacy.go统一注册了multicluster、oam、terraform、config等 provider 及其 CUE 模板这些 provider 是工作流步骤执行时底层调用的 Go 实现。例如apply步骤的 CUE 模板builtin-apply-component.cue展示了一个apply 组件与 traits的步骤如何声明parameter.value、parameter.cluster、parameter.namespace三个入参。多环境交付中的工作流状态v1.1.1 为 workflow 多环境部署增加了状态检查#2229配合resourceTracker为 envBinding 引入见 #2179与仅指定 policy 时也需渲染并创建资源#2197等修复使一套工作流驱动多环境发布具备可观测、可追踪的能力。核心特性二Environment 与 Initializerv1.1.0 引入了 Initializer允许用户定义环境由什么构成由 Initializer 初始化的环境可包含 K8s 集群、系统组件、策略等几乎一切资源并且借助 Initializer 可以非常容易地销毁一个环境。这解决了传统环境 一个集群命名空间的单一模型使环境成为可组合、可生命周期的资源集合。围绕环境的演进还包括EnvBinding 增强v1.1.0 的 envbinding 支持将资源下发到集群#2093并引入resourceTracker追踪 envBinding 产生的资源#2179确保环境解绑/销毁时资源能被正确回收命名对齐将 envbind 应用的名称与原 Application 名称对齐#2232避免多环境实例命名混乱。在 API 层面v1alpha1中的 EnvBinding 类型envbinding_types.go定义了EnvComponentPatch可对组件做properties、traits、externalRevision的环境级覆盖、EnvPlacementclusterSelector/namespaceSelector选择下发位置等结构。该文件中的注释同时注明EnvBindingSpec已被 Topology / Override Policy 取代Deprecated This spec is deprecated and replaced by Topology/Override Policy说明这一设计在后续版本持续演进为更通用的策略机制。核心特性三开箱即用的 Addon 体系借助 Initializerv1.1.0 支持了大量开箱即用的 Addons。每个 Addon 本质上是一个 Initializer负责部署与该插件相关的 CRD Controller 及其他资源。用户通过vela addon命令即可管理vela addon enable addon-name # 启用插件 vela addon enable addon-name --version addon-version vela addon enable addon-name --clusters{local,cluster1,cluster2} vela addon enable your-local-addon-path # 从本地路径启用 vela addon enable addon-name my-parameter-of-addonmy-value以上命令用法与多集群参数均可见于 CLI 实现references/cli/addon.go。v1.1 系列对 Addon 体系做了几项重要调整默认启用策略调整v1.1.2 起FluxCD 与 Terraform 插件默认不再安装用户可按需vela addon enable ...#2328同时新增default enable addon能力#2172Chart 分发优化prometheus 等插件的 Chart 迁移到Alibaba Cloud OSS以获得更好的可访问性与网络速度#2324istio chart 同样改用阿里云 OSS 源#2392插件管理能力增强新增 Addon REST API#2369、addon input 的 go-template 实现#2049、kustomize 定义支持 source 与 patch#2138并清理了 kruise 等旧插件#2226以 cloneSet 相关能力并入内建定义。核心特性四Terraform 云资源支持v1.1 系列强化了通过 Terraform 供应云资源的能力v1.1.0 支持几乎任意云资源的供应并将结果透传给 KubeVela 应用中的其他组件后续版本持续补齐支持远程 Git 仓库作为 Terraform 配置来源#2337支持更多 Terraform 变量类型#2194凭据 Secret 命名对齐Terraform 凭据 Secret 名称与组件名保持一致#2399云厂商能力落地新增 alibaba provider addon#2243并允许用户指定 region#2297修复 RDS 模块输出的DB_PASSWORD#2267与 alibaba cloud rds 模块#2293新增 alibaba eip 云资源#2268。核心特性五vela def定义管理工具集v1.1.0 提供vela def工具集以统一的 CUE 能力管理 X-DefinitionComponentDefinition、TraitDefinition、WorkflowStepDefinition、PolicyDefinition 等。v1.1.0-rc.1 起内部定义生成流程也改为使用vela def命令替代原来的 mergedef.sh#2031。v1.1.1 进一步将vela live-diff、dry-run、cue-packages等能力并入了 vela 命令族#2182。在定义编写层面v1.1 系列强调将所有 CUE 模板关键字统一为parameter#2181并支持在 CUE 模板上下文中访问组件产物#2161为定义即代码的工程化奠定基础。版本修订externalRevision 与 Definition 修订命名v1.1.0-rc.2 引入了两个可显著提升版本可控性的能力1. 为组件修订指定名称externalRevisionApplication 中新增externalRevision字段可显式指定组件修订名称#1929kind: Application spec: components: - name: mycomp type: webservice externalRevision: my-revision-v1 properties: ...在类型定义中externalRevision字段位于 apis/core.oam.dev/common/types.go注释为 ExternalRevision specified the component revisionName同时该字段也被 EnvBinding 的环境级组件覆盖envbinding_types.go所复用即不同环境可引用不同修订。v1.1.1 修复了指定外部修订时的相关问题#2126。2. 为 Definition 修订指定名称ComponentDefinition 等定义可通过注解definitionrevision.oam.dev/name指定修订名称#2044apiVersion: core.oam.dev/v1beta1 kind: ComponentDefinition metadata: name: worker annotations: # you can specify the revision name in annotations definitionrevision.oam.dev/name: 1.1.3 spec: ...该注解在版本化设计文档 definition-versioning.md 中有系统说明添加该注解会产生一个新的 DefinitionRevision例如将 ComponentDefinition 命名为component-name-v4.4即使不指定命名修订DefinitionRevision 仍会被维护Application 也可通过自增修订号引用特定版本。控制器侧对注解的处理见 pkg/controller/core.oam.dev/v1beta1/core/revison.go。v1.1.1 还重构了存储各修订参数的 ConfigMap 的 ownerReference 指向 definitionRevision#2164使修订的生命周期归属更清晰。滚动发布Rollout与稳定性修复v1.1 系列对滚动发布做了大量打磨重要变更包括回滚体验优化v1.1.2 改进 rollback 体验#2294并将rollout 失败时把 owner 传递给 workload#2397以确保资源归属正确滚动策略调整v1.1.1 将 rollout trait 的IncreaseFirst调整为DecreaseFirst#2142即先缩旧实例再增新实例降低资源峰值StatefulSet 支持v1.1.3 起支持 rollout controller 管理 StatefulSet#1969并支持 rollout controller 独立部署、以 Helm chart 安装到运行集群#2075canary 流量治理修复 canary-traffic trait 的 service 生成问题#2300、#2307健康观测HealthScope controller 增加基于 CUE 的健康检查#1956Application 可从 HealthScope 展示健康状态#2228并提供 application logging dashboard#2301。此外 v1.1 系列还包含一批基础设施类修复移除 appcontext CRD 与控制器#2270、移除 podspecworkload 控制器与 CRD#2269、修复 traitdefinition 控制器无限 reconcile 循环#2157、增加 pprof 支持#2192、升级 controller-tools 0.2 → 0.6.2#2215、增加 leader election 配置选项以缓解 apiserver 压力、为 helm chart 增加revisionHistoryLimit参数#2343、新增 vela minimal chart#2340等。快速上手与升级建议安装与升级v1.1.0 为预发布版本官方建议安装或升级到v1.1.2 及以上v1.1.2 为 bug fix release修复了用户反馈的模板与插件相关问题升级时注意 FluxCD / Terraform 插件默认关闭按需通过vela addon enable addon-name启用。环境要求v1.1 系列支持 Kubernetes v1.18 ~ v1.21controller-runtime 已升级以兼容 v1.21。多集群入口若需要多集群 / 混合云交付可结合 envbindingTopology/Override 策略与--clusters参数使用vela addon、vela env等命令。深入学习入口工作流步骤定义可查看 vela-templates/definitions/internal/workflowstep 目录含 suspend、depends-on-app、apply-application、notification 等内置步骤的 CUE 源码与参数注释工作流引擎实现可研读 pkg/workflow 包版本化设计可参考 definition-versioning.md。总结KubeVela v1.1 系列以 OAM 为统一模型将项目从单集群应用平台升级为多集群、混合云、多云的应用交付控制平面。其中Workflow提供了以 CUE 模块化声明复杂交付流程的能力Environment/Initializer让环境成为可组合可销毁的资源集合Addons让扩展能力开箱即用Terraform 支持打通了云资源供应链路而externalRevision与definitionrevision.oam.dev/name注解则把修订可命名、可追踪落到了组件与定义两级。对于平台工程师而言理解这一版本的骨架Application 工作流 环境策略 Addon 体系是继续深入 KubeVela 后续版本如策略体系全面化、多集群增强的坚实基础。赞分享云原生DevOps运维微服务【免费下载链接】kubevelaThe Modern Application Platform.项目地址https://gitcode.com/gh_mirrors/ku/kubevela点击查看免费下载相关推荐KubeVela Application 级策略与可定制工作流Workflow设计与实现深度解析KubeVela Application 级策略与可定制工作流Workflow设计与实现深度解析 KubeVela 作为面向云原生应用的现代化应用平台其核云原生DevOps运维微服务KubeVela Definition 版本化机制深度解析语义化版本、DefinitionRevision 与自动升级控制KubeVela Definition 版本化机制深度解析语义化版本、DefinitionRevision 与自动升级控制 导读 KubeVela 的 Def云原生DevOps运维微服务kOps 与 GitOps 工作流实现集群配置的版本控制kOps 与 GitOps 工作流实现集群配置的版本控制 kOps Kubernetes Operations 是一个强大的生产级 Kubernetes 集群云原生集群管理运维IaC上一篇iOS Simulator MCP Server配置指南环境变量与自定义设置全解析下一篇Polybar终极指南如何快速构建美观的Linux状态栏创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表