I have a kubernetes setup with the configuration like below:
#---
kind: Service
apiVersion: v1
metadata:
name: myservice
spec:
selector:
app: my-service
ports:
- protocol: "TCP"
# Port accessible inside cluster
port: 8080
# Port to forward to inside the pod
targetPort: 80
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: my-service
spec:
replicas: 1
template:
metadata:
labels:
app: my-service
spec:
containers:
- name: my-service
image: my-custom-docker-regisry/my-service:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
imagePullSecrets:
- name: regcred
and my ingress:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
- http:
paths:
- path: /myservice
backend:
serviceName: myservice
servicePort: 80
What I tried to do is pulling the image from my docker registry and run it in the kubernetes. I have configured here one deployment and one service and expose the service to the outside with the ingress.
My minikube is running under ip 192.168.99.100 and when I tried to access my application with address: curl 192.168.99.100:80/myservice, I got 502 Bad Gateway.
Does anyone have an idea why it happended or did I do something wrong with the configuration? Thank you in advanced!
Your ingress targets this service:
serviceName: myservice
servicePort: 80
but the service named myservice
exposes port 8080
rather than 80
:
ports:
- protocol: "TCP"
# Port accessible inside cluster
port: 8080
# Port to forward to inside the pod
targetPort: 80
Your ingress should point to one of the ports exposed by the service.
Also, the service itself targets port 80, but the pods in your deployment seem to expose port 8080, rather than 80:
containers:
- name: my-service
image: my-custom-docker-regisry/my-service:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
So long story short, looks like you could swap port
with targetPort
in your service
so that:
8080
8080
of all the pods under service name myservice
port 80
,myservice
port 80
.