Kubernetes Ingress на GKE

Я развернул Kubernetes на AWS с KOPS и nginx-ingress.

Чтобы оценить несколько облаков (и сократить расходы), я хочу развернуть их на GKE. Все работало, кроме чертовой Ingress. (Это было самое сложное в AWS).

Ниже представлен Ingress, который я использую в GKE. Он делает два входа на панели управления, каждый с IP-адресом.

Если я укажу свой DNS на эти адреса, в соединении будет отказано. Проверяю результат DNS с помощью ping.

Все HTTPS не могут подключиться с сообщением «Невозможно установить SSL-соединение», за исключением кнопки «502 Bad Gateway»

HTTP не может подключиться к 502, за исключением admin, который является 503.

На панели управления Google Cloud Platform я вижу два балансировщика нагрузки. «все» указывает на мой сертификат SSL. «button» не выполняет HTTPS, но это другая проблема.

Ясно, что я что-то упускаю. Что я пропустил?

Я использую kubectl v1.4.6 и любую версию, установленную на GKE вчера.

```
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    # this is for nginx ingress controler on AWS
    # kubernetes.io/ingress.class: "nginx"
  name: all-ingress
spec:
  tls:
  - hosts:
    - admin-stage.example.com
    - dashboard-stage.example.com
    - expert-stage.example.com
    - signal-stage.example.com
    - stage.example.com
    secretName: tls-secret
  rules:
  - host: admin-stage.example.com
    http:
      paths:
      - backend:
          serviceName: admin-service
          servicePort: http-port
        path: /
  - host: dashboard-stage.example.com
    http:
      paths:
      - backend:
          serviceName: dashboard-service
          servicePort: http-port
        path: /
  - host: expert-stage.example.com
    http:
      paths:
      - backend:
          serviceName: expert-service
          servicePort: http-port
        path: /
  - host: signal-stage.example.com
    http:
      paths:
      - backend:
          serviceName: signal-service
          servicePort: http-port
        path: /
  - host: stage.example.com
    http:
      paths:
      - backend:
          serviceName: www-service
          servicePort: http-port
        path: /
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    # this is for nginx ingress controler on AWS
    # kubernetes.io/ingress.class: "nginx"
    ingress.kubernetes.io/ssl-redirect: "false"
  name: button-ingress
spec:
  tls:
  - hosts:
    - button-stage.example.com
    secretName: tls-secret
  rules:
  - host: button-stage.example.com
    http:
      paths:
      - backend:
          serviceName: button-service
          servicePort: http-port
        path: /
```

person Michael Cole    schedule 08.12.2016    source источник
comment
проверьте github.com/kubernetes/contrib/ blob / master / ingress / controllers /, github.com/kubernetes/contrib/tree/master/ingress/controllers/, github.com/kubernetes/contrib/tree/master/ingress/controllers/. Вам нужны: службы портов узла, проверка работоспособности (либо / обслуживающая 200, либо проверка готовности на ваших модулях, соответствующих порту узла) и достаточная внутренняя квота в GCE. Что kubectl describe говорит?   -  person Prashanth B    schedule 08.12.2016
comment
Перешел на NodePort, и устранение проблем с квотами ...   -  person Michael Cole    schedule 09.12.2016
comment
Теперь он обслуживает / из приложения, но /files.css из бэкэнда по умолчанию ...   -  person Michael Cole    schedule 09.12.2016
comment
см. github.com/kubernetes/contrib/tree/master/ingress / controllers /   -  person Prashanth B    schedule 09.12.2016
comment
@PrashanthB хммм ... Кажется, все это не закончено. Мне нужно что-то, что работает, поэтому я развернул контроллер nginx, который использовал на AWS, и он сработал. Спасибо за помощь, Прашант!   -  person Michael Cole    schedule 09.12.2016


Ответы (1)


Комментарии Прашанта были полезны, в конце концов, нативный облачный Ingress (AWS / GCE) еще не доработан в Kubernetes, чтобы быть полезным для моих целей. Нет смысла изучать более сложную и менее функциональную абстракцию, чем то, что находится под ней.

В итоге я использовал nginx-ingress из этого ответа: Kubernetes 1.4 SSL Termination на AWS

На полученном Ingress будет IP-адрес, на который вы можете указать DNS (а не «Внешние конечные точки» службы). Удачи!

person Michael Cole    schedule 09.12.2016
comment
Вы в конечном итоге использовали nginx-ingress и в Google? Я думаю, что единственный вариант на GKE - это балансировщик нагрузки google. - person lazy functor; 28.02.2017
comment
@lazyfunctor Да, я использовал тот же вход nginx в Google Cloud. - person Michael Cole; 03.03.2017