当前位置: 首页 > 知识库问答 >
问题:

如何在kubernetes应用程序中提供静态内容

韦高阳
2023-03-14

我有一个小型java webapp,由三个微服务组成——api-service、book-service和db-service,所有这些都使用mini kube本地部署在kubernetes集群上。

我计划为api-service和book-service保留单独的UI,从单独的pod提供常见的静态文件,可能是nginx: alpin映像。

我能够创建一个前端,为参考本教程的nginx:alpine中的静态文件提供服务。

我想使用ingress nginx控制器将请求路由到这两个服务。

下图粗略地显示了我现在的位置。

我不知道应该将提供静态内容的pod放在哪里,以及如何将其连接到入口资源。我想在ingress之前保留前端pod会破坏ingress nginx控制器的用途。为静态文件提供服务的最佳实践是什么。感谢您的帮助。谢谢

共有2个答案

巩俊远
2023-03-14

我想您应该有3个不同的pod:-静态-图书-服务-api-service

静态吊舱很可能不会以与其他两个吊舱相同的速度缩放。

为每个部署创建服务。然后使用入口在适当的endpoint上路由流量。

这是你想要达到的目标吗?

周奇
2023-03-14

看起来您混淆了这样一个事实,即在线浏览的用户会触发标准请求来“下载”您的静态内容,并使用您的2个API(book和api)。访问您的API的不是提供静态内容的NGINX服务,而是用户的浏览器/应用程序,它们对静态内容和API的做法完全相同(前者有更多/特定的标头和数据,例如auth...)。

在您的图表上,您会希望将新的静态服务与您的book-serviceapi-service处于完全相同的级别,即入口后面。但是您的静态服务不会像其他2一样与db-service有链接。然后只需完成您的入口规则,静态服务在末尾,如本例所示:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: your-global-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: foo.bar.com
    http:
      paths:
      - path: /book-service
        backend:
          serviceName: book-service
          servicePort: 80
      - path: /api-service
        backend:
          serviceName: api-service
          servicePort: 80
      - path: /
        backend:
          serviceName: static-service
          servicePort: 80

您必须调整服务名称和端口,并选择希望用户访问API的路径,在上面的示例中,您需要:

  • foo。酒吧com/图书服务为您的图书服务
  • foo。酒吧api服务的com/api服务
  • foo。酒吧com/即所有其他内容都将转到静态服务

 类似资料:
  • 我正在使用Spring Boot,并试图使我的静态资源(CSS,JS,字体)在部署时可用。源代码可供您查看或从https://github.com/joecracko/StaticResourceError.克隆 现在我的CSS、JS和字体文件对我部署的网站不可见。 下面是我的项目目录结构: 下面是编译后的JAR的根目录:我向您保证,这些文件存在于各自的文件夹中。 以下是我看到的网络错误: 以下是

  • 我正在通过spring boot启动一个嵌入式tomcat,并希望提供一个静态索引。html页面作为正在运行的应用程序的一部分。 但以下方法不起作用: 结果:当我调用localhost:8080时,我只看到单词“index”,而没有看到我的html页面。为什么?

  • 我是Springboot的新手,我正在尝试在其根()路径上显示html页面。我在谷歌上搜索了一下- Spring Boot不提供静态内容 https://spring.io/blog/2013/12/19/serving-statige-web-content-with-spring-boot Spring Boot应用程序不提供静态内容 SpringBoot不提供静态内容 我几乎试了所有的办法,

  • 我无法访问静态内容(angular app),甚至无法访问简单的索引。来自spring boot的html文件。我一直收到404错误。Spring没有为我提供这些静态文件。自从升级到Spring Boot 2.2.4后,我就遇到了这个问题。我必须升级以应对Zip64问题。 我的application.properties里有这样一句话: 我也有自己的staticResourceConfigurat

  • 问题内容: 所以这很尴尬。我有一个应用程序,该应用程序已集成在一起,现在它只提供一个静态HTML页面,其中包含指向CSS和JS的链接。而且我找不到文档中描述返回静态文件的位置。是的,我可以使用,但是我知道数据没有模板化。我还以为或者是正确的事情,但我不能让这些工作。同时,我正在打开文件,阅读内容,并装配Response具有适当mimetype的: 有人要为此提供代码示例或网址吗?我知道这将变得简单

  • 问题内容: 我在两个不同的容器(Tomcat和Jetty)上部署了一个webapp,但是它们用于提供静态内容的默认servlet具有处理我要使用的URL结构的不同方式(详细信息)。 因此,我希望在web应用程序中包含一个小型servlet,以提供其自己的静态内容(图像,CSS等)。Servlet应该具有以下属性: No external dependencies Simple and reliab