Skip to content

Commit 9fe0548

Browse files
authored
bugfix: Support configauditing for rbac resource with capital letter name (#1356)
This code changes has following fixes - When rbac resource is created with capital letter, then configaudit report were not generated for that resource bcoz of configaudit report name limitation. To resolve it, we are making sure that we will create configaudit report with lower case - Starboard started support for Ingress resource, but in 1.18 ingress resources are present in old apis. So handled it as part of compatibility flow, so starboard can run and support k8s 1.18 onwards fixes #1355
1 parent bb7e24f commit 9fe0548

7 files changed

Lines changed: 23 additions & 6 deletions

File tree

deploy/helm/templates/rbac.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ rules:
122122
- delete
123123
- apiGroups:
124124
- networking.k8s.io
125+
- extensions
125126
resources:
126127
- networkpolicies
127128
- ingresses

deploy/static/02-starboard-operator.rbac.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ rules:
121121
- delete
122122
- apiGroups:
123123
- networking.k8s.io
124+
- extensions
124125
resources:
125126
- networkpolicies
126127
- ingresses

deploy/static/starboard.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -715,6 +715,7 @@ rules:
715715
- delete
716716
- apiGroups:
717717
- networking.k8s.io
718+
- extensions
718719
resources:
719720
- networkpolicies
720721
- ingresses

pkg/configauditreport/builder.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ func (b *ReportBuilder) Data(data v1alpha1.ConfigAuditReportData) *ReportBuilder
191191
func (b *ReportBuilder) reportName() string {
192192
kind := b.controller.GetObjectKind().GroupVersionKind().Kind
193193
name := b.controller.GetName()
194-
reportName := fmt.Sprintf("%s-%s", strings.ToLower(kind), name)
194+
reportName := fmt.Sprintf("%s-%s", strings.ToLower(kind), strings.ToLower(name))
195195
if len(validation.IsValidLabelValue(reportName)) == 0 {
196196
return reportName
197197
}

pkg/configauditreport/controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ func (r *ResourceController) SetupWithManager(mgr ctrl.Manager) error {
6363
{kind: kube.KindRole, forObject: &rbacv1.Role{}, ownsObject: &v1alpha1.ConfigAuditReport{}},
6464
{kind: kube.KindRoleBinding, forObject: &rbacv1.RoleBinding{}, ownsObject: &v1alpha1.ConfigAuditReport{}},
6565
{kind: kube.KindNetworkPolicy, forObject: &networkingv1.NetworkPolicy{}, ownsObject: &v1alpha1.ConfigAuditReport{}},
66-
{kind: kube.KindIngress, forObject: &networkingv1.Ingress{}, ownsObject: &v1alpha1.ConfigAuditReport{}},
66+
{kind: kube.KindIngress, forObject: r.ObjectResolver.GetSupportedObjectByKind(kube.KindIngress), ownsObject: &v1alpha1.ConfigAuditReport{}},
6767
{kind: kube.KindResourceQuota, forObject: &corev1.ResourceQuota{}, ownsObject: &v1alpha1.ConfigAuditReport{}},
6868
{kind: kube.KindLimitRange, forObject: &corev1.LimitRange{}, ownsObject: &v1alpha1.ConfigAuditReport{}},
6969
}

pkg/kube/object.go

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ import (
1313
batchv1 "k8s.io/api/batch/v1"
1414
batchv1beta1 "k8s.io/api/batch/v1beta1"
1515
corev1 "k8s.io/api/core/v1"
16+
extensionv1beta1 "k8s.io/api/extensions/v1beta1"
1617
networkingv1 "k8s.io/api/networking/v1"
18+
networkingbetav1 "k8s.io/api/networking/v1beta1"
1719
policyv1beta1 "k8s.io/api/policy/v1beta1"
1820
rbacv1 "k8s.io/api/rbac/v1"
1921
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
@@ -70,9 +72,13 @@ const (
7072
)
7173

7274
const (
73-
cronJobResource = "cronjobs"
74-
apiBatchV1beta1CronJob = "batch/v1beta1, Kind=CronJob"
75-
apiBatchV1CronJob = "batch/v1, Kind=CronJob"
75+
cronJobResource = "cronjobs"
76+
ingressResource = "ingress"
77+
apiBatchV1beta1CronJob = "batch/v1beta1, Kind=CronJob"
78+
apiBatchV1CronJob = "batch/v1, Kind=CronJob"
79+
apiNetworkV1betaIngress = "networking.k8s.io/v1beta1, Kind=Ingress"
80+
apiNetworkV1Ingress = "networking.k8s.io/v1, Kind=Ingress"
81+
apiExtensionV1betaIngress = "extensions/v1beta1, Kind=Ingress"
7682
)
7783

7884
const (
@@ -350,6 +356,12 @@ func supportedObjectsByK8sKind(api string, kind string, kindObjectMap map[string
350356
resource = &batchv1beta1.CronJob{}
351357
case apiBatchV1CronJob:
352358
resource = &batchv1.CronJob{}
359+
case apiNetworkV1betaIngress:
360+
resource = &networkingbetav1.Ingress{}
361+
case apiNetworkV1Ingress:
362+
resource = &networkingv1.Ingress{}
363+
case apiExtensionV1betaIngress:
364+
resource = &extensionv1beta1.Ingress{}
353365
default:
354366
return fmt.Errorf("api %s is not suooprted compatibale resource", api)
355367
}
@@ -358,7 +370,7 @@ func supportedObjectsByK8sKind(api string, kind string, kindObjectMap map[string
358370
}
359371

360372
func getCompatibleResources() []string {
361-
return []string{cronJobResource}
373+
return []string{cronJobResource, ingressResource}
362374
}
363375

364376
// GetSupportedObjectByKind accept kind and return the supported object (group/api/kind) of the cluster

pkg/starboard/config.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
batchv1beta1 "k8s.io/api/batch/v1beta1"
1717
coordinationv1 "k8s.io/api/coordination/v1"
1818
corev1 "k8s.io/api/core/v1"
19+
extensionv1beta1 "k8s.io/api/extensions/v1beta1"
1920
networkingv1 "k8s.io/api/networking/v1"
2021
policyv1beta1 "k8s.io/api/policy/v1beta1"
2122
rbacv1 "k8s.io/api/rbac/v1"
@@ -40,6 +41,7 @@ func NewScheme() *runtime.Scheme {
4041
_ = coordinationv1.AddToScheme(scheme)
4142
_ = apiextensionsv1.AddToScheme(scheme)
4243
_ = ocpappsv1.AddToScheme(scheme)
44+
_ = extensionv1beta1.AddToScheme(scheme)
4345
return scheme
4446
}
4547

0 commit comments

Comments
 (0)