Как я могу выставить свой микросервис Hasura на несколько портов?
В моем микросервисе есть несколько контейнеров, каждому из которых требуется доступ к отдельному порту. Как мне предоставить эту услугу на нескольких портах с помощью интерфейса командной строки Hasura и файлов конфигурации проекта?
Редактировать: Добавление микросервиса k8s.yaml
(по запросу @iamnat) Допустим, у меня есть два контейнера, containerA
а также containerB
, что я хочу выставить через HTTP на портах 6379
а также 8000
соответственно.
apiVersion: v1
items:
- apiVersion: extensions/v1beta1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: www
hasuraService: custom
name: www
namespace: '{{ cluster.metadata.namespaces.user }}'
spec:
replicas: 1
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: www
spec:
containers:
- name: containerA
image: imageA
ports:
- containerPort: 6379
- name: containerB
image: imageB
ports:
- containerPort: 8000
securityContext: {}
terminationGracePeriodSeconds: 0
status: {}
- apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: www
hasuraService: custom
name: www
namespace: '{{ cluster.metadata.namespaces.user }}'
spec:
ports:
- port: 6379
name: containerA
protocol: HTTP
targetPort: 6379
- port: 8000
name: containerB
protocol: HTTP
targetPort: 8000
selector:
app: www
type: ClusterIP
status:
loadBalancer: {}
kind: List
metadata: {}
1 ответ
TL;DR: - добавить маршрут шлюза API для каждой конечной точки HTTP, которую вы хотите предоставить [docs]
Внутри кластера kubernetes укажите свою спецификацию k8s так будет выглядеть ваша установка:
http://www.default:8000 -> containerA
http://www.default:6379 -> containerB
Таким образом, вам нужно создать маршрут для каждого из этих путей HTTP в conf/routes.yaml
,
www-a:
/:
upstreamService:
name: www
namespace: {{ cluster.metadata.namespaces.user }}
upstreamServicePath: /
upstreamServicePort: 8000
corsPolicy: allow_all
www-b:
/:
upstreamService:
name: www
namespace: {{ cluster.metadata.namespaces.user }}
upstreamServicePath: /
upstreamServicePort: 6379
corsPolicy: allow_all
Это означает, что вы получите следующее:
https://www-a.domain.com -> containerA
https://www-a.domain.com -> containerB