2016-10-04 2 views
2

Я пытаюсь получить попаданию GKE требовать базовой аутентификации, как этот example from github.GKE Ingress Basic Authentication (ingress.kubernetes.io/auth-type)

Попадание отлично работает. Он направляется на службу. Но аутентификация не работает. Позволяет пройти весь трафик. Неужели GKE не покатил эту функцию? Что-то явно не так в моих спецификациях?

Вот вход:

apiVersion: extensions/v1beta1 
kind: Ingress 
metadata: 
    name: super-ingress 
    annotations: 
    ingress.kubernetes.io/auth-type: basic 
    ingress.kubernetes.io/auth-secret: basic-auth 
    ingress.kubernetes.io/auth-realm: "Authentication Required" 
spec: 
    rules: 
    - host: zzz.host.com 
    http: 
     paths: 
     - backend: 
      serviceName: super-service 
      servicePort: 9000 
     path: /* 

И basic-auth секрет:

$ kubectl get secret/basic-auth -o yaml 

apiVersion: v1 
data: 
    auth: XXXXXXXXXXXXXXXXXXX 
kind: Secret 
metadata: 
    creationTimestamp: 2016-10-03T21:21:52Z 
    name: basic-auth 
    namespace: default 
    resourceVersion: "XXXXX" 
    selfLink: /api/v1/namespaces/default/secrets/basic-auth 
    uid: XXXXXXXXXXX 
type: Opaque 

Любые идеи очень ценятся!

ответ

3

Пример подключения к контроллеру входа nginx. GKE использует GLBC, который не поддерживает auth.

Вы можете deploy входной контроллер nginx в вашем кластере gke. Обратите внимание, что вам нужно annotate вашего входа, чтобы избежать попадания GLBC на вход. Затем вы можете напрямую открыть контроллер nginx или создать вход glbc для перенаправления трафика на вход nginx (см. Этот snippet, написанный bprashanh).

+0

Ах, спасибо! Ключевое недоразумение с моей стороны. –

+0

Кроме того, Traefik - еще один хороший вариант, который [работал хорошо для меня] (https://stackoverflow.com/a/48432839/717998). – errordeveloper