В настоящее время я настраиваю среду для развертывания приложения на облачной платформе Google с использованием кубернетов.
Я попытался настроить Ingress для подключения к моему NodePort
services со следующей конфигурацией yaml:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: my-ingress
annotations:
ingress.gcp.kubernetes.io/pre-shared-cert: "my-certificate"
spec:
rules:
- host: example.com
http:
paths:
- path: /*
backend:
serviceName: website
servicePort: 80
- path: /api/*
backend:
serviceName: api
servicePort: 80
Так example.com
и все маршруты идут к моему website
сервис, и все запросы к example.com/api/
перейти в мое приложение API.
Единственное, что я хочу, чтобы все запросы были переписаны в мое приложение как /<endpoint>
вместо того /api/<endpoint>
. Всего несколько дней назад в gcp была добавлена возможность указывать дополнительные правила перенаправления и перезаписи для балансировщиков нагрузки, но она пока недоступна для настройки в YAML (как показано здесь: https://github.com/kubernetes/ingress-gce/issues/109).
Теперь я пошел, чтобы вручную настроить перезапись хоста через облачную консоль. После сохранения настройки восстанавливаются примерно через 10 минут, и я не могу понять, почему.
Я также хочу настроить правило перенаправления с http на https, но я тоже не могу создать их, потому что они, похоже, тоже возвращаются.
Может ли кто-нибудь объяснить, почему это так?
Я не уверен, имеет ли это значение, но я использовал kubectl apply -f my-ingress.yaml
создать вход
Что сказал @Alex Moore - поскольку GCP LB является объектом K8s, он контролирует его конфигурацию.
Если вы хотите использовать функции, которые нельзя настроить внутри K8s, вы должны создать LB вне K8s, создать службу nodePort и указать GCP LB на узлы.