Ingress возвращает "бэкэнд по умолчанию - 404" в Minikube
Я пытаюсь настроить очень простой кластер Kubernetes с сервисами frontend, backend и db. Вот часть файла определения сервиса Frontend:
apiVersion: v1
kind: Service
metadata:
name: frontend
labels:
tier: frontend
spec:
selector:
tier: frontend
ports:
- port: 80
nodePort: 30080
type: LoadBalancer
Когда я получаю доступ к IP-адресу кластера через порт 30080, все работает правильно.
Сейчас я пытаюсь настроить Ingress, который будет работать на порте 80 (при подготовке к развертыванию кластера в Azure). Я хочу направить весь HTTP-трафик на внешний интерфейс, так как это единственный HTTP-сервис в моем кластере. Итак, файл определения входа выглядит следующим образом:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: zippori
annotations:
kubernetes.io/ingress.class: addon-http-application-routing
spec:
backend:
serviceName: frontend
servicePort: 80
Однако, когда я получаю доступ к http://minikube-ip/, я получаю следующую очень простую ошибку:
бэкэнд по умолчанию - 404
Как будто Ingress ничего не передает моему веб-интерфейсу, а просто пытается использовать собственный бэкэнд по умолчанию.
Как я могу это исправить?
1 ответ
Проблема с сервисом Ingress.
В виде Ingress yaml Вы используете аннотацию для определения "входного бэкенда". Для AKS это "addon-http-application-routing", но для minikube то, что работает из коробки, это kubernetes.io/ingress.class: nginx
Обновление Ingress с правильной аннотацией должно включить службу для вашей настройки мини-куба.