Стек: служба Azure Kubernetes
NGINX Ingress Controller - https://github.com/kubernetes/ingress-nginx
AKS Loadbalancer
Контейнеры Docker
Моя цель - создать кластер K8s, который позволит мне использовать несколько модулей под одним IP-адресом для создания микросервисной архитектуры. После работы с множеством руководств и документации мне не повезло с моей конечной целью. Я дошел до того, что смог получить доступ к единственному развертыванию с помощью Loadbalancer, но внедрение входящего трафика пока не увенчалось успехом. Для удобства чтения и простоты управления службы разделены на соответствующие файлы.
Кроме того, в мой кластер был добавлен Ingress Controller, как описано в инструкциях по установке, используя: kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.35.0/deploy/static/provider/cloud/deploy.yaml
LoadBalancer.yml:
apiVersion: v1
kind: Service
metadata:
name: backend
spec:
loadBalancerIP: x.x.x.x
selector:
app: ingress-service
tier: backend
ports:
- name: "default"
port: 80
targetPort: 80
type: LoadBalancer
IngressService.yml:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- http:
paths:
- path: /api
backend:
serviceName: api-service
servicePort: 80
api-deployment.yml
apiVersion: v1
kind: Service
metadata:
name: api-service
spec:
selector:
app: api
ports:
- port: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: api-deployment
spec:
selector:
matchLabels:
app: api
tier: backend
track: stable
replicas: 1
template:
metadata:
labels:
app: api
tier: backend
track: stable
spec:
containers:
- name: api
image: image:tag
ports:
- containerPort: 80
imagePullPolicy: Always
imagePullSecrets:
- name: SECRET
API в изображении правильно отображается через порт 80.
После применения каждой из вышеперечисленных служб и развертываний yml я пытаюсь выполнить веб-запрос к одному из ресурсов api через IP-адрес LoadBalancer и получаю только тайм-аут на свои запросы.