SpringBoot 应用和 PostgreSQL 数据库部署到 Kubernetes 上的一个例子

image

创建一个名为 ads-app-service 的服务:

image

上述 Service 的 yaml 文件里每个字段,在 Kubernetes 的 API 文档里有详细说明。

https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#servicespec-v1-core

如何找到这个 url 呢?

Reference->API Reference->v1.12:

image

比如 Service yaml 文件里 Spec 区域需要出现的字段,每个字段在帮助文档里有详细说明:

image

Spec 部分的子区域 ports 可以定义多个 port,通过符号"-"代表一个类似数组的结构:

image

ports 数组里每个元素包含的字段:

  • name
  • nodePort
  • port
  • protocol
  • targetPort

image

用 kubectl create -f 创建 service,因为类型设置为 ClusterIP,但没有指定具体的 IP 地址,因此创建时自动生成了一个。

image

image

再创建一个 deployment:

image

这个 deployment 使用的 image 地址如下:

image

我们还得创建一个 Kubernetes Ingress,yaml 文件如下:

image

需要 Ingress 的原因是,通常情况下,service 和 pod 的 IP 只能在 Kubernetes 集群内部访问。集群外部的请求需要通过负载均衡转发到 service 在 Node 上暴露的 NodePort 上,然后再由 kube-proxy 将其转发给相关的

Pod。

Ingress 作为 Kubernetes 里的标准对象之一,负责给 service 提供集群外部访问的 URL、负载均衡、SSL 终止、HTTP 路由等。

下面配置的 rule 的含义是:每次请求/ads 时,请求转发到服务 ads-app-service 上去。

image

使用 host 里包含的 url 拼接上/ads,访问这个应用:

image

点击 tile 进入明细页面:

image

这个应用的 UI 显示用的是 SAP UI5 框架,后台通过一个 SpringBoot 应用响应 HTTP 请求,数据存储在 PostgreSQL 里。

image

image

进入 deployment 对应的 pod,可以查看到 java 应用对应的 jar 文件和 JDK 环境。

image


原文:SpringBoot应用和PostgreSQL数据库部署到Kubernetes上的一个例子_Kubernetes_Jerry Wang_InfoQ写作社区