How to configure single internal ALB for multiple EKS services? - amazon-web-services

I am running an AWS EKS cluster and in that, there are multiple applications running, my eks is in a private subnet so to access those applications I am using a VPN and creating internal ALBs to access some application dashboard in the browser. I am able to get their dashboard in the browser but now I am trying to make a single alb to access all these applications.
I want to configure a single alb and with that, I want to call my application which is running in my eks cluster.
Suppose, I have an application uiserver running in my eks cluster, I want an ALB on which I call alburl/uiserver/somequery, and then it will direct me to alburl/somequery and also call my specific service uiserver.
I am not getting anything to configure this. If anyone has any idea about configuring of this type of ALB then please reply.
Thanks

Related

Allow EC2 Instances to communicate with the Services of Kubernetes deployments

I am trying to get a Windows Server EC2 instance to communicate with a running Kubernetes Service. I do not want to have to route through the internet, as both the EC2 Instance and Service are sitting within a private subnet.
I am able to get communication through when using the private IP address of the Service, but because of the nature of Kubernetes when the Service goes down, for whatever reason, the private IP can change. I want to avoid this if possible.
I either want to communicate with the service using a static private DNS name or some kind of static private IP address I can create and bind to the Service during creation. Is either of this possible to do?
P.S. I have tried looking into internal LoadBalancers, but I can't get it to work. Don't even know if this is the right direction. https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.2/guide/service/annotations/#traffic-routing. Currently I am using these annotations for EIP binding for some public-facing services.
Why not create a kubeconfig to access the EKS services through kubectl?
See documenation: https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html
or you want to send traffic to the services?

AWS EKS - Multi-cluster communication

I have two EKS Clusters in a VPC.
Cluster A running in Public subnet of VPC [Frontend application is deployed here]
Cluster B running in Private subnet of VPC [ Backend application is deployed here]
I would like to establish a networking with these two cluster such that, the pods from cluster A should be able to communicate with pods from Cluster B.
At the high level, you will need to expose the backend application via a K8s service. You'd then expose this service via an ingress object (see here for the details and how to configure it). Front end pods will automatically be able to reach this service endpoint if you point them to it. It is likely that you will want to do the same thing to expose your front-end service (via an ingress).
Usually an architecture like this is deployed into a single cluster and in that case you'd only need one ingress for the front-end and the back-end would be reachable through standard in-cluster discovery of the back-end service. But because you are doing this across clusters you have to expose the back-end service via an ingress. The alternative would be to enable cross-clusters discovery using a mesh (see here for more details).

AWS Load Balancers - All the EC2 instances were failed the health check and stated Out Of Service. Why?

I was trying to host my API (.NET Core Web API) on Elastic Kubernetes Service in AWS. I followed around some tutorials and get it on EKS now. Everytime I run kubectl get pods I can see my service there.
Then in order to exposed the service to API Gateway, I was told that need to create a Load Balancer. So I create a Load Balancer using the kubectl expose command and success. Now I can see my Load Balancer is hosted on EC2 with a specific DNS address and able to see it via kubectl get svc command.
Here is the problem, according to tutorials, when I access to the specific DNS name with port, example: *****.ap-southeast-1.elb.amazonaws.com:8000, I should be able to access.
But no, all I get is empty response error from browser. When I go over EC2 pages to check my Load Balancer, I found that all the instances under the ELB is Out Of Service.
The Status of the ELB is: 0 of 6 instances in service
When I switched over to Instances tab, all the 6 instances are showing Out Of Service.
Is this why I could not access to the DNS address? And how can I make the instances In Service?
FYI: What I want to do eventually is using API Gateway to connect to the API on EKS.
Thank you very much if anyone knows how to solve this.

aws kubernetes inter cluster communication for shipping fluentd logs

We got multiple k8s clusters on AWS (using EKS) each on its own VPC but they are VPC peered properly to communication to one central cluster which has an elasticsearch service that will collect logs from all clusters. We do not use AWS elasticsearch service but rather our own inside kubernetes.
We do use an ingress controller on each cluster and they have their own internal AWS load balancer.
I'm getting fluentd pods on each node of every cluster (through a daemonset) but it needs to be able to communicate to elasticsearch on the main cluster. Within the same cluster I can ship logs fine to elasticsearch but not from other clusters as they need to be able to access the service within that cluster.
What is some way or best way to achieve that?
This has been all breaking new ground for me so I wanted to make sure I'm not missing something obvious somewhere.

AWS EKS - Create Load Balancer Service throws out of service

I have a quick question regarding AWS EKS that whenever I create a K8s service with of type LoadBalancer, it provisions a classic ELB backed the EC2 where services are running. Now whenever I try to hit the Load Balancer ELB from the Internet, it returns ERR_EMPTY_RESPONSE error. If I navigate back to ELB and look at the instances behind ELB, it shows the status of EC2 instances as OutOfService.
This happens either I use my own K8s deployments & services or the one provided with documentation. Anyone can help me with this? More over, is there any way to provision a different type of Load Balancer for a K8s service? Thanks.
This is default behavior or K8S with on cloud providers , A service type Load Balancer will spins up real one which affect cost.
Better to use K8S Ingress as best practice and can use as Endpoint or you can add under External Load Balancer.