首页 > 解决方案 > 入口配置设置不会重定向到正确的页面

问题描述

在 K8S 中设置入口需要帮助。先感谢您。

我已经使用 Helm 在 AKS 集群上配置了 NGINX 控制器和 Cert-Manager。

这是 svc,pod 列表。 在此处输入图像描述

接下来 - 部署了两个 pod,这里尊重的服务就是这些名称,可以在上面的图片中找到。

接下来 - 当我尝试为上述两个服务设置如下入口时。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: rpe-delivers-orders-dcs-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: dcs-cluster-issuer
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  tls:
  - hosts:
    - raag.westus2.cloudapp.azure.com
    secretName: dcs-tls-secret
  rules:
  - host: raag.westus2.cloudapp.azure.com
    http:
      paths:
      - path: /orders-dcs(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: rpe-delivers-orders-dcs-api
            port:
              number: 80
      - path: /orders-proxy(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: rpe-delivers-orders-proxy-api
            port:
              number: 80
      - path: /(.*)
        pathType: Prefix
        backend:
          service:
            name: rpe-delivers-orders-dcs-api
            port:
              number: 80

我的目标是以下 URL 应重定向到两个不同的网页:

如果我遗漏任何信息或没有正确设置,请告诉我。

谢谢你。

标签: kuberneteskubernetes-helmkubernetes-ingressazure-akskubernetes-pod

解决方案


看起来您缺少rpe-delivers-orders-proxy-api入口配置中的块

- path: /(.*)
        pathType: Prefix
        backend:
          service:
            name: rpe-delivers-orders-proxy-api
            port:
              number: 80

如果在这种情况下您有任何路径重写选项和要求,您可以创建两个不同的入口

没有 1. 重写 ingress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name:  ingress-first
  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: dcs-cluster-issuer
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  tls:
  - hosts:
    - raag.westus2.cloudapp.azure.com
    secretName: dcs-tls-secret
  rules:
  - host: raag.westus2.cloudapp.azure.com
    http:
      paths:
      - path: /orders-dcs(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: rpe-delivers-orders-dcs-api
            port:
              number: 80
      - path: /orders-proxy(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: rpe-delivers-orders-proxy-api
            port:
              number: 80

没有 2.简单的入口,也将根据您的要求在那里

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-second
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  tls:
  - hosts:
    - raag.westus2.cloudapp.azure.com
    secretName: dcs-tls-secret
  rules:
  - host: raag.westus2.cloudapp.azure.com
    http:
      paths:
      - path: /
        backend:
          service:
            name: rpe-delivers-orders-proxy-api
            port:
              number: 80
      - path: /
        backend:
          service:
            name: rpe-delivers-orders-dcs-api
            port:
              number: 80

更新

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-second
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  tls:
  - hosts:
    - raag.westus2.cloudapp.azure.com
    secretName: dcs-tls-secret
  rules:
  - host: raag.westus2.cloudapp.azure.com
    http:
      paths:
      - path: /orders-proxy
        pathType: Prefix
        backend:
          service:
            name: rpe-delivers-orders-proxy-api
            port:
              number: 80

推荐阅读