Proxy Passing to Kubernetes Cluster IP

Viewed 90

I have a Kubernetes cluster that's running a API Server deployment and a Nginx deployment. I exposed the Server with a ClusterIP service so the Nginx pods can route to it with a proxy pass then I externalize the nginx pods with a LoadBalancer service. But it's not working. What am I misunderstanding? I get a 404 not found for LOAD_BALANCER_IP/api

Server Deployment:

apiVersion: v1
kind: Service
metadata:
  name: league-pool-production-server-service
spec:
  type: ClusterIP
  selector:
    app: league-pool-server
  ports:
    - protocol: TCP
      port: 80
      targetPort: 3000
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: league-pool-server-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: league-pool-server
  template:
    metadata:
      labels:
        app: league-pool-server
    spec:
      containers:
        - name: league-pool-server-container
          image: helloitsian/league-pool-server
          ports:
            - containerPort: 3000
          env:
            - name: MONGO_URL
              value: mongodb://mongo-0.mongo,mongo-1.mongo,mongo-2.mongo:27017/player-pools
          imagePullPolicy: Always

Nginx Deployment:

apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: league-pool-nginx-deployment
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: league-pool-nginx-deployment
  minReplicas: 2
  maxReplicas: 5
  metrics:
  - type: Resource
    resource:
      name: cpu
      targetAverageUtilization: 80
---
apiVersion: v1
kind: Service
metadata:
  name: league-pool-nginx-service
spec:
  type: LoadBalancer
  externalTrafficPolicy: Local
  selector:
    app: league-pool-nginx-production
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 80
    - name: https
      protocol: TCP
      port: 443
      targetPort: 443
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: league-pool-nginx-deployment
  labels:
    app: league-pool-nginx-production
spec:
  replicas: 1
  selector:
    matchLabels:
      app: league-pool-nginx-production
  template:
    metadata:
      labels:
        app: league-pool-nginx-production
    spec:
      containers:
      - name: league-pool-nginx-production
        image: helloitsian/league-pool-nginx
        imagePullPolicy: Always
        resources:
          limits:
            cpu: 300m
          requests:
            cpu: 100m
            memory: 200Mi
        ports:
          - containerPort: 443
          - containerPort: 80

Nginx site conf:

server {
  listen 80;
  
  root /usr/share/nginx/html;

  location / {
    try_files $uri $uri/ =404;
    }

  location /api {
    proxy_pass http://league-pool-server;
  }
}
0 Answers
Related