Skip to content

Commit c3f58cf

Browse files
feat: Allow Karpenter access to IAM:PassRole more than one node role arn
1 parent dd2089b commit c3f58cf

File tree

3 files changed

+9
-2
lines changed

3 files changed

+9
-2
lines changed

modules/karpenter/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ No modules.
131131
| Name | Description | Type | Default | Required |
132132
|------|-------------|------|---------|:--------:|
133133
| <a name="input_access_entry_type"></a> [access\_entry\_type](#input\_access\_entry\_type) | Type of the access entry. `EC2_LINUX`, `FARGATE_LINUX`, or `EC2_WINDOWS`; defaults to `EC2_LINUX` | `string` | `"EC2_LINUX"` | no |
134+
| <a name="input_additional_node_iam_role_arns"></a> [additional\_node\_iam\_role\_arns](#input\_additional\_node\_iam\_role\_arns) | Additional node instance IAM role ARNs to allow Karpenter to pass | `list(string)` | `[]` | no |
134135
| <a name="input_ami_id_ssm_parameter_arns"></a> [ami\_id\_ssm\_parameter\_arns](#input\_ami\_id\_ssm\_parameter\_arns) | List of SSM Parameter ARNs that Karpenter controller is allowed read access (for retrieving AMI IDs) | `list(string)` | `[]` | no |
135136
| <a name="input_cluster_ip_family"></a> [cluster\_ip\_family](#input\_cluster\_ip\_family) | The IP family used to assign Kubernetes pod and service addresses. Valid values are `ipv4` (default) and `ipv6`. Note: If `ipv6` is specified, the `AmazonEKS_CNI_IPv6_Policy` must exist in the account. This policy is created by the EKS module with `create_cni_ipv6_iam_policy = true` | `string` | `"ipv4"` | no |
136137
| <a name="input_cluster_name"></a> [cluster\_name](#input\_cluster\_name) | The name of the EKS cluster | `string` | `""` | no |

modules/karpenter/policy.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ data "aws_iam_policy_document" "v033" {
189189

190190
statement {
191191
sid = "AllowPassingInstanceRole"
192-
resources = var.create_node_iam_role ? [aws_iam_role.node[0].arn] : [var.node_iam_role_arn]
192+
resources = concat(var.create_node_iam_role ? [aws_iam_role.node[0].arn] : [var.node_iam_role_arn], var.additional_node_iam_role_arns)
193193
actions = ["iam:PassRole"]
194194

195195
condition {
@@ -579,7 +579,7 @@ data "aws_iam_policy_document" "v1" {
579579

580580
statement {
581581
sid = "AllowPassingInstanceRole"
582-
resources = var.create_node_iam_role ? [aws_iam_role.node[0].arn] : [var.node_iam_role_arn]
582+
resources = concat(var.create_node_iam_role ? [aws_iam_role.node[0].arn] : [var.node_iam_role_arn], var.additional_node_iam_role_arns)
583583
actions = ["iam:PassRole"]
584584

585585
condition {

modules/karpenter/variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,12 @@ variable "node_iam_role_tags" {
283283
default = {}
284284
}
285285

286+
variable "additional_node_iam_role_arns" {
287+
description = "Additional node instance IAM role ARNs to allow Karpenter to pass"
288+
type = list(string)
289+
default = []
290+
}
291+
286292
################################################################################
287293
# Access Entry
288294
################################################################################

0 commit comments

Comments
 (0)