Как я могу сгенерировать Внешний IP при создании входа, который использует контроллер nginx в kubernetes
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: helloworld-rules
spec:
rules:
- host: helloworld-v1.example.com
http:
paths:
- path: /
backend:
serviceName: helloworld-v1
servicePort: 80
- host: helloworld-v2.example.com
http:
paths:
- path: /
backend:
serviceName: helloworld-v2
servicePort: 80
Я делаю кластер kubernetes, и я буду применять это изолированное cloudPlatform (не AWS или Google). При создании входа для службы я могу выбрать адрес хоста, но он нигде не существует (этот адрес не зарегистрирован как DNS-сервер), поэтому я не могу получить доступ к этому URL. Посещение этого IP просто дает 404. Как я могу получить или настроить URL, который может получить доступ к внешнему браузеру:(...
1 ответ
Это зависит от того, как вы настраиваете свой контроллер nginx.
У вас должна быть настроена служба, которая является точкой входа при доступе извне, см. Документы https://kubernetes.io/docs/concepts/services-networking/ingress/.
Таким образом, в основном у вас есть служба, которая указывает на входной контроллер, и она будет перенаправлять трафик на ваши модули на основе входных объектов.
Вход -> Услуги -> Стручки
Так как вы не работаете в aws или google, вам придется использовать externalIp или NodePort и соответственно настроить сервис
kind: Service
apiVersion: v1
metadata:
name: ingress-nginx
namespace: ingress-nginx
labels:
app: ingress-nginx
spec:
selector:
app: ingress-nginx
ports:
- name: http
port: 80
targetPort: http
- name: https
port: 443
targetPort: http
externalIPs:
- 80.11.12.10
И DNS должен управляться с тем, что у вас есть для ваших доменов, чтобы разрешить или для локального тестирования вы можете просто отредактировать ваши /etc/hostnames
В основном в AWS или Google вы просто создаете сервис с типом: LoadBalancer и указываете свои записи DNS на адрес балансировщика (CNAME для aws и IP для google)