File tree Expand file tree Collapse file tree 3 files changed +41
-2
lines changed
Expand file tree Collapse file tree 3 files changed +41
-2
lines changed Original file line number Diff line number Diff line change @@ -74,11 +74,25 @@ resource "kubernetes_config_map_v1" "autoscaler_priority" {
7474 depends_on = [scaleway_k8s_pool . primary ]
7575}
7676
77+ # All projects need read-only access to CRDs for route deploys:
78+ resource "kubernetes_cluster_role_v1" "crd_reader" {
79+ metadata {
80+ name = " crd-reader-role"
81+ }
82+
83+ rule {
84+ api_groups = [" apiextensions.k8s.io" ]
85+ resources = [" customresourcedefinitions" ]
86+ verbs = [" get" , " list" ]
87+ }
88+ }
89+
7790# ## ---
7891
7992module "public_endpoint" {
8093 source = " ./modules/k8s-project"
8194 name = " public-endpoint"
95+ crd_reader_role_name = kubernetes_cluster_role_v1. crd_reader . metadata [0 ]. name
8296}
8397
8498output "public_endpoint_deploy_token" {
@@ -89,6 +103,7 @@ output "public_endpoint_deploy_token" {
89103module "accounts_api" {
90104 source = " ./modules/k8s-project"
91105 name = " accounts-api"
106+ crd_reader_role_name = kubernetes_cluster_role_v1. crd_reader . metadata [0 ]. name
92107}
93108
94109output "accounts_api_deploy_token" {
Original file line number Diff line number Diff line change @@ -21,13 +21,13 @@ resource "kubernetes_service_account_v1" "deployer" {
2121 }
2222}
2323
24+ # Namespace rule: all permissions, but only in this namespace
2425resource "kubernetes_role_v1" "deployer" {
2526 metadata {
2627 name = " gh-actions-deployer-role"
2728 namespace = kubernetes_namespace_v1. this . metadata [0 ]. name
2829 }
2930
30- # All permissions, but only in this namespace
3131 rule {
3232 api_groups = [" *" ]
3333 resources = [" *" ]
@@ -52,6 +52,25 @@ resource "kubernetes_role_binding_v1" "deployer" {
5252 }
5353}
5454
55+ # Cluster rule: read-only perms on CRDs, required for route deploys:
56+ resource "kubernetes_cluster_role_binding_v1" "deployer_crd_reader" {
57+ metadata {
58+ name = " ${ var . name } -gh-actions-deployer-crd-cluster-binding"
59+ }
60+
61+ role_ref {
62+ api_group = " rbac.authorization.k8s.io"
63+ kind = " ClusterRole"
64+ name = var. crd_reader_role_name
65+ }
66+
67+ subject {
68+ kind = " ServiceAccount"
69+ name = kubernetes_service_account_v1. deployer . metadata [0 ]. name
70+ namespace = kubernetes_namespace_v1. this . metadata [0 ]. name
71+ }
72+ }
73+
5574resource "kubernetes_secret_v1" "deployer_token" {
5675 metadata {
5776 name = " gh-actions-deployer-token"
@@ -61,4 +80,4 @@ resource "kubernetes_secret_v1" "deployer_token" {
6180 }
6281 }
6382 type = " kubernetes.io/service-account-token"
64- }
83+ }
Original file line number Diff line number Diff line change 11variable "name" {
22 description = " The name of the project/namespace"
33 type = string
4+ }
5+
6+ variable "crd_reader_role_name" {
7+ description = " Name of the global ClusterRole that grants CRD read permissions"
8+ type = string
49}
You can’t perform that action at this time.
0 commit comments