<p>I want to deploy Application Load Balancer for Traefik running in Kubernetes. So, I tried the following:</p>
<pre><code>kind: Service
apiVersion: v1
metadata:
  name: traefik-application-elb
  namespace: kube-system
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: &quot;tcp&quot;
    service.beta.kubernetes.io/aws-load-balancer-type: &quot;elb&quot;
    service.beta.kubernetes.io/aws-load-balancer-name: &quot;eks-traefik-application-elb&quot;
    service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags: &quot;App=traefik,Env=dev&quot;
spec:
  type: LoadBalancer
  ports:
    - protocol: TCP
      name: web
      port: 80
    - protocol: TCP
      name: websecure
      port: 443
  selector:
    app: traefik
</code></pre>
<p>But internet-facing <code>Classic</code> load balancer was created.
Also tried <code>service.beta.kubernetes.io/aws-load-balancer-type: &quot;alb&quot;</code> but nothing changed.</p>
<p>What is wrong here ?</p>

<p>From the docs: <a href="https://docs.aws.amazon.com/eks/latest/userguide/network-load-balancing.html" rel="nofollow noreferrer">https://docs.aws.amazon.com/eks/latest/userguide/network-load-balancing.html</a></p>
<blockquote>
<p>When you create a Kubernetes Service of type LoadBalancer, the AWS cloud provider load balancer controller creates AWS Classic Load Balancers by default, but can also create AWS Network Load Balancers.</p>
</blockquote>
<p>ALB is not supported as a k8s load balancer.  You can specify an NLB if desired.</p>
<p>However you can use ALB as an ingress controller with a deployment like this - <a href="https://aws.amazon.com/blogs/containers/introducing-aws-load-balancer-controller/" rel="nofollow noreferrer">https://aws.amazon.com/blogs/containers/introducing-aws-load-balancer-controller/</a></p>
<pre><code>apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: SearchApp
  annotations:
    # share a single ALB with all ingress rules with search-app-ingress
    alb.ingress.kubernetes.io/group.name: search-app-ingress
spec:
  defaultBackend:
    service:
      name: search-svc # route traffic to the service search-svc
      port:
        number: 80

</code></pre>
