
Я пытаюсь настроить очень простой кластер 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-трафик на frontend, так как это единственная HTTP-служба в моем кластере. Поэтому файл определения ingress выглядит следующим образом:
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 kind yaml вы используете аннотацию для определения "ingress backend". Для AKS это "addon-http-application-routing", но для minikube то, что работает из коробки, этоkubernetes.io/ingress.class: nginx
Обновление Ingress с помощью соответствующих аннотаций должно включить обслуживание для вашей настройки minikube.