惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
S
Securelist
博客园 - Franky
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
IT之家
IT之家
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
The Cloudflare Blog
云风的 BLOG
云风的 BLOG
N
News and Events Feed by Topic
AI
AI
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Schneier on Security
Schneier on Security
Attack and Defense Labs
Attack and Defense Labs
Vercel News
Vercel News
腾讯CDC
Google DeepMind News
Google DeepMind News
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
M
MIT News - Artificial intelligence
WordPress大学
WordPress大学
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
N
Netflix TechBlog - Medium
量子位
S
Schneier on Security
Hacker News: Ask HN
Hacker News: Ask HN
Cyberwarzone
Cyberwarzone
S
Security Affairs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
N
News and Events Feed by Topic
T
Tenable Blog
PCI Perspectives
PCI Perspectives
MyScale Blog
MyScale Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Cyber Attacks, Cyber Crime and Cyber Security
W
WeLiveSecurity
N
News | PayPal Newsroom
P
Proofpoint News Feed
O
OpenAI News
C
CERT Recently Published Vulnerability Notes
B
Blog
Cisco Talos Blog
Cisco Talos Blog
Microsoft Security Blog
Microsoft Security Blog
V
Visual Studio Blog
MongoDB | Blog
MongoDB | Blog
大猫的无限游戏
大猫的无限游戏
A
Arctic Wolf
Y
Y Combinator Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Spread Privacy
Spread Privacy

Coding

请教一下各位佬 GPT 一直 401 是什么情况? - V2EX 天翼云 glm5.1 codingplan 官方玩不起,强制终止用户的包月续订 - V2EX 字节的 CodingPlan 实锤虚假宣传 - V2EX 现在有什么优雅的使用 ai 工具编程的方法? - V2EX MiniMax-M2 截到 11.07 限时免费 - V2EX VibeCoding 导致损失 1100 刀 - V2EX rpc 服务中,“业务错误”的返回应该如何设计? - V2EX 科班大学计算机专业主要课程有哪些呢 - V2EX 你们公司用上 ChatGPT 了吗?有哪些使用场景 - V2EX Cloud Studio 内核升级之专注体验 - V2EX 行云流水| CI 3.0 云原生构建全新上线 - V2EX ​Cloud Studio 云端开发保障企业源代码安全 - V2EX 更高效便捷的开发体验——Cloud Studio 编辑器命令行工具 - V2EX Cloud Studio 内核升级之持续优化 - V2EX Cloud Studio 有“新”分享 - V2EX 怎么设计面试题,能考查到实战能力? - V2EX 有奖征文丨 [玩转 Cloud Studio] 第二季来啦! - V2EX Cloud Studio 一个好用的在线编程工具 - V2EX 线上直播 | 未来金融研究所——以应用为中心,重塑金融研发效率 - V2EX 新一代 CI 即将到来! - V2EX 重磅发布! Orbit 云原生应用全生命周期管理工具上线啦! - V2EX 腾讯云, DevOps 领导者! - V2EX 各位是如何批量管理项目中的 shell 脚本的? - V2EX CODING DevSecOps 助力金融企业跑出数字加速度 - V2EX CODING 正式入驻腾讯会议应用市场! - V2EX CODING DevOps 助力中化信息打造新一代研效平台,驱动“线上中化”新未来 - V2EX 叮! Techo Day 腾讯技术开放日如约而至! - V2EX 程序员在公司该怎么保护自己的个人劳动成果? - V2EX Next.js 在 Serverless 中从踩坑到破茧重生 - V2EX [高效开发] 不止面对面, Cloud Studio 推出 MetaWork 云协作套件 - V2EX CODING 公开课火热报名中! - V2EX coding.net 502 - 2022 年 3 月 21 日 - V2EX 发现 coding.net 会对 1 年未登录用户删数据 - V2EX CODING 携手 Thoughtworks 助力老百姓大药房打造”自治、自决、自动”的敏捷文化 - V2EX 迷雾中的自动化测试体系建设 - V2EX Nocalhost:云原生开发新体验 - V2EX 使用 Nocalhost 开发 Kubernetes 中的 APISIX Ingress Controller - V2EX CODING x 百果园,水果零售龙头迈出 DevOps 体系建设第一步 - V2EX CODING 与悬镜安全达成战略合作,引领 DevOps 向 DevSecOps 创新模式升级 - V2EX Apache Log4j 2 报高危漏洞, CODING 联手腾讯安全护卫软件安全 - V2EX WePack —— 助力企业渐进式 DevOps 转型 - V2EX 大型前端项目 DevOps 沉思录 —— CI 篇 - V2EX CODING 代码资产安全系列之 —— 构建全链路安全能力,守护代码资产安全 - V2EX 一页纸需求的应对方法 —— 五步法 - V2EX Nocalhost 为 KubeSphere 提供更强大的云原生开发环境 - V2EX 喜报! Nocalhost 成功加入 CNCF 沙箱 - V2EX CODING 项目协同 2.0 —— 让协作有条不紊 - V2EX 赋能“数字金融”, CODING 再下数城 - V2EX 打造数字化软件工厂 —— 一站式 DevOps 平台全景解读 - V2EX 做云原生时代标准化工具,实现高效云上研发工作流 - V2EX
Nocalhost —— 让云原生开发回归原始而又简单 - V2EX
CodingNET · 2021-11-24 · via Coding

本文为 CODING Nocalhost 研发负责人王炜在腾讯云 CIF 工程效能峰会上所做的分享。文末可前往峰会官网,观看回放并下载 PPT 。

大家好,欢迎参加 CIF 大会,今天我跟大家分享的内容是:破解 Kubernetes 应用开发困局。首先做个简单的自我介绍,我是来自腾讯云 CODING DevOps 的王炜,目前是 Nocalhost 项目研发负责人,同时也是 CNCF 大使。话不多说,让我们进入正题。

这次分享主要分为五个方面:

  1. 首先是 K8s 环境下的开发困局;
  2. 以及主流的云原生开发方式;
  3. 接下来是实现容器应用和热加载的原理;
  4. 开发和调试演示,这里会用一个 Demo 来进行演示;
  5. 最后是开源共建和展望。

首先是第一部分:K8s 环境下的开发困局。提到云原生开发,我们就不得不先从 Docker 开始说起。当我们的微服务越来越多,运行环境越来越复杂的时候,Docker 镜像为我们提供了很好的解决方案。但是当镜像和容器越来越多,服务的编排就成为了一个难题。这时候也出现了很多方案,例如 K8s 、Docker Swarm 等等。当然 K8s 已经几乎成为了事实标准,也成为了容器编排的首选方案,然而这个事实标准提供的能力却是面向运维的。例如,我们可以通过 Liveness 和 Readiness 定义服务的自动恢复机制,通过 Resource 定义资源用量等。这些定义其实对开发人员来说是增加了极大的额外负担,也造成了开发和调试两难的问题。

此外云原生的技术栈跨度非常大,这就对开发人员提出了更高的要求,这也要求团队对云原生架构设计也需要更加符合业务的需要。所以总体而言,对企业来说,招聘和用人的成本也更高了。

下图是一张 CNCF 云原生应用开发的全景图,我们会发现云原生开发工具这一环节目前仍然是缺失的。云原生开发这么难,那么主流的开发方式又是什么呢?或者说我们现在是怎么解决问题的?

经过总结,目前云原生开发方式主要有以下四种。

  1. 全手工的流程。例如手工构建以及推送镜像,修改镜像版本,并且等待调度生效。我们把每次查看编码效果称为编码的反馈循环,这种开发方式编码的反馈循环大概需要十分钟一次,这是非常漫长的过程。

  2. 全自动的流程,也就是把手动的环节变成了自动。这种方式显然会更快一些,但是它的反馈循环也只是缩短为了五分钟左右一次。

  3. 第三种是对云原生比较了解的团队经常会使用的方案,也就是使用 Telepresence 这款工具来开发。Telepresence 主要是打通本地和集群的网络,使开发者能够在本地进行开发。这种开发方式把编码的反馈循环降低到了 10 秒 1 次,但是因为开发服务以源码的方式运行在本地,这种方式有一定的限制,我将在后文深入讲解。

  4. 第四种是使用 Nocalhost ,直接在容器里开发。这种方式可以摆脱 Telepresence 在某些场景下的使用限制。

接下来我们详细聊一聊以 Telepresence 为代表的网络打通方案的使用限制。首先它最大的限制是本地环境和工作负载的运行环境有很大的差异,这就导致业务源码很难在本地运行。比如说业务在 K8s Manifest 里声明了 configmap 、secret 、volume 的挂载等等,这些很难在本地重建。其次还有环境方面的差异,以及跨平台,比如说像 Linux 和 Windows 之间的这些平台差异,以及在部分场景下的网络限制。

说了这么多,相信大家也能够理解,在 K8s 环境下开发的最大问题是:每次编码查看效果都需要重新构建镜像,这就导致了长时间的无效的等待。有没有不需要重新构建镜像的方案呢?答案是肯定的。如果我们能在容器里实现进程或者是应用的热加载,每次编码之后可以实时生效,我们是不是就不需要重新构建镜像了呢?

接下来我们继续探讨这种方式的实现原理和方案。首先从 Dockerfile 说起。Dockerfile 里定义了容器的启动命令,一般来说,这是业务进程的启动方式。例如运行一个可执行文件,如果我们进入容器内执行 PS 命令,会发现这个进程对应在容器里面,也就是 PID = 1 的进程。我们以 Go 应用为例,如果让这个 PID = 1 的进程替换为以源码的方式运行,go run main.go 这种方式,我们是不是就可以实现应用热加载,并且修改代码后只需要重新运行这条命令,就可以看到代码效果呢?

我们思路没有错,但是如果要实现这个方案,还需要三个条件。第一是容器的源码从哪里来?除了脚本型语言以外,一般的业务容器都没有源码;第二是以 Go 应用为例,编译的环境从哪里来?我们知道一般情况下构建的业务容器,因为存储大小的考虑,会保持最小的可运行环境;第三,如果将 PID = 1 的进程替换掉之后,怎么阻止容器 Crash ?

我们分别来看如何解决这些问题。首先第一点源码问题,我们可以从本地同步到容器里来解决;第二是编译环境,我们可以把运行中的业务镜像,替换成具有编译环境的开发镜像,就能够提供编译环境;第三,我们可以将 PID = 1 的进程替换为一个阻塞的进程,这三个问题就解决了。当我们实现这些方案后,容器其实已经具备了热加载的基础,Nocalhost 的原理正是基于上述的方案来实现的。接下来我会用一个 Demo 来演示应用的热加载和一键 Debug 的效果。

Nocalhost 提供了 VSCode 插件和 JetBrains 的全系列插件,只要安装就可以立即使用。接下来我将以 Golang 的为例,演示开发 Demo 项目 Booking for 。

[请点击文末阅读原文,前往 CIF 峰会「开源生态与效能提升」专场 - 《破解 Kubernetes 应用开发困局》,于 08:00 处观看 Demo 演示]

容器应用的实时热加载以及一键调试的演示到这里就结束了,感兴趣的同学可以按照 Nocalhost ( nocalhost.dev )官网的 Quick Start 指导动手来试一试。

通过演示相信大家已经理解 Nocalhost 带来的全新云原生的开发体验。最后一部分我将与大家分享开源共建和展望。Nocalhost 目前是一个完全开源的项目,代码托管在 GitHub 上,已经有 900+ star ,同时也是 CNCF Landscape 项目,并且被收录在云原生全景图当中,也欢迎大家关注和贡献。

关于展望,在这次的分享中,我介绍了 Telepresence 和 Nocalhost 两种开发方式,它们在解决问题的思路上其实是各有不同的,你可以根据自己的业务情况选择一种方法来使用。此外 Nocalhost 提供了完整的开发环境和开发过程的管理能力,对于希望统一管理开发环境的团队,则可以安装 Nocalhost Server 来集中管理开发集群、应用、以及开发环境,当然 Server 也是开源并且免费的,我在这里提供几张 Server 的截图,感兴趣的同学可以遵循官方文档进行安装以及使用。

我的分享到这里就结束了。欢迎大家访问 Nocalhost ( nocalhost.dev )官网,并根据官方文档进行安装和试用,谢谢大家。

点击此处链接,观看 CIF 峰会回放