{"id":20532901,"url":"https://github.com/la3rence/kubernetes-springboot-demo","last_synced_at":"2025-04-14T06:32:31.700Z","repository":{"id":38274280,"uuid":"309940157","full_name":"la3rence/kubernetes-springboot-demo","owner":"la3rence","description":"使用 Kubernetes 编排最简单的 Spring Boot 2.x，并与 Redis 做了简单交互。可以学习基础的 Deployment、Pod、Service、Ingress、HPA 用法。Ingress 分支包含了滚动更新的 demo。","archived":false,"fork":false,"pushed_at":"2025-03-20T23:28:33.000Z","size":81,"stargazers_count":9,"open_issues_count":9,"forks_count":7,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-03-21T00:26:30.387Z","etag":null,"topics":["cloud-native","kubernetes","spring-boot"],"latest_commit_sha":null,"homepage":"https://lawrenceli.me/blog/k8s-note","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/la3rence.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-04T08:27:53.000Z","updated_at":"2024-11-17T13:02:29.000Z","dependencies_parsed_at":"2023-12-18T09:55:28.950Z","dependency_job_id":"7a3a9fcb-b3a0-48b0-977c-ed7291cab454","html_url":"https://github.com/la3rence/kubernetes-springboot-demo","commit_stats":null,"previous_names":["la3rence/kubernetes-springboot-demo","lonor/kubernetes-springboot-demo"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/la3rence%2Fkubernetes-springboot-demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/la3rence%2Fkubernetes-springboot-demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/la3rence%2Fkubernetes-springboot-demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/la3rence%2Fkubernetes-springboot-demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/la3rence","download_url":"https://codeload.github.com/la3rence/kubernetes-springboot-demo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248834053,"owners_count":21168950,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloud-native","kubernetes","spring-boot"],"created_at":"2024-11-16T00:17:41.733Z","updated_at":"2025-04-14T06:32:31.666Z","avatar_url":"https://github.com/la3rence.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![codecov](https://codecov.io/gh/Lonor/kubernetes-springboot-demo/branch/master/graph/badge.svg?token=VMFJJQWK15)](https://codecov.io/gh/Lonor/kubernetes-springboot-demo)\n[![Maven Test](https://github.com/Lonor/kubernetes-springboot-demo/actions/workflows/ci.yaml/badge.svg)](https://github.com/Lonor/kubernetes-springboot-demo/actions/workflows/ci.yaml)\n\n# 基于 Kubernetes 编排的 Spring Boot (Redis) 应用\n\n## 环境准备\n- Docker 19\n- Kubernetes 1.19\n\n## 本地可选步骤\n\n如果要在本地编译并构建 Spring Boot Docker 镜像，需要环境：\n- Maven 3\n- JDK 8\n\n```shell script\nmvn clean package\nmvn dockerfile:build\ndocker tag kubernetes-springboot-demo:0.0.2 registry.cn-shanghai.aliyuncs.com/dockerhub2019/spring:0.0.2   \n```\n\n上述步骤可直接跳过。\n\n## 直接部署\n\n创建 Redis 服务的 Deployment。 若本地无镜像则自动从仓库在线拉取：\n```shell script\nkubectl apply -f redis-deployment.yaml\n```\n\n查看 Pod 状态：\n```shell script\nkubectl get pods                                                                                                                                                                          \n```\n\n创建 Service，仅在集群内部暴露 Redis 服务：\n```shell script\nkubectl apply -f redis-service.yaml\n```\n\n创建 Spring Boot 的 ConfigMap (application.properties)：\n```shell\nkubectl apply -f spring-config.yaml\n```\n\n创建 Spring Boot 服务的 Deployment。 若本地无镜像则自动从仓库在线拉取：\n```shell script\nkubectl apply -f spring-deployment.yaml\n```\n\n创建 Spring Boot 的 Service。且对外暴露 HTTP 服务：\n```shell script\nkubectl apply -f spring-service.yaml\n```\n\n查看 Service 状态：\n```shell script\nkubectl get svc\n```\n\n伸缩 Spring Boot 副本数量(手动)，Service 会自动反向代理以实现负载均衡：\n```shell script\nkubectl scale deployments/spring-boot --replicas=3  \n```\n\n## 水平自动弹性伸缩\n\n首先确保 Kubernetes 集群中部署了 Metrics Server 来获取 CPU 指标等度量。\n你可以使用 `kubectl top pod` 来验证成功与否。\n\nKubernetes 根据 Deployment 定义的 Resource Limit 来发起 Auto Scale, 执行：\n```shell script\nkubectl autoscale deployment spring-boot --cpu-percent=50 --min=1 --max=5\n```\n\n或者\n```\nkubectl apply -f hpa.yaml\n```\n\n观察此时 Pod 的数量变化。","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fla3rence%2Fkubernetes-springboot-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fla3rence%2Fkubernetes-springboot-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fla3rence%2Fkubernetes-springboot-demo/lists"}