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

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

上述 Service 的 yaml 文件里每个字段,在 Kubernetes 的 API 文档里有详细说明。
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#servicespec-v1-core
如何找到这个 url 呢?
Reference->API Reference->v1.12:

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

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

ports 数组里每个元素包含的字段:
name
nodePort
port
protocol
targetPort

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


再创建一个 deployment:

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

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

需要 Ingress 的原因是,通常情况下,service 和 pod 的 IP 只能在 Kubernetes 集群内部访问。集群外部的请求需要通过负载均衡转发到 service 在 Node 上暴露的 NodePort 上,然后再由 kube-proxy 将其转发给相关的
Pod。
Ingress 作为 Kubernetes 里的标准对象之一,负责给 service 提供集群外部访问的 URL、负载均衡、SSL 终止、HTTP 路由等。
下面配置的 rule 的含义是:每次请求/ads 时,请求转发到服务 ads-app-service 上去。

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

点击 tile 进入明细页面:

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


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

要获取更多 Jerry 的原创文章,请关注公众号"汪子熙"。
版权声明: 本文为 InfoQ 作者【Jerry Wang】的原创文章。
原文链接:【http://xie.infoq.cn/article/0176d063d0794c73386ddaf43】。文章转载请联系作者。
评论