UNPKG

@grucloud/module-aws-load-balancer-controller

Version:

AWS resources to support the Load Balancer Controller running on Kubernetes

57 lines (42 loc) 2.53 kB
# The AWS Load Balancer Controller GruCLoud Module The purpose of the [module-aws-load-balancer-controller](https://www.npmjs.com/package/@grucloud/module-aws-load-balancer-controller) is to create the AWS resources require to run the [AWS Load Balancer Controller](https://docs.aws.amazon.com/eks/latest/userguide/aws-load-balancer-controller.html). ## Resources - [IamOpenIDConnectProvider](https://www.grucloud.com/docs/aws/resources/IAM/IamOpenIDConnectProvider): [The Open ID Connect Provider](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html), depends on [EKS Cluster](https://www.grucloud.com/docs/aws/resources/EKS/EksCluster) - [IamPolicy](https://www.grucloud.com/docs/aws/resources/IAM/IamPolicy): The load balancer policy from [load-balancer-policy.json](https://github.com/grucloud/grucloud/tree/main/packages/modules/aws/load-balancer-controller/load-balancer-policy.json) - [IamRole](https://www.grucloud.com/docs/aws/resources/IAM/IamRole): An IAM role attaching the _load-balancer-policy_, assuming role from the _IamOpenIDConnectProvider_ ## How to use this module Install this module and its dependencies in your GruCloud project: ``` npm i @grucloud/module-aws-load-balancer-controller @grucloud/module-aws-vpc @grucloud/module-aws-eks @grucloud/provider-aws ``` In your _iac.js_, create a EKS Cluster module and pass the resource to _ModuleAwsLoadBalancerController.createResources_ ```js // iac.js const { AwsProvider } = require("@grucloud/provider-aws"); const ModuleAwsVpc = require("@grucloud/module-aws-vpc"); const ModuleAwsEks = require("@grucloud/module-aws-eks"); const ModuleAwsLoadBalancerController = require("@grucloud/module-aws-load-balancer-controller"); exports.createStack = async ({ createProvider }) => { const provider = createProvider(AwsProvider, { configs: [ ModuleAwsEks.config, ModuleAwsVpc.config, ModuleAwsLoadBalancerController.config, ], }); const resourceVpc = await ModuleAwsVpc.createResources({ provider }); const resourceEks = await ModuleAwsEks.createResources({ provider, resources: resourceVpc, }); const resourceLbc = await ModuleAwsLoadBalancerController.createResources({ provider, resources: resourceEks, }); return { provider, resources: { vpb: resourceVpc, resourceEks, lbc: resourceLbc }, }; }; ``` The role balancer role is now available to the [Kubernetes Service Account resource](https://www.grucloud.com/docs/k8s/resources/ServiceAccount)