SpringCloud 应用在 Kubernetes 上的最佳实践 — 部署篇(开发部署)
作者 | 孤弋 阿里云高级技术专家,负责 EDAS 的开发和用户体验优化工作。
导读:在上一篇文章《SpringCloud 应用在 Kubernetes 上的云上实践 - 开发篇》中讲到可以通过两个工具,轻松地将一个 SpringCloud 应用从初始化到本地运行。本篇文章,我们将介绍如何将上一篇文章中提到的应用在云上跑起来。
初始化集群
为了将应用运行在云端,首先我们需要一个 Kubernetes 集群,在 EDAS 中使用 Kubernetes 集群目前最快的方式,是将一个阿里云容器集群中的 Kubernetes 集群( ACK 集群 ),导入到 EDAS 中来。
如果还没有ACK集群的话,您可以通过以下两种方式来创建一个:
- 直接进入容器服务的控制台进行创建;
- 如果您已经有一个在云上建好的集群,或者有一个在其他 IDC 或友商中有的集群,也可以在容器服务这边通过“注册已有集群”的方式,导入到容器服务中来。
等到 Kubernetes 集群就绪之后,在 EDAS 上需要进行一次集群“导入”,导入方式如下图所示:
在导入集群时,EDAS 会做以下操作:
初始化 EDAS 的集群控制器和相关资源,主要包含:基于开放云原生应用标准的 OAM Controller、日志采集的 Agent、监控链路中的 Arms 环境信息等;其中大部分控制器运行时不会占用用户集群的资源,而会运行在 EDAS 托管的一个管控集群中,由 EDAS 来负责维护;
根据用户的规划,划分好此集群与 EDAS 中命名空间的关系。EDAS 中的命名空间是用来隔离服务与配置的,简单的可以理解成开发、测试、线上这样的日常研发中的环境。集群导入的同时也确定了该 Kubernetes 集群是用于哪套环境。
初始化应用
在准备好集群之后,我们需要初始化一个云端的应用,进入 EDAS 中的创建应用的向导之后,选择刚刚创建的集群进行应用创建,在需要选择的应用应用运行环境处,会看到有 “自定义”、“Java” 、“Tomcat”、“EDAS Container” 四类,如下图所示:
这里需要特殊说明一下,因为一个应用一旦一开始确定了部署类型,以后将不能被修改,其中:
Java/Tomcat/EDAS Container 类型的的环境:如果选择这中运行环境,文件上传之后,EDAS 将把文件与相应的基础镜像一起打成应用的镜像使用;
自定义环境:选择镜像的运行环境之后,意味着每一次的部署均通过指定的自定义镜像进行部署,其中,自定义镜像需要满足一定的规范,具体内容可以参考阿里云帮助文档《制作应用容器 Docker 镜像》。其中核心的内容是以下两行代码:
# 继承 EDAS 的官方镜像
FROM apaas/edas
# 将文件下载至 /home/admin/app 中
ADD http://your.domain.com/file/location.jar /home/admin/app/
注:EDAS 中的应用,运行时就是被 OAM 控制器管控下的 Kubernetes 的 Deployment,因此除了通过上述方式创建 EDAS 应用之外,EDAS 也能将集群中的 Deployment 读取出来,您可以将这些Deployment直接转成一个 EDAS 应用。这里如果有朋友对 EDAS 应用 与 Deployment 之间的转换感兴趣的话,我们在专门的章节中细讲。
通过 IDE 插件直接部署 Kubernetes 应用
在初始化好应用之后,我们就能在开发时通过 IDE 将应用打包并直接部署上去了。和选择的 运行环境 有关,在插件中进行部署时,我们也会有相应的选项,如图:
如果是在开发环境中,为了提升开发效率,我们推荐使用非自定义镜像的方式用 IDE 插件进行部署,因为插件中文件上传比在控制台中上传的速度要快 3 倍以上,对于体积偏大的部署包来说非常好用!而且相比重新构建/推送镜像后再进行部署而言,直接提交war/jar的部署也要快很多。
关于如何在 IDE 插件中部署,可以在阿里云官方文档上搜索《使用 Cloud Toolkit 快速部署应用至 EDAS》进行详细了解。
结语及其后续
本篇我们还是站在开发者的视角,介绍了如何将一个开发好的应用包部署到云上的 EDAS 应用中,在开发环境下,面对众多的部署 Kubernetes 集群的方式中,我们推荐的最佳方式是使用 war/jar 直接从插件中上传部署,在所有方式中这是最快的部署方式。接下来我们将介绍站在运维的角度,如何使用 EDAS 的其他工具来构建部署流程。
首届 KubeCon 2020 线上峰会
7 月 30 日 - 8 月 1 日,阿里巴巴云原生专场,点击链接预约有礼:https://developer.aliyun.com/topic/alibabacloudnative/kubecon2020
“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的公众号。”
SpringCloud 应用在 Kubernetes 上的最佳实践 — 部署篇(开发部署)相关推荐
- SpringCloud 应用在 Kubernetes 上的最佳实践 —— 高可用(容量评估)
作者 | 牛兔 导读:本文是<SpringCloud 应用在 Kubernetes 上的最佳实践>系列文章的第 11 篇,从前面两期开始我们进入到了高可用专题,分别介绍了流量防护和故障演练 ...
- SpringCloud 应用在 Kubernetes 上的最佳实践 — 高可用(熔断)
作者 | 宿何 导读:前几篇我们主要站在应用发布的场景,描述在发布过程中会遇到的灰度.监控.回滚.优雅上下线等保障发布能顺利进行的注意事项.作为一个程序员 GG,可灰度的发布顺利上线往往意味着准点下班 ...
- SpringCloud 应用在 Kubernetes 上的最佳实践 — 线上发布(优雅上下线)
作者 | 骄龙 导读:本篇是<SpringCloud 应用在 Kubernetes 上的最佳实践>系列文章的第八篇,主要介绍了如何做到流量的无损上/下线.更多相关文章阅读可查看文末. 前言 ...
- SpringCloud 应用在 Kubernetes 上的最佳实践 — 线上发布(可回滚)
作者 | 长门 **导读:**本篇是<SpringCloud 应用在 Kubernetes 上的最佳实践>系列文章的第七篇,主要介绍了新功能上线时,如何尽快减少对线上用户的影响?发布系统需 ...
- SpringCloud 应用在 Kubernetes 上的最佳实践 — 线上发布(可监控)
作者 | 骐羽 阿里巴巴技术专家 导读:本篇是"SpringCloud 应用在 Kubernetes 上的最佳实践"系列文章的第六篇,主要介绍了如何保障生产环境服务稳定,做到随时发 ...
- SpringCloud 应用在 Kubernetes 上的最佳实践 — 诊断(线上联调)
作者 | 纳海 阿里巴巴高级开发工程师 **导读:**上篇我们介绍了应用成功上云后,面对应用的管理,如何做可灰度的线上发布,那么当云上的应用行为不符合预期的时候,您会怎么处理呢?修改代码,打包,部署 ...
- SpringCloud 应用在 Kubernetes 上的最佳实践 — 线上发布(可灰度)
作者 | 白寂 阿里云开发工程师 导读:前三篇文章我们介绍了应用的开发和部署,那么在应用成功上云后,我就要面对应用的管理话题了,这一篇我们来看看如何做线上发布,并且是可灰度的. 相关文章推荐: &l ...
- SpringCloud 应用在 Kubernetes 上的最佳实践 — 部署篇(工具部署)
作者 | 孤弋 阿里云高级技术专家,负责 EDAS 的开发和用户体验优化工作. 导读:上一篇文章<SpringCloud 应用在 Kubernetes 上的最佳实践 - 部署篇(开发部署)&g ...
- SpringCloud 应用在 Kubernetes 上的最佳实践 —— 高可用(弹性伸缩)
作者 | 三未 前言 弹性伸缩是一种为了满足业务需求.保证服务质量.平衡服务成本的重要应用管理策略.弹性伸缩让应用的部署规模能够根据实时的业务量产生动态调整,在业务高峰期扩大部署规模,保证服务不被业务 ...
最新文章
- 深入浅出ThreadLocal,你会吗?
- 服务器端执行javascript脚本
- php获取分辨率赋值,php如何获取客户端分辨率?实例教程
- pythondevp2p_以太坊GO、JAVA、PYTHON、RUBY、JS客户端介绍
- [BZOJ 2957]楼房重建(THU2013集训)(线段树维护单调栈)
- Spark安装与配置(单机版)(保姆级教程)
- 旁路电容和去偶电容Bypass and Decouple
- 自然语言处理 | (4)英文文本处理与NLTK
- Composer 的常用命令
- FA-PEG-SH 叶酸PEG巯基
- Python基础(六):字符串、元组、列表习题
- PTC System Monitor
- 融云聊天--web SDK API
- 目标检测 SSD: Single Shot MultiBox Detector - SSD在MMDetection中的实现
- 关于学计算机趣味段子,搞笑段子:路上一个女孩突然朝我走来问:你是不是学计算机的?...
- HTML5+CSS3+ES5/6+TS+WebAPI前端入门/实习题库笔记
- 软件测试相关简要记录
- 微信7.0fiddler、Charles抓包报HTTPS证书信任问题通报
- 【ABAQUS文档笔记】ABAQUS刚体单元和可变形单元的review
- Android studio下载安装及配置-MacOS
热门文章
- 通过过滤器控制页面输出内容
- Python模拟哲学家进餐问题
- ACM入门之【最短路】
- 多线程别怕,有锁就安全;(解决线程安全问题)
- Spring boot的Web开发
- Mybatis的COMMENT生成备注
- python爬虫beautifulsoup爬当当网_Python爬虫包 BeautifulSoup 递归抓取实例详解_python_脚本之家...
- java批量生成订单号_【笔记6-支付及订单模块】从0开始 独立完成企业级Java电商网站开发(服务端)...
- Dubbo错误排查:com.alibaba.dubbo.rpc.RpcException: Invoke remote method timeout
- java面试题大合集(开发者必看二)