Не могу заставить работать haproxy-ingress

Я пытался заставить HAProxy Ingress работать в моем кластере kubernetes . Я следовал инструкциям в README ( https://github.com/jcmoraisjr/haproxy-ingress/tree/master/examples/deployment ). Я вижу, что модуль haproxy-ingress имеет это в своем журнале:

I0617 16:50:31.298997       6 launch.go:181] 
Name:       HAProxy
Release:    v0.9
Build:      git-4220104
Repository: https://github.com/jcmoraisjr/haproxy-ingress
I0617 16:50:31.299065       6 launch.go:184] Watching for ingress class: haproxy
I0617 16:50:31.299633       6 launch.go:427] Creating API client for https://10.233.0.1:443
I0617 16:50:31.307638       6 launch.go:439] Running in Kubernetes Cluster version v1.18 (v1.18.3) - git (clean) commit 2e7996e3e2712684bc73f0dec0200d64eec7fe40 - platform linux/amd64
F0617 16:50:31.308283       6 launch.go:207] no service with name ingress-controller/ingress-default-backend found: services "ingress-default-backend" is forbidden: User "system:serviceaccount:ingress-controller:default" cannot get resource "services" in API group "" in the namespace "ingress-controller"

Единственное, что нужно отметить, что, похоже, не работало в README, было следующее:

kubectl --namespace=ingress-controller create -f haproxy-ingress.yaml

Эта команда завершилась с ошибкой:

error: unable to recognize "haproxy-ingress.yaml": no matches for kind "Deployment" in version "apps/v1beta2"

Мне пришлось измените apiVersion: apps / v1beta2 на apiVersion: apps / v1

Это вызвало проблему?

Спасибо!

Обновление:

Мне удалось получить pod haproxy-ingress для окончательного запуска без ошибок. После долгих проб и ошибок я наконец понял, что мне нужно обновить «развертывание» haproxy-ingress (через дашбаорд). Мне нужно было добавить только одну строку:

serviceAccountName: ingress-controller

сразу после тега spec:

Я все еще не могу получить внешний адрес.

при запуске

kubectl describe ingress app --namespace=ingress-controller

я не вижу связанный IP-адрес с хостом.

$ kubectl describe ingress app --namespace=ingress-controller
Name:             app
Namespace:        ingress-controller
Address:
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
  Host                      Path  Backends
  ----                      ----  --------
  ifs-alpha-kube.cisco.com
                            /   service-nodeport:80 (<error: endpoints "service-nodeport" not found>)
Annotations:                <none>
Events:
  Type    Reason  Age                From                Message
  ----    ------  ----               ----                -------
  Normal  CREATE  37m                ingress-controller  Ingress ingress-controller/app
  Normal  UPDATE  18m (x3 over 10h)  ingress-controller  Ingress ingress-controller/app
  Normal  UPDATE  18m (x2 over 19m)  ingress-controller  Ingress ingress-controller/app

и если я выполняю

$ kubectl get service -A -o wide

, я вижу, что ни у одной службы нет внешнего IP.

Обновление II

Оказывается, мне не нужно видеть внешние IP-адреса.

0
задан 18 June 2020 в 20:18
1 ответ

F0617 16:50:31.308283 6 launch.go:207] служба с именем ingress-controller/ingress-default-backend не найдена: сервисы "ingress-default-backend" запрещены: User "system:serviceaccount:ingress- контроллер: по умолчанию» не может получить ресурсы «сервисы» в группе API «» в пространстве имен «вход-контроллер»

Кажется, там происходит несколько вещей, но в целом кажется, что yaml, на который вы ссылаетесь, ожидает haproxy для быть дополнительным Ingress-контроллером, а не единственным -- вот почему ему не хватает ingress-default-backend и RoleBinding

Версия docs (как описано в прекрасном руководстве) кажется более полной, так как содержит Service, ClusterRoleBinding и сопутствующие компоненты

Если вы хорошо разбираетесь в руле, вам может больше понравиться диаграмма руля haproxy, так как она более универсальна

3
ответ дан 18 June 2020 в 02:13

Теги

Похожие вопросы