作者 | 孤弋  阿里云高级技术专家,负责 EDAS 的开发和用户体验优化工作。

导读:在上一篇文章《SpringCloud 应用在 Kubernetes 上的云上实践 - 开发篇》中讲到可以通过两个工具,轻松地将一个 SpringCloud 应用从初始化到本地运行。本篇文章,我们将介绍如何将上一篇文章中提到的应用在云上跑起来。

初始化集群

为了将应用运行在云端,首先我们需要一个 Kubernetes 集群,在 EDAS 中使用 Kubernetes 集群目前最快的方式,是将一个阿里云容器集群中的 Kubernetes 集群( ACK 集群 ),导入到 EDAS 中来。

如果还没有ACK集群的话,您可以通过以下两种方式来创建一个:

  1. 直接进入容器服务的控制台进行创建;
  2. 如果您已经有一个在云上建好的集群,或者有一个在其他 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 上的最佳实践 — 部署篇(开发部署)相关推荐

  1. SpringCloud 应用在 Kubernetes 上的最佳实践 —— 高可用(容量评估)

    作者 | 牛兔 导读:本文是<SpringCloud 应用在 Kubernetes 上的最佳实践>系列文章的第 11 篇,从前面两期开始我们进入到了高可用专题,分别介绍了流量防护和故障演练 ...

  2. SpringCloud 应用在 Kubernetes 上的最佳实践 — 高可用(熔断)

    作者 | 宿何 导读:前几篇我们主要站在应用发布的场景,描述在发布过程中会遇到的灰度.监控.回滚.优雅上下线等保障发布能顺利进行的注意事项.作为一个程序员 GG,可灰度的发布顺利上线往往意味着准点下班 ...

  3. SpringCloud 应用在 Kubernetes 上的最佳实践 — 线上发布(优雅上下线)

    作者 | 骄龙 导读:本篇是<SpringCloud 应用在 Kubernetes 上的最佳实践>系列文章的第八篇,主要介绍了如何做到流量的无损上/下线.更多相关文章阅读可查看文末. 前言 ...

  4. SpringCloud 应用在 Kubernetes 上的最佳实践 — 线上发布(可回滚)

    作者 | 长门 **导读:**本篇是<SpringCloud 应用在 Kubernetes 上的最佳实践>系列文章的第七篇,主要介绍了新功能上线时,如何尽快减少对线上用户的影响?发布系统需 ...

  5. SpringCloud 应用在 Kubernetes 上的最佳实践 — 线上发布(可监控)

    作者 | 骐羽 阿里巴巴技术专家 导读:本篇是"SpringCloud 应用在 Kubernetes 上的最佳实践"系列文章的第六篇,主要介绍了如何保障生产环境服务稳定,做到随时发 ...

  6. SpringCloud 应用在 Kubernetes 上的最佳实践 — 诊断(线上联调)

    作者 | 纳海  阿里巴巴高级开发工程师 **导读:**上篇我们介绍了应用成功上云后,面对应用的管理,如何做可灰度的线上发布,那么当云上的应用行为不符合预期的时候,您会怎么处理呢?修改代码,打包,部署 ...

  7. SpringCloud 应用在 Kubernetes 上的最佳实践 — 线上发布(可灰度)

    作者 | 白寂  阿里云开发工程师 导读:前三篇文章我们介绍了应用的开发和部署,那么在应用成功上云后,我就要面对应用的管理话题了,这一篇我们来看看如何做线上发布,并且是可灰度的. 相关文章推荐: &l ...

  8. SpringCloud 应用在 Kubernetes 上的最佳实践 — 部署篇(工具部署)

    作者 | 孤弋  阿里云高级技术专家,负责 EDAS 的开发和用户体验优化工作. 导读:上一篇文章<SpringCloud 应用在 Kubernetes 上的最佳实践 - 部署篇(开发部署)&g ...

  9. SpringCloud 应用在 Kubernetes 上的最佳实践 —— 高可用(弹性伸缩)

    作者 | 三未 前言 弹性伸缩是一种为了满足业务需求.保证服务质量.平衡服务成本的重要应用管理策略.弹性伸缩让应用的部署规模能够根据实时的业务量产生动态调整,在业务高峰期扩大部署规模,保证服务不被业务 ...

最新文章

  1. 深入浅出ThreadLocal,你会吗?
  2. 服务器端执行javascript脚本
  3. php获取分辨率赋值,php如何获取客户端分辨率?实例教程
  4. pythondevp2p_以太坊GO、JAVA、PYTHON、RUBY、JS客户端介绍
  5. [BZOJ 2957]楼房重建(THU2013集训)(线段树维护单调栈)
  6. Spark安装与配置(单机版)(保姆级教程)
  7. 旁路电容和去偶电容Bypass and Decouple
  8. 自然语言处理 | (4)英文文本处理与NLTK
  9. Composer 的常用命令
  10. FA-PEG-SH 叶酸PEG巯基
  11. Python基础(六):字符串、元组、列表习题
  12. PTC System Monitor
  13. 融云聊天--web SDK API
  14. 目标检测 SSD: Single Shot MultiBox Detector - SSD在MMDetection中的实现
  15. 关于学计算机趣味段子,搞笑段子:路上一个女孩突然朝我走来问:你是不是学计算机的?...
  16. HTML5+CSS3+ES5/6+TS+WebAPI前端入门/实习题库笔记
  17. 软件测试相关简要记录
  18. 微信7.0fiddler、Charles抓包报HTTPS证书信任问题通报
  19. 【ABAQUS文档笔记】ABAQUS刚体单元和可变形单元的review
  20. Android studio下载安装及配置-MacOS

热门文章

  1. 通过过滤器控制页面输出内容
  2. Python模拟哲学家进餐问题
  3. ACM入门之【最短路】
  4. 多线程别怕,有锁就安全;(解决线程安全问题)
  5. Spring boot的Web开发
  6. Mybatis的COMMENT生成备注
  7. python爬虫beautifulsoup爬当当网_Python爬虫包 BeautifulSoup 递归抓取实例详解_python_脚本之家...
  8. java批量生成订单号_【笔记6-支付及订单模块】从0开始 独立完成企业级Java电商网站开发(服务端)...
  9. Dubbo错误排查:com.alibaba.dubbo.rpc.RpcException: Invoke remote method timeout
  10. java面试题大合集(开发者必看二)