File tree Expand file tree Collapse file tree
kubernetes/terraform/modules/kubernetes Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -225,3 +225,33 @@ resource "kubernetes_deployment" "wireguard" {
225225 }
226226}
227227
228+ # Create Kubernetes role and binding to use arbitrary group 'vpn-users'. This group has been added by administor and mapped to user roles(developer & operator).
229+ resource "kubernetes_role" "wireguard" {
230+ metadata {
231+ name = " wireguard"
232+ namespace = kubernetes_namespace. vpn_namespace . metadata [0 ]. name
233+ }
234+
235+ rule {
236+ api_groups = [" " ]
237+ resources = [" pods" , " pods/exec" ]
238+ verbs = [" exec" , " list" , " create" ]
239+ }
240+ }
241+
242+ resource "kubernetes_role_binding" "wireguard" {
243+ metadata {
244+ name = " wireguard"
245+ namespace = kubernetes_namespace. vpn_namespace . metadata [0 ]. name
246+ }
247+ role_ref {
248+ api_group = " rbac.authorization.k8s.io"
249+ kind = " Role"
250+ name = " wireguard"
251+ }
252+ subject {
253+ kind = " Group"
254+ name = " vpn-users"
255+ api_group = " rbac.authorization.k8s.io"
256+ }
257+ }
Original file line number Diff line number Diff line change @@ -115,16 +115,19 @@ module "prod" {
115115 name = " developer"
116116 aws_policy = data.aws_iam_policy_document.developer_access.json
117117 k8s_policies = local.k8s_developer_access
118+ k8s_groups = [" vpn-users" ]
118119 },
119120 {
120121 name = " operator"
121122 aws_policy = data.aws_iam_policy_document.operator_access.json
122123 k8s_policies = local.k8s_operator_access
124+ k8s_groups = [" vpn-users" ]
123125 },
124126 {
125127 name = " deployer"
126128 aws_policy = data.aws_iam_policy_document.deployer_access.json
127129 k8s_policies = local.k8s_deployer_access
130+ k8s_groups = []
128131 }
129132 ]
130133
Original file line number Diff line number Diff line change @@ -119,16 +119,19 @@ module "stage" {
119119 name = " developer"
120120 aws_policy = data.aws_iam_policy_document.developer_access.json
121121 k8s_policies = local.k8s_developer_access
122+ k8s_groups = [" vpn-users" ]
122123 },
123124 {
124125 name = " operator"
125126 aws_policy = data.aws_iam_policy_document.operator_access.json
126127 k8s_policies = local.k8s_operator_access
128+ k8s_groups = [" vpn-users" ]
127129 },
128130 {
129131 name = " deployer"
130132 aws_policy = data.aws_iam_policy_document.deployer_access.json
131133 k8s_policies = local.k8s_deployer_access
134+ k8s_groups = []
132135 }
133136 ]
134137
Original file line number Diff line number Diff line change 33locals {
44 kubernetes_cluster_name = " ${ var . project } -${ var . environment } -${ var . region } "
55
6- users = [
6+ user_access_users = [
77 for u in var . user_role_mapping : {
88 name = u . name
99 roles = [
@@ -12,12 +12,22 @@ locals {
1212 ]
1313 }
1414 ]
15+
16+ user_access_roles = [
17+ for r in var . roles : {
18+ name = r . name
19+ aws_policy = r . aws_policy
20+ k8s_policies = r . k8s_policies
21+ }
22+ ]
1523
16- kubernetes_iam_role_mapping = [
24+ eks_kubernetes_iam_role_mapping = [
1725 for r in module . user_access . eks_iam_role_mapping : {
1826 iam_role_arn = r . arn
1927 k8s_role_name = r . name
20- k8s_groups = [ r . name ]
28+ k8s_groups = flatten (concat ([r . name ], [
29+ for o in var . roles : o . k8s_groups if r . name == " ${ var . project } -kubernetes-${ o . name } -${ var . environment } "
30+ ]))
2131 }
2232 ]
2333}
@@ -64,7 +74,7 @@ module "eks" {
6474 worker_asg_max_size = var. eks_worker_asg_max_size
6575 worker_ami = var. eks_worker_ami # EKS-Optimized AMI for your region: https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html
6676
67- iam_role_mapping = local. kubernetes_iam_role_mapping
77+ iam_role_mapping = local. eks_kubernetes_iam_role_mapping
6878}
6979
7080
@@ -163,8 +173,8 @@ module "user_access" {
163173 project = var. project
164174 environment = var. environment
165175
166- roles = var . roles
167- users = local. users
176+ roles = local . user_access_roles
177+ users = local. user_access_users
168178}
169179
170180
Original file line number Diff line number Diff line change @@ -149,6 +149,7 @@ variable "roles" {
149149 name = string
150150 aws_policy = string
151151 k8s_policies = list (map (list (string )))
152+ k8s_groups = list (string )
152153 }))
153154 description = " Role list with policies"
154155}
You can’t perform that action at this time.
0 commit comments