{"id":15155739,"url":"https://github.com/sparkfabrik/terraform-aws-load-balancer-controller","last_synced_at":"2026-02-01T23:34:00.125Z","repository":{"id":242865168,"uuid":"810402232","full_name":"sparkfabrik/terraform-aws-load-balancer-controller","owner":"sparkfabrik","description":"This module installs AWS Load Balancer Controller on Amazon EKS and create the necessary resources to work with AWS services.","archived":false,"fork":false,"pushed_at":"2024-06-11T07:48:30.000Z","size":27,"stargazers_count":2,"open_issues_count":1,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-06-22T00:04:48.831Z","etag":null,"topics":["aws","aws-eks","eks","helm","helm-chart","infrastructure-as-code","kubernetes","load-balancer","terraform-module"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sparkfabrik.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-04T16:14:58.000Z","updated_at":"2024-11-07T04:21:31.000Z","dependencies_parsed_at":"2024-12-17T10:42:17.561Z","dependency_job_id":"874410b1-4375-4e9f-be97-f2d35fba06e9","html_url":"https://github.com/sparkfabrik/terraform-aws-load-balancer-controller","commit_stats":{"total_commits":1,"total_committers":1,"mean_commits":1.0,"dds":0.0,"last_synced_commit":"54d9327ce2610860a67210dd0e0e150285b2b998"},"previous_names":["sparkfabrik/terraform-aws-load-balancer-controller"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/sparkfabrik/terraform-aws-load-balancer-controller","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sparkfabrik%2Fterraform-aws-load-balancer-controller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sparkfabrik%2Fterraform-aws-load-balancer-controller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sparkfabrik%2Fterraform-aws-load-balancer-controller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sparkfabrik%2Fterraform-aws-load-balancer-controller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sparkfabrik","download_url":"https://codeload.github.com/sparkfabrik/terraform-aws-load-balancer-controller/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sparkfabrik%2Fterraform-aws-load-balancer-controller/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28994919,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T23:10:54.274Z","status":"ssl_error","status_checked_at":"2026-02-01T23:10:47.298Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","aws-eks","eks","helm","helm-chart","infrastructure-as-code","kubernetes","load-balancer","terraform-module"],"created_at":"2024-09-26T18:43:09.106Z","updated_at":"2026-02-01T23:33:55.117Z","avatar_url":"https://github.com/sparkfabrik.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Terraform AWS Load Balancer Controller\n\nThis module installs the AWS Load Balancer Controller into an EKS cluster using Helm.\n\nThis module follows the [AWS Load Balancer Controller installation guide using Helm](https://docs.aws.amazon.com/eks/latest/userguide/lbc-helm.html). The required resources are created using terraform. We use the same naming conventions as the guide and the same default values.\n\n## How to migrate from installation made using the plain manifest files to this module\n\nAs described [here](https://docs.aws.amazon.com/eks/latest/userguide/lbc-remove.html), you can delete the resources for the AWS Load Balancer Controller and the applications that use the Application Load Balancers Ingresses should continue to work. **Remember to keep in place the following resources to avoid disruption:**\n\n- `IngressClassParams` CRD\n- `TargetGroupBindings` CRD\n- `alb` IngreesClassParams\n- `alb` IngressClass\n\nThe two CRDs (`IngressClassParams` and `TargetGroupBindings`) will be updated by the two `kubernetes_manifest` of this module. The `alb` IngressClass and `IngressClassParams` will be created by `helm_release` of this module.\n\nThe two CRDs should be updated without any issue. **The alb `IngressClass` and `IngressClassParams` must be _adopted_ before applying the `helm_release` of this module**. You can execute the following code snippet to update your resources and inform the Helm release about them:\n\n```bash\n# IngressClassParams\nkubectl annotate IngressClassParams alb meta.helm.sh/release-name=aws-load-balancer-controller\nkubectl annotate IngressClassParams alb meta.helm.sh/release-namespace=kube-system\nkubectl label IngressClassParams alb app.kubernetes.io/managed-by=Helm\n# IngressClass\nkubectl annotate IngressClass alb meta.helm.sh/release-name=aws-load-balancer-controller\nkubectl annotate IngressClass alb meta.helm.sh/release-namespace=kube-system\nkubectl label IngressClass alb app.kubernetes.io/managed-by=Helm\n```\n\nIn the snippet above, **if you have changed the `helm_release_name` or `namespace` of this module, you should update the values of the annotations accordingly.**\n\n\u003c!-- BEGIN_TF_DOCS --\u003e\n\n## Providers\n\n| Name                                                                  | Version |\n| --------------------------------------------------------------------- | ------- |\n| \u003ca name=\"provider_aws\"\u003e\u003c/a\u003e [aws](#provider_aws)                      | \u003e= 5.0  |\n| \u003ca name=\"provider_helm\"\u003e\u003c/a\u003e [helm](#provider_helm)                   | \u003e= 2.0  |\n| \u003ca name=\"provider_kubernetes\"\u003e\u003c/a\u003e [kubernetes](#provider_kubernetes) | \u003e= 2.23 |\n\n## Requirements\n\n| Name                                                                        | Version |\n| --------------------------------------------------------------------------- | ------- |\n| \u003ca name=\"requirement_terraform\"\u003e\u003c/a\u003e [terraform](#requirement_terraform)    | \u003e= 1.5  |\n| \u003ca name=\"requirement_aws\"\u003e\u003c/a\u003e [aws](#requirement_aws)                      | \u003e= 5.0  |\n| \u003ca name=\"requirement_helm\"\u003e\u003c/a\u003e [helm](#requirement_helm)                   | \u003e= 2.0  |\n| \u003ca name=\"requirement_kubernetes\"\u003e\u003c/a\u003e [kubernetes](#requirement_kubernetes) | \u003e= 2.23 |\n\n## Inputs\n\n| Name                                                                                                                                                                                    | Description                                                                                                                                                                                                                  | Type           | Default                                                                                      | Required |\n| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | -------------------------------------------------------------------------------------------- | :------: |\n| \u003ca name=\"input_aws_lbc_iam_policy_description\"\u003e\u003c/a\u003e [aws_lbc_iam_policy_description](#input_aws_lbc_iam_policy_description)                                                             | The description of the IAM policy for the AWS Load Balancer Controller.                                                                                                                                                      | `string`       | `\"IAM policy for AWS Load Balancer Controller.\"`                                             |    no    |\n| \u003ca name=\"input_aws_lbc_iam_policy_name\"\u003e\u003c/a\u003e [aws_lbc_iam_policy_name](#input_aws_lbc_iam_policy_name)                                                                                  | The name of the IAM policy for the AWS Load Balancer Controller.                                                                                                                                                             | `string`       | `\"AWSLoadBalancerControllerIAMPolicy\"`                                                       |    no    |\n| \u003ca name=\"input_aws_lbc_role_name\"\u003e\u003c/a\u003e [aws_lbc_role_name](#input_aws_lbc_role_name)                                                                                                    | The name of the IAM role that the AWS Load Balancer Controller will assume.                                                                                                                                                  | `string`       | `\"aws-load-balancer-controller\"`                                                             |    no    |\n| \u003ca name=\"input_aws_region\"\u003e\u003c/a\u003e [aws_region](#input_aws_region)                                                                                                                         | The AWS region where the cluster is deployed.                                                                                                                                                                                | `string`       | n/a                                                                                          |   yes    |\n| \u003ca name=\"input_aws_vpc_id\"\u003e\u003c/a\u003e [aws_vpc_id](#input_aws_vpc_id)                                                                                                                         | The ID of the VPC where the AWS Load Balancer Controller will be deployed.                                                                                                                                                   | `string`       | n/a                                                                                          |   yes    |\n| \u003ca name=\"input_cluster_name\"\u003e\u003c/a\u003e [cluster_name](#input_cluster_name)                                                                                                                   | The name of the EKS cluster.                                                                                                                                                                                                 | `string`       | n/a                                                                                          |   yes    |\n| \u003ca name=\"input_cluster_oidc_issuer_host\"\u003e\u003c/a\u003e [cluster_oidc_issuer_host](#input_cluster_oidc_issuer_host)                                                                               | The OIDC issuer host for the EKS cluster.                                                                                                                                                                                    | `string`       | n/a                                                                                          |   yes    |\n| \u003ca name=\"input_create_namespace\"\u003e\u003c/a\u003e [create_namespace](#input_create_namespace)                                                                                                       | Whether to create the namespace or not. If set to false, it is expected that the namespace already exists.                                                                                                                   | `bool`         | `false`                                                                                      |    no    |\n| \u003ca name=\"input_enable_cert_manager\"\u003e\u003c/a\u003e [enable_cert_manager](#input_enable_cert_manager)                                                                                              | Enable cert-manager for the AWS Load Balancer Controller.                                                                                                                                                                    | `bool`         | `false`                                                                                      |    no    |\n| \u003ca name=\"input_helm_additional_values\"\u003e\u003c/a\u003e [helm_additional_values](#input_helm_additional_values)                                                                                     | Additional values to be passed to the Helm chart.                                                                                                                                                                            | `list(string)` | `[]`                                                                                         |    no    |\n| \u003ca name=\"input_helm_chart_version\"\u003e\u003c/a\u003e [helm_chart_version](#input_helm_chart_version)                                                                                                 | The version of the aws-load-balancer-controller Helm chart. Consider the default value the reference version of the module and the base of the values.yaml.tftpl file.                                                       | `string`       | `\"1.8.1\"`                                                                                    |    no    |\n| \u003ca name=\"input_helm_release_name\"\u003e\u003c/a\u003e [helm_release_name](#input_helm_release_name)                                                                                                    | The name of the Helm release.                                                                                                                                                                                                | `string`       | `\"aws-load-balancer-controller\"`                                                             |    no    |\n| \u003ca name=\"input_install_crds\"\u003e\u003c/a\u003e [install_crds](#input_install_crds)                                                                                                                   | Install the CRDs for the AWS Load Balancer Controller.                                                                                                                                                                       | `bool`         | `true`                                                                                       |    no    |\n| \u003ca name=\"input_k8s_additional_labels\"\u003e\u003c/a\u003e [k8s_additional_labels](#input_k8s_additional_labels)                                                                                        | Additional labels to apply to the Kubernetes resources.                                                                                                                                                                      | `map(string)`  | `{}`                                                                                         |    no    |\n| \u003ca name=\"input_k8s_default_labels\"\u003e\u003c/a\u003e [k8s_default_labels](#input_k8s_default_labels)                                                                                                 | Labels to apply to the Kubernetes resources. These are opinionated labels, you can add more labels using the variable `additional_k8s_labels`. If you want to remove a label, you can override it with an empty map(string). | `map(string)`  | \u003cpre\u003e{\u003cbr\u003e \"managed-by\": \"terraform\",\u003cbr\u003e \"scope\": \"aws-load-balancer-controller\"\u003cbr\u003e}\u003c/pre\u003e |    no    |\n| \u003ca name=\"input_k8s_lbc_service_account_name\"\u003e\u003c/a\u003e [k8s_lbc_service_account_name](#input_k8s_lbc_service_account_name)                                                                   | The name of the Kubernetes service account for AWS Load Balancer Controller.                                                                                                                                                 | `string`       | `\"aws-load-balancer-controller\"`                                                             |    no    |\n| \u003ca name=\"input_namespace\"\u003e\u003c/a\u003e [namespace](#input_namespace)                                                                                                                            | The namespace in which the AWS Load Balancer Controller resources will be created.                                                                                                                                           | `string`       | `\"kube-system\"`                                                                              |    no    |\n| \u003ca name=\"input_replica_count\"\u003e\u003c/a\u003e [replica_count](#input_replica_count)                                                                                                                | The number of replicas for the AWS Load Balancer Controller.                                                                                                                                                                 | `number`       | `2`                                                                                          |    no    |\n| \u003ca name=\"input_set_topology_spread_constraints\"\u003e\u003c/a\u003e [set_topology_spread_constraints](#input_set_topology_spread_constraints)                                                          | Set the topologySpreadConstraints for the AWS Load Balancer Controller.                                                                                                                                                      | `bool`         | `true`                                                                                       |    no    |\n| \u003ca name=\"input_set_topology_spread_constraints_max_skew\"\u003e\u003c/a\u003e [set_topology_spread_constraints_max_skew](#input_set_topology_spread_constraints_max_skew)                               | Set the topologyKey in the topologySpreadConstraints for the AWS Load Balancer Controller.                                                                                                                                   | `number`       | `1`                                                                                          |    no    |\n| \u003ca name=\"input_set_topology_spread_constraints_topology_key\"\u003e\u003c/a\u003e [set_topology_spread_constraints_topology_key](#input_set_topology_spread_constraints_topology_key)                   | Set the topologyKey in the topologySpreadConstraints for the AWS Load Balancer Controller.                                                                                                                                   | `string`       | `\"kubernetes.io/hostname\"`                                                                   |    no    |\n| \u003ca name=\"input_set_topology_spread_constraints_when_unsatisfiable\"\u003e\u003c/a\u003e [set_topology_spread_constraints_when_unsatisfiable](#input_set_topology_spread_constraints_when_unsatisfiable) | Set the whenUnsatisfiable policy in the topologySpreadConstraints for the AWS Load Balancer Controller.                                                                                                                      | `string`       | `\"ScheduleAnyway\"`                                                                           |    no    |\n\n## Outputs\n\n| Name                                                                                                     | Description                                                             |\n| -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |\n| \u003ca name=\"output_aws_lbc_iam_policy_arn\"\u003e\u003c/a\u003e [aws_lbc_iam_policy_arn](#output_aws_lbc_iam_policy_arn)    | The ARN of the IAM policy created for the AWS Load Balancer Controller. |\n| \u003ca name=\"output_final_k8s_common_labels\"\u003e\u003c/a\u003e [final_k8s_common_labels](#output_final_k8s_common_labels) | The final list of common labels to apply to the Kubernetes resources.   |\n\n## Resources\n\n| Name                                                                                                                                        | Type        |\n| ------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |\n| [aws_iam_policy.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_policy)                               | resource    |\n| [helm_release.this](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release)                                   | resource    |\n| [kubernetes_manifest.this](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/manifest)                     | resource    |\n| [kubernetes_namespace_v1.this](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/namespace_v1)             | resource    |\n| [kubernetes_secret_v1.this](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/secret_v1)                   | resource    |\n| [kubernetes_service_account_v1.this](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/service_account_v1) | resource    |\n| [kubernetes_namespace_v1.this](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/data-sources/namespace_v1)          | data source |\n\n## Modules\n\n| Name                                                                                                                                            | Source                                                              | Version |\n| ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | ------- |\n| \u003ca name=\"module_iam_assumable_role_with_oidc_for_lbc\"\u003e\u003c/a\u003e [iam_assumable_role_with_oidc_for_lbc](#module_iam_assumable_role_with_oidc_for_lbc) | terraform-aws-modules/iam/aws//modules/iam-assumable-role-with-oidc | ~\u003e 5.0  |\n\n\u003c!-- END_TF_DOCS --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsparkfabrik%2Fterraform-aws-load-balancer-controller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsparkfabrik%2Fterraform-aws-load-balancer-controller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsparkfabrik%2Fterraform-aws-load-balancer-controller/lists"}