Как мне на самом деле подключиться к botfront в kubernetes?

#kubernetes #rasa

#kubernetes #rasa

Вопрос:

Я попытался выполнить развертывание на EKS, и мой config.yaml соответствует этому предложенному формату:

 botfront:
   app:
# The complete external host of the Botfront application (eg. botfront.yoursite.com). It must be set even if running on a        private or local DNS (it populates the ROOT_URL).
       host: botfront.yoursite.com
mongodb:
   enabled: true # disable to use an external mongoDB host
# Username of the MongoDB user that will have read-write access to the Botfront database. This is not the root user
    mongodbUsername: username
# Password of the MongoDB user that will have read-write access to the Botfront database. This is not the root user
    mongodbPassword: password
# MongoDB root password
     mongodbRootPassword: rootpassword
 

И я выполнил эту команду:

 helm install -f config.yaml -n botfront --namespace botfront botfront/botfront
 

и развертывание оказалось успешным, все модули перечислены как запущенные.

Но botfront.yoursite.com никуда не денется. Я проверил вход, и он совпадает, но нет внешних IP-адресов или чего-либо еще. Я не знаю, как на самом деле получить доступ к моему сайту botfront после развертывания в kubernetes.

Чего мне не хватает?

Редактировать:

С установленным nginx lb kubectl get ingresses -n botfront теперь возвращает:

 NAME                   CLASS    HOSTS                ADDRESS                                                                         PORTS   AGE
botfront-app-ingress   <none>   botfront.cream.com   a182b0b24e4fb4a0f8bd6300b440e5fa-423aebd224ce20ac.elb.us-east-2.amazonaws.com   80      4d1h
 

и

kubectl get svc -n botfront ВОЗВРАТ:

 NAME                        TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)           AGE
botfront-api-service        NodePort   10.100.207.27   <none>        80:31723/TCP      4d1h
botfront-app-service        NodePort   10.100.26.173   <none>        80:30873/TCP      4d1h
botfront-duckling-service   NodePort   10.100.75.248   <none>        80:31989/TCP      4d1h
botfront-mongodb-service    NodePort   10.100.155.11   <none>        27017:30358/TCP   4d1h
 

Ответ №1:

Если вы запустите kubectl get svc -n botfront , он покажет вам все Services , что раскрывает ваш botfront

 $ kubectl get svc -n botfront
NAME                        TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)           AGE
botfront-api-service        NodePort   10.3.252.32    <none>        80:32077/TCP      63s
botfront-app-service        NodePort   10.3.249.247   <none>        80:31201/TCP      63s
botfront-duckling-service   NodePort   10.3.248.75    <none>        80:31209/TCP      63s
botfront-mongodb-service    NodePort   10.3.252.26    <none>        27017:31939/TCP   64s
 

Каждый из них имеет тип NodePort , что означает, что он предоставляет вашему приложению доступ к внешнему IP-адресу каждого из ваших узлов кластера EKS на определенном порту.

Итак, если у вас есть IP-адрес node1 1.2.3.4 , вы можете получить доступ botfront-api-service 1.2.3.4:32077 . Не забудьте разрешить доступ к этому порту в группах брандмауэра / безопасности. Если у вас есть какой-либо зарегистрированный домен, например yoursite.com , вы можете настроить для него поддомен botfront.yoursite.com и указать его на один из ваших узлов EKS. Тогда вы сможете получить к нему доступ, используя свой домен. Это самый простой способ.

Чтобы иметь возможность доступа к нему более эффективным способом, чем при использовании IP-адреса определенного узла и нестандартного порта, вы можете предоставить его через Ingress который будет создан внешний балансировщик нагрузки, делающий ваши NodePort службы доступными по одному внешнему IP-адресу и стандартному http-порту.

Обновление: я вижу, что эта диаграмма уже поставляется с ingress вашим приложением:

 $ kubectl get ingresses -n botfront 
NAME                   HOSTS                   ADDRESS   PORTS   AGE
botfront-app-ingress   botfront.yoursite.com             80      70m
 

Если вы извлекаете его определение yaml с помощью:

 $ kubectl get ingresses -n botfront -o yaml
 

вы увидите, что он использует следующую аннотацию:

 kubernetes.io/ingress.class: nginx
 

это означает, что вам нужен контроллер nginx-ingress, установленный в вашем кластере EKS. Это может быть одной из причин сбоя. Как вы можете видеть в моем примере, этот вход не получает никакого внешнего IP-адреса. Это потому, что nginx-ingress не был установлен в моем кластере GKE. Не уверен насчет EKS, но, насколько я знаю, он не поставляется с предустановленным nginx-ingress.

Еще одна вещь: я предполагаю, что в вашем config.yaml вы указали какое-то реальное доменное имя, вместо которого вы зарегистрировали botfront.yoursite.com . Предположим, что ваш домен yoursite.com и вы успешно создали поддомен botfront.yoursite.com , вы должны перенаправить его на IP вашего балансировщика нагрузки (тот, который используется вашим ingress ).

Если вы запускаете kubectl get ingresses -n botfront , но файл ADDRESS пуст, у вас, вероятно, не установлен nginx-ingress, и базовый балансировщик нагрузки не может быть создан. Если у вас есть какой-то внешний IP-адрес, перенаправьте свой зарегистрированный домен на этот адрес.

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

1. Я установил ingress nginx с kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.43.0/deploy/static/provider/aws/deploy.yaml помощью, но я все еще не могу получить доступ к botfront. yoursite.com

2. Эта команда: kubectl get ingresses -n botfront показывает вход: botfront-app-ingress <none> botfront.cream.com a182b0b24e4fb4a0f8bd6300b440e5fa-423aebd224ce20ac.elb.us-east-2.amazonaws.com 80 24m но вход идет на 404

3. Вы получаете к нему доступ через домен botfront.cream.com ? Я не вижу ни A одной записи, настроенной для этого. Как насчет входного IP-адреса? Насколько я вижу kubectl get ingresses -n botfront , не показывает никакого внешнего IP. Это все еще выглядит так? Как насчет kubectl get svc -n botfront . Пожалуйста, добавьте эти выходные данные, отредактировав свой вопрос. Это будет лучше видно, чем когда вы публикуете их в комментариях.

4. извините за это. Отредактировал мой исходный пост.

5. Я пробовал botfront.cream.com , и я пытался a182b0b24e4fb4a0f8bd6300b440e5fa-423aebd224ce20ac.elb.us-east-2.amazonaws.com . Как с портами в конце, так и без.