@feuyeux
2015-04-01T01:02:03.000000Z
字数 1673
阅读 2086
infoq
docker
kubernetes
javaee
Arun Gupta在2015年JavaLand上,展示了多种使用Docker和Kubernetes部署Java EE应用的方法。Gupta讲述了容器对于部署和管理应用的优势,容器具备快速部署、隔离性和可移植性等优点。使用容器集群管理系统,比如Kubernetes,还能保证可用性和可扩展性。
Arun Gupta在2015年JavaLand上,展示了多种使用Docker和Kubernetes部署Java EE应用的方法。Gupta讲述了容器对于部署和管理应用的优势,容器具备快速部署、隔离性和可移植性等优点。使用容器集群管理系统,比如Kubernetes,可以将Docker容器相关的管理作为唯一单位,简化了跨主机通信,保证了可用性和可扩展性。
Red Hat软件开发者宣传董事Gupta,在JavaLand的演讲从介绍Docker开始,开源项目Docker用于对基于LXC软件容器应用的自动部署。使用Docker优于更传统的部署机制之处包括更快的部署、隔离性、可移植性、限制资源使用的能力,以及提供安全沙箱。
接下来,Gupta演示了九种使用Docker打包和部署Java EE应用的方法。这些方法包括使用
Docker Machine安装Docker、运行在单个Docker容器内的WildFly Java EEYY服务器使用H2内存数据库,以及分别在两个容器中部署应用服务器和数据库并通过容器的link通信。
此外的方法包括使用Fig和Docker Compose这两种编排工具定义多应用和多容器环境。Gupta还演示了如何在为服务发现预配置IP地址的两台主机上部署容器,以及如何使用Eclipse IDE管理基于Docker的开发阶段的部署。介绍方法部分的最后,Gupta概述了Arquillian Cube的使用,通过Maven构建工具的surefire-plugin插件,在test生命周期控制Docker镜像的构建。
接下来,Gupta的演示探讨了使用Google的Kubernetes集群管理系统,部署和管理Java EE应用。Kubernetes是Docker容器的开源编排系统,其核心概念包括:pod,用于组在一起将容器编组,以便共享IP和存储卷;service,用于为pod集合提供唯一不变的名称,还可以用作负载均衡;replication controller,用于管理pod的生命周期并确保任何时间正在运行的service数量。
Gupta演示了基于Kubernetes的方法,包括使用Vagrant的provision运行本地Kubernetes开发环境集群,WildFly应用服务器service的创建以及与MySQL service的通信,还有使用replication controller确保运行指定数量的应用服务器service。
Gupta陈述了Docker和Kubernetes是有益于部署和管理Java EE应用的工具。 除了上面提及的有益于Docker之处,Kubernetes还可以将Docker容器相关的管理作为唯一单位,有助于跨主机通信,并且通过自动化部署和监控pod及其跨主机的复本能确保可用性和可扩展性。
潜在的缺点包括没有高级的配置或者用法来使用Docker做跟踪(但是通过额外的工具可以实现),使用Kubernetes部署应用潜在复杂的生命周期,包括构建、部署、管理和升级(包括改造已有应用支持这一过程)。
前述方法的更多信息和全部细节详见Gupta的博客“Miles to go 2.0”和他帐号下的slideshare。JavaLand是在德国布吕尔召开的年度Java大会,详情参见JavaLand事件网站。
查看英文原文:Arun Gupta: Recipes for Deploying Java EE Apps with Docker and Kubernetes
译者注:Arun Gupta是《Java EE 7精粹》的作者