CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛

使用SpringBoot构建微服务项目并在Kubernetes和Docker环境运行-免费源码丞旭猿

在本文中,我们将学习如何使用Spring Boot构建微服务项目并在Kubernetes和Docker环境中运行它

本文大纲

使用Spring Boot 2.0构建微服务项目

使用Spring Cloud Kubernetes项目为所有微服务提供服务发现

使用Kubernetes Config Maps和Secrets将配置设置注入到应用程序Pod中

使用Docker构建应用程序镜像并使用YAML配置文件部署在Kubernetes上

结合使用Spring Cloud Kubernetes和Zuul代理来公开所有微服务的Swagger API文档

当您构建微服务时,Spring Cloud和Kubernetes可能会发生一些冲突。Spring Cloud提供的诸如Eureka,Spring Cloud Config或Zuul之类的组件可以由内置的Kubernetes对象代替,例如services, config maps, secrets, or ingresses。但是,即使您决定使用Kubernetes组件而不是Spring Cloud,也可以使用整个Spring Cloud项目中提供的一些非常有意义的子项目。

其中一个比较有意义的子项目就是Spring Cloud Kubernetes。尽管它仍处于孵化阶段,但绝对值得花一些时间。它将Spring Cloud与Kubernetes集成在一起。我将向您展示如何使用 discovery client,与Ribbon客户端的服务间通信以及使用Spring Cloud Kubernetes及Zipkin。

有三个独立的应用程序它们通过REST API相互通信。这些Spring Boot微服务使用Kubernetes提供的一些内置机制:用于分布式配置的config maps and secrets ,用于服务发现的etcd以及用于API网关的ingress 。

*employee-service

* department-service

* organization-service

我们Spring Cloud的稳定版本是Finchley.RELEASE。引入相关的maven依赖:

Spring Cloud Kubernetes子项目不在Spring Cloud Release Trains下发布,因此我们需要明确定义其版本。

前提条件

您至少需要在本地计算机上运行Kubernetes(Minikube)单节点集群实例。

Spring Cloud Kubernetes需要访问Kubernetes API,以便能够检索为单个服务运行的Pod的地址列表。执行以下命令:

1.使用Config Maps and Secrets注入配置

使用Spring Cloud时,实现分布式配置您可能会选择Spring Cloud Config。在使用Kubernetes,您可以使用Config Map代替。它包含可在Pod中使用或用于存储配置数据的配置数据的键值对。它用于存储和共享非敏感,未加密的配置信息。要在群集中使用敏感信息,必须使用Secrets。根据MongoDB连接设置的示例,可以完美地演示这两个Kubernetes对象的使用。在Spring Boot应用程序内部,我们可以使用环境变量轻松地将其注入。这是application.yml带有URI配置的文件片段。

尽管用户名和密码是敏感字段,但数据库名称不是,因此我们可以将其放在配置映射中。

要将配置应用于Kubernetes集群,我们运行以下命令。

$ kubectl apply -f kubernetes / mongodb-configmap .yaml $ kubectl apply -f kubernetes / mongodb-secret .yaml

之后,我们应该将配置属性注入到应用程序的pod中。在Deployment YAML文件中定义容器配置时,我们必须包括对环境变量和机密的引用,如下所示employee-deloyment.yaml

2.使用Kubernetes构建服务发现

我们通常使用Docker容器在Kubernetes上运行微服务。一个或多个容器按Pod分组,Pod是在Kubernetes中创建和管理的最小的可部署单元。

服务可用于访问Kubernetes集群外部的应用程序或集群内部的服务间通信。但是,使用Spring Cloud Kubernetes可以更轻松地实现微服务之间的通信。首先,我们需要在项目中包括以下依赖项。

然后,我们应该为应用程序启用discovery client,和我们Spring Cloud Netflix Eureka作为服务发现是一样的。

最后确保Spring应用程序名称与该应用程序的Kubernetes服务名称完全相同。对于应用程序employee-service,它是employee

3.使用Docker构建微服务并在Kubernetes上部署

首先,我们需要讲java-jar服务做成docker镜像,dockerfile如下所示

使用如下命令完成容器部署:

$ kubectl apply -f kubernetesemployee-deployment.yaml$ kubectl apply -f kubernetesdepartment-deployment.yaml$ kubectl apply -f kubernetesorganization-deployment.yaml

4.使用Spring Cloud Kubernetes进行微服务之间的通信

所有微服务都部署在Kubernetes上。这是Feign客户端的实现,用于调用公开的方法employee-service

最后,我们必须将Feign客户的Bean注入RESTController。现在,我们可以EmployeeClient访问其他微服务,该方法等效于调用REST端点。

5.使用KubernetesIngress构建API网关

Ingress是一组规则,这些规则允许传入的请求到达下游服务。在我们的微服务架构中,Ingress扮演着API网关的角色。要创建它,我们首先应该准备一个YAML描述文件。描述符文件应包含主机名,网关将在该主机名下可用,并将规则映射到下游服务。

必须执行以下命令,将以上配置应用于Kubernetes集群。

$ kubectl apply -f kubernetes ingress .yaml

写在最后

通过搜-suo-查询字母哥博客,更多精品知识等待你!

本号只做持续的知识输出,希望您能关注、评论、转发!您的支持是我不竭的创作动力!让知识产生价值、让程序员改变世界!

举报/反馈

声明:本文部分素材转载自互联网,如有侵权立即删除 。

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
相关推荐
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容