#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.com2. Эта команда:
kubectl get ingresses -n botfront
показывает вход:botfront-app-ingress <none> botfront.cream.com a182b0b24e4fb4a0f8bd6300b440e5fa-423aebd224ce20ac.elb.us-east-2.amazonaws.com 80 24m
но вход идет на 4043. Вы получаете к нему доступ через домен
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 . Как с портами в конце, так и без.