Если вы используете Kubernetes, вот шаги высокого уровня:
- Создание развертываний / рабочих нагрузок микро-службы с использованием образов Docker
- Создание служб, указывающих на эти развертывания
- Создание входа с использованием правил на основе пути, указывающих на службы
Вот примеры файлов манифеста / yaml: (при необходимости измените образы докера, порты и т. Д.)
apiVersion: v1
kind: Service
metadata:
name: svc-gateway
spec:
ports:
- port: 80
selector:
app: gateway
---
apiVersion: v1
kind: Service
metadata:
name: svc-messaging
spec:
ports:
- port: 80
selector:
app: messaging
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: deployment-gateway
spec:
replicas: 1
template:
metadata:
labels:
app: gateway
spec:
containers:
- name: gateway
image: gateway/image:v1.0
ports:
- containerPort: 80
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: deployment-messaging
spec:
replicas: 1
template:
metadata:
labels:
app: messaging
spec:
containers:
- name: messaging
image: messaging/image:v1.0
ports:
- containerPort: 80
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-for-chat-application
spec:
rules:
- host: chat.example.com
http:
paths:
- backend:
serviceName: svc-gateway
servicePort: 80
path: /api/v1/users
- backend:
serviceName: svc-messaging
servicePort: 80
path: /api/v1/messages
Если у вас есть другие контейнеры, работающие в том же пространстве имен, и вы хотите обмениваться данными с этими службами, вы можете напрямую использовать их имена служб.
Например:
curl http://svc-messaging
или curl http://svc-gateway
Вам не нужно запускать собственное обнаружение службы, о котором позаботился Kubernetes!
Некоторые изображения:
Шаг 1:
Шаг 2:
Шаг 3: