<p>I have created a Helm Chart which deploys my app, and it does that well, to expose the app to the outside world (my homelan) I'm using Traefik</p>
<p>If I run the helm install command and type</p>
<pre><code>kubectl get svc
</code></pre>
<p>I get the expected output</p>
<pre><code>n8n-deployment LoadBalancer 10.106.99.168 192.168.222.222 5678:30899/TCP 4s
</code></pre>
<p>If I use</p>
<pre><code>kubectl describe svc
</code></pre>
<p>I can see the following for the service</p>
<pre><code>Name: n8n-deployment

Namespace: default

Labels: app.kubernetes.io/instance=n8n-deployment

app.kubernetes.io/managed-by=Helm

app.kubernetes.io/name=n8n-deployment

app.kubernetes.io/version=1.16.0

helm.sh/chart=n8n-0.1.0

Annotations: meta.helm.sh/release-name: n8n-deployment

meta.helm.sh/release-namespace: default

Selector: app.kubernetes.io/instance=n8n-deployment,app.kubernetes.io/name=n8n-deployment

Type: LoadBalancer

IP Family Policy: SingleStack

IP Families: IPv4

IP: 10.106.99.168

IPs: 10.106.99.168

LoadBalancer Ingress: 192.168.222.222

Port: n8nport 5678/TCP

TargetPort: 5678/TCP

NodePort: n8nport 30899/TCP

Endpoints: &lt;none&gt;

Session Affinity: None

External Traffic Policy: Cluster

Events:

Type Reason Age From Message

---- ------ ---- ---- -------

Normal IPAllocated 12s metallb-controller Assigned IP &quot;192.168.222.222&quot;
</code></pre>
<p>However, nothing works</p>
<p>if i run</p>
<pre><code>kubectl delete svc n8n-deployment
</code></pre>
<p>and run</p>
<pre><code>kubectl expose deploy n8n-deployment --port 5678 --type LoadBalancer
</code></pre>
<p>Everything works as expected and I can see the app.</p>
<p>The second I run this command the Traefik dashboard adds another router..</p>
<p>If i run</p>
<pre><code>kubectl describe svc
</code></pre>
<p>again, the only difference which stands out is the line now picks up the endpoint</p>
<pre><code>Endpoints: 172.16.184.171:5678
</code></pre>
<p>Is now populated</p>
<p>My templates/services.yaml looks like this</p>
<pre><code>n8n/templates/service.yaml

apiVersion: v1

kind: Service

metadata:

name: {{ include &quot;n8n.fullname&quot; . }}

labels:

{{- include &quot;n8n.labels&quot; . | nindent 4 }}

spec:

type: {{ .Values.service.type }}

ports:

- port: {{ .Values.service.port }}

targetPort: 5678

protocol: TCP

name: n8nport

selector:

app: n8n-deployment
</code></pre>
<p>What am I missing that stops helm work but the kubectl expose command will?</p>
<p>I've not uploaded everything, but will happily work to understand, I'm a noob and never run helm before. I'm also aware I should be using more variables in things, I'm working on it.</p>

David Field
<p>Changed my service.yaml to</p>
<pre><code>apiVersion: v1

kind: Service

metadata:


  name: {{ include &quot;n8n.fullname&quot; . }}

  labels:

    {{- include &quot;n8n.labels&quot; . | nindent 4 }}

    app: n8n-deployment

    app.kubernetes.io/instance: n8n-deployment

spec:

  type: {{ .Values.service.type }}

  ports:

    - port: {{ .Values.service.port }}

      targetPort: 5678

      protocol: TCP

  selector:

    run: n8n-deployment
</code></pre>
<p>And this works perfectly, it was missing the line</p>
<p><code>app.kubernetes.io/instance: n8n-deployment</code></p>
