概述
让我们面对现实吧,为了做出令人惊叹的软件产品,开发人员总是倾向于新的工具和技术,以节省时间并在开发周期结束时提供最好的产出。在软件开发的世界里,你一定听说过Kubernetes。今天,越来越多的开发者正在使用它,原因是很明显的。Kubernetes已经成为开发者的首选,因为它是强大的部署平台之一。
在这里,我们将通过分解步骤来讨论和经历将spring boot应用程序部署到Kubernetes的整个过程。在文章的最后,你将了解到。
- Kubernetes和Spring boot的概述
- 初始化Spring Boot应用设置
- 创建docker镜像
- 在本地安装Kubernetes(你也可以叫它Minikube
- 最后,在Kubernetes上部署spring boot应用
在进入本文有趣的部分之前,最好先掌握一下Kubernetes和Spring Boot的定义。
什么是Spring Boot?
简单地说,Spring Boot是一个基于Java的开源框架。它提供了一种用Java编写和构建应用程序的快速方法。建立在Spring框架上的应用程序可以在所有平台上执行,并被行业专家强烈推荐。虽然进入Spring框架不是小菜一碟,你必须经历一些配置上的挑战。但是一旦你通过了所有的挑战,它就可以让你用最少的投入创造出令人惊叹的应用程序。此外,你还可以利用下面的优势。
- 对XML和JavaBeans的灵活配置
- 自动配置,无需人工干预
- 创建基于注释的spring应用程序
- 减少对第三方库的依赖
- 使得网络应用程序测试变得简单,因为它带有嵌入式HTTP服务器,如Jetty和Tomcat。
总的来说,Spring Boot让你以较少的开发工作来构建和开发应用程序,同时确保更高的生产力。
什么是Kubernetes
简单地说,Kubernetes是一个可移植的、开源的容器-编排平台,使应用程序的部署、扩展和管理自动化。最初由谷歌推出,但现在由云原生计算基金会管理,并得到谷歌、AWS、IBM、英特尔、红帽和思科等关键行业参与者的支持。使用Kubernetes,你可以在一个微服务架构中部署和操作应用程序。
今天,越来越多的组织转向云结构的架构师,他们一直在寻找一个强大而有力的平台,在这里,Kubernetes拯救了他们,并提供了几个优势,如
- 移动速度更快
- 具有成本效益的解决方案
- Kubernetes与云无关
好了,这些都是吸引开发者注意的原因。如果你想了解更多关于Kubernetes的信息,你应该抽出一些时间来查看他们的官方文档。
现在进入本文的主要部分,要在Kubernetes上部署spring boot应用程序,让我们看看你需要什么。
前提条件
要想开始,请访问这个 repo,并确保你准备好以下工具。
- Docker:用于docker镜像和部署
- Minikube:本地Kubernetes环境
- kubectl:如果你有mac操作系统,安装Kubernetes-cli
而且你应该对Java编程语言及其工具足够熟悉。
将Spring Boot应用程序部署到Kubernetes的步骤
让我们来详细分解每一个步骤。在这里,我们将部署一个Spring Boot应用程序,并最终获得一个可扩展和高效的Kubernetes应用程序。
第1步:初始化Spring Boot应用程序设置
第一步是设置一个Spring Boot应用程序。从 Spring Initializr 网络应用程序开始,执行以下步骤。
资源。 Spring
点击 "生成项目 "按钮,几分钟后,它将下载新项目及其依赖项。这里你看到的是 "添加依赖 "选项,这意味着选择Spring Web,这样你就可以直接开始编写Hello World REST API。
让我们编写Hello World REST API
现在你已经安装了Spring Boot,用你的IDE打开项目文件夹,创建一个名为Application.kt的文件夹并添加以下代码。
包 com.baeldung.demospringboot.controller
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController
@RestController
类应用 {
@GetMapping("/")
fun home():字符串 {
返回 "Hello World"。
}
}
1.2 构建和运行应用程序
现在你必须有一个嵌入Gradle的压缩文件,为了构建和运行应用程序,并确保你在正确的路径上,写下以下代码。
~/code/demos/demo-spring-boot master > ./gradlew build
启动Gradle Daemon(后续的构建会更快
> 任务 :test
2020-11-29 20:44:55.227 INFO 43582 - - [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : 关闭ExecutorService 'applicationTaskExecutor' 。
构建成功,耗时8秒
7个可操作的任务。3个已经执行,4个正在进行中
在这之后,你会在build/libs下得到一个jar文件。你可以用java-jar build/libs/运行它。你的设置将显示Spring的旗帜和以下信息。
DemoSpringBootApplicationKt : Start DemoSpringBootApplicationKt in 1.492 seconds (JVM running for 1.852)
现在进入localhost:8080,看到 "Hello World"。
步骤2:创建Docker镜像
Kubernetes只适用于Docker镜像。这意味着你需要先将镜像停靠,以便将其推送到Docker注册中心。你可以在应用程序中创建Docker镜像,并要求Kubernetes启动你所创建的镜像的一个或多个实例。首先,从Spring Boot服务中创建一个镜像。运行以下命令来获取Docker镜像。
- "dependencies":
- "BOOT-INF/lib/dependency1.jar"
- "BOOT-INF/lib/dependency2.jar"
- "spring-boot-loader"。
- "org/"
- "snapshot-dependencies":
- "BOOT-INF/lib/dependency3-SNAPSHOT.jar"
- "BOOT-INF/lib/dependency4-SNAPSHOT.jar"
- "应用程序"。
- "BOOT-INF/classes/"
- "META-INF/"
你还可以借助Spotify开发的Maven插件构建一个Docker镜像,并将其推送到Docker注册表,因为它简单易行。如果你想用Maven插件对镜像进行docker化,你必须通过以下命令。
(项目
<程序><plugins
org.springframework.boot。
spring-boot-maven-plugin。
<版本>{gradle-project-version}。
<层数>
true</enabled
安装完毕后,在隐身浏览器中打开localhost: 8080,检查是否有以下信息。
来自Kubernetes的Hello World!
现在,最后一步是通过运行以下命令将Docker镜像推送到repo。
$ docker push myrepo/bi-admin
现在我们有了Docker镜像,直接进入了建立Kubernetes环境,可以为我们实现这些镜像。
第三步:在本地安装Kubernetes(你也可以叫它Minikube
根据 Kubernetes官方网站的介绍。
Minikube是一个强大的工具,可以让你轻松地在本地运行Kubernetes。如果你想了解更多关于Minikube的信息,你可以访问它在GitHub上的项目页面。在这里你还会了解到如何在Windows、Linux或macOS上安装和设置Kubernetes。这里你还需要Kubectl,它是一个命令行工具,可以帮助你在Kubernetes上迅速部署应用程序。输入以下命令,开始使用Kubernetes。
Minikube start
之后,你也可以使用Kubernetes仪表盘,你会看到以下图片
来源。Kubernetes
第4步:将应用程序部署到Kubernetes上
这是要执行的最后一步。所有的Kubernetes配置通常都是以YAML格式编写的,这样所有的Kubernetes配置都可以被人类读取。大多数开发人员使用YAML而不是JSON。现在我们有了docker镜像,已经在本地环境中设置了Kubernetes。现在是在Kubernetes集群上部署应用程序的时候了。为此,创建部署配置文件,其中包括应用程序应如何执行的配置。
一旦你有一个文件夹,运行下面的命令。
apiVersion: apps/v1
样。部署
元数据。
name: kubernetesdemo
标签。
应用程序: kubernetesdemo
规格。
replicas:1
选择器。
matchLabels:
应用程序: kubernetesdemo
规格。
容器。
- name: kubernetesdemo
image: yolanv/kubernetesdemo
端口。
- 容器端口: 8080
在部署一个应用程序时,你会面临很多事情。让我们来分解每一行代码,以便你能正确理解它。前两行代码都是关于你正在使用哪个API版本,以及正在使用什么样的Kubernetes对象。然后,3-6行是告诉元数据标签,这样程序员就很容易知道他们在哪个应用程序上工作。
其余的代码行解释了容器是如何制作的,以及你可以运行哪些镜像。这里的镜像是指我们在第2步创建的docker镜像。最后的部分是告诉容器应该遵循的端口,在这个例子中是8080。
这里你的工作还没有完成。你已经部署了应用程序,但它不会被集群外的人访问。因此,你需要创建一个 "桥",使外部访问成为可能。那么,如何做到这一点。不用担心,我们有Kubernetes服务。
在这里,你需要创建服务,以便终端用户可以访问应用程序。按照下面的命令来创建服务
sudo kubectl expose deployment/mykubernetes-springboot - type="NodePort" - port 8080
上述命令背后的公式是,我们希望应用程序能够通过NodePort被外界访问。一旦你执行了上述命令,屏幕上就会出现 "服务'mykubernetes-springboot'已暴露 "的信息,这意味着该应用程序现在可以被任何人使用。
现在是时候访问你的应用程序了。记住,应用程序位于一个Pod中,我们已经创建了一个服务,允许我们从集群外使用该应用程序。现在访问你的浏览器,用Hello键入你的IP,你会看到应用程序已经顺利部署,可以从集群外访问。
祝贺你在这里,你已经在Kubernetes中部署了一个简单的spring root应用程序。
总结
我们希望本指南能帮助你将Spring Boot应用部署到Kubernetes。在这里,我们讨论了Spring Boot应用和Kubernetes的概况,如何创建docker镜像以及如何部署Kubernetes服务。那么,你还在等什么呢?现在就去部署你的应用程序吧。
这篇深度文章由Elluminati Inc.的营销官Brijesh Vadukia撰写和分享,他喜欢帮助品牌在全球数字世界推广他们的业务。
将Spring Boot应用部署到Kubernetes最初发表在Dev Genius的Medium上,人们通过强调和回应这个故事继续对话。