Не в состоянии вызвать внешние ресурсы через kubernetes Ingress - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь настроить входящие ресурсы в kubernetes, я хочу знать, могу ли я получить доступ к внешним ресурсам через kuberntes (например, я установил kibana на виртуальную машину и хочу получить доступ через входной файл kubernetes, как показано ниже)

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  namespace: default
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/add-base-url: "true"
spec:
  rules:
  - host: test.com
    http:
      paths:
        - path: "/"
          backend:
            serviceName: service1
            servicePort: 1000
        - path: "/test"
          backend:
            serviceName: service2.test
            servicePort: 2000
        - path: "/kibana"
          backend:
            serviceName: <ip-address>
            servicePort: 9092

Any suggested is this the right way of calling external resources(or) we cannot initiate a call as it is outside of kubernetes...

I am trying to call as test.com/kibana

Please suggest.

1 Ответ

0 голосов
/ 26 февраля 2020

Для внешних ресурсов вы должны создать Endpoints объект.

Это объясняется с помощью Сервисы без селекторов

Сервисы, чаще всего абстрактный доступ к блокам Kubernetes , но они также могут абстрагировать другие виды бэкэндов. Например:

  • Вы хотите иметь в работе кластер внешней базы данных, но в своей тестовой среде вы используете свои собственные базы данных.
  • Вы хотите, чтобы ваша служба указывала на службу в другое пространство имен или другой кластер.
  • Вы переносите рабочую нагрузку в Kubernetes. Оценивая подход, вы запускаете только часть своих бэкэндов в Kubernetes.

В любом из этих сценариев ios вы можете определить Сервис без селектора Pod. Например:

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376

Поскольку эта служба не имеет селектора, соответствующий объект конечной точки не создается автоматически. Вы можете вручную сопоставить Службу с сетевым адресом и портом, на котором она работает, добавив объект Endpoint вручную:

apiVersion: v1
kind: Endpoints
metadata:
  name: my-service
subsets:
  - addresses:
      - ip: 192.0.2.42
    ports:
      - port: 9376

Так что, как только вы добавите Endpoint setup Service для него , вы сможете использовать внутри Ingress.

...