繁体   English   中英

在 Kubernetes 中使用 nginx 入口托管两个 web 应用程序

[英]Hosting two web apps with nginx ingress in Kubernetes

我有一个 kubernetes 集群在 Azure Kubernetes 服务 (AKS) 中运行。 我一直在关注一系列研讨会,并设置了 NGINX 入口 controller。 现在我正在使用 nip.io 来访问我的网站。 他们让我创建一个入口资源来公开前端:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ratings-web-ingress
  annotations: 
    kubernetes.io/ingress.class: nginx
  spec:
    rules:
    - host: frontend.<redacted ip>.nip.io
    http:
      paths:
      - backend:
        serviceName: ratings-web
        servicePort: 80
      path: /

这工作正常。 我可以浏览 nip.io 地址,一切正常。 我想扩展它并创建一个单独的站点。 我想要它在同一个地址,只是在/foo

我试图创建一个入口资源:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: foo-web-ingress
  annotations: 
    kubernetes.io/ingress.class: nginx
  spec:
    rules:
    - host: frontend.<redacted ip>.nip.io
    http:
      paths:
      - backend:
        serviceName: foo-web
        servicePort: 80
      path: /foo

当我浏览frontend.<redacted ip>.nip.io/foo我从 nginx 中找不到 404。 我尝试根据另一个 SO 帖子添加以下注释:

nginx.ingress.kubernetes.io/rewrite-target: /

现在,当我浏览/foo时,它会响应,但所有内容都是空白的。 在 web 应用程序中,它引用了根级别的所有内容,例如:

<link href="/assets/css/bootstrap.min.css" rel="stylesheet" type="text/css" />

当它看到这条路径时,我认为它会转到原始网站,所以我得到严格的 MIME 类型错误或 404 错误。

我需要做什么才能在不同路径的同一 nginx 入口 controller 上托管两个网站?

Ingress controller 在合并这两个入口时会感到困惑,正确的顺序应该是什么,因为为同一主机定义了多个入口资源。

文档中引用,您可以使用单个入口资源作为扇出。

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: simple-fanout-example
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    kubernetes.io/ingress.class: nginx
spec:
  rules:
  - host: <redacted ip>.nip.io
    http:
      paths:
      - path: /foo
        backend:
          serviceName: foo-web
          servicePort: 80
      - path: /bar
        backend:
          serviceName: bar-web
          servicePort: 80

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM