拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

KubeVela 1.0 版本演进全解析:v1beta1 API 升级、Application 抽象与渐进式发布实战指南

KubeVela 1.0 版本演进全解析:v1beta1 API 升级、Application 抽象与渐进式发布实战指南 云原生DevOps运维微服务【免费下载链接】kubevelaThe Modern Application Platform.项目地址https://gitcode.com/gh_mirrors/ku/kubevela点击查看免费下载KubeVelaThe Modern Application Platform在 1.0 版本系列中完成了从 v1alpha2 到 v1beta1 的 API 升级并围绕Application对象构建了组件封装ComponentDefinition、版本化与渐进式发布AppRollout/AppDeployment、CUE 模板增强、云资源声明与消费等核心能力。本文以 CHANGELOG/CHANGELOG-1.0.md 为主线结合仓库源码与 CRD 配置完整梳理 1.0.0 到 1.0.7 各版本的关键变更、升级步骤与实现原理帮助平台工程师快速掌握 v1beta1 应用模型并安全完成版本迁移。1.0 系列版本全景从 1.0.0 到 1.0.71.0 系列共发布 8 个版本1.0.0 是首个正式大版本宣告 API 全面升级为v1beta11.0.1–1.0.3 主要做修复与体验优化1.0.4 引入了大量能力如 PVC 卷、AppRollout 内嵌、服务端 Terraform1.0.5–1.0.7 为稳定期的小版本修复。官方在 1.0.7 中明确指出This is a minor fix for release-1.0, please refer to release-1.1.x for the latest feature即 1.0.x 分支只做稳定性维护新功能请关注 1.1.x。各版本核心变更速览版本核心内容v1.0.0API 升级v1beta1、ComponentDefinition职责明确化、AppRollout/AppDeployment、OpenAPI v3 Schema 自动生成、CUE 模板增强、云资源声明v1.0.1AppRollout 增加 finalizer 与 abandon 支持、Webhook API 升级到 v1、CRD 打印列与短名优化v1.0.2新增 cloneset 扩缩容控制器、跨 namespace 工作负载与 trait 的 GC、podDisruptive字段、vela system cue-packages命令v1.0.3vela system live-diff、kubectl 插件形式引入 vela、AppRevision GC默认保留 10 个、CUE 输出名校验v1.0.4PVC 卷 trait、AppRollout 内嵌 ApplicationrolloutPlan、服务端 Terraform、Definition 修订机制默认保留 20 个修订v1.0.5Application 支持指定不同版本的 Definition、动态准入控制、ResourceTracker 管理集群级资源v1.0.6修复同类型多 trait 状态上报、Terraform 组件 OpenAPI JSON Schema、可配置并发调和数v1.0.7修复内部 trait 的podDisruptive字段API 升级从 v1alpha2 到 v1beta1 的迁移要点关键字段变更1.0.0 中所有面向用户的 API 升级到v1beta1核心差异集中在ApplicationSpec 上spec.components[x].settingsv1alpha2→spec.components[x].propertiesv1beta1spec.components[x].traits[x].namev1alpha2→spec.components[x].traits[x].typev1beta1两个版本的 Spec 对比如下# v1alpha2 写法 apiVersion: core.oam.dev/v1alpha2 kind: Application metadata: name: first-vela-app spec: components: - name: express-server type: webservice settings: ... traits: - name: ingress properties: ...# v1beta1 写法 apiVersion: core.oam.dev/v1beta1 kind: Application metadata: name: first-vela-app spec: components: - name: express-server type: webservice properties: ... traits: - type: ingress properties: ...从源码结构看v1beta1 的ApplicationSpec在 apis/core.oam.dev/v1beta1/application_types.go 中定义除Components外还新增了Policies全局策略如多集群放置规则与Workflow自定义控制逻辑字段并通过kubebuilder:storageversion标记为存储版本shortName{app,velaapp}提供 CRD 短名。定义对象从集群级到命名空间级1.0.0 将 DefinitionComponentDefinition、TraitDefinition、WorkloadDefinition从集群作用域改为命名空间作用域#1085同时保持旧集群级 CRD 兼容。这意味定义可以按命名空间隔离、实现多团队共享同一集群时的能力治理。废弃与移除Deprecation1.0.0 同时清理了一批历史负担route/autoscaler/metrics三个 trait 及其控制器从 vela core 移出可在oam-dev/catalog仓库继续使用旧版 dashboard 被废弃相关功能并入 velacpvela CLI 只保留通过vela up从 appfile 运行/修改应用的方式废弃vela svc deploy、vela trait ...等命令。Application 抽象能力升级ComponentDefinition封装与抽象的职责转移ComponentDefinition接管了应用组件的封装与抽象职责用户可自由选择 Helm chart 或 CUE 方式定义组件而WorkloadDefinition专注于声明工作负载特征如replicable、childResource等因此WorkloadDefinition中的spec.schematic字段将在后续版本被弃用。CUE 与 Terraform 两种封装形式在 apis/core.oam.dev/common/types.go 的Schematic结构体中均有体现cue/terraform两个可选字段。版本化与渐进式发布1.0.0 引入了两个滚动发布对象AppRollout将 Application 从源修订滚动升级到目标修订支持 Blue/Green、Canary、A/B 测试等发布策略AppDeployment多版本、多集群应用部署可结合 Service Mesh 将多个修订版本部署到多个集群。1.0.4 进一步将 rollout 内嵌进 Application#1568现在可以直接在 Application 中声明rolloutPlan无需单独创建 AppRollout 对象。从 pkg/rollout/rollout.go 的getAssociatedRollouts实现可以看出rollout 控制器通过 ResourceTracker 记录被管理的 KubernetesRolloutOpenKruise rollouts API并能跨集群multicluster.ContextWithClusterName获取、挂起SuspendRollout设置Spec.Strategy.Paused true相关 rollout支持一键快速回退。1.0.1 补充了 AppRollout 的 initial finalizer 与 abandon 支持#1362进一步保证回退安全。修订机制与垃圾回收1.0.0 引入ApplicationRevisionCRD#1214Application每次变更都会生成一个修订快照。1.0.4 为 Component/Trait Definition 增加了修订机制默认保留 20 个修订1.0.3 则为 AppRevision 增加 GC 机制默认只保留 10 个修订#1501。修订对象的完整快照结构定义在 apis/core.oam.dev/v1beta1/applicationrevision_types.go其中ApplicationRevisionCompressibleFields保存了 Application、ComponentDefinitions、WorkloadDefinitions、TraitDefinitions 等全部相关对象的快照并支持压缩存储Compression字段base64。声明与消费云资源1.0.0 起 KubeVela 支持通过ComponentDefinition注册云资源如数据库、对象存储并将其绑定到应用中消费即声明与消费云资源能力。1.0.4 支持服务端 Terraform 作为云资源提供方#1519并在 1.0.6 修复了 Terraform 组件的 OpenAPI JSON Schema 生成问题#1738#1753保证 Terraform 组件在可视化平台中能正确渲染表单。Helm 与原生 Kubernetes 组件Helm 组件可将任意现存 Helm chart 声明为应用组件且 trait 系统可与 Helm 组件无缝协作1.0.0 支持存在少量已知限制Raw Kubernetes 组件继续支持直接使用原生 K8s 资源模板比 CUE 方式更简单但能力较弱trait 系统同样适用。CUE 模板增强与调试运行时上下文与数据传递1.0.0 为 CUE 模板提供了运行时信息上下文runtime context渲染时可读取应用信息同时支持 CUE 渲染期间的数据传递context.output保存渲染出的工作负载 API 资源context.outputs.xx保存其他渲染出的 API 资源。1.0.3 增加了context.appRevisionNum运行时上下文#1466。K8s API 内置包K8s 内置 API包括 CRD会被 KubeVela 自动发现并构建为 CUE 包CUE 模板中可以直接 import 使用这对编写和校验新 CUE 模板非常有帮助。1.0.2 起在 Component/Trait Definition 注册时还会刷新内置包#1402。需要说明的是1.0.0 的已知问题中列出了K8s v1.20 集群暂不支持内置 CUE 包#1313将在下一版本解决。跨命名空间资源与 Dry-runCUE 模板中可以在不同命名空间部署资源cross-namespace resource只要在模板中显式指定 namespace 即可1.0.0 支持 Dry-run Application#1246 优化了vela system dry-run的输出格式更清晰地打印原始 K8s 资源。Dry-run 的底层实现在 pkg/appfile/dryrun/dryrun.goExecuteDryRun方法渲染应用得到ComponentManifest列表与策略资源pkg/appfile/dryrun/diff.go 则用于新旧渲染结果的差异对比。1.0.3 进一步实现了vela system live-diff#1419可在升级前检查差异。CUE 语法校验1.0.3 增加了对 CUE 模板输出名称的 webhook 校验#1460并修复了值中包含_|_时 Component/TraitDefinition 不工作的问题#14501.0.5 使用更严格的 CUE 语法检查#1643。安装、升级与运维实践从 1.0.3 升级到 1.0.4升级到 1.0.4 前必须更新 Application CRDkubectl apply -f https://raw.githubusercontent.com/kubevela/kubevela/master/charts/vela-core/crds/core.oam.dev_applications.yaml从 1.0.1 升级到 1.0.2升级前需应用以下 CRD所有 CRD 变更均向后兼容kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_resourcetrackers.yaml kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/standard.oam.dev_rollouttraits.yaml kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_traitdefinitions.yaml kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_applications.yaml kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_approllouts.yaml kubectl apply -f https://raw.githubusercontent.com/oam-dev/kubevela/master/charts/vela-core/crds/core.oam.dev_applicationrevisions.yaml当前仓库中对应的 CRD 文件均位于 charts/vela-core/crds 目录包括core.oam.dev_applications.yaml、core.oam.dev_applicationrevisions.yaml、core.oam.dev_resourcetrackers.yaml、core.oam.dev_traitdefinitions.yaml等。控制面运维要点并发调和数1.0.6 起支持通过ConcurrentReconciles参数设置控制器的并发调和数量#1775。该参数在 pkg/controller/core.oam.dev/oamruntime_controller.go 中定义并被 Application 控制器通过MaxConcurrentReconciles使用见 pkg/controller/core.oam.dev/v1beta1/application/application_controller.go在高负载场景可提升调和吞吐Webhook1.0.1 将 mutate/validate webhook 的 API 版本升级到 v1#1383并修复了不使用 cert-manager 时 helm 安装 KubeVela webhook 不工作的问题#1267安装依赖精简1.0.0 起安装不再要求prometheus与certmanagerCRD#1005chart 镜像拉取策略从IfNotPresent改为Always#1228确保每次都能获取最新镜像事件同步频率所有事件自动同步的常规时间从 5 分钟调整为 1 小时#1285。其他实用变更vela show支持命名空间级能力1.0.4#1521并能列出 Helm chart 创建的 ComponentDefinition 参数#1543vela show xxx --web内置示例更新1.0.5kubectl vela插件支持 krew 安装1.0.4#15821.0.3 引入 vela 作为 kubectl 插件#14851.0.4 为 Application 增加关键路径 K8s 事件#1463并在status.Service中增加 scope 引用#15401.0.3 增加workloadDefinitionRef#14711.0.2 增加podDisruptive字段到 TraitDefinition#1192用于标记 trait 更新是否会导致 Pod 重启1.0.7 修复了内部 trait 的该字段#18441.0.2 新增 cloneset 扩缩容控制器#1301支持跨 namespace 工作负载与 trait 的垃圾回收#14211.0.4 使用加速域名托管 Helm chart 仓库加速全球用户拉取#15851.0.5 让 ResourceTracker 管理集群级资源#1634修复空 rolloutBatch 导致控制器 panic 的问题#1646。已知问题与注意事项1.0.0 版本已知问题如下后续小版本已逐步修复内置 CUE 包在 K8s v1.20 暂不支持#1313K8s 内置 API 自动构建的 CUE 包在该集群版本不可用计划下一版本支持跨命名空间资源 GC 局限#1339创建在与 Application 不同命名空间的资源仅在应用删除时被 GC更新不会触发 GC下一版本修复。此外1.0.5 支持 Application 指定不同版本的 Definition#1597并在 1.0.5 启用 Application 的动态准入控制#1619保证定义版本选择的合法性与应用配置的完整性。小结KubeVela 1.0 系列确立了以v1beta1Application 为核心的应用交付模型用ComponentDefinition统一组件封装CUE/Helm/Kube/Terraform、用修订与 GC 机制保证版本化演进、用 AppRollout/AppDeployment 实现渐进式发布、用 CUE 运行时上下文与内置包提升模板能力、用 OpenAPI v3 Schema 打通可视化平台。对于 1.0.x 用户升级时务必按上文顺序先更新对应 CRD追求新特性的用户则应关注 1.1.x 及后续版本。赞分享云原生DevOps运维微服务【免费下载链接】kubevelaThe Modern Application Platform.项目地址https://gitcode.com/gh_mirrors/ku/kubevela点击查看免费下载相关推荐Node.js 11.0.0 版本发布全解析V8 7.0 升级、process.binding 弃用与 API 演进Node.js 11.0.0 版本发布全解析V8 7.0 升级、process.binding 弃用与 API 演进 Node.js 11.0.0 是 Nod前端文档Node.js 0.7.1 版本发布解析V8 3.8.8 升级与核心 API 演进Node.js 0.7.1 版本发布解析V8 3.8.8 升级与核心 API 演进 导读 本文基于 nodejs.org 官方仓库中的 v0.7.1 发布公前端文档Lightweight Charts™ v3.x 版本演进全解析从 1.0 到 3.8 的 API 变迁、破坏性变更与实战升级指南Lightweight Charts™ v3.x 版本演进全解析从 1.0 到 3.8 的 API 变迁、破坏性变更与实战升级指南 Lightweight C前端图表库金融科技数据可视化上一篇AgentScope 2.0构建生产级可观测智能体的三层架构设计范式下一篇Bash自动化测试终极指南使用Bats框架快速验证脚本逻辑创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表