<p>I'm trying to deploy an AWS Ingress Controller with the following manifest:</p>
<pre><code>apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-srv-eks
  annotations:
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
spec:
  ingressClassName: alb
  rules:
  - http:
      paths:
        - path: /path1
          pathType: Prefix
          backend:
            service:
              name: path1
              port:
                number: 4001
        - path: /path2
          pathType: Prefix
          backend:
            service:
              name: path2
              port:
                number: 4002
</code></pre>
<p>And the following command to apply it:</p>
<pre><code>kubectl apply -f infra/k8s/ingress-srv-eks.yaml
</code></pre>
<p>It says the resource is created.
But when I describe the ingress, it says 'Failed build model due to ingress: NoCredentialProviders: no valid providers in chain':</p>
<pre><code>#kubectl describe ingress ingress-srv-eks

Name:             ingress-srv-eks
Labels:           &lt;none&gt;
Namespace:        default
Address:          
Default backend:  default-http-backend:80 (&lt;error: endpoints &quot;default-http-backend&quot; not found&gt;)
Rules:
  Host        Path  Backends
  ----        ----  --------
  *           
              /path1   path1:4001 ()
Annotations:  alb.ingress.kubernetes.io/healthcheck-path: /healhtz
              alb.ingress.kubernetes.io/listen-ports: [{&quot;HTTP&quot;: 80},{&quot;HTTPS&quot;: 443}]
              alb.ingress.kubernetes.io/scheme: internet-facing
              alb.ingress.kubernetes.io/target-type: ip
Events:
  Type     Reason            Age                    From     Message
  ----     ------            ----                   ----     -------
  Warning  FailedBuildModel  7m30s (x2 over 7m53s)  ingress  Failed build model due to ingress: default/ingress-srv-eks: NoCredentialProviders: no valid providers in chain. Deprecated.
           For verbose messaging see aws.Config.CredentialsChainVerboseErrors
</code></pre>
<p>Below is the helm command via I installed the LB:</p>
<pre><code>helm install -n kube-system aws-load-balancer-controller eks/aws-load-balancer-controller --set clusterName=sample-cluster   --set serviceAccount.create=true   --set serviceAccount.name=aws-load-balancer-controller --set region=ap-south-1 --set vpcId=vpc-06e0620658310dbfb
</code></pre>
<p>Tried adding AWS creds as env variables, but that too isn't working.</p>
<p>Because of this, the 'Address' field for the Ingress is blank(when doing <code>kubectl get ingress</code>) and I'm unable to get a URL for testing my cluster.</p>
<p>Can anyone please help me on fixing this?</p>

Mahesh
<p>Maybe you could check the correct namespace, here it illustrates 'default' which seems not correct.</p>
<p>If you are using the script that refers to <a href="https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.5.4/docs/examples/2048/2048_full.yaml" rel="nofollow noreferrer">2048_full.yaml</a>
which is coming from the AWS EKS guideline official website.</p>
<p>First, ensure that the namespaces of the following three types are all set to 'kube-system'.</p>
<pre><code>Deployment
Service
Ingress
</code></pre>
<p>And see what happens.</p>
<p>If all relevant namespaces set to &quot;Kube-system&quot;, but still not working. Try to check your IAM role instead of service account, it should be detected automatically. If not try to use this &quot;--auto-discover-default-role&quot;.</p>
<pre><code>eksctl create iamserviceaccount \
    --region region-code \
    --name alb-ingress-controller \
    --namespace kube-system \
    --cluster prod \
    --attach-policy-arn arn:aws:iam::XXXXXX:policy/ALBIngressControllerIAMPolicy \
    --override-existing-serviceaccounts \
    --approve
</code></pre>
<p>For installing the aws-lb-controller, here are some additional details.</p>
<pre><code>helm install aws-load-balancer-controller eks/aws-load-balancer-controller -n kube-system --set clusterName=&lt;cluster-name&gt; --set serviceAccount.create=false --set serviceAccount.name=aws-load-balancer-controller
</code></pre>
<p>Install the AWS Load Balancer Controller. If you're deploying the controller to Amazon EC2 nodes that have restricted access to the Amazon EC2 instance metadata service (IMDS), or if you're deploying to Fargate, then add the following flags to the helm command that follows:</p>
<pre><code>--set region=region-code
--set vpcId=vpc-xxxxxxxx
</code></pre>
