新闻详情

新闻详情

首页 / 资讯中心 / 详情

KubeVela 中使用 alibaba-ack 组件申请阿里云 ACK 集群:Terraform 组件定义与连接信息传递实战

发布时间:2026/9/28 6:35:11来源:尧图网络
KubeVela 中使用 alibaba-ack 组件申请阿里云 ACK 集群:Terraform 组件定义与连接信息传递实战
云原生DevOps运维微服务【免费下载链接】kubevelaThe Modern Application Platform.项目地址https://gitcode.com/gh_mirrors/ku/kubevela点击查看免费下载KubeVela 通过内置的alibaba-ack云服务组件让开发者可以用一份声明式的Application配置直接申请阿里云容器服务 ACKKubernetes集群。本文以仓库中的示例文档 alibaba-ack.eg.md 为主体结合其背后的 TerraformComponentDefinition定义、e2e 测试用例与云资源数据传递设计文档讲解组件配置、writeConnectionSecretToRef连接信息机制以及完整的落地流程读完即可在自己的 KubeVela 环境中复用该组件。一、这份示例文档是什么def-doc 的定位与用途在 KubeVela 仓库中references/docgen/def-doc目录存放的是内置定义的用法示例example它与真正的定义文件相互印证。根据 def-doc README 的说明这些示例承担两个职责生成官方参考文档作为 kubevela.io 上组件参考文档的素材来源支持用户自助生成帮助用户通过vela show命令查看任意内置定义的参数与用法。因此alibaba-ack.eg.md 是一份可直接复制运行的完整 Application 示例它演示了 KubeVela 中如何声明式地创建一个阿里云 ACK 集群组件是理解Terraform 类型云服务组件如何接入 KubeVela的最佳入口。该目录下还有alibaba-eip.eg.md、alibaba-oss.eg.md、alibaba-rds.eg.md、alibaba-redis.eg.md等同族示例模式完全一致alibaba-ack是其中面向容器服务ACK的代表。二、示例文档的完整内容alibaba-ack 组件的最小 Application示例文档全文即下面这份 YAML它定义了一个名为ack-cloud-source的Application其中包含一个类型为alibaba-ack、名为ack-cluster的组件apiVersion: core.oam.dev/v1beta1 kind: Application metadata: name: ack-cloud-source spec: components: - name: ack-cluster type: alibaba-ack properties: writeConnectionSecretToRef: name: ack-conn namespace: vela-system逐字段解读如下字段取值含义apiVersion/kindcore.oam.dev/v1beta1/ApplicationKubeVela 顶层应用模型资源声明式描述应用及其组件metadata.nameack-cloud-source该 Application 的名称也是后续查询状态、查看日志时的标识spec.components[].nameack-cluster组件名可被其他组件通过dependsOn引用spec.components[].typealibaba-ack组件类型对应一个名为alibaba-ack的ComponentDefinitionproperties.writeConnectionSecretToRef.nameack-conn集群创建成功后连接信息将被写入名为ack-conn的 Kubernetes Secretproperties.writeConnectionSecretToRef.namespacevela-system上述 Secret 的存放命名空间这份配置的核心动作只有一件声明我要一个 ACK 集群并把它的连接凭证写到vela-system/ack-conn这个 Secret 里。集群的具体规格实例规格、节点数、可用区等由组件定义提供默认值示例文档未显式覆盖表明这些参数全部可选、由定义侧兜底。三、组件定义背后Terraform 类型的 ComponentDefinitionalibaba-ack不是硬编码在控制器里的特殊组件而是一个标准的、由 Terraform 驱动的ComponentDefinition。仓库的 e2e 测试数据中保留了它的完整定义terraform-alibaba-ack.yamlapiVersion: core.oam.dev/v1beta1 kind: ComponentDefinition metadata: name: alibaba-ack namespace: vela-system annotations: definition.oam.dev/description: Terraform configuration for Alibaba Cloud ACK cluster labels: type: terraform spec: workload: definition: apiVersion: terraform.core.oam.dev/v1beta1 kind: Configuration schematic: terraform: configuration: https://github.com/kubevela-contrib/terraform-modules.git type: remote path: alibaba/cs/dedicated-kubernetes从这份定义可以确认以下实现事实声明式描述definition.oam.dev/description明确指出这是Terraform configuration for Alibaba Cloud ACK cluster类型标签labels.type: terraform这是vela comp --label typeterraform能过滤出它的依据工作负载类型spec.workload.definition指向terraform.core.oam.dev/v1beta1的Configuration即该组件最终会实例化为一个 Terraform Controller 管理的Configuration资源Terraform 模板来源spec.schematic.terraform声明模板为remote远端类型从kubevela-contrib/terraform-modules仓库拉取具体模块路径为alibaba/cs/dedicated-kubernetes阿里云容器服务专有 Kubernetes 集群模块。也就是说alibaba-ack组件本质上是把一份阿里云 Terraform 模块包装成了 OAM 组件KubeVela 负责接收Application声明、渲染出ConfigurationCR再由 Terraform Controller 实际执行云端资源的申请与销毁。配套 Addonterraform-alibaba与组件定义配套的是terraform-alibaba插件addon其元数据位于 metadata.yaml名称/版本terraform-alibaba、1.0.0描述Kubernetes Terraform Controller for Alibaba Cloud依赖dependencies中声明依赖terraform即 Terraform Controller 本体部署目标deployTo.control_plane: true即部署到控制面集群。这解释了使用alibaba-ack组件的前提集群中必须先安装 Terraform Controllerterraformaddon与阿里云 Provider 相关的terraform-alibabaaddonalibaba-ack组件定义才会存在、Configuration才能被正确执行。四、writeConnectionSecretToRef 原理云资源连接信息如何传递示例中唯一显式配置的属性就是writeConnectionSecretToRef这是 KubeVela 云服务组件Terraform 类型的关键约定。仓库设计文档 cloud-resource-data-passing.md 对这一机制有完整阐述KubeVela 通过 Terraform Controller 在 Kubernetes 环境内供给云资源。对于云数据库等场景需要把连接信息传递给相关的工作负载这些连接信息由 Terraform Controller 创建并保存在 Kubernetes Secret 中。其核心机制为当Configuration云资源就绪后Terraform Controller 会按照writeConnectionSecretToRef指定的name与namespace把资源输出的连接字段如数据库地址、账号、密码、集群 kubeconfig 等写入一个 Kubernetes Secret应用侧工作负载再通过引用该 Secret 的名称与键来消费这些信息。针对数据如何到达工作负载设计文档归纳了两种方法、两种位置的四种组合方法 / 位置本地集群托管集群Pass Secret传递 Secret✅✅Pass Value直接传递值✅未实现Pass Secret示例文档采用的方式Secret 对象在目标集群创建工作负载在 Application 中直接引用 Secret 名与键。以alibaba-rds为例参见 application-rds.yaml 与设计文档中的完整示例配合service-binding运维特征即可把数据库连接信息映射为业务容器的环境变量traits: - type: service-binding properties: envMappings: DATABASE_HOST: secret: db-conn key: DB_PUBLIC_HOST DATABASE_NAME: secret: db-conn key: DATABASE_NAME DATABASE_USER: secret: db-conn key: DB_USER DATABASE_PASSWORD: secret: db-conn key: DB_PASSWORD回到alibaba-ack场景writeConnectionSecretToRef.name: ack-conn意味着 ACK 集群创建完成后其 kubeconfig / 集群凭证会被写入名为ack-conn的 Secret后续任何需要访问该集群的工作负载都可以基于这个 Secret 完成认证与接入。Pass Value不在目标集群创建 Secret而是在 workflow 中读取 Secret 值通过组件级 input/output 机制把连接信息直接注入工作负载 spec。设计文档特别指出apply-component步骤可以把 workflow 级 output 传给组件级 input但它只对本地集群生效因此该方式无法用于托管集群场景。五、实战落地从安装到消费的完整路径1. 安装 Terraform 相关 addon使用alibaba-ack组件前先确保terraform与terraform-alibaba两个 addon 已安装后者声明依赖前者并配置好阿里云账号的访问凭证AK/SK。插件部署到控制面集群后alibaba-ack组件定义即被注册到vela-system命名空间。2. 确认组件可用alibaba-ack组件定义带有type: terraform标签因此可用 CLI 过滤确认其存在。仓库 e2e 测试 registry_test.go 中就有对应断言vela comp --label typeterraform测试期望该命令输出中包含alibaba-ack且不包含非 Terraform 的raw组件这验证了标签过滤 → 列出已安装组件这一可复现的排查路径。3. 提交 Application将示例文档中的 YAML 保存后提交到集群即可kubectl apply -f ack-cloud-source.yamlKubeVela 应用控制器会完成渲染组件定义 → 生成terraform.core.oam.dev/v1beta1的Configuration→ 交给 Terraform Controller 申请 ACK 集群的完整链路集群就绪后连接信息自动落入vela-system/ack-connSecret。4. 用 vela show 生成可复用的参数参考按 def-doc README 的说明这类示例不仅用于生成官方参考文档也可通过vela show alibaba-ack查看组件定义的完整参数包括实例规格、节点配置等未在示例中显式给出的可选字段从而按需扩展properties。六、小结与进一步阅读alibaba-ack示例虽短却浓缩了 KubeVela 云服务组件的完整模式一个type背后是一个 Terraform 驱动的ComponentDefinition一份properties.writeConnectionSecretToRef声明了一段可被其他组件消费的连接信息。从组件定义terraform-alibaba-ack.yaml到数据传递机制cloud-resource-data-passing.md再到 CLI 验证registry_test.go仓库内证据链完整读者可据此照搬使用。想进一步深入可继续阅读同族组件示例alibaba-rds.eg.md、alibaba-oss.eg.md真实场景样例cloud-resource-provision-and-consume 目录下多份供给 消费组合示例如 application-aws-s3.yaml、application-vpc.yaml数据传递设计文档cloud-resource-data-passing.md含 Pass Secret / Pass Value 的完整组合矩阵与示例。赞分享云原生DevOps运维微服务【免费下载链接】kubevelaThe Modern Application Platform.项目地址https://gitcode.com/gh_mirrors/ku/kubevela点击查看免费下载相关推荐KubeVela 中使用 alibaba-oss 组件声明式创建阿里云 OSS Bucket 实战指南KubeVela 中使用 alibaba oss 组件声明式创建阿里云 OSS Bucket 实战指南 导读 本文围绕 KubeVela 内置的 alibaba云原生DevOps运维微服务KubeVela 云资源交付实战使用 alibaba-vpc 组件一键编排阿里云 VPCKubeVela 云资源交付实战使用 alibaba vpc 组件一键编排阿里云 VPC 导读 本文围绕 KubeVela 内置 Terraform 云资源组云原生DevOps运维微服务KubeVela 中使用 alibaba-redis 组件交付阿里云 Redis 云资源配置详解与 Terraform 机制剖析KubeVela 中使用 alibaba redis 组件交付阿里云 Redis 云资源配置详解与 Terraform 机制剖析 导读 本文围绕 KubeVe云原生DevOps运维微服务上一篇AI Scientist-v2结果评估终极指南如何判断AI生成研究的质量与可信度下一篇终极前端支付集成指南Stripe和Alipay完整配置教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Jev照片修复模型实测:低显存部署与滑动窗口Transformer原理 2026/9/28 7:33:56

Jev照片修复模型实测:低显存部署与滑动窗口Transformer原理

最近我的信息流几乎被同一个名字刷屏:Jev。群里在讨论,技术社区在晒效果图,连一些摄影后期博主都开始拿它修老照片。如果你之前没听过,可以把它理解成一个正式开放、可本地部署的照片修复模型:老照片翻新、划痕修复、模…

阅读更多 →
AI开发入门:环境配置与Prompt模板实战记录 2026/9/28 7:33:56

AI开发入门:环境配置与Prompt模板实战记录

刚接触AI开发的同学,十个里有八个第一周就想放弃,原因不是模型太复杂,而是卡在两个最基础的地方:环境装不上、装上了又不知道怎么跟AI有效对话。我见过太多人把时间浪费在“pip install报错”“模型输出乱七八糟”这些和核心目标无…

阅读更多 →
EasyMDE 封装指南:Vue 2/3 v-model 双向绑定与防抖优化实践 2026/9/28 7:33:56

EasyMDE 封装指南:Vue 2/3 v-model 双向绑定与防抖优化实践

如果你负责过任何一个以内容创作、博客后台或富文本输入为核心的功能,大概率逃不掉给项目接入一个 Markdown 编辑器。这个组件选型问题看着简单,真正做起来却一波三折——尤其是当你的组件需要同时兼容 Vue 2 和 Vue 3 的工程,或者在 Vue 3 里…

阅读更多 →
飞腾E2000/D2000 Buildroot编译迁移Debian实践指南 2026/9/28 7:33:56

飞腾E2000/D2000 Buildroot编译迁移Debian实践指南

这篇文章拖了两周,不是没空写,而是想把手里这套飞腾平台的 Buildroot 编译方案彻底跑顺再发出来。起因很简单:公司新项目要求把所有开发宿主环境统一到 Debian,而我之前给飞腾 E2000/D2000 编译系统镜像一直是在 Ubuntu 20.04 上完…

阅读更多 →
ASRPRO进阶开发:串口通信、多线程与ADC采样实战解析 2026/9/28 7:33:56

ASRPRO进阶开发:串口通信、多线程与ADC采样实战解析

手上有个智能语音盒子的小项目,功能不复杂:用户喊一声“打开风扇”,它就响应;喊“当前电压”,它得用语音报出电池电压。开发板用的是一块基于天问Block开发的ASRPRO语音芯片模块,离线识别、语音播报这块确实…

阅读更多 →
Univer 实战:基于 Canvas 与 Node.js 构建可协同在线表格 2026/9/28 7:33:50

Univer 实战:基于 Canvas 与 Node.js 构建可协同在线表格

1. 从“univer”这个标题说起:它到底是什么,能解决什么问题第一次看到“univer”这个词,很多人会以为是“universe”的缩写,或者某个新出的前端框架。实际上,Univer 是一个开源的、面向电子表格与文档场景的通用前端解…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉