Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Limits and price

...

https://aws.amazon.com/elasticloadbalancing/pricing/?nc1=h_ls

Load BalancerPriceLCU
Application0,0225 USD0,008 USD for Hour
Network0.0225 USD0,006 USD for Hour
Classic0.0225 USD0,008 USD for Gb

Your AWS account has the following quotas related to Application Load Balancers.

https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-limits.html

NameDefaultAdjustable
Application Load Balancers per Region50Yes
Certificates per Application Load Balancer (excluding default certificates)25Yes
Listeners per Application Load Balancer50Yes
Number of times a target can be registered per Application Load Balancer1,000No
Target Groups per Action per Application Load Balancer5No
Target Groups per Application Load Balancer100No
Targets per Application Load Balancer1,000Yes

The following quotas are for rules.

NameDefaultAdjustable
Rules per Application Load Balancer (excluding default rules)100Yes
Condition Values per Rule5No
Condition Wildcards per Rule5No
Match evaluations per rule5No

...

How we add data to itĀ https://github.com/folio-org/pipelines-shared-library/blob/80b63af619da71ab8ada14eb5e074bfd3bbf4ebd/vars/helm.groovy

config[(module_name)]['ingress']['hosts'][0] += [host: domain]

Create load balancer add rules to it

...

Attach service to specific load balancer via group.

config[(module_name)]['ingress']['annotations'] += ['alb.ingress.kubernetes.io/group.name': "${project_config.getClusterName()}.${project_config.getProjectName()}"]


decrease

...

alb

Drawio
bordertrue
diagramNamenext Eks-ALb
simpleViewerfalse
width400600
linksauto
tbstyletop
lboxtrue
diagramWidth551871
revision4

1) When we create new cluster we should create new router53 record (service host).

2) When we will creating new namespace we must create ingress (public alb group may be in default namespace) with rule link to cluster host and new name space, before we create any ingresses in that namespace.

3) Create ingress in new namespace and use as host alb that was created in previous step.

Url example:

https://folio-env.ci.folio.org/NamespaceName/NameModule/ServiceName

https://folio-dev.ci.folio.org/bama/edge/caiasoftService

Posible benefits we will decraess count of Router53 (router 53 price https://aws.amazon.com/route53/pricing/)

...

5

use only one static name for alb.ingress.kubernetes.io/group.name it allow to don't create a new alb for each namespace

config[(module_name)]['ingress']['annotations'] += ['alb.ingress.kubernetes.io/group.name': "${project_config.getClusterName()}.${project_config.getProjectName()}"]


Rules will be the same as current because we don't touch the Router53 records that has been creating by EKS .


We can reduce count records of Routers53 (Currently we pay for them about 4$).

For it we need to add into our ingress more http and modify the records.


For create new internal load balancer in KubernetesĀ 

kubernetes.io/ingress.class: nginx

for external alb need to change routing to internal nginx lb
path: /namespace
backend:
resource:
apiGroup: k8s.example.com
name: namespace


Conclusion

We have about 15 alb on dev env.

...

In each of them 1 listener with about 17 rules that go to unique target group as result we have about 255 rules/target groups in limits we can see that we can increase count of rules but we can't increase the count of unique target group per alb.

Target Groups per Application Load Balancer100

I think it possible to increase this limit for us but for it we must communicate with AWS Support to ask them to ask their developers (because it hard code) increase this limit for us. For it we need to provide reasons why we need it and what the benefits it will give to us.

...