【问题标题】:Serving static assets in kubernetes with ingress-nginx使用 ingress-nginx 在 Kubernetes 中提供静态资产
【发布时间】:2021-01-22 22:36:59
【问题描述】:

我有一个 Pod,其中包含服务于 vuejs 构建的 NodeJS 项目的图像(手动 SSR) 我有一个入口控制器来匹配主机到连接到 Pod 的服务,如下所示:

我面临的问题是没有提供静态资源(CSS、JS 和图像),因此它们需要一个“服务器”来处理这些文件。

我试图让 Pod 挂载两个容器,NodeJS + Nginx 容器,并将静态文件复制到 Nginx /var/www/html 并使用 nginx location rule 从那里提供它们,但将其投入生产似乎有点过头了.

我很好奇最好的方法是如何做到这一点,也许是使用 Ingress 控制器规则/注释?还是我想念的某种方式?

我的 Ingress 控制器如下所示:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress-nginx
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
    - host: test.ssr.local
      http:
        paths:
          - path: /
            backend:
              serviceName: service-internal-ssr
              servicePort: 8080

我的部署如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ssr
spec:
  selector:
    matchLabels:
      app: ssr
  template:
    metadata:
      labels:
        app: ssr
    spec:
        - name: ssr
          image: ...
          resources:
            limits:
              cpu: 0.5
              memory: 1000Mi
            requests:
              cpu: 0.2
              memory: 500Mi
          ports:
            - name: app-port
              containerPort: 2055
---
apiVersion: v1
kind: Service
metadata:
  name: service-internal-ssr
spec:
  type: ClusterIP
  selector:
    app: ssr
  ports:
    - port: 8080
      targetPort: 2055

提前谢谢你

【问题讨论】:

    标签: docker nginx kubernetes devops minikube


    【解决方案1】:

    我建议从存储桶或 CDN 之类的东西中提供静态内容,这些东西尽可能靠近客户端,更适合这个用例。为此使用 K8s 是大材小用。

    【讨论】:

    • 我知道这有点矫枉过正,它也可以通过 CDN 完成,但是对于这个 PoC,我必须使用 k8s 来做到这一点,因为目前我没有可能通过 CND ,所以最好知道它是如何完成的:)
    猜你喜欢
    • 2019-12-22
    • 2012-05-11
    • 1970-01-01
    • 2018-05-17
    • 2020-05-03
    • 1970-01-01
    • 2018-10-10
    • 2018-07-17
    • 2020-08-15
    相关资源
    最近更新 更多