当前位置: 首页 > 面试题库 >

在Kubernetes上的Tomcat中部署WAR

韩梓
2023-03-14
问题内容

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

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

我需要利用Dockerfile这一点。

PS:我对Kubernetes和Docker知识还很陌生,也需要基本的细节。我尝试查找教程,但未获得满意的文章。

任何帮助将受到高度赞赏。


问题答案:

Docker部分

您可以使用tomcat docker官方映像

在您Dockerfile只需将war文件复制到/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(因为您的战争称为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访问该应用程序



 类似资料:
  • TiCDC 是一款 TiDB 增量数据同步工具,本文介绍如何使用 TiDB Operator 在 Kubernetes 上部署 TiCDC。 前置条件 TiDB Operator 部署完成。 全新部署 TiDB 集群同时部署 TiCDC 参考 在标准 Kubernetes 上部署 TiDB 集群进行部署。 在现有 TiDB 集群上新增 TiCDC 组件 编辑 TidbCluster Custom

  • 本文介绍如何在 Kubernetes 上部署 TiFlash。 前置条件 TiDB Operator 部署完成。 全新部署 TiDB 集群同时部署 TiFlash 参考 在标准 Kubernetes 上部署 TiDB 集群进行部署。 在现有 TiDB 集群上新增 TiFlash 组件 编辑 TidbCluster Custom Resource: kubectl edit tc ${cluster

  • 本文介绍如何在 Kubernetes 上部署 TiDB Operator。 准备环境 TiDB Operator 部署前,请确认以下软件需求: Kubernetes v1.12 或者更高版本 DNS 插件 PersistentVolume RBAC 启用(可选) Helm 版本 >= 2.11.0 && < 3.0.0 && != 2.16.4 部署 Kubernetes 集群 TiDB Oper

  • 我已经在archlinux上安装了tomcat,我尝试了tomcat7和Tomcat8。根据包括官方文档在内的多个来源,部署WAR文件就像将其放入webapps文件夹(在我的示例中是/var/lib/tomcat7/webapps)一样容易。WAR文件被分解。但我不知道如何访问我的web应用程序。在localhost:8080上有一个tomcat网页。我还尝试了localhost:8080/nam

  • 本文档最初是基于kubenetes1.6版本编写的,对于kuberentes1.8及以上版本同样适用,只是个别位置有稍许变动,变动的地方我将特别注明版本要求。 本系列文档介绍使用二进制部署 kubernetes 集群的所有步骤,而不是使用 kubeadm 等自动化方式来部署集群,同时开启了集群的TLS安全认证,该安装步骤适用于所有bare metal环境、on-premise环境和公有云环境。 如

  • 我无法从部署在k8s上的MongoDB更改现有用户的密码,除非我正在删除数据库,然后用新密码重新创建它。 如何使用yaml为mongo有状态对象更改密码而不删除DB?

  • 我在eclipse IDE中有一个ant项目。Ant build在dist文件夹中创建一个war。我将war复制到Tomcat webapps文件夹并成功部署它。现在,我将Tomcat添加到eclipse中,并尝试在这里部署war,它会忽略war文件。它没有给出任何例外bu也没有做任何有用的事情。下面是完整的Tomcat日志- 它是一个动态的Web模块项目。在Eclipse中设置Tomcat时是否

  • 我已经在应用程序中添加了这些字段。pom中微服务和依赖关系的yml。xml。Jaeger在my local上运行也可以识别服务 我已经在kubernetes上部署了所有的微服务。请帮助我在kubernetes部署jaeger。 更新:我已达到此步骤。我有一个用于jaeger查询的负载平衡器IP。但是我的微服务将把日志发送到哪个主机和端口??