Tengo dos implementaciones, una para backend y otra para frontend, ambas implementadas en el clúster de Kubernetes.
BackendDeployment.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: backend-deployement labels: app: backend-kube spec: replicas: 1 selector: matchLabels: app: backend-app-kube template: metadata: labels: app: backend-app-kube spec: containers: - name: backend-kube-image image: fxx/frox-backend-kube ports: - containerPort: 8111BackendService.yaml
apiVersion: v1 kind: Service metadata: name: backend-app-kube-service spec: selector: app: backend-app-kube ports: - protocol: TCP port: 8111 targetPort: 8111El backend se está desplegando perfectamente
FrontendDeployment.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: frontend-deployement labels: app: frontend-kube spec: replicas: 1 selector: matchLabels: app: fronted-app-kube template: metadata: labels: app: fronted-app-kube spec: containers: - name: fronted-kube-image image: fxx/frox-front-kube ports: - containerPort: 80FrontendService.yaml
apiVersion: v1 kind: Service metadata: name: fronted-app-kube-service spec: selector: app: fronted-app-kube type: NodePort ports: - protocol: TCP port: 80 targetPort: 80Documentación sugerida de Kubernetes Ahora que tiene su backend, puede crear un frontend que se conecte al backend. El frontend se conecta a los pods de trabajadores del backend mediante el nombre de DNS proporcionado al servicio del backend.
https://kubernetes.io/docs/tasks/access-application-cluster/connecting-frontend-backend/
nginx.conf
server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; try_files $uri /index.html; } location /api { proxy_pass http://backend-app-kube-service; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }Ahora, cuando estoy creando la implementación de la interfaz, aparece un error en la construcción del contenedor [emerg] 1#1: host not found upstream
¿Puede alguien darme la solución? ¿Cómo puedo hacer que el frontend hable con el backend usando Nginx?
No necesita Nginx para hablar con el backend.
El front-end puede hablar con el back-end directamente usando la dirección del back-end como http://backend-app-kube-service:8111 si están en el mismo espacio de nombres.
Si están en diferentes espacios de nombres, debe proporcionar el FQDN, que será como http://backend-app-kube-service.namespace.svc.cluster.local:8111