在本地使用Kubernetes测试您的Java部署
原文:https://docs.docker.com/language/java/deploy/
先决条件
- 完成本指南的所有前面部分,从将您的应用程序容器化开始。
- 在Docker Desktop中启用Kubernetes。
概览
在本节中,您将学习如何使用Docker Desktop在开发机器上的全功能Kubernetes环境中部署您的应用程序。这使您可以在部署之前在本地测试和调试您的Kubernetes工作负载。
创建Kubernetes YAML文件
在您的spring-petclinic
目录中,创建一个名为docker-java-kubernetes.yaml
的文件。用IDE或文本编辑器打开该文件,并添加以下内容。将DOCKER_USERNAME/REPO_NAME
替换为您的Docker用户名和在为您的Java应用程序配置CI/CD中创建的仓库名称。
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: docker-java-demo
namespace: default
spec:
replicas: 1
selector:
matchLabels:
service: server
template:
metadata:
labels:
service: server
spec:
containers:
- name: server-service
image: DOCKER_USERNAME/REPO_NAME
imagePullPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
name: service-entrypoint
namespace: default
spec:
type: NodePort
selector:
service: server
ports:
- port: 8080
targetPort: 8080
nodePort: 30001
在这个Kubernetes YAML文件中,有两个对象,由---
分隔:
- 一个Deployment,描述了一个可扩展的相同pods组。在这种情况下,您将得到一个副本或您的pod的一个副本。该pod在
template
下描述,它有一个容器。该容器是从GitHub Actions在为您的Java应用程序配置CI/CD中构建的镜像创建的。 - 一个NodePort服务,它将从您主机的30001端口的流量路由到它路由到的pods内的8080端口,允许您从网络访问您的应用程序。
要了解更多关于Kubernetes对象的信息,请参阅Kubernetes文档。
部署并检查您的应用程序
在终端中,导航到
spring-petclinic
并将您的应用程序部署到Kubernetes。consolekubectl apply -f docker-java-kubernetes.yaml
您应该看到如下输出,表明您的Kubernetes对象已成功创建。
shelldeployment.apps/docker-java-demo created service/service-entrypoint created
通过列出您的部署来确保一切正常。
consolekubectl get deployments
您的部署应该如下所示:
shellNAME READY UP-TO-DATE AVAILABLE AGE docker-java-demo 1/1 1 1 15s
这表明您在YAML中请求的所有一个pods都在运行。对您的服务执行相同的检查。
consolekubectl get services
您应该得到如下输出。
shellNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23h service-entrypoint NodePort 10.99.128.230 <none> 8080:30001/TCP 75s
除了默认的
kubernetes
服务外,您还可以看到您的service-entrypoint
服务,在
30001/TCP端口接受流量。
在终端中,使用curl命令访问服务。请注意,这个示例中没有部署数据库。
consolecurl --request GET \ --url http://localhost:30001/actuator/health \ --header 'content-type: application/json'
您应该得到如下输出。
console{"status":"UP","groups":["liveness","readiness"]}
运行以下命令拆除您的应用程序。
consolekubectl delete -f docker-java-kubernetes.yaml
总结
在本节中,您学习了如何使用Docker Desktop在开发机器上的完整Kubernetes环境中部署您的应用程序。
相关信息: