Ingress и Ingress контроллер, как их использовать с NodePort Services? - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть одна служба, работающая на службе NodePort.Как использовать вход для доступа к нескольким службам.

deploy.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: auth
spec:
  replicas: 1
  selector:
    matchLabels:
      app: auth
  template:
    metadata:
      labels:
        app: auth
        tier: backend
        track: dev
    spec:
      containers:
        - name: auth
          image: [url]/auth_app:v2
          ports:
            - name: auth
              containerPort: 3000

service.yml

apiVersion: v1
kind: Service
metadata:
  name: auth
spec:
  selector:
    app: auth
    tier: backend
  ports:
    - protocol: TCP
      port: 3000
      targetPort: auth
  type: NodePort

ingress.yml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
spec:
  backend:
    serviceName: auth
    servicePort: 8080

Я следовал шаг за шагом из этого репо .Я не мог заставить его работать для моего порта конфигурации.Я новичок и хотел бы некоторые ресурсы для того же.

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Попробуйте эти манифесты и не забудьте развернуть Ingress Controller (я обычно использую traefik, здесь некоторые инструкции для его установки)

service.yml: я изменил NodePort на ClusterIP (по умолчанию, вы можете удалить строку)

apiVersion: v1
kind: Service
metadata:
  name: auth
spec:
  selector:
    app: auth
    tier: backend
  ports:
    - protocol: TCP
      port: 3000
      targetPort: auth
  type: ClusterIP

ingress.yml: (Я установил порт на 3000, ваш сервисный порт)

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
spec:
  backend:
    serviceName: auth
    servicePort: 3000
0 голосов
/ 15 сентября 2018

Ваша служба работает в порту 3000, но ваше правило маршрутизации Ingress соответствует порту 8080. Возможно, оно будет работать, если вы просто измените servicePort на 3000 в разделе бэкэнда определения ресурса Ingress.

Я бы посоветовал убедиться, что он работает с NodePort, прежде чем пробовать Ingress.Я предлагаю это, потому что замечаю, что ваша служба указывает только значения для порта и targetPort, но не для nodePort.Вы должны установить значение для порта, который вы хотите выставить снаружи, или вы получите случайный.

Для учебных пособий по NodePort вы можете начать с https://medium.com/@markgituma/kubernetes-local-to-production-with-django-2-docker-and-minikube-ba843d858817, поскольку я заметил, что вы пометили свой пост django

Для входа в nginx вы можете увидеть https://cloud.google.com/community/tutorials/nginx-ingress-gke, но выВозможно, вы захотите найти что-то конкретное для вашей облачной платформы, если вы не используете gke

Лучше всего начать с одного сервиса, но чтобы понять, как это может работать для нескольких сервисов, вы могли бы взглянуть на вход фанатов.пример в документах https://kubernetes.io/docs/concepts/services-networking/ingress/#simple-fanout

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...