Вход игнорирует глобальный IP-адрес, делая его только https

# #kubernetes #google-kubernetes-engine #kubernetes-ingress

Вопрос:

Создайте внешний вход для службы, подобной приведенной ниже.

Все создается, но без того поведения, которого я ожидаю.

  • Глобальный IP-адрес не используется, вместо него используется другой
  • HTTP все еще включен
 apiVersion: "extensions/v1beta1"
kind: "Ingress"
metadata:
  annotations:
    kubernetes.io/ingress.allow-http: false
    kubernetes.io/ingress.global-static-ip-name: "my-ingress-ip"
  labels:
    app.kubernetes.io/instance: "my-service-api"
    app.kubernetes.io/managed-by: "pulumi"
    app.kubernetes.io/name: "my-service-api"
    app.kubernetes.io/version: "1.0.0-service"
    helm.sh/chart: "service-0.1.0"
  name: "my-service-api-proxy"
  namespace: "load-test"
spec:
  backend:
    serviceName: "my-service-api-proxy"
    servicePort: 80
  tls:
    - secretName: "my-tls-secret-cert"
 

Как только я удалю kubernetes.io/ingress.allow-http аннотация, вход получает мой глобальный IP-адрес.

Кто-нибудь сталкивался с этой проблемой при создании входа с глобальным IP-адресом и доступом только по протоколу HTTPS?

Версия GKE: 1.18.16-gke.2100

Конфигурация Узла:

Версия ядра 5.4.89

Контейнер изображений ОС-Оптимизированная ОС от Google

Докер версии среды выполнения контейнера://19.3.14

версия kubelet v1.18.16-gke.2100

kube-прокси версия v1.18.16-gke.2100

Комментарии:

1. Обновил свой дескриптор, используя кавычки, и глобальный IP работает, но по какой-то причине он по-прежнему разрешает HTTP-трафик.

Ответ №1:

Это работает, не забудьте использовать кавычки для всех значений аннотаций, поскольку они являются строками.

 apiVersion: "extensions/v1beta1"
kind: "Ingress"
metadata:
  annotations:
    kubernetes.io/ingress.allow-http: "false"
    kubernetes.io/ingress.global-static-ip-name: "my-ingress-ip"
  labels:
    app.kubernetes.io/instance: "my-service-api"
    app.kubernetes.io/managed-by: "pulumi"
    app.kubernetes.io/name: "my-service-api"
    app.kubernetes.io/version: "1.0.0-service"
    helm.sh/chart: "service-0.1.0"
  name: "my-service-api-proxy"
  namespace: "load-test"
spec:
  backend:
    serviceName: "my-service-api-proxy"
    servicePort: 80
  tls:
    - secretName: "my-tls-secret-cert"

 

Кроме того, если вы обновляете существующий вход, дайте ему несколько минут (например, 10), чтобы он принял изменения