Skip to content

Commit 044513f

Browse files
committed
feat: support adding additional rules to the clusterrole
1 parent ae53f96 commit 044513f

File tree

6 files changed

+77
-8
lines changed

6 files changed

+77
-8
lines changed

main.tf

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,15 @@ resource "kubernetes_namespace" "meshcloud" {
1515
}
1616

1717
module "meshcloud-service-account-meshfed-metering" {
18-
count = var.metering_enabled ? 1 : 0
19-
source = "./modules/meshcloud-service-account-meshfed-metering"
20-
namespace = kubernetes_namespace.meshcloud.metadata.0.name
18+
count = var.metering_enabled ? 1 : 0
19+
source = "./modules/meshcloud-service-account-meshfed-metering"
20+
namespace = kubernetes_namespace.meshcloud.metadata.0.name
21+
additional_rules = var.metering_additional_rules
2122
}
2223

2324
module "meshcloud-service-account-meshfed-replicator" {
24-
count = var.replicator_enabled ? 1 : 0
25-
source = "./modules/meshcloud-service-account-meshfed-replicator"
26-
namespace = kubernetes_namespace.meshcloud.metadata.0.name
25+
count = var.replicator_enabled ? 1 : 0
26+
source = "./modules/meshcloud-service-account-meshfed-replicator"
27+
namespace = kubernetes_namespace.meshcloud.metadata.0.name
28+
additional_rules = var.replicator_additional_rules
2729
}

modules/meshcloud-service-account-meshfed-metering/module.tf

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,18 @@ resource "kubernetes_cluster_role" "meshfed-metering" {
3636
resources = ["pods", "persistentvolumeclaims"]
3737
verbs = ["get", "list"]
3838
}
39+
40+
dynamic "rule" {
41+
for_each = var.additional_rules
42+
content {
43+
api_groups = rule.value.api_groups
44+
resources = rule.value.resources
45+
verbs = rule.value.verbs
46+
resource_names = rule.value.resource_names
47+
non_resource_urls = rule.value.non_resource_urls
48+
}
49+
}
50+
3951
}
4052

4153
# meshfed_metering role binding
Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
11
variable "namespace" {
22
type = string
3-
}
3+
}
4+
5+
variable "additional_rules" {
6+
type = list(object({
7+
api_groups = list(string)
8+
resources = list(string)
9+
verbs = list(string)
10+
resource_names = optional(list(string))
11+
non_resource_urls = optional(list(string))
12+
}))
13+
default = []
14+
}

modules/meshcloud-service-account-meshfed-replicator/module.tf

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,17 @@ resource "kubernetes_cluster_role" "meshfed-service" {
7070
verbs = ["bind"]
7171
resource_names = ["admin", "edit", "view"]
7272
}
73+
74+
dynamic "rule" {
75+
for_each = var.additional_rules
76+
content {
77+
api_groups = rule.value.api_groups
78+
resources = rule.value.resources
79+
verbs = rule.value.verbs
80+
resource_names = rule.value.resource_names
81+
non_resource_urls = rule.value.non_resource_urls
82+
}
83+
}
7384
}
7485

7586
# meshfed_service role binding
Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
11
variable "namespace" {
22
type = string
3-
}
3+
}
4+
5+
variable "additional_rules" {
6+
type = list(object({
7+
api_groups = list(string)
8+
resources = list(string)
9+
verbs = list(string)
10+
resource_names = optional(list(string))
11+
non_resource_urls = optional(list(string))
12+
}))
13+
default = []
14+
}

variables.tf

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,29 @@ variable "metering_enabled" {
33
default = true
44
}
55

6+
variable "metering_additional_rules" {
7+
type = list(object({
8+
api_groups = list(string)
9+
resources = list(string)
10+
verbs = list(string)
11+
resource_names = optional(list(string))
12+
non_resource_urls = optional(list(string))
13+
}))
14+
default = []
15+
}
16+
617
variable "replicator_enabled" {
718
type = bool
819
default = true
920
}
21+
22+
variable "replicator_additional_rules" {
23+
type = list(object({
24+
api_groups = list(string)
25+
resources = list(string)
26+
verbs = list(string)
27+
resource_names = optional(list(string))
28+
non_resource_urls = optional(list(string))
29+
}))
30+
default = []
31+
}

0 commit comments

Comments
 (0)