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