Docker和Kubernetes应用程序打包:Metaparticle、Pulumi与Ballerina比较
\
本文要点
\\
- 随着微服务架构的出现,软件行业正向着云原生应用程序开发和部署发展。\\t
- Docker和Kubernetes是现代化云原生部署自动化的关键要素。\\t
- 目前常见的做法是借助容器创建可复制的应用程序包,但是,这涉及手工编写(和维护)YAML部署描述文件。\\t
- Metaparticle、Ballerina和Pulumi是三个开源项目,分别提供了自己的方法,解决Docker和Kubernetes应用程序部署中的应用打包问题。\\t
- 本文探讨了使用每种框架部署一个简单的“HelloWorld”应用所需要的步骤。\
\\
随着微服务架构的出现,软件行业正向着云原生应用程序开发和部署发展。双披萨团队、敏捷性、再现性、CI/CD在当前生产力快速创新的软件行业中扮演越来越重要的角色。
\\
Docker和Kubernetes是现代化云原生部署自动化的关键要素。常见的做法是借助容器把开发出的应用程序创建成可复制的应用程序包。Docker使开发人员能够创建可重复的运行时环境,并在其中使用一个简单、可重复的方式定义依赖和配置应用程序。Kubernetes是一个开源容器编排平台,使这些应用程序容器可以跨多个主机部署,并且提供了可扩展性和高可用性。这需要编写Dockerfile和Kubernetes YAML部署描述文件,这很痛苦,而且容易出错。
\\
Metaparticle、Ballerina和Pulumi是三个开源项目,分别提供了自己解决这个问题的方法。最近,我发现了三个讨论这些方法的推特。
\\
第一个是Andress Guisado介绍Metaparticle如何提供一个标准库用于创建可直接部署到Kubernetes的云原生应用程序。Brendan Burns在年初的KubeCon大会上宣布了Metapaticle,Andress那时就认为这将是2018年的一大焦点。
\\
在Istio社区聚会上接触到Ballerina之后,Dan Ciruli就发推特说,Ballerina是一门有趣的语言,因为它可以自动生成Kubernetes和Istio YAML,作为构建过程的一部分。他进一步表示,这是一个很棒的主意,他认为其他框架也将采用这种方式。
\\
第三个是Ustun Ozgur在推特上说,与繁琐的YAML文件相比,Pulumi把基础设施定义成代码所做的工作对于DevOps而言就像React针对Web开发所做的工作。
\\
在本文中,我将比较这三个项目如何帮助你在像Kubernetes这样的容器编排平台中自动化应用程序代码部署,而不必手工编写YAML。下文将详细介绍这些方法。
\\
Metaparticle
\\
- 网站\\t
- Github\
Metaparticle/Package简化了构建和部署容器镜像的任务。这一个库集合使程序员可以使用他们熟悉的代码构建和部署容器。目前,它支持Java、.NET core、Javascript(NodeJS)、Go、Python和Ruby编程语言。
\\
让我们看下如何使用Metaparticle把Java代码部署到Kubernetes中。
\\
前提条件:
\\
- Docker/ Kubernetes\\t
- 命令行工具mp-compiler\\t
- maven依赖io.metaparticle:metaparticle-package\
下面的代码启动一个Kubernetes pod,其中包含一个打印“Hello World!”的HTTP服务:
\\
\package io.metaparticle.tutorial;\\import io.metaparticle.annotations.Package;\import io.metaparticle.annotations.Runtime;\\import static io.metaparticle.Metaparticle.Containerize;\\import java.io.IOException;\import java.io.OutputStream;\import java.net.InetSocketAddress;\\import com.sun.net.httpserver.HttpExchange;\import com.sun.net.httpserver.HttpHandler;\import com.sun.net.httpserver.HttpServer;\\public class Main {\ private static final int port = 8080;\\ @Runtime(ports = {port},\ replicas = 4,\ publicAddress = true,\ executor = \"metaparticle\"\ )\ @Package(repository = \"docker.io/lakwarus\
Docker和Kubernetes应用程序打包:Metaparticle、Pulumi与Ballerina比较相关推荐
- Docker 和 Kubernetes 从听过到略懂:给程序员的旋风教程
早在 Docker 正式发布几个月的时候,LeanCloud 就开始在生产环境大规模使用 Docker,在过去几年里 Docker 的技术栈支撑了我们主要的后端架构.这是一篇写给程序员的 Docker ...
- unix 获取程序占用内存_如何减少Docker和Kubernetes中的JVM应用程序内存占用
感谢您的阅读!如果您想了解我在Kafka,Scala,ZIO和JVM方面的最新信息,请在Twitter和Medium中关注我. 如果有任何不清楚的地方,或者您想指出点什么,请在下方留言. > P ...
- Docker、Kubernetes、Apache Mesos 之争 | 一个与传说不同的故事
本文讲的是Docker.Kubernetes.Apache Mesos 之争 | 一个与传说不同的故事[编者的话]有无数的文章.讨论和社交网络上的交流在比较 Docker.Kubernetes 和 M ...
- 带你快速了解 Docker 和 Kubernetes
作者:honghaohu,腾讯 PCG 后台开发工程师 从单机容器化技术 Docker 到分布式容器化架构方案 Kubernetes,当今容器化技术发展盛行.本文面向小白读者,旨在快速带领读者了解 D ...
- 为什么是容器,Docker和Kubernetes?
如果你是一名IT行业的从业者,还没有听说过以上3个词的任何一个,抱歉,你可以改行了:如果你是一名技术人员,无论你是程序员,测试人员,运维工程师还是时髦的DevOps工程师,你还没有运行过docker ...
- 从代码到 Docker、Kubernetes、Istio、Knative……,或许是时候重新思考从代码到云的编程了...
作者 | Lakmal Warusawithana 译者 |弯月 责编 | 徐威龙 封图| CSDN 下载于视觉中国 早些时候,开发人员只需编写程序.构建,然后运行.如今,开发人员还需要考虑各种运行方 ...
- 个推基于Docker和Kubernetes的微服务实践
2019独角兽企业重金招聘Python工程师标准>>> 2016年伊始Docker无比兴盛,如今Kubernetes万人瞩目.在这个无比需要创新与速度的时代,由容器.微服务.DevO ...
- 大型网站技术学习-3. 容器Docker与kubernetes
大型网站技术基石篇-容器Docker与kubernetes Docker和Kubernetes的关系就如Xen与OpenStack. Docker是一种容器技术,和Hypervisor(KVM/Xen ...
- QCon技术干货:个推基于Docker和Kubernetes的微服务实践
2019独角兽企业重金招聘Python工程师标准>>> 2016年伊始,Docker无比兴盛,如今Kubernetes万人瞩目.在这个无比需要创新与速度的时代,由容器.微服务.Dev ...
最新文章
- 我在兰亭这三年之跳出率升高门
- 一线大厂!真实!近距离!接触大数据时代
- MYSQL之SQL语句练习及思路_1
- Python操作Excel(将父子级表头生成树状结构)
- memcached 扩展安装(windows)
- OpenSuSe使用相关
- 测试linux nginx,linux系统肿么检测安装了nginx
- 合并两个链表,去掉重复元素
- 如何使用React和Redux前端创建Rails项目
- Python 字符串查找子串的方法之 index() 和 find()
- mysql bin oct_python 讲解进制转换 int、bin、oct、hex
- mysql 进阶方向_mysql数据库入门、进阶和提升(续二)
- 消息中间件kafka集群搭建
- 初中英语听力软件测试,初中英语听力训练
- [HTML5]块和内联元素的嵌套
- ubuntu(20.04)+linux内核(5.17.3)的config文件
- 企业财务分析一头雾水?有了这个财务报表工具,问题一键解决
- Allegrocadence PCB测量时显示两种单位(mil mm)
- Python AutoCAD 选择集
- 左拥快手右抱抖音,丁磊直播究竟图什么?
热门文章
- linux sublime 命令行启动,命令行 – 使用命令行在Sublime Text 3中打开一个文件夹
- ROS入门笔记(十一):编写与测试简单的Service和Client (Python)
- robot framework好的学习网址
- python 时间序列异常值_python中缺少时间序列值
- python打开摄像头cmd_Python调用shell cmd方法代码示例解析
- 爱克发胶片_GE AGFA 胶片
- 停止运行_锅炉停止运行应注意哪些事项?
- mac npm command not found
- 导入项目报错报错Error:java: Cannot run program “D:/jdk/jdk1.7.0_67/bin/java“
- 微信小程序学习笔记01:微信小程序概述