@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
Markdown
# 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)