Hi folks,
I successfully have an IngressGateway setup that allows outside services to talk to services in our service mesh. Everything seems to work great if the listenerPort on the ingressGateway matches the containerPort used by the pod in my mesh. However, if they differ - it doesn’t seem to connect. Here is an example:
apiVersion: consul.hashicorp.com/v1alpha1
kind: IngressGateway
metadata:
name: ingress-gateway
spec:
listeners:
- port: 8080
protocol: http
services:
- name: my-service
Then, we have my-service
defined as such:
apiVersion: v1
kind: Pod
metadata:
annotations:
consul.hashicorp.com/connect-service: my-service
consul.hashicorp.com/connect-service-port: "8081"
spec:
containers:
image: my-service:latest
imagePullPolicy: IfNotPresent
name: my-service
ports:
- containerPort: 8081
name: http
protocol: TCP
(p.s. I left out the ServiceDefaults/Intentions for brevity)
Note, the listenerPort on the IngressGateway is listening on 8080, but the containerPort in the mesh is actually serving on 8081. Other services can communicate within the mess with my-service
no prob, but externally - it fails. Now, if I updated my-service
to be the same port number (8080
) then everything is happy.
Is there a way to make this work? Hopefully I missed something in the docs and it’s an easy fix.
Thanks,
Ben