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

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
性能测试 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搭建和管理企业级网站应用
相关文章
|
1月前
|
Kubernetes 监控 开发者
掌握容器化:Docker与Kubernetes的最佳实践
【10月更文挑战第26天】本文深入探讨了Docker和Kubernetes的最佳实践,涵盖Dockerfile优化、数据卷管理、网络配置、Pod设计、服务发现与负载均衡、声明式更新等内容。同时介绍了容器化现有应用、自动化部署、监控与日志等开发技巧,以及Docker Compose和Helm等实用工具。旨在帮助开发者提高开发效率和系统稳定性,构建现代、高效、可扩展的应用。
|
3天前
|
JSON Java Nacos
SpringCloud 应用 Nacos 配置中心注解
在 Spring Cloud 应用中可以非常低成本地集成 Nacos 实现配置动态刷新,在应用程序代码中通过 Spring 官方的注解 @Value 和 @ConfigurationProperties,引用 Spring enviroment 上下文中的属性值,这种用法的最大优点是无代码层面侵入性,但也存在诸多限制,为了解决问题,提升应用接入 Nacos 配置中心的易用性,Spring Cloud Alibaba 发布一套全新的 Nacos 配置中心的注解。
|
3天前
|
Kubernetes 算法 调度
阿里云 ACK FinOps成本优化最佳实践
本文源自2024云栖大会梁成昊演讲,讨论了成本优化策略的选择与实施。文章首先介绍了成本优化的基本思路,包括优化购买方式、调整资源配置等基础策略,以及使用弹性、资源混部等高级策略。接着,文章详细探讨了集群优化和应用优化的具体方法,如使用抢占式实例降低成本、通过资源画像识别并优化资源配置,以及利用智能应用弹性策略提高资源利用效率。
|
3天前
|
Kubernetes 容灾 调度
阿里云 ACK 高可用稳定性最佳实践
本文整理自2024云栖大会刘佳旭的演讲,主题为《ACK高可用稳定性最佳实践》。文章探讨了云原生高可用架构的重要性,通过Kubernetes的高可用案例分析,介绍了ACK在单集群高可用架构设计、产品能力和最佳实践方面的方法,包括控制面和数据面的高可用策略、工作负载高可用配置、企业版容器镜像服务高可用配置等内容,旨在帮助企业构建更加可靠和高效的应用运行环境。
|
2月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
132 60
|
17天前
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。
|
25天前
|
存储 运维 Kubernetes
K8s业务迁移最佳实践: 灵活管理资源备份与调整策略,实现高效简便的应用恢复
在当今快速变化的云原生领域,Kubernetes(K8s)集群的运维面临着诸多挑战,其中灾备与业务迁移尤为关键。ACK备份中心支持丰富的资源调整策略,在数据恢复阶段即可自动适配目标集群环境,确保业务无缝重启。
|
24天前
|
Kubernetes 监控 API
深入解析Kubernetes及其在生产环境中的最佳实践
深入解析Kubernetes及其在生产环境中的最佳实践
39 1
|
23天前
|
存储 Kubernetes Devops
Kubernetes集群管理和服务部署实战
Kubernetes集群管理和服务部署实战
41 0
|
2月前
|
人工智能 文字识别 Java
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
尼恩,一位拥有20年架构经验的老架构师,通过其深厚的架构功力,成功指导了一位9年经验的网易工程师转型为大模型架构师,薪资逆涨50%,年薪近80W。尼恩的指导不仅帮助这位工程师在一年内成为大模型架构师,还让他管理起了10人团队,产品成功应用于多家大中型企业。尼恩因此决定编写《LLM大模型学习圣经》系列,帮助更多人掌握大模型架构,实现职业跃迁。该系列包括《从0到1吃透Transformer技术底座》、《从0到1精通RAG架构》等,旨在系统化、体系化地讲解大模型技术,助力读者实现“offer直提”。此外,尼恩还分享了多个技术圣经,如《NIO圣经》、《Docker圣经》等,帮助读者深入理解核心技术。
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?