mirror of
https://github.com/ysoftdevs/terraform-aws-eks.git
synced 2026-03-17 23:13:46 +01:00
fix: Update examples to show integration and usage of new IRSA submodule (#1882)
This commit is contained in:
83
README.md
83
README.md
@@ -200,6 +200,89 @@ module "eks" {
|
||||
}
|
||||
```
|
||||
|
||||
### IRSA Integration
|
||||
|
||||
An [IAM role for service accounts](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) module has been created to work in conjunction with the EKS module. The [`iam-role-for-service-accounts`](https://github.com/terraform-aws-modules/terraform-aws-iam/tree/master/modules/iam-role-for-service-accounts-eks) module has a set of pre-defined IAM policies for common addons/controllers/custom resources to allow users to quickly enable common integrations. Check [`policy.tf`](https://github.com/terraform-aws-modules/terraform-aws-iam/blob/master/modules/iam-role-for-service-accounts-eks/policies.tf) for a list of the policies currently supported. A example of this integration is shown below, and more can be found in the [`iam-role-for-service-accounts`](https://github.com/terraform-aws-modules/terraform-aws-iam/blob/master/examples/iam-role-for-service-accounts-eks/main.tf example directory):
|
||||
|
||||
```hcl
|
||||
module "eks" {
|
||||
source = "terraform-aws-modules/eks/aws"
|
||||
|
||||
cluster_name = "example"
|
||||
cluster_version = "1.21"
|
||||
|
||||
cluster_addons = {
|
||||
vpc-cni = {
|
||||
resolve_conflicts = "OVERWRITE"
|
||||
service_account_role_arn = module.vpc_cni_irsa.iam_role_arn
|
||||
}
|
||||
}
|
||||
|
||||
vpc_id = "vpc-1234556abcdef"
|
||||
subnet_ids = ["subnet-abcde012", "subnet-bcde012a", "subnet-fghi345a"]
|
||||
|
||||
eks_managed_node_group_defaults = {
|
||||
# We are using the IRSA created below for permissions
|
||||
# This is a better practice as well so that the nodes do not have the permission,
|
||||
# only the VPC CNI addon will have the permission
|
||||
iam_role_attach_cni_policy = false
|
||||
}
|
||||
|
||||
eks_managed_node_groups = {
|
||||
default = {}
|
||||
}
|
||||
|
||||
tags = {
|
||||
Environment = "dev"
|
||||
Terraform = "true"
|
||||
}
|
||||
}
|
||||
|
||||
module "vpc_cni_irsa" {
|
||||
source = "terraform-aws-modules/iam/aws//modules/iam-role-for-service-accounts-eks"
|
||||
|
||||
role_name = "vpc_cni"
|
||||
attach_vpc_cni_policy = true
|
||||
vpc_cni_enable_ipv4 = true
|
||||
|
||||
oidc_providers = {
|
||||
main = {
|
||||
provider_arn = module.eks.oidc_provider_arn
|
||||
namespace_service_accounts = ["kube-system:aws-node"]
|
||||
}
|
||||
}
|
||||
|
||||
tags = {
|
||||
Environment = "dev"
|
||||
Terraform = "true"
|
||||
}
|
||||
}
|
||||
|
||||
module "karpenter_irsa" {
|
||||
source = "terraform-aws-modules/iam/aws//modules/iam-role-for-service-accounts-eks"
|
||||
|
||||
role_name = "karpenter_controller"
|
||||
attach_karpenter_controller_policy = true
|
||||
|
||||
karpenter_controller_cluster_ids = [module.eks.cluster_id]
|
||||
karpenter_controller_node_iam_role_arns = [
|
||||
module.eks.eks_managed_node_groups["default"].iam_role_arn
|
||||
]
|
||||
|
||||
oidc_providers = {
|
||||
main = {
|
||||
provider_arn = module.eks.oidc_provider_arn
|
||||
namespace_service_accounts = ["karpenter:karpenter"]
|
||||
}
|
||||
}
|
||||
|
||||
tags = {
|
||||
Environment = "dev"
|
||||
Terraform = "true"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Node Group Configuration
|
||||
|
||||
⚠️ The configurations shown below are referenced from within the root EKS module; there will be slight differences in the default values provided when compared to the underlying sub-modules (`eks-managed-node-group`, `self-managed-node-group`, and `fargate-profile`).
|
||||
|
||||
Reference in New Issue
Block a user