SpringCloud 应用在 Kubernetes 上的最佳实践 — 部署篇(开发部署)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
性能测试 PTS,5000VUM额度
简介: 本文将主要介绍如何将开发篇中提到的应用在云上跑起来。

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

初始化集群

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

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

  1. 直接进入容器服务的控制台进行创建。
  2. 如果您已经有一个在云上建好的集群,或者有一个在其他 IDC 或友商中有的集群,也可以在容器服务这边通过“注册已有集群”的方式,导入到容器服务中来。

等到 Kubernetes 集群就绪之后,在 EDAS 上需要进行一次集群“导入”,导入方式如下图所示:

1.jpg

在导入集群时,EDAS 会做以下操作:

  1. 初始化 EDAS 的集群控制器和相关资源,主要包含:基于开放云原生应用标准的 OAM Controller、日志采集的 Agent、监控链路中的 Arms 环境信息等;其中大部分控制器运行时不会占用用户集群的资源,而会运行在 EDAS 托管的一个管控集群中,由 EDAS 来负责维护。
  2. 根据用户的规划,划分好此集群与 EDAS 中命名空间的关系。EDAS 中的命名空间是用来隔离服务与配置的,简单的可以理解成开发、测试、线上这样的日常研发中的环境。集群导入的同时也确定了该 Kubernetes 集群是用于哪套环境。

初始化应用

在准备好集群之后,我们需要初始化一个云端的应用,进入 EDAS 中的创建应用的向导之后,选择刚刚创建的集群进行应用创建,在需要选择的应用应用运行环境处,会看到有 "自定义"、"Java" 、"Tomcat"、"EDAS Container" 四类,如下图所示:

2.jpg

这里需要特殊说明一下,因为一个应用一旦一开始确定了部署类型,以后将不能被修改,其中:

  1. Java/Tomcat/EDAS Container 类型的的环境:如果选择这中运行环境,文件上传之后,EDAS 将把文件与相应的基础镜像一起打成应用的镜像使用。
  2. 自定义环境:选择镜像的运行环境之后,意味着每一次的部署均通过指定的自定义镜像进行部署,其中,自定义镜像需要满足一定的规范,具体内容可以参考阿里云帮助文档《制作应用容器 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 将应用打包并直接部署上去了。和选择的 运行环境 有关,在插件中进行部署时,我们也会有相应的选项,如图:

3.jpg

如果是在开发环境中,为了提升开发效率,我们推荐使用非自定义镜像的方式用 IDE 插件进行部署,因为插件中文件上传比在控制台中上传的速度要快 3 倍以上,对于体积偏大的部署包来说非常好用!而且相比重新构建/推送镜像后再进行部署而言,直接提交war/jar的部署也要快很多。

关于如何在 IDE 插件中部署,可以在阿里云官方文档上搜索《使用Cloud Toolkit快速部署应用至EDAS》进行详细了解。

结语及其后续

本篇我们还是站在开发者的视角,介绍了如何将一个开发好的应用包部署到云上的 EDAS 应用中,在开发环境下,面对众多的部署 Kubernetes 集群的方式中,我们推荐的最佳方式是使用 war/jar 直接从插件中上传部署,在所有方式中这是最快的部署方式。接下来我们将介绍站在运维的角度,如何使用 EDAS 的其他工具来构建部署流程。

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

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
7天前
|
存储 Kubernetes 持续交付
介绍一下Kubernetes的应用场景
【10月更文挑战第18天】介绍一下Kubernetes的应用场景。
31 3
|
19天前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
107 60
|
5天前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景
|
13天前
|
人工智能 文字识别 Java
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
尼恩,一位拥有20年架构经验的老架构师,通过其深厚的架构功力,成功指导了一位9年经验的网易工程师转型为大模型架构师,薪资逆涨50%,年薪近80W。尼恩的指导不仅帮助这位工程师在一年内成为大模型架构师,还让他管理起了10人团队,产品成功应用于多家大中型企业。尼恩因此决定编写《LLM大模型学习圣经》系列,帮助更多人掌握大模型架构,实现职业跃迁。该系列包括《从0到1吃透Transformer技术底座》、《从0到1精通RAG架构》等,旨在系统化、体系化地讲解大模型技术,助力读者实现“offer直提”。此外,尼恩还分享了多个技术圣经,如《NIO圣经》、《Docker圣经》等,帮助读者深入理解核心技术。
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
|
7天前
|
存储 Kubernetes 监控
深度解析Kubernetes在微服务架构中的应用与优化
【10月更文挑战第18天】深度解析Kubernetes在微服务架构中的应用与优化
27 0
|
7天前
|
运维 Kubernetes 负载均衡
深入探索Kubernetes在微服务架构中的应用
【10月更文挑战第18天】深入探索Kubernetes在微服务架构中的应用
25 0
|
18天前
|
NoSQL 关系型数据库 Redis
高可用和性能:基于ACK部署Dify的最佳实践
本文介绍了基于阿里云容器服务ACK,部署高可用、可伸缩且具备高SLA的生产可用的Dify服务的详细解决方案。
|
6天前
|
Kubernetes 持续交付 开发工具
ACK One GitOps:ApplicationSet UI简化多集群GitOps应用管理
ACK One GitOps新发布了多集群应用控制台,支持管理Argo CD ApplicationSet,提升大规模应用和集群的多集群GitOps应用分发管理体验。
|
29天前
|
Kubernetes Cloud Native 云计算
云原生之旅:Kubernetes 集群的搭建与实践
【8月更文挑战第67天】在云原生技术日益成为IT行业焦点的今天,掌握Kubernetes已成为每个软件工程师必备的技能。本文将通过浅显易懂的语言和实际代码示例,引导你从零开始搭建一个Kubernetes集群,并探索其核心概念。无论你是初学者还是希望巩固知识的开发者,这篇文章都将为你打开一扇通往云原生世界的大门。
99 17
|
21天前
|
Kubernetes 应用服务中间件 nginx
搭建Kubernetes v1.31.1服务器集群,采用Calico网络技术
在阿里云服务器上部署k8s集群,一、3台k8s服务器,1个Master节点,2个工作节点,采用Calico网络技术。二、部署nginx服务到k8s集群,并验证nginx服务运行状态。
234 1