Go 代码城市上云——KusionStack 实践

Halcon深度学习2 -- 标注工具Deep Learning Tool下载安装 Deep Learning Tool为Halcon开发公司MVTec官方提供的一款标注工具: 标记培训数据是任何深度学习应用程序的关键的第一步。 当涉及到应用程序的性能,准确性和健壮性时,此标记数据的质量起着重要作用。 借助MVTec深度学习工具,我们正在为HALCON用户创建全面流畅的深度学习体验。 通过开发我们自己的解决方案,我们确保可以将其输出无缝集成到HALCON中。 该应用程序还使我们能够吸收在开发HALCON深度学习算法时获得的丰富经验和专业知识,而该算法自然也涉及很多标签! Deep. 阅读详情

1969739865fea92c91fb521843ff53a1.gif

导语

KusionStack

KusionStack 是面向 Kubernetes 云原生场景的 IaC 配置代码化实践的开源一站式可编程协议栈。其基本思想是让「应用方+平台方」的同学能够共同基于 IaC 构建的 Konfig 模型库同一平面进行 DevOps 协同工作。今天我们和大家分享一个好玩的 Go 代码城市应用,以及 KusionStack 是如何一键将其部署到 K8s 云原生环境的。

KusionStack 项目主仓库:

‍https://github.com/KusionStack/kusion

PART. 1

什么是代码城市(CodeCity)

CodeCity 代码城市是瑞典工程师 Richard Wettel 开发的创意应用,可以通过类似数字城市的视觉形式展示和度量代码的复杂性。其效果如图:

dcb82767f568b911aabfc79b39e0951e.png

在 3D 形式展示的代码城市中的中心地标非常直观——最大、最高的建筑总是容易追踪的焦点。因为这个极具特色的创意,CodeCity 获得了 2008 年的"Riconoscimento ated-ICT Ticino" 一等奖,同时也可以免费用于非商业的科研和学习用途。

今天要展示的 GoCity 是 Go 语言版本的代码城市,我们可以通过这种方式评估 KusionStack 等 Go 语言项目的代码复杂度。也可以通过在线的 GoCity 查看 KusionStack/kusion 仓库的展示效果。

PART. 2

本地执行 GO 代码城市

之前的 GoCity 还是在 2021 年 10 月更新的,在最新的 Docker 和 Go1.18 环境有一些小问题,还好 KusionStack 相关同学为其提交了补丁进行了修复(这也是开源项目的魅力所在,也希望开源社区小伙伴能够参与 KusionStack 的共建),现在可以执行以下命令安装:go install github.com/rodrigo-brito/gocity@latest。然后通过 gocity open 打开 Github 或本地仓库。

- 比如打开本地的 KusionStack/kusion 仓库


 
$ gocity open $HOME/go/src/github.com/KusionStack/kusion
INFO[0000] Visualization available at: http://localhost:4000/#/local

- 然后浏览器打开对应页面

02d4674031dfcde4f3fc5d5aeea9658a.jpeg

本地执行一切正常!

PART. 3

Go 代码城市一键上云

作为一个类似数字城市的应用,在云原生、元宇宙等背景下,部署上云也是一个自然的需求。同时我们也希望通过 GoCity 展示下 KusionStack 的基本用法。在 GoCity 上云之前,我们先尝试如何本地执行该应用。

相应的容器镜像已经推送到 Docker Hub(https://hub.docker.com/r/yuanhao1223/gocity),运行命令如下:

docker run -d -p 4000:4000 yuanhao1223/gocity:latest

运行成功后,可打开本地地址(http://localhost:4000/)查看 Go 项目的数字城市 3D 效果。

容器化成功后,现在准备上云。从本地执行容器的方式可以看出,想要在 Kubernetes 部署,至少需要 Deployment 和 Service 两种资源。其中 Deployment 用来部署 Go 代码城市,Service 暴露端口,访问无状态应用。

首先参考安装文档(https://kusionstack.io/docs/user_docs/getting-started/install/)安装好本地 Kusion 命令,然后通过 kusion init 的在线仓库提供了相应的模板。Kusion 命令支持一键初始化配置:

kusion init --online

输出类似以下信息:

c383eabda0991a6585e00407cc846787.png

为了方便展示,Kusion 模板已经内置了 CodeCity 的例子。其中 code-city 模板依赖 konfig 大库中抽象化的前/后端模型,code-city 模板无依赖,可以自闭环。我们选择后者:

b6f91cd11b3e280d5434ab14f053a65f.gif

初始化过程中,指定了容器镜像,并且容器端口和 Service 端口均为 4000,现在进入配置目录,目录结构如下:

code-city-kcl
├── main.k
├── pkg
│   └── app.k
├── project.yaml
└── stack.yaml

- 完整的代码可以参考 :

https://github.com/KusionStack/kusion-templates/tree/main/code-city-demo

为了方便本地测试,可以通过 minikube start 本地启动 MiniKube 服务。然后命令行模式切换到 code-city-kcl 目录,然后执行 kusion apply 命令生效配置。到此,开始正式上云:

kusion apply main.k

输出类似于:

cf70505d989756f72dc7f6602d86fe02.gif

检查 Deployment 的状态:

kubectl get deploy gocity

输出类似于:

NAME     READY   UP-TO-DATE   AVAILABLE   AGE
gocity   1/1     1            1           85s

使用 kubectl 端口转发:

kubectl port-forward svc/gocity 4000:4000

访问本地地址( https://localhost:4000/),点击 Example 处的链接 “KusionStack/kusion”,可以看到和本地执行一样的效果:

2267b48ddb52fb4fb2adafe69dee4218.gif

至此,完成了 Go 代码城市的一键上云。有兴趣的读者,可以基于模型库 Konfig,选择其他模板,探索 KusionStack 支持的其它运维场景,下面我们将探索代码城市内部的原理。

PART. 4

认识数字城市中的建筑含义

说实话代码城市第一眼看上去更像一个电路板,要理解其中的含义需要了解几个基本的参数映射关系,如预览页面的右下角图所示:

deba96ea0fb2955e8d1ea22beb5ecf95.jpeg

以上的对应关系在其官方文档中也说明,如下图所示:

cb46aef8f19bf11aa2fd466366f9ec0a.jpeg

其中地面的粉红色表示 Go 包对应的目录(因为包的依赖关系可能再产生叠加),灰色表示目录内部的文件,而蓝色表示结构体。其中表示文件的灰色建筑物的大小即文件的大小,表示结构体的蓝色建筑物的高度即方法的数量,建筑物的长宽表示结构体中属性的数量,蓝色颜色的深度表示相关代码行数。

我们可以选择 DiffOptions 结构体对应建筑物查看其相关的属性参数:

69dc04c8ded745cdd3479f55c7183384.jpeg

可以看到该结构体中有 15 个属性、3 个方法、共 156 行代码。通过点击其中的 “Github 链接” 按钮可以跳转到对应的位置:

421552c6bd5f775df4cd0758da44605d.jpeg

因此通过这种方式我们可以很容易查看全局有无特别高大的建筑,从而判断是否存在某些文件和结构体的代码需要改进。可以说 GoCity 是一个很有趣的代码分析工具,甚至可以集成到 Github PR 代码评审流程中。

PART. 5

分析 GoCity 的代码架构

GoCity 代码架构主要分为代码数据提取和前端模型展示两块,如图所示:

e34ddfc857b1adeaed7bc4bd32b85a75.jpeg

首先 Codebase 表示要展示的代码,通过 Git Service 被拉取,然后通过 Parser 和 Position 服务提取得到对应的参数信息,然后通过前端展示。Go 语言代码主要集中在模型数据提取部分,而前端展示主要为 JS 等实现。前端展示资源文件通过 embed.FS 内嵌到程序中,GoCity 命令启动 Web 服务展示页面。代码架构比较清晰,也是一个比较理想可用于 Go 语言学习的开源项目。

PART. 6

展望

我们通过 KusionStack 的方式,配合少量的 KCL 配置代码,完成了 Go 代码城市一键上云的操作。虽然云上的 Go 代码城市和本地的版本看不出什么区别,但是云上程序的整个生命周期管理将大为不同。在后面的例子中我们将展示如何通过 KusionStack 结合 KCL 配置语言进行 IaC 方式的云原生应用的运维操作。感谢关注🙏

参考链接

● https://github.com/KusionStack/kusion

● https://github.com/KusionStack/examples

● https://github.com/rodrigo-brito/gocity

● https://wettel.github.io/codecity.html

 了解更多...

KusionStack Star 一下✨:
https://github.com/KusionStack/Kusion

   本周推荐阅读  

0b3d750488f9c4201261b4e32ed3c1ae.png

KusionStack 在蚂蚁集团的探索实践 (上)

a5c2193e31aa729906b4ed2df73c4e4e.png

Kusion 模型库和工具链的探索实践

2d2f426d817875efd586c53925f17499.jpeg

精彩回顾|KusionStack 开源啦~

ff4f9a4359e178dfde8af22fdf77f0a1.png

历时两年,打破“隔行如隔山”困境

81e8670f45b81718712f3fac88eec4dd.jpeg

地平线J6的基础简介 地平线J6M芯片:面向中阶辅助驾驶市场的高性价比芯片 阅读详情

相关推荐

VisionMaster位置修正功能深度解析:如何让找圆工具自动跟随移动目标?

本文深度解析海康威视VisionMaster平台的位置修正功能,重点介绍如何通过模板匹配与找圆工具的智能联动实现移动目标的动态追踪。文章详细阐述了工业视觉检测中的坐标系同步原理、模板匹配配置技巧及异常处理策略,为工程师提供了一套完整的工业级解决方案。

uu89012的博客 281

KusionStack 是什么?

KusionStack 是蚂蚁开源的云原生可编程技术栈!一、KusionStack 的目标愿景KusionStack 是一个可编程、高灵活性的应用交付及运维技术栈,灵感源于融合(Fusion)一词,旨在帮助企业构建的应用运维配置管理平面及 DevOps 生态。融合专有云,混合云,多云混合场景融合以云原生技术为主,同时采用多种平台技术的混合平台技术选型融合多项目、多团队、多角色、多租户、多环境的企业...

光谷码农 949

ESP8266红外控制美的空调:从协议解析到Home Assistant集成

红外遥控技术作为一种经典的非接触式控制方式,其原理是通过红外发光二极管发射经过特定频率调制的光信号来传递指令。在物联网和智能家居领域,利用微控制器如ESP8266模拟红外信号,成为将传统家电接入智能生态系统的关键技术。这项技术通过精准解析和生成符合设备厂商私有协议的红外编码,实现了对空调、电视等设备的远程与自动化控制,具有很高的实用价值。本文聚焦于美的空调的红外协议,深入探讨了其脉冲宽度调制(PWM)和全量式编码的特点,并提供了基于ESP8266的完整解决方案,包括硬件连接、库函数API详解以及如何将其无缝

weixin_30718391的博客 402

KusionStack 开源有感|历时两年,打破 “隔行如隔山” 困境

本文撰写于 KusionStack 开源前夕,作者有感而发,回顾了团队从 Kusion 项目开发之初到现今成功走上开源之路的艰辛历程。当中既描述了作者及其团队做 Kusion 项目的初心和项目发展至今的成果,也表达了作者自身对团队的由衷感激,字里行间都散发着真情实感。...

金融级分布式架构 462

Robot Arm 机械臂源码解析

由于我们用的是步进电机,运动的时候是一步一步的,并不是平滑的,这里假设在一个平面上面,一个x步进电机,一个y步进电机。那么放大它们所走的轨迹就会是阶梯状的。而它们也只能沿着网格运动。相当于有了一个最小的分辨率,这个分辨率就是一步。如下图所示,如果x,y电机同时走就能走出45度的斜线。在三维空间里面运动也是如此,你应该可以想象的出来;首先,是updateActualPosition,用来时时更新此时的差补位置,得到的是一个路径与时间t的函数(其中路径的范围为0,1,时间范围为0,dist/v)...

爱吃炸鸡的小猪's blog 1万+

Bentley二次开发教程28-交互窗口-案例实战2-EC属性赋值工具

该工具会根据用户输入的路径获取Schema文件的路径,然后通过路径读取对应的Schema文件并在树状图中显示EC类,当用户选择树状图上的节点时,此时会触发事件,根据EC属性添加用户自定义控件用于显示EC属性并可对其进行赋值操作。完成后选取元素,点击界面上的应用,此时元素会被赋予指定EC类,同时修改的EC属性值也会被同步赋予。该工具涉及到的WinForm控件有:TextBox,Button,TreeView,Panel,UserControl(用户自定义控件)。

不见不散的博客 1474

KusionStack使用文档

如果想自定义默认安装版本,可以运行下述命令(将最后的 open@latest 替换为你想要默认安装的版本号就就行): 该脚本执行后会创建 $HOME/.kusionup 目录,该目录下会包含:执行完安装脚本后,默认已经安装好了 kusionup 和一个默认的 kusion 版本,你可以通过执行 kusionup 查看已安装的所有版本: 执行 kusionup ls-ver 列出来自内置安装源中的所有可安装的 **kusion** 版本: 执行 kusionup install $VERSION

王大雏的博客 417

MIMIC数据库简介

一 、MIMIC简介 MIMIC(Medical Information Mart for Intensive Care),是一个大型的公开数据库。该数据库记录了2001年至2019年期间贝斯以色列女狄肯斯医疗中心重症监护病房患者的相关数据,拥有4万多名患者的医疗健康数据和记录。 MIMIC数据库记录了人口统计学信息,如病人的性别、身高、宗教等情况。记录了实验室检验信息,如血常规,肝功能,肾功能等实验室检测数据。记录了患者的用药信息,如高血压患者服用了治疗高血压类药物等。记录了护理人员以及患者的护理级别等。

越努力 越幸运 1万+

Rust源码剖析:Lint - CombinedLintPass

摘要:前一篇文章 介绍了关于 Lint 和 LintPass 的一些概念和实现。基于这些结构,提供了一个简易的 Lint 检查的实现方式。本文主要介绍 CombinedLintPass 这一结构的实现,并基于 CombinedLintPass 进一步优化 Lint 的实现。背景在 KusionStack 技术栈中, KCL 配置策略语言是重要的组成部分之一。为了帮助用户更好的编写 KCL 代码,我...

光谷码农 1237

23、OpenMP常见用例与标准循环级示例详解

本文详细介绍了OpenMP的三种典型用例:循环级OpenMP、高级OpenMP和MPI+OpenMP,适用于不同层次的并行需求。重点讲解了循环级OpenMP在向量加法、流三元组和模板计算中的应用示例,并探讨了首次触摸优化、线程绑定、NUMA架构影响等关键性能优化策略。通过实际代码演示和性能分析,帮助开发者快速掌握OpenMP的基础并行化方法,并为后续高性能优化提供指导。

fanta的博客 87

Sigrity Power DC Resitance Network Model Generation模式生成电阻SPICE模型操作指导

Sigrity Power DC Resitance Network Model Generation模式是用于提取负载每个pin电阻SPICE模型的,结果以spice网表形式展现,仍然以Motherboard.spd为例进行说明。目的是模拟实际情况,via的孔壁电镀1mil,中间是空心的,让via不完全被填充金属成为实心via。Upper/lower Tolerance:上下公差,设置为5%,也就是压降允许的范围。P/F Mode:通过/失败模式,选择Worst,最差的情况。

weixin_54787054的博客 417

KusionStack 加入 CNCF Sandbox!

我们很高兴地宣布,KusionStack 项目在 2024 年第四季度通过了全球顶级开源基金会云原生计算基金会(CNCF)技术监督委员会(TOC)的评定,正式成为 CNCF 沙箱(Sandbox)项目。我们衷心地感谢所有参与整个过程的 CNCF 成员,感谢他们的宝贵指导,同时也感谢社区和团队的热情支持,让这一切成为可能。项目地址:https://github.com/KusionStack项目官网...

金融级分布式架构 280

K8s-K8s部署Zookeeper+Kafka+ELFK+持久化数据

K8s环境下容器化部署`Zookeeper+Kafka+ELFK`日志收集系统

✅ 专注企业级 Linux/DevOps 运维的实战派 ✅ 已输出上百篇可落地方案 ✅ Shell 脚本开箱即用 ✅ K8s/YAML 环境验证 ✅ 故障排查链路完整复现 1915

KusionStack GAIDC2023 活动回顾

2023年 2月25日至26日,由上海市经济和信息化委员会、中国(上海)自由贸易试验区临港新片区管理委员会、临港集团指导,上海市人工智能行业协会(SAIA)举办的GAIDC(全球人工智能开发者先锋大会)圆满落幕。在活动期间,KusionStack 也与广大参会者展开了一系列丰富多彩的交流互动。活动当天的精彩瞬间活动当天,KusionStack为参加开源集市的小伙伴们准备了精美的礼物。活动开始,前...

光谷码农 177

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

云上的硅基文明——GoCity上云实践

|导语|KusionStack 是面向 Kubernetes 云原生场景的 IaC 配置代码化实践的开源一站式可编程协议栈。其基本思想是让「应用方+平台方」的同学能够共同基于 IaC 构建的 Konfig 模型库同一平面进行 DevOps 协同工作。今天我们和大家分享一个好玩的 Go 代码城市应用,以及 KusionStack 是如何一键将其部署到 K8s 云原生环境的。KusionStack 项...

光谷码农 497

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

KusionStack DevJoy 开发者游园会活动回顾

2022 年 11 月 13 日至 29 日,由 Bytebase,WeWork,语雀联合主办的主题为「开发者生活方式」 的 DevJoy 游园会圆满落幕。在为期两天的活动内,KusionStack 也与上海的小伙伴进行了友好的线下交流,带领小伙伴们感受了一波丝滑的运维体验。活动当天的精彩瞬间我们为参加游戏的小伙伴们准备了丰富的奖品。活动开始,前来参与体验 KusionStack 的小伙伴们。参...

光谷码农 230

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

SOFA Weeekly | 开源人 、本周贡献 & issue 精选

SOFA WEEKLY | 每周精选筛选每周精华问答,同步开源进展欢迎留言互动~SOFAStack (ScalableOpenFinancialArchitecture Stack)是蚂蚁集团自主研发的金融级云原生架构,包含了构建金融级云原生架构所需的各个组件,包括微服务研发框架,RPC 框架,服务注册中心,分布式定时任务,限流/熔断框架,动态配置推送,分布式链路追踪,Metrics 监...

金融级分布式架构 284

KusionStack 开源|Kusion 模型库和工具链的探索实践

文|杨英明(花名:向野)KusionStack 核心贡献者蚂蚁集团高级研发工程师在基础设施技术领域深耕,专注IaC/XaC、GitOps 等方向本文4912字 阅读 12分钟前言KusionStackKusionStack 最早是为了解决蚂蚁内部复杂的运维场景而诞生的解决方案。思路是通过自研的 DSL(KCL)沉淀运维模型(Kusion Model),将基础设施部...

光谷码农 675

Todo-Tree完全指南:如何用ripgrep快速定位项目中的TODO标签

Todo-Tree是一款强大的VS Code扩展,它利用ripgrep快速搜索工作区中的TODO、FIXME等注释标签,并在活动栏中以树状视图展示结果。通过直观的可视化界面,开发者可以轻松追踪代码中的待办事项,提升项目管理效率。 ## 🌟 为什么选择Todo-Tree? 在大型项目开发中,分散在代码中的TODO标签常常被遗忘。Todo-Tree通过以下核心优势解决这一痛点: - **极速搜

gitblog_00446的博客 387

埋头苦干,曙光初现 —— KusionStack & KCL 的 2023 年终总结来啦!

HAPPY NEW YEAR元旦将至Dec.2023.12KusionStack 与 KCL 团队预祝大家新年快乐!新项目在过去的一年中,KusionStack 大家庭里又多了两个新项目,分别是Operating与Controller Mesh:KusionStack Operating 致力于提供满足 K8s 标准的云原生运维、链路可观测、资源可洞察等能力,支持对 Pod 进行增量配置和...

金融级分布式架构 314

探索MessengerKit架构设计:iOS聊天框架的最佳实践

MessengerKit是一款专为iOS平台打造的UI框架,旨在帮助开发者快速构建功能丰富、界面精美的聊天应用。作为一款专注于即时通讯界面的开发工具,它提供了灵活的架构设计和丰富的自定义选项,让开发者能够轻松实现类似iMessage的交互体验。 ## 为什么选择MessengerKit? 在移动应用开发中,聊天功能往往是最复杂的模块之一。从消息气泡的展示到键盘交互,从媒体文件的处理到实时状态的

gitblog_00079的博客 419

fastlane deliver 1.0 迁移指南:Deliverfile 参数重写、命令迁移与新版配置系统解析

> 本文基于仓库内 [deliver/MigrationGuide.md](https://link.gitcode.com/i/390bf678c23105526d6c172d7db7c484) 整理成文。该文档是 fastlane 工具链中 `deliver`(上传 App Store 元数据、截图与应用包的组件)在 **1.0 大版本重写**时期发布的官方迁移指南,记录了从旧版「Contin

gitblog_00912的博客 866

Kusion v0.13.0 发布啦,更丰富的命令行功能,还添加了对 AI 应用的支持!

Kusion v0.13.0 版本已发布!本次总共更新了超过14个新功能,9处问题修复以及13篇文档更新,截至目前 Kusion 已共计有28位贡献者 ????吉祥物小 K 同学带大家查收 v0.13.0 版本新特性团队一如既往地对不断壮大的 KusionStack 社区的宝贵贡献表示感谢,正是这些来自社区的贡献与反馈帮助我们达到了v0.13.0这一重要的里程碑。在这篇文章中,您将了...

金融级分布式架构 312

Kusion v0.11.0 发布——跨团队协同工作流全新升级

KusionStack 团队很高兴地向大家宣布,Kusion v0.11.0 版本已经发布啦!本次总共完成了超过 60 个新功能,19 处问题修复以及 14 篇文档更新;截至目前 Kusion 已共计有 20 位贡献者 ????吉祥物小 K 同学带大家查收 v0.11.0 版本新特性在这篇文章中,您将了解一些Kusion团队精心挑选的令人兴奋的新功能,这些新特性有望显著地影响跨团队协同工作流。新增...

金融级分布式架构 243

KCL:声明式的云原生配置策略语言

楔子: 以蚂蚁集团典型的建站场景为例,在接入 Kusion 后,用户侧配置代码减少到 5.5%,用户面对的 4 个平台通过接入统一代码库而消减,在无其他异常的情况下交付时间从 2 天下降到...

金融级分布式架构 987

SOFA Weekly | Kusion 开源啦、本周 QA、本周 Contributor

SOFA WEEKLY | 每周精选筛选每周精华问答,同步开源进展欢迎留言互动~SOFAStack(ScalableOpenFinancialArchitecture Stack)是蚂蚁集团自主研发的金融级云原生架构,包含了构建金融级云原生架构所需的各个组件,包括微服务研发框架,RPC 框架,服务注册中心,分布式定时任务,限流/熔断框架,动态配置推送,分布式链路...

金融级分布式架构 343
上一篇: SOFA Weekly|MOSN v1.1.0 版本发布、C 位大咖说、本周 Contributor & QA
下一篇: HAVE FUN | SOFA 飞船——Layotto 星球登陆计划
SOFAStack
博客等级 码龄7年 747粉丝 389原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值