Azure Kubernetes服务是如何让开发者更有效率的,kubernetes微服务实战Azure Kubernetes服务如何让开发者更高效?容器简化了应用程序的部署、扩展和操作。Kubernetes是一个安排和管理容器的平台,它集成了虚拟环境中不断增加的应用程序所需的组件。现代的应用程序开发方法已经接近贪婪的胃......
容器简化了应用程序的部署、扩展和操作。Kubernetes是一个安排和管理容器的平台,它集成了虚拟环境中不断增加的应用程序所需的组件。现代的应用程序开发方法已经接近贪婪的胃口,在构建容器和Kubernetes技术的开源社区中已经建立了一个强制性的功能。
Kubernetes生态系统仍然为在生产中有效运行复杂的容器化应用程序提供关键技术。但对于现在将使用容器的主流开发者来说,问题不是他们的应用是否应该在Kubernetes上运行,而是如何在Kubernetes上更有效地运行。
有了强大的Kubernetes核心,现在是容器和Kubernetes发展的下一个阶段。今天,开发者的经验将变得至关重要。这是Azure Kubernetes服务(AKS)架构师的核心信念。从构建和测试容器映像到调试和部署到生产线,AKS让开发人员的体验更加轻松。
微软的新AKS开发者工具反映了这种对开发者体验的重视。基于Visual Studio的开发工具简化了Kubernetes的开发工作流程。该工具为运行在Kubernetes上和基于复杂微服务的应用提供了更简单的开发环境、生产前测试、迭代开发和快速调试。
“在分布式系统时代,对于开发者来说并不容易。要让主流开发者能够使用容器和容器编排,构建分布式应用,我们还有很长的路要走。”微软Azure容器团队项目经理Gabe Monroy说。“业界一直专注于API和有原则的分层架构——这很好,我们需要这些——但并没有那么关注应用开发者的体验。如何才能让这个新世界的软件开发过程感觉和以前一样?
Kubernetes让开发者面临从构建到部署的一系列挑战。
不熟悉Kubernetes的开发者面临着很高的进入门槛。充分利用容器可能意味着数小时的研究。首先,他们学习如何编写Dockerfile,manifest和Helm diagram,使用Draft进行本地开发。然后他们一步一步的研究如何测试代码,构建到镜像中,链接到Brigade的持续集成工作流中,安全的部署到集群中,这需要创建审计日志,不能有任何意外的部署。
但是开发人员还需要设置他们的开发环境来处理容器,以便它们看起来、感觉起来和行为起来都像生产环境。它还必须与支持应用程序的所有其他微服务、容器和外部依赖项集成,这意味着在本地存根或模拟服务以匹配服务。在一个大型项目中,每个开发人员都必须花时间去做,即使他们可能只处理其中的一小部分。
此外,他们希望在自己的环境中使用熟悉且丰富的开发人员工具,使用日志以便能够为实时服务进行调试,并直接从IDE进行断点和快速部署,以便能够测试更改后的代码。
“你一定听说过这样一个行业梗。Kubernetes对开发者来说还是太难了。”蒙罗伊说。“我们一致认为这是下一代基础设施——没有人可以使用它,这很棒!”这是一种严肃的玩笑。
微软的Kubernetes开发工具
一次又一次,微软改变了不同领域开发者的体验,从Excel和Access到Logic Apps,现在又是新的Azure Dev Spaces服务,用于快速开发AKS。
微软的目标是支持现在使用容器的主流开发者。出于这个原因,该公司正在从其开发人员工具的历史和从Helm、Brigade和Draft等开源工具的创建中获得的知识中学习。微软也是Kubernetes上游项目的主要贡献者——Kubernetes的联合创始人Brendan Burns领导着微软容器集团——微软是云原生计算基金会(CNCF)的成员。
“微软作为一家以开发者为导向的公司的基因已经被激活,你将看到微软开发部门的全部力量将在CNCF世界释放出来,”蒙罗伊说。
在Akdev Spaces中调试微服务只需要5分钟。
在Kubernetes集群中,Dev Spaces为项目中的每个开发者建立了一个独立的沙盒空间。他们可以直接从熟悉的ide中使用这个空间,比如Visual Studio和Visual Studio代码(Windows、Mac或Linux),或者命令行。它们运行在线云Kubernetes集群上,使得开发环境就像生产环境一样,拥有app所需的所有依赖库、微服务和交互服务。没有权限或技能来设置这些服务的开发人员仍然可以测试这些在云中运行的服务。但它们直接进入代码所在的容器,独立调试迭代;不会影响其团队中的开发者。
使用名称空间隔离和多租户控制为Kubernetes集群设置隔离通常非常复杂;这只是开发空间中Azure访问模块附带的功能。但是因为AKS是一个完整的Kubernetes,所以Dev Spaces是使用原生Kubernetes概念实现的现有AKS集群的附加组件。你可以使用其他Azure服务或第三方工具。如果你想用Azure Key Vault或者Hashicorp Vault来注入秘密,不需要在代码中存储就可以生效。
但是与Visual Studio集成的好处是,除了容器和云服务的所有功能之外,开发人员还可以获得熟悉的工具和工作流的生产力。他们可以调试代码,从创建新项目到设置断点,然后单击F5,就像他们在自己的系统上运行代码一样。就像编写任何其他类型的应用程序一样,他们可以获得IntelliSense和新的IntelliCode AI支持来编写代码,甚至是Visual Studio Live Share的协作编辑。但是因为它们运行在AKS上,所以它们还可以看到容器运行的健康状态,并搜索生产日志以确定哪里出错了。一旦发现错误,他们可以修复它们,然后按F5键将这些更改直接发国际快递AKS并运行它们。
“随着世界已经接受了这些复杂的微服务环境,开发人员现在很难去环境中提高工作效率。”蒙罗伊指出。
当一个应用程序可以包含数百个微服务,并且每个微服务都有自己的数据存储安排时,修复一个服务中的错误就像大海捞针。对于开发人员来说,在笔记本电脑上设置一百个服务或者模拟它们和所有的备份存储是非常耗时的。只需设置他们的环境,以便他们可以找到并修复整个应用程序,而以前这需要一天的时间。现在,可能需要几周时间来准备处理复杂的分布式应用程序,如果开发人员能够正确设置的话。“Dev Spaces提供了用Azure账号操作的功能,你可以在五分钟内修复错误,”Monroy说。
在幕后,Dev Spaces同步代码中的更改,开发人员直接在本地工作到容器中。对于大多数更改,在更新时不需要重新构建和重新部署容器映像。这意味着开发人员不会在等待查看更改是否修复错误时丢失编码过程。对于Node.js开发者来说,每次检测到文件变化,nodemon都会自动为他们重启节点服务,只需要刷新浏览器就可以查看他们的新代码,会感觉很熟悉,效率也很高。
Monroy解释说,Dev Spaces使用服务网格路由允许开发人员调试非常复杂的分布式应用程序。通过向URL添加前缀,您可以指示服务网格将流量路由到正在开发的容器
“现有的开源生态系统中没有智能代码同步或流量路由,”蒙罗伊指出。“如果你在GKE上有一个应用程序,在GKE上使用Draft,那么你可以将相同的应用程序带到Azure,通过更快的迭代循环集成空间和流量路由,获得更好的开发空间体验。”
Visual Studio、Dev Spaces和AKS之间的紧密集成意味着,在Azure上使用Kubernetes的开发人员在开始使用云原生工具时,不会失去本地开发的生产力。
特别声明:以上文章内容仅代表作者本人观点,不代表ESG跨境电商观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与ESG跨境电商联系。
二维码加载中...
使用微信扫一扫登录
使用账号密码登录
平台顾问
微信扫一扫
马上联系在线顾问
小程序
ESG跨境小程序
手机入驻更便捷
返回顶部