Как я могу настроить таргетинг на два сервиса из одного сервиса в развертывании kubernetes? - PullRequest
0 голосов
/ 03 апреля 2020

Часть моего развертывания выглядит следующим образом

client -- main service  __ service 1
                       |__ service 2

ПРИМЕЧАНИЕ: Каждый из этих 4 сервисов является контейнером, и я пытаюсь сделать это там, где каждый находится в отдельном модуле. (без использования контейнера с несколькими контейнерами)

Если основная служба должна выполнить вызов службы 1, получить результаты, затем отправить эти результаты службе 2, получить этот результат и отправить его обратно веб-клиенту

основной сервис работает в таком порядке

  • получить запрос от банка веб-клиента: 80
  • отправить запрос на http://localhost: 8000 (услуга 1)
  • сделать запрос на http://localhost: 8001 (услуга 2)
  • результаты слияния
  • ответить веб-клиенту с результатом

Мои развертывания для служб 1 и 2 выглядят следующим образом

СЕРВИС 1

apiVersion: v1 
kind: Service 
metadata: 
  name: serviceone 
spec: 
  selector: 
    run: serviceone 
  ports: 
    - port: 80 
      targetPort: 5050 

--- 

apiVersion: apps/v1 
kind: Deployment 
metadata: 
  name: serviceone-deployment 
spec: 
  replicas: 1 
  selector: 
    matchLabels: 
      run: serviceone 
  template: 
    metadata: 
      labels: 
        run: serviceone 
    spec: 
      containers: 
      - name: serviceone 
        image: test.azurecr.io/serviceone:v1 
        imagePullPolicy: IfNotPresent 
        ports: 
        - containerPort: 5050 

СЕРВИС 2

apiVersion: v1 
kind: Service 
metadata: 
  name: servicetwo
spec: 
  selector: 
    run: servicetwo 
  ports: 
    - port: 80 
      targetPort: 5000 

--- 

apiVersion: apps/v1 
kind: Deployment 
metadata: 
  name: servicetwo-deployment 
spec: 
  replicas: 1 
  selector: 
    matchLabels: 
      run: servicetwo 
  template: 
    metadata: 
      labels: 
        run: servicetwo 
    spec: 
      containers: 
      - name: servicetwo 
        image: test.azurecr.io/servicetwo:v1 
        imagePullPolicy: IfNotPresent 
        ports: 
        - containerPort: 5000 

Но я не знаю, что такое служба и развертывание будет выглядеть для основной службы, которая должна сделать запрос к двум другим службам.

РЕДАКТИРОВАТЬ: Это мое отношение empt при обслуживании / развертывании для основного обслуживания

apiVersion: v1 
kind: Service 
metadata: 
  name: mainservice
spec: 
  selector: 
    run: mainservice 
  ports: 
    - port: 80 # incoming traffic from web client pod
      targetPort: 80 # traffic goes to container port 80
  selector: 
    run: serviceone 
  ports: 
    - port: ?
      targetPort: 8000 # the port the container is hardcoded to send traffic to service one
  selector: 
    run: servicetwo 
  ports: 
    - port: ? 
      targetPort: 8001  # the port the container is hardcoded to send traffic to service two  

--- 

apiVersion: apps/v1 
kind: Deployment 
metadata: 
  name: mainservice-deployment 
spec: 
  replicas: 1 
  selector: 
    matchLabels: 
      run: mainservice 
  template: 
    metadata: 
      labels: 
        run: mainservice 
    spec: 
      containers: 
      - name: mainservice 
        image: test.azurecr.io/mainservice:v1 
        imagePullPolicy: IfNotPresent 
        ports: 
        - containerPort: 80

EDIT 2: альтернативная попытка обслуживания после обнаружения этого https://kubernetes.io/docs/concepts/services-networking/service/#multi -port-services

apiVersion: v1 
kind: Service 
metadata: 
  name: mainservice
spec: 
  selector: 
    run: mainservice 
  ports: 
    - name: incoming
      port: 80 # incoming traffic from web client pod
      targetPort: 80 # traffic goes to container port 80
    - name: s1
      port: 8080
      targetPort: 8000 # the port the container is hardcoded to send traffic to service one
    - name: s2
      port: 8081
      targetPort: 8001  # the port the container is hardcoded to send traffic to service two  

1 Ответ

1 голос
/ 03 апреля 2020

Основной службе не нужно ничего знать о службах, которые она вызывает, кроме их названий. Просто получите доступ к этим службам, используя имя Service, то есть service1 и service2, и запросы будут перенаправлены на правильный модуль.

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