在 Kubernetes 上的 Tomcat 中部署 WAR

2022-09-03 01:31:45

我需要创建一个多分支 Jenkins 作业,以便在 Tomcat 中部署一个应该在 Kubernetes 上运行的 .war 文件。基本上,我需要以下内容:

  1. 一种在 Kubernetes 平台上安装 Tomcat 的方法。
  2. 将我的 war 文件部署到这个新安装的 Tomcat 上。

我需要利用它来实现这一点。Dockerfile

PS:我对 Kubernetes 和 Docker 的东西很陌生,也需要基本的细节。我试图找到教程,但无法获得任何令人满意的文章。

任何帮助将不胜感激。


答案 1

Docker 部分

您可以使用tomcat docker官方图片

在你刚刚复制你的war文件在目录中:Dockerfile/usr/local/tomcat/webapps/

FROM tomcat

COPY app.war /usr/local/tomcat/webapps/

构建它 :

docker build --no-cache -t <REGISTRY>/<IMAGE>:<TAG> .

构建映像后,将其推送到所选的 Docker 注册表中。

docker push <REGISTRY>/<IMAGE>:<TAG>

Kubernetes part

1) 这是一个简单的 kubernetes 部署你的 tomcat 镜像

apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat-deployment
  labels:
    app: tomcat
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tomcat
  template:
    metadata:
      labels:
        app: tomcat
    spec:
      containers:
      - name: tomcat
        image: <REGISTRY>/<IMAGE>:<TAG>
        ports:
        - containerPort: 8080

此部署定义将基于您的 tomcat 映像创建一个 Pod。

将其放入 yml 文件中并执行以创建它。kubectl create -f yourfile.yml

2) 创建服务

kind: Service
apiVersion: v1
metadata:
  name: tomcat-service
spec:
  selector:
    app: tomcat
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8080

现在,您可以使用 http://tomcat-service.your-namespace/app 访问集群内的 Pod(因为您的 war 被称为app.war)

3) 如果您有入口控制器,则可以创建入口资源以在集群外部公开应用程序:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: tomcat-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /app
        backend:
          serviceName: tomcat-service
          servicePort: 80

现在使用 http://ingress-controller-ip/app 访问应用程序


答案 2

推荐