入口主机名不会改变

Ingress hostname wont change

我有一个 Ingress 设置,最初我使用了一个占位符名称,“thesis.info”。现在我想更改此主机名,但每当我更改它时,我最终都会收到 404 错误。

  1. 将 yaml 中的 spec.tls.rules.host 值更改为新的主机名
  2. 更改 openssl 用于为 TLS 生成的 crt 和密钥的 CN 值
  3. 在我的本地机器上编辑值 /etc/hosts 值

我是否遗漏了可能导致问题的步骤。我很困惑为什么它适用于一个值而不适用于另一个值。

下面是入口yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: frontend-ingress
  namespace: thesis
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/add-base-url: "true"
    nginx.ingress.kubernetes.io/service-upstream: "true"
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
  tls:
    - hosts:
        - thesis
      secretName: ingress-tls
  rules:
    - host: pod1out.ie
      http:
        paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: frontend
              port:
                number: 3000
---

很可能,您可以在 nginx 日志中找到有关正在发生的事情的提示。如果您有访问权限,您可以使用如下方式访问日志:

kubectl -n <ingress-namespace> get pods 
# should be one or more nginx pods
kubectl -n <ingress-namespace> logs <nginx-pod>

不确定这是否是唯一的问题,但根据文档,'tls' 中的主机必须明确匹配规则中的主机:

spec:
  tls:
    - hosts:
        - pod1out.ie
      secretName: ingress-tls
  rules:
    - host: pod1out.ie

在使用 tls 之前,我建议让 http 路由本身工作(例如,通过创建另一个入口资源),如果这适用于您想要的主机,请使用 tls。