Я пытался заставить 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
Это вызвало проблему?
Спасибо!
Upate:
Мне удалось наконец запустить модуль 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-адреса.
F0617 16: 50: 31.308283 6 launch.go: 207] не обнаружена служба с именем ingress-controller / ingress-default-backend: services "ingress-default-backend" запрещено: пользовательская система: serviceaccount: ingress-controller: default "не удается получить ресурсы" службы "в группе API" "в пространстве имен" входящий-контроллер "
Кажется, там происходит несколько вещей, но в целом кажется, что yaml, с которым вы связались, ожидает, что haproxy будет дополнительный Контроллер Ingress, а не только один - вот почему отсутствует ingress-default-backend
и RoleBinding
В версия документов (как описано прекрасное руководство) кажется более полным, так как он содержит Service
, ClusterRoleBinding
, и связанные компоненты
Если вы разбираетесь в управлении, вам может понравиться диаграмма управления haproxy больше, так как это больше универсальных покупок