Skip to content

Commit

Permalink
feat: add regex in resource exceptions (#277)
Browse files Browse the repository at this point in the history
* fix(formatOutput): fix spacing between tables (#269)

* fix(formatOutput): fix spacing between tables

* fix

* refactor

* refactor

---------

Co-authored-by: Phil Brocker <phil.brocker@gmail.com>

* feat: added regex support

* feat: updated exceptions to regex

* fix: converted all existing exceptions to be regex compatible

* fix: added support for configmaps and serviceaccounts

* fix: Configmaps and serviceaccounts are now filtered using the same methods

* fix: exceptiontype

* fix: once again wrong file

* feat: add K3S exceptions (#270)

* feat: added clusterroles

* feat: added k3s configmaps

* feat: added k3s crds

* feat: added k3s secrets

* feat: added k3s StorageClass

* feat: added job resource exceptions

* feat: added job exceptions

* fix: importing embed

* fix: fixed sa test

* fix: regex-ified job exceptions

* fix: fixed resource exception for jobs

* fix: removed kube-root-ca from test

* fix: removed default from TestRetrieveUsedSA

* fix: added regex flag to jsons

* added MatchRegex flag

* sorted all exceptoins

* fix: wrong regex expressions

* feat: added resource exception test

* fix: removed binary

---------

Co-authored-by: Phil Brocker <5331286+pbr0ck3r@users.noreply.github.com>
Co-authored-by: Phil Brocker <phil.brocker@gmail.com>
  • Loading branch information
3 people committed Jun 15, 2024
1 parent 4c3b45d commit ea85ff7
Show file tree
Hide file tree
Showing 20 changed files with 264 additions and 50 deletions.
7 changes: 6 additions & 1 deletion pkg/kor/clusterroles.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,12 @@ func retrieveClusterRoleNames(clientset kubernetes.Interface, filterOpts *filter
return nil, nil, err
}

if isResourceException(clusterRole.Name, "", config.ExceptionClusterRoles) {
exceptionFound, err := isResourceException(clusterRole.Name, clusterRole.Namespace, config.ExceptionClusterRoles)
if err != nil {
return nil, nil, err
}

if exceptionFound {
continue
}

Expand Down
29 changes: 17 additions & 12 deletions pkg/kor/configmaps.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,17 +74,6 @@ func retrieveUsedCM(clientset kubernetes.Interface, namespace string) ([]string,
}
}

config, err := unmarshalConfig(configMapsConfig)
if err != nil {
return nil, nil, nil, nil, nil, err
}

for _, resource := range config.ExceptionConfigMaps {
if resource.Namespace == namespace || resource.Namespace == "*" {
volumesCM = append(volumesCM, resource.ResourceName)
}
}

return volumesCM, envCM, envFromCM, envFromContainerCM, envFromInitContainerCM, nil
}

Expand Down Expand Up @@ -117,6 +106,10 @@ func processNamespaceCM(clientset kubernetes.Interface, namespace string, filter
if err != nil {
return nil, err
}
config, err := unmarshalConfig(configMapsConfig)
if err != nil {
return nil, err
}

volumesCM = RemoveDuplicatesAndSort(volumesCM)
envCM = RemoveDuplicatesAndSort(envCM)
Expand Down Expand Up @@ -145,8 +138,20 @@ func processNamespaceCM(clientset kubernetes.Interface, namespace string, filter
diff := CalculateResourceDifference(usedConfigMaps, configMapNames)
diff = append(diff, unusedConfigmapNames...)

return diff, nil
var result []string
for _, cmName := range diff {
exceptionFound, err := isResourceException(cmName, namespace, config.ExceptionConfigMaps)
if err != nil {
return nil, err
}

if exceptionFound {
continue
}
result = append(result, cmName)
}

return result, nil
}

func GetUnusedConfigmaps(filterOpts *filters.Options, clientset kubernetes.Interface, outputFormat string, opts Opts) (string, error) {
Expand Down
1 change: 0 additions & 1 deletion pkg/kor/configmaps_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,6 @@ func TestRetrieveUsedCM(t *testing.T) {

expectedVolumesCM := []string{
"configmap-1",
"kube-root-ca.crt",
}
if !equalSlices(volumesCM, expectedVolumesCM) {
t.Errorf("Expected volume configmaps %v, got %v", expectedVolumesCM, volumesCM)
Expand Down
7 changes: 6 additions & 1 deletion pkg/kor/crds.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,12 @@ func processCrds(apiExtClient apiextensionsclientset.Interface, dynamicClient dy
return nil, err
}

if isResourceException(crd.Name, crd.Namespace, config.ExceptionCrds) {
exceptionFound, err := isResourceException(crd.Name, crd.Namespace, config.ExceptionCrds)
if err != nil {
return nil, err
}

if exceptionFound {
continue
}

Expand Down
7 changes: 6 additions & 1 deletion pkg/kor/daemonsets.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,12 @@ func processNamespaceDaemonSets(clientset kubernetes.Interface, namespace string
return nil, err
}

if isResourceException(daemonSet.Name, daemonSet.Namespace, config.ExceptionDaemonSets) {
exceptionFound, err := isResourceException(daemonSet.Name, daemonSet.Namespace, config.ExceptionDaemonSets)
if err != nil {
return nil, err
}

if exceptionFound {
continue
}

Expand Down
8 changes: 8 additions & 0 deletions pkg/kor/exceptions/clusterroles/clusterroles.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@
"Namespace": "",
"ResourceName": "system:aggregated-metrics-reader"
},
{
"Namespace": "",
"ResourceName": "system:aggregated-metrics-reader"
},
{
"Namespace": "",
"ResourceName": "system:auth-delegator"
Expand Down Expand Up @@ -80,6 +84,10 @@
"Namespace": "",
"ResourceName": "system:node-bootstrapper"
},
{
"Namespace": "",
"ResourceName": "system:node-bootstrapper"
},
{
"Namespace": "",
"ResourceName": "system:node-problem-detector"
Expand Down
9 changes: 7 additions & 2 deletions pkg/kor/exceptions/configmaps/configmaps.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
{
"exceptionConfigMaps": [
{
"Namespace": "*",
"ResourceName": "kube-root-ca.crt"
"Namespace": ".*",
"ResourceName": "kube-root-ca\\.crt",
"MatchRegex": true
},
{
"Namespace": "gmp-system",
Expand Down Expand Up @@ -32,6 +33,10 @@
"Namespace": "kube-system",
"ResourceName": "cluster-dns"
},
{
"Namespace": "kube-system",
"ResourceName": "cluster-dns"
},
{
"Namespace": "kube-system",
"ResourceName": "cluster-kubestore"
Expand Down
80 changes: 80 additions & 0 deletions pkg/kor/exceptions/crds/crds.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@
"Namespace": "",
"ResourceName": "etcdsnapshotfiles.k3s.cattle.io"
},
{
"Namespace": "",
"ResourceName": "etcdsnapshotfiles.k3s.cattle.io"
},
{
"Namespace": "",
"ResourceName": "frontendconfigs.networking.gke.io"
Expand All @@ -52,6 +56,14 @@
"Namespace": "",
"ResourceName": "helmchartconfigs.helm.cattle.io"
},
{
"Namespace": "",
"ResourceName": "helmchartconfigs.helm.cattle.io"
},
{
"Namespace": "",
"ResourceName": "ingressroutes.traefik.containo.us"
},
{
"Namespace": "",
"ResourceName": "ingressroutes.traefik.containo.us"
Expand All @@ -60,6 +72,14 @@
"Namespace": "",
"ResourceName": "ingressroutetcps.traefik.containo.us"
},
{
"Namespace": "",
"ResourceName": "ingressroutetcps.traefik.containo.us"
},
{
"Namespace": "",
"ResourceName": "ingressroutetcps.traefik.io"
},
{
"Namespace": "",
"ResourceName": "ingressroutetcps.traefik.io"
Expand All @@ -68,6 +88,14 @@
"Namespace": "",
"ResourceName": "ingressrouteudps.traefik.containo.us"
},
{
"Namespace": "",
"ResourceName": "ingressrouteudps.traefik.containo.us"
},
{
"Namespace": "",
"ResourceName": "ingressrouteudps.traefik.io"
},
{
"Namespace": "",
"ResourceName": "ingressrouteudps.traefik.io"
Expand All @@ -84,6 +112,14 @@
"Namespace": "",
"ResourceName": "middlewares.traefik.containo.us"
},
{
"Namespace": "",
"ResourceName": "middlewares.traefik.containo.us"
},
{
"Namespace": "",
"ResourceName": "middlewares.traefik.io"
},
{
"Namespace": "",
"ResourceName": "middlewares.traefik.io"
Expand All @@ -92,6 +128,14 @@
"Namespace": "",
"ResourceName": "middlewaretcps.traefik.containo.us"
},
{
"Namespace": "",
"ResourceName": "middlewaretcps.traefik.containo.us"
},
{
"Namespace": "",
"ResourceName": "middlewaretcps.traefik.io"
},
{
"Namespace": "",
"ResourceName": "middlewaretcps.traefik.io"
Expand Down Expand Up @@ -124,6 +168,14 @@
"Namespace": "",
"ResourceName": "serverstransports.traefik.containo.us"
},
{
"Namespace": "",
"ResourceName": "serverstransports.traefik.containo.us"
},
{
"Namespace": "",
"ResourceName": "serverstransports.traefik.io"
},
{
"Namespace": "",
"ResourceName": "serverstransports.traefik.io"
Expand All @@ -132,6 +184,10 @@
"Namespace": "",
"ResourceName": "serverstransporttcps.traefik.io"
},
{
"Namespace": "",
"ResourceName": "serverstransporttcps.traefik.io"
},
{
"Namespace": "",
"ResourceName": "serviceattachments.networking.gke.io"
Expand All @@ -144,10 +200,22 @@
"Namespace": "",
"ResourceName": "tlsoptions.traefik.containo.us"
},
{
"Namespace": "",
"ResourceName": "tlsoptions.traefik.containo.us"
},
{
"Namespace": "",
"ResourceName": "tlsoptions.traefik.io"
},
{
"Namespace": "",
"ResourceName": "tlsoptions.traefik.io"
},
{
"Namespace": "",
"ResourceName": "tlsstores.traefik.containo.us"
},
{
"Namespace": "",
"ResourceName": "tlsstores.traefik.containo.us"
Expand All @@ -156,6 +224,14 @@
"Namespace": "",
"ResourceName": "tlsstores.traefik.io"
},
{
"Namespace": "",
"ResourceName": "tlsstores.traefik.io"
},
{
"Namespace": "",
"ResourceName": "traefikservices.traefik.containo.us"
},
{
"Namespace": "",
"ResourceName": "traefikservices.traefik.containo.us"
Expand All @@ -164,6 +240,10 @@
"Namespace": "",
"ResourceName": "traefikservices.traefik.io"
},
{
"Namespace": "",
"ResourceName": "traefikservices.traefik.io"
},
{
"Namespace": "",
"ResourceName": "updateinfos.nodemanagement.gke.io"
Expand Down
6 changes: 4 additions & 2 deletions pkg/kor/exceptions/secrets/secrets.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@
"exceptionSecrets": [
{
"Namespace": "kube-system",
"ResourceName": "*.node-password.k3s"
"ResourceName": ".*\\.node-password\\.k3s",
"MatchRegex": true
},
{
"Namespace": "kube-system",
"ResourceName": "bootstrap-token-*"
"ResourceName": "bootstrap-token-.*",
"MatchRegex": true
},
{
"Namespace": "kube-system",
Expand Down
5 changes: 3 additions & 2 deletions pkg/kor/exceptions/serviceaccounts/serviceaccounts.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
{
"exceptionServiceAccounts": [
{
"Namespace": "*",
"ResourceName": "default"
"Namespace": ".*",
"ResourceName": "default",
"MatchRegex": true
},
{
"Namespace": "kube-system",
Expand Down
4 changes: 4 additions & 0 deletions pkg/kor/exceptions/storageclasses/storageclasses.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@
"Namespace": "",
"ResourceName": "local-path"
},
{
"Namespace": "",
"ResourceName": "local-path"
},
{
"Namespace": "",
"ResourceName": "managed"
Expand Down
7 changes: 6 additions & 1 deletion pkg/kor/jobs.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,12 @@ func processNamespaceJobs(clientset kubernetes.Interface, namespace string, filt
continue
}

if isResourceException(job.Name, job.Namespace, config.ExceptionJobs) {
exceptionFound, err := isResourceException(job.Name, job.Namespace, config.ExceptionJobs)
if err != nil {
return nil, err
}

if exceptionFound {
continue
}

Expand Down
Loading

0 comments on commit ea85ff7

Please sign in to comment.