为了账号安全,请及时绑定邮箱和手机立即绑定

在 Kubernetes 上的 Tomcat 中部署 WAR

在 Kubernetes 上的 Tomcat 中部署 WAR

qq_遁去的一_1 2022-05-21 20:34:16
我需要创建一个 Multibranch Jenkins 作业来在 Tomcat 中部署一个应该在 Kubernetes 上运行的 .war 文件。基本上,我需要以下内容:一种在 Kubernetes 平台上安装 Tomcat 的方法。在这个新安装的 Tomcat 上部署我的 war 文件。我需要利用Dockerfile来实现这一点。PS:我对 Kubernetes 和 Docker 的东西很陌生,也需要基本的细节。我尝试寻找教程,但找不到任何令人满意的文章。任何帮助都将受到高度赞赏。
查看完整描述

1 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

码头工人部分

可以使用tomcat docker官方镜像


在您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 部分

1)这是一个用于您的 Tomcat 映像的简单 kubernetes部署


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)如果你有Ingress 控制器,你可以创建一个Ingress 资源来将应用程序暴露在集群之外:


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访问应用程序


查看完整回答
反对 回复 2022-05-21
  • 1 回答
  • 0 关注
  • 157 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信