Назад | Перейти на главную страницу

Kubernetes nginx ingress: как перенаправить foo.example.org на example.org?

Мой вход сейчас выглядит так:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
  tls:
    - hosts:
        - example.org
        - app.example.org
      secretName: prod-tls
  rules:
    - host: example.org
      http:
        paths:
          - path: /
            backend:
              serviceName: app-service
              servicePort: 80
    - host: app.example.org
        http:
          paths:
              - path: /
                backend:
                  serviceName: app-service
                  servicePort: 80

Но теперь я хочу перенаправить app.example.org к example.org вместо. Как я могу это сделать?

я нашел этот пример с помощью ingress.kubernetes.io/configuration-snippet но я не знаю, к каким доменам это относится?

Я использую Helm nginx-ingress-1.37.0; версия приложения 0.32.0.

Я нашел этот пример, используя ingress.kubernetes.io/configuration-snippet: но я не знаю, к каким доменам это относится?

Об этой конфигурации легче рассуждать, когда у вас есть два Ingress, один только для "размещения" configuration-snippet: а другой для выполнения настоящей работы:

---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
  tls:
    - hosts:
        - example.org
      secretName: prod-tls
  rules:
    - host: example.org
      http:
        paths:
          - path: /
            backend:
              serviceName: app-service
              servicePort: 80
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress-redirect
  annotations:
    kubernetes.io/ingress.class: nginx
    # this should be covered by the annotation on the other ingress
    # since it will renew the same certificate
    # cert-manager.io/cluster-issuer: letsencrypt-prod
    ingress.kubernetes.io/configuration-snippet: |
        rewrite ^/(.*)$ https://example.org/$1 permanent;
spec:
  tls:
    - hosts:
        - app.example.org
      secretName: prod-tls
  rules:
    - host: app.example.org
      http:
          paths:
              - path: /
                backend:
                  serviceName: app-service
                  servicePort: 80