Skip to content

Commit d9a1ea3

Browse files
Merge pull request #310 from theobarberbany/tb/fix-sa-bug
OCPBUGS-5825: Adds GCP ClusterRole and ClusterRoleBinding
2 parents 8a71f3e + 048086a commit d9a1ea3

6 files changed

Lines changed: 63 additions & 7 deletions

manifests/0000_26_cloud-controller-manager-operator_02_rbac_operator.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,21 @@ rules:
133133
verbs:
134134
- patch
135135

136+
# gcp requires additional permissions on the kube-system/cloud-provider service account.
137+
# The operator must have these permissions to then grant them to the gcp node manager.
138+
- apiGroups:
139+
- ""
140+
resources:
141+
- events
142+
verbs:
143+
- update
144+
- apiGroups:
145+
- ""
146+
resources:
147+
- services/status
148+
verbs:
149+
- update
150+
136151
---
137152
apiVersion: rbac.authorization.k8s.io/v1
138153
kind: Role

pkg/cloud/cloud_test.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -157,17 +157,23 @@ func TestGetResources(t *testing.T) {
157157
}, {
158158
name: "GCP resources returned as expected",
159159
testPlatform: platformsMap[string(configv1.GCPPlatformType)],
160-
expectedResourceCount: 2,
160+
expectedResourceCount: 4,
161161
expectedResourcesKindName: []string{
162162
"Deployment/gcp-cloud-controller-manager",
163163
"PodDisruptionBudget/gcp-cloud-controller-manager",
164+
"ClusterRole/gcp-cloud-controller-manager",
165+
"ClusterRoleBinding/gcp-cloud-controller-manager:cloud-provider",
164166
},
165167
}, {
166-
name: "GCP resources returned as expected with single node cluster",
167-
testPlatform: platformsMap[string(configv1.GCPPlatformType)],
168-
expectedResourceCount: 1,
169-
singleReplica: true,
170-
expectedResourcesKindName: []string{"Deployment/gcp-cloud-controller-manager"},
168+
name: "GCP resources returned as expected with single node cluster",
169+
testPlatform: platformsMap[string(configv1.GCPPlatformType)],
170+
expectedResourceCount: 3,
171+
singleReplica: true,
172+
expectedResourcesKindName: []string{
173+
"Deployment/gcp-cloud-controller-manager",
174+
"ClusterRole/gcp-cloud-controller-manager",
175+
"ClusterRoleBinding/gcp-cloud-controller-manager:cloud-provider",
176+
},
171177
}, {
172178
name: "Azure resources returned as expected",
173179
testPlatform: platformsMap[string(configv1.AzurePlatformType)],
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRole
3+
metadata:
4+
name: gcp-cloud-controller-manager
5+
rules:
6+
- apiGroups:
7+
- ""
8+
resources:
9+
- events
10+
verbs:
11+
- create
12+
- patch
13+
- update
14+
- apiGroups:
15+
- ""
16+
resources:
17+
- services/status
18+
verbs:
19+
- patch
20+
- update
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRoleBinding
3+
metadata:
4+
name: gcp-cloud-controller-manager:cloud-provider
5+
roleRef:
6+
apiGroup: rbac.authorization.k8s.io
7+
kind: ClusterRole
8+
name: gcp-cloud-controller-manager
9+
subjects:
10+
- kind: ServiceAccount
11+
name: cloud-provider
12+
namespace: kube-system

pkg/cloud/gcp/gcp.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66

77
"github.com/asaskevich/govalidator"
88
appsv1 "k8s.io/api/apps/v1"
9+
rbacv1 "k8s.io/api/rbac/v1"
910
"sigs.k8s.io/controller-runtime/pkg/client"
1011

1112
"github.com/openshift/cluster-cloud-controller-manager-operator/pkg/cloud/common"
@@ -19,6 +20,8 @@ var (
1920
assetsFs embed.FS
2021
templates = []common.TemplateSource{
2122
{ReferenceObject: &appsv1.Deployment{}, EmbedFsPath: "assets/cloud-controller-manager.yaml"},
23+
{ReferenceObject: &rbacv1.ClusterRole{}, EmbedFsPath: "assets/gcp-cloud-controller-manager-clusterrole.yaml"},
24+
{ReferenceObject: &rbacv1.ClusterRoleBinding{}, EmbedFsPath: "assets/gcp-cloud-controller-manager-clusterrolebinding.yaml"},
2225
}
2326
)
2427

pkg/cloud/gcp/gcp_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ func TestResourcesRenderingSmoke(t *testing.T) {
5555
}
5656

5757
resources := assets.GetRenderedResources()
58-
assert.Len(t, resources, 1)
58+
assert.Len(t, resources, 3)
5959
})
6060
}
6161
}

0 commit comments

Comments
 (0)