From 9afa24848d75af5d0fe2c045a33020454749bd59 Mon Sep 17 00:00:00 2001 From: Richard Wall Date: Fri, 8 Aug 2025 12:24:01 +0100 Subject: [PATCH 01/20] Show the debug roundtripper logs in tests Signed-off-by: Richard Wall --- pkg/internal/cyberark/dataupload/dataupload_test.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkg/internal/cyberark/dataupload/dataupload_test.go b/pkg/internal/cyberark/dataupload/dataupload_test.go index cadb296a..28cce774 100644 --- a/pkg/internal/cyberark/dataupload/dataupload_test.go +++ b/pkg/internal/cyberark/dataupload/dataupload_test.go @@ -106,6 +106,9 @@ func TestCyberArkClient_PostDataReadingsWithOptions(t *testing.T) { for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { + logger := ktesting.NewLogger(t, ktesting.DefaultConfig) + ctx := klog.NewContext(t.Context(), logger) + server := dataupload.MockDataUploadServer() defer server.Close() @@ -118,7 +121,7 @@ func TestCyberArkClient_PostDataReadingsWithOptions(t *testing.T) { cyberArkClient, err := dataupload.NewCyberArkClient(certPool, server.Server.URL, tc.authenticate) require.NoError(t, err) - err = cyberArkClient.PostDataReadingsWithOptions(t.Context(), tc.payload, tc.opts) + err = cyberArkClient.PostDataReadingsWithOptions(ctx, tc.payload, tc.opts) tc.requireFn(t, err) }) } From c5edd24ad77055389afa885539f69791ed041d00 Mon Sep 17 00:00:00 2001 From: Richard Wall Date: Fri, 8 Aug 2025 13:05:03 +0100 Subject: [PATCH 02/20] Rename the real API test to be consistent with the mock API test Signed-off-by: Richard Wall --- pkg/internal/cyberark/dataupload/dataupload_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/internal/cyberark/dataupload/dataupload_test.go b/pkg/internal/cyberark/dataupload/dataupload_test.go index 28cce774..ca1ea0d4 100644 --- a/pkg/internal/cyberark/dataupload/dataupload_test.go +++ b/pkg/internal/cyberark/dataupload/dataupload_test.go @@ -21,7 +21,7 @@ import ( _ "k8s.io/klog/v2/ktesting/init" ) -func TestCyberArkClient_PostDataReadingsWithOptions(t *testing.T) { +func TestCyberArkClient_PostDataReadingsWithOptions_MockAPI(t *testing.T) { fakeTime := time.Unix(123, 0) defaultPayload := api.DataReadingsPost{ AgentMetadata: &api.AgentMetadata{ @@ -135,8 +135,8 @@ func TestCyberArkClient_PostDataReadingsWithOptions(t *testing.T) { // To enable verbose request logging: // // go test ./pkg/internal/cyberark/dataupload/... \ -// -v -count 1 -run TestPostDataReadingsWithOptionsWithRealAPI -args -testing.v 6 -func TestPostDataReadingsWithOptionsWithRealAPI(t *testing.T) { +// -v -count 1 -run TestCyberArkClient_PostDataReadingsWithOptions_RealAPI -args -testing.v 6 +func TestCyberArkClient_PostDataReadingsWithOptions_RealAPI(t *testing.T) { platformDomain := os.Getenv("ARK_PLATFORM_DOMAIN") subdomain := os.Getenv("ARK_SUBDOMAIN") username := os.Getenv("ARK_USERNAME") From 8d1365d8000e5e9b0b55c12ad5dc08cb9b039fab Mon Sep 17 00:00:00 2001 From: Richard Wall Date: Fri, 8 Aug 2025 13:05:45 +0100 Subject: [PATCH 03/20] Remove unused "invalidJSON" handling from the mock upload endpoint Signed-off-by: Richard Wall --- pkg/internal/cyberark/dataupload/mock.go | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/pkg/internal/cyberark/dataupload/mock.go b/pkg/internal/cyberark/dataupload/mock.go index f54f0fd3..315a7a47 100644 --- a/pkg/internal/cyberark/dataupload/mock.go +++ b/pkg/internal/cyberark/dataupload/mock.go @@ -41,10 +41,7 @@ func (mds *mockDataUploadServer) ServeHTTP(w http.ResponseWriter, r *http.Reques mds.handlePresignedUpload(w, r) return case "/presigned-upload": - mds.handleUpload(w, r, false) - return - case "/presigned-upload-invalid-json": - mds.handleUpload(w, r, false) + mds.handleUpload(w, r) return default: w.WriteHeader(http.StatusNotFound) @@ -122,7 +119,7 @@ func (mds *mockDataUploadServer) handlePresignedUpload(w http.ResponseWriter, r }{presignedURL}) } -func (mds *mockDataUploadServer) handleUpload(w http.ResponseWriter, r *http.Request, invalidJSON bool) { +func (mds *mockDataUploadServer) handleUpload(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPut { w.WriteHeader(http.StatusMethodNotAllowed) _, _ = w.Write([]byte(`{"message":"method not allowed"}`)) @@ -134,13 +131,6 @@ func (mds *mockDataUploadServer) handleUpload(w http.ResponseWriter, r *http.Req return } - if invalidJSON { - w.WriteHeader(http.StatusOK) - w.Header().Set("Content-Type", "application/json") - _, _ = w.Write([]byte(`{"url":`)) // invalid JSON - return - } - checksum := sha256.New() _, _ = io.Copy(checksum, r.Body) From 42f58619c299b8fb74440e6771bd7ef4a1d76aa7 Mon Sep 17 00:00:00 2001 From: Richard Wall Date: Fri, 8 Aug 2025 13:09:25 +0100 Subject: [PATCH 04/20] The AWS presigned URL endpoint responds with an empty body Signed-off-by: Richard Wall --- pkg/internal/cyberark/dataupload/mock.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkg/internal/cyberark/dataupload/mock.go b/pkg/internal/cyberark/dataupload/mock.go index 315a7a47..9e77e9bc 100644 --- a/pkg/internal/cyberark/dataupload/mock.go +++ b/pkg/internal/cyberark/dataupload/mock.go @@ -139,6 +139,4 @@ func (mds *mockDataUploadServer) handleUpload(w http.ResponseWriter, r *http.Req } w.WriteHeader(http.StatusOK) - w.Header().Set("Content-Type", "application/json") - _, _ = w.Write([]byte(`{"success":true}`)) } From b344e467f2b06e04053674731797dc944cec6752 Mon Sep 17 00:00:00 2001 From: Richard Wall Date: Fri, 8 Aug 2025 13:18:17 +0100 Subject: [PATCH 05/20] Add a test for authenticate error Signed-off-by: Richard Wall --- pkg/internal/cyberark/dataupload/dataupload_test.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pkg/internal/cyberark/dataupload/dataupload_test.go b/pkg/internal/cyberark/dataupload/dataupload_test.go index ca1ea0d4..56aadaec 100644 --- a/pkg/internal/cyberark/dataupload/dataupload_test.go +++ b/pkg/internal/cyberark/dataupload/dataupload_test.go @@ -3,6 +3,7 @@ package dataupload_test import ( "crypto/x509" "encoding/pem" + "errors" "fmt" "net/http" "os" @@ -84,6 +85,17 @@ func TestCyberArkClient_PostDataReadingsWithOptions_MockAPI(t *testing.T) { require.ErrorContains(t, err, "while retrieving snapshot upload URL: received response with status code 500: should authenticate using the correct bearer token") }, }, + { + name: "error contains authenticate error", + payload: defaultPayload, + opts: defaultOpts, + authenticate: func(_ *http.Request) error { + return errors.New("simulated-authenticate-error") + }, + requireFn: func(t *testing.T, err error) { + require.ErrorContains(t, err, "while retrieving snapshot upload URL: failed to authenticate request: simulated-authenticate-error") + }, + }, { name: "invalid JSON from server (RetrievePresignedUploadURL step)", payload: defaultPayload, From 80a73e719dcb6c46e56172a66ab395b3d7e37572 Mon Sep 17 00:00:00 2001 From: Richard Wall Date: Fri, 8 Aug 2025 13:22:35 +0100 Subject: [PATCH 06/20] Handle some unhandled errors in the tests Signed-off-by: Richard Wall --- pkg/internal/cyberark/dataupload/mock.go | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/pkg/internal/cyberark/dataupload/mock.go b/pkg/internal/cyberark/dataupload/mock.go index 9e77e9bc..d1a48878 100644 --- a/pkg/internal/cyberark/dataupload/mock.go +++ b/pkg/internal/cyberark/dataupload/mock.go @@ -51,7 +51,10 @@ func (mds *mockDataUploadServer) ServeHTTP(w http.ResponseWriter, r *http.Reques func (mds *mockDataUploadServer) handlePresignedUpload(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPost { w.WriteHeader(http.StatusMethodNotAllowed) - _, _ = w.Write([]byte(`{"message":"method not allowed"}`)) + _, err := w.Write([]byte(`{"message":"method not allowed"}`)) + if err != nil { + panic(err) + } return } @@ -95,7 +98,10 @@ func (mds *mockDataUploadServer) handlePresignedUpload(w http.ResponseWriter, r if req.ClusterID == "invalid-json-retrieve-presigned" { w.WriteHeader(http.StatusOK) w.Header().Set("Content-Type", "application/json") - _, _ = w.Write([]byte(`{"url":`)) // invalid JSON + _, err := w.Write([]byte(`{"url":`)) // invalid JSON + if err != nil { + panic(err) + } return } @@ -122,7 +128,10 @@ func (mds *mockDataUploadServer) handlePresignedUpload(w http.ResponseWriter, r func (mds *mockDataUploadServer) handleUpload(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPut { w.WriteHeader(http.StatusMethodNotAllowed) - _, _ = w.Write([]byte(`{"message":"method not allowed"}`)) + _, err := w.Write([]byte(`{"message":"method not allowed"}`)) + if err != nil { + panic(err) + } return } @@ -132,7 +141,10 @@ func (mds *mockDataUploadServer) handleUpload(w http.ResponseWriter, r *http.Req } checksum := sha256.New() - _, _ = io.Copy(checksum, r.Body) + _, err := io.Copy(checksum, r.Body) + if err != nil { + panic(err) + } if r.URL.Query().Get("checksum") != hex.EncodeToString(checksum.Sum(nil)) { http.Error(w, "checksum is invalid", http.StatusInternalServerError) From 5ab45c758efae273c334438403d26672516dac67 Mon Sep 17 00:00:00 2001 From: Richard Wall Date: Fri, 8 Aug 2025 13:57:34 +0100 Subject: [PATCH 07/20] Add a snapshot JSON format for uploads Signed-off-by: Richard Wall --- .../cyberark/dataupload/dataupload.go | 19 ++++++++++++++++++- .../cyberark/dataupload/dataupload_test.go | 14 +++++++++++--- pkg/internal/cyberark/dataupload/mock.go | 16 ++++++++++++++-- 3 files changed, 43 insertions(+), 6 deletions(-) diff --git a/pkg/internal/cyberark/dataupload/dataupload.go b/pkg/internal/cyberark/dataupload/dataupload.go index a334be2a..ac0057eb 100644 --- a/pkg/internal/cyberark/dataupload/dataupload.go +++ b/pkg/internal/cyberark/dataupload/dataupload.go @@ -29,6 +29,18 @@ const ( apiPathSnapshotLinks = "/api/ingestions/kubernetes/snapshot-links" ) +// Snapshot is the JSON that the CyberArk Discovery and Context API expects to +// be uploaded to the AWS presigned URL. +type Snapshot struct { + AgentVersion string `json:"agent_version"` + ClusterID string `json:"cluster_id"` + K8SVersion string `json:"k8s_version"` + Secrets []interface{} `json:"secrets"` + ServiceAccounts []interface{} `json:"service_accounts"` + Roles []interface{} `json:"roles"` + RoleBindings []interface{} `json:"role_bindings"` +} + type CyberArkClient struct { baseURL string client *http.Client @@ -63,9 +75,14 @@ func (c *CyberArkClient) PostDataReadingsWithOptions(ctx context.Context, payloa return fmt.Errorf("programmer mistake: the cluster name (aka `cluster_id` in the config file) cannot be left empty") } + snapshot := Snapshot{ + ClusterID: payload.AgentMetadata.ClusterID, + AgentVersion: version.PreflightVersion, + } + encodedBody := &bytes.Buffer{} checksum := sha256.New() - if err := json.NewEncoder(io.MultiWriter(encodedBody, checksum)).Encode(payload); err != nil { + if err := json.NewEncoder(io.MultiWriter(encodedBody, checksum)).Encode(snapshot); err != nil { return err } diff --git a/pkg/internal/cyberark/dataupload/dataupload_test.go b/pkg/internal/cyberark/dataupload/dataupload_test.go index 56aadaec..d950696f 100644 --- a/pkg/internal/cyberark/dataupload/dataupload_test.go +++ b/pkg/internal/cyberark/dataupload/dataupload_test.go @@ -187,8 +187,16 @@ func TestCyberArkClient_PostDataReadingsWithOptions_RealAPI(t *testing.T) { cyberArkClient, err := dataupload.NewCyberArkClient(nil, serviceURL, identityClient.AuthenticateRequest) require.NoError(t, err) - err = cyberArkClient.PostDataReadingsWithOptions(ctx, api.DataReadingsPost{}, dataupload.Options{ - ClusterName: "bb068932-c80d-460d-88df-34bc7f3f3297", - }) + err = cyberArkClient.PostDataReadingsWithOptions( + ctx, + api.DataReadingsPost{ + AgentMetadata: &api.AgentMetadata{ + ClusterID: "bb068932-c80d-460d-88df-34bc7f3f3297", + }, + }, + dataupload.Options{ + ClusterName: "bb068932-c80d-460d-88df-34bc7f3f3297", + }, + ) require.NoError(t, err) } diff --git a/pkg/internal/cyberark/dataupload/mock.go b/pkg/internal/cyberark/dataupload/mock.go index d1a48878..9e8d1c0d 100644 --- a/pkg/internal/cyberark/dataupload/mock.go +++ b/pkg/internal/cyberark/dataupload/mock.go @@ -1,6 +1,7 @@ package dataupload import ( + "bytes" "crypto/sha256" "encoding/hex" "encoding/json" @@ -140,15 +141,26 @@ func (mds *mockDataUploadServer) handleUpload(w http.ResponseWriter, r *http.Req return } - checksum := sha256.New() - _, err := io.Copy(checksum, r.Body) + body, err := io.ReadAll(r.Body) if err != nil { panic(err) } + checksum := sha256.New() + _, err = checksum.Write(body) + if err != nil { + panic(err) + } if r.URL.Query().Get("checksum") != hex.EncodeToString(checksum.Sum(nil)) { http.Error(w, "checksum is invalid", http.StatusInternalServerError) } + var snapshot Snapshot + d := json.NewDecoder(bytes.NewBuffer(body)) + d.DisallowUnknownFields() + if err := d.Decode(&snapshot); err != nil { + panic(err) + } + w.WriteHeader(http.StatusOK) } From 0b198668ab4e0a89f8e75e6d5c895e345ffbf9b3 Mon Sep 17 00:00:00 2001 From: Richard Wall Date: Fri, 8 Aug 2025 18:02:50 +0100 Subject: [PATCH 08/20] Convert DataReadings to Snapshot format Signed-off-by: Richard Wall --- .../cyberark/dataupload/dataupload.go | 113 +++++++++++++++++- 1 file changed, 110 insertions(+), 3 deletions(-) diff --git a/pkg/internal/cyberark/dataupload/dataupload.go b/pkg/internal/cyberark/dataupload/dataupload.go index ac0057eb..d41aef39 100644 --- a/pkg/internal/cyberark/dataupload/dataupload.go +++ b/pkg/internal/cyberark/dataupload/dataupload.go @@ -41,6 +41,113 @@ type Snapshot struct { RoleBindings []interface{} `json:"role_bindings"` } +// The names of Datagatherer configs which have the data to populate the Cyberark Snapshot +const ( + Discovery = "k8s-discovery" + SecretsGatherer = "k8s/secrets" + ServiceAccountsGatherer = "k8s/serviceaccounts" + RolesGatherer = "k8s/roles" + RoleBindingsGatherer = "k8s/rolebindings" + ClusterRolesGatherer = "k8s/clusterroles" + ClusterRoleBindingsGatherer = "k8s/clusterrolebindings" +) + +// ConvertDataReadingsToCyberarkSnapshot converts jetstack-secure DataReadings into Cyberark Snapshot format. +func ConvertDataReadingsToCyberarkSnapshot( + input api.DataReadingsPost, +) (snapshot Snapshot, err error) { + var ( + k8sVersion string + secrets, serviceAccounts, roles, roleBindings []interface{} + ) + + for _, reading := range input.DataReadings { + switch reading.DataGatherer { + case Discovery: + data, ok := reading.Data.(map[string]interface{}) + if !ok { + return snapshot, fmt.Errorf("failed to convert: %s", reading.DataGatherer) + } + serverVersion := data["server_version"] + serverVersionBytes, err := json.Marshal(serverVersion) + if err != nil { + return snapshot, fmt.Errorf("while marshalling server_version: %s", err) + } + var serverVersionInfo map[string]string + if err := json.Unmarshal(serverVersionBytes, &serverVersionInfo); err != nil { + return snapshot, fmt.Errorf("while un-marshalling server_version bytes: %s", err) + } + k8sVersion = serverVersionInfo["gitVersion"] + case SecretsGatherer: + if data, ok := reading.Data.(map[string]interface{}); ok { + if items, ok := data["items"].([]*api.GatheredResource); ok { + resources := make([]interface{}, len(items)) + for i, resource := range items { + resources[i] = resource.Resource + } + secrets = append(secrets, resources...) + } else { + return snapshot, fmt.Errorf("failed to convert: %s", reading.DataGatherer) + } + } else { + return snapshot, fmt.Errorf("failed to convert: %s", reading.DataGatherer) + } + case ServiceAccountsGatherer: + if data, ok := reading.Data.(map[string]interface{}); ok { + if items, ok := data["items"].([]*api.GatheredResource); ok { + resources := make([]interface{}, len(items)) + for i, resource := range items { + resources[i] = resource.Resource + } + serviceAccounts = append(serviceAccounts, resources...) + } else { + return snapshot, fmt.Errorf("failed to convert: %s", reading.DataGatherer) + } + } else { + return snapshot, fmt.Errorf("failed to convert: %s", reading.DataGatherer) + } + case RolesGatherer, ClusterRoleBindingsGatherer: + if data, ok := reading.Data.(map[string]interface{}); ok { + if items, ok := data["items"].([]*api.GatheredResource); ok { + resources := make([]interface{}, len(items)) + for i, resource := range items { + resources[i] = resource.Resource + } + roles = append(roles, resources...) + } else { + return snapshot, fmt.Errorf("failed to convert: %s", reading.DataGatherer) + } + } else { + return snapshot, fmt.Errorf("failed to convert: %s", reading.DataGatherer) + } + case RoleBindingsGatherer, ClusterRolesGatherer: + if data, ok := reading.Data.(map[string]interface{}); ok { + if items, ok := data["items"].([]*api.GatheredResource); ok { + resources := make([]interface{}, len(items)) + for i, resource := range items { + resources[i] = resource.Resource + } + roleBindings = append(roleBindings, resources...) + } else { + return snapshot, fmt.Errorf("failed to convert: %s", reading.DataGatherer) + } + } else { + return snapshot, fmt.Errorf("failed to convert: %s", reading.DataGatherer) + } + } + } + + return Snapshot{ + AgentVersion: input.AgentMetadata.Version, + ClusterID: input.AgentMetadata.ClusterID, + K8SVersion: k8sVersion, + Secrets: secrets, + ServiceAccounts: serviceAccounts, + Roles: roles, + RoleBindings: roleBindings, + }, nil +} + type CyberArkClient struct { baseURL string client *http.Client @@ -75,9 +182,9 @@ func (c *CyberArkClient) PostDataReadingsWithOptions(ctx context.Context, payloa return fmt.Errorf("programmer mistake: the cluster name (aka `cluster_id` in the config file) cannot be left empty") } - snapshot := Snapshot{ - ClusterID: payload.AgentMetadata.ClusterID, - AgentVersion: version.PreflightVersion, + snapshot, err := ConvertDataReadingsToCyberarkSnapshot(payload) + if err != nil { + return fmt.Errorf("while converting datareadings to Cyberark snapshot format: %s", err) } encodedBody := &bytes.Buffer{} From ca693d4088b84f825bd4de8b1d9beff8349c26dd Mon Sep 17 00:00:00 2001 From: Richard Wall Date: Sat, 9 Aug 2025 12:16:50 +0100 Subject: [PATCH 09/20] Include creation, deletion, and resource version metadata of Secrets Signed-off-by: Richard Wall --- pkg/datagatherer/k8s/fieldfilter.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/datagatherer/k8s/fieldfilter.go b/pkg/datagatherer/k8s/fieldfilter.go index ed39acb3..1bddd387 100644 --- a/pkg/datagatherer/k8s/fieldfilter.go +++ b/pkg/datagatherer/k8s/fieldfilter.go @@ -16,6 +16,9 @@ var SecretSelectedFields = []FieldPath{ {"metadata", "ownerReferences"}, {"metadata", "selfLink"}, {"metadata", "uid"}, + {"metadata", "creationTimestamp"}, + {"metadata", "deletionTimestamp"}, + {"metadata", "resourceVersion"}, {"type"}, {"data", "tls.crt"}, From d54d435b7d4994ec0800adda04c1bdcd845de4bf Mon Sep 17 00:00:00 2001 From: Richard Wall Date: Sat, 9 Aug 2025 12:25:44 +0100 Subject: [PATCH 10/20] Delete unused client_cyberark file to avoid import cycles Signed-off-by: Richard Wall --- pkg/client/client_cyberark.go | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 pkg/client/client_cyberark.go diff --git a/pkg/client/client_cyberark.go b/pkg/client/client_cyberark.go deleted file mode 100644 index af26e96c..00000000 --- a/pkg/client/client_cyberark.go +++ /dev/null @@ -1,9 +0,0 @@ -package client - -import ( - "github.com/jetstack/preflight/pkg/internal/cyberark/dataupload" -) - -type CyberArkClient = dataupload.CyberArkClient - -var NewCyberArkClient = dataupload.NewCyberArkClient From f76274a3d7c795106958d55daca572f9546f9283 Mon Sep 17 00:00:00 2001 From: Richard Wall Date: Sat, 9 Aug 2025 12:26:21 +0100 Subject: [PATCH 11/20] Add a data type for discovery data gatherer Signed-off-by: Richard Wall --- pkg/datagatherer/k8s/discovery.go | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/pkg/datagatherer/k8s/discovery.go b/pkg/datagatherer/k8s/discovery.go index 586622d6..dc913c89 100644 --- a/pkg/datagatherer/k8s/discovery.go +++ b/pkg/datagatherer/k8s/discovery.go @@ -4,6 +4,7 @@ import ( "context" "fmt" + "k8s.io/apimachinery/pkg/version" "k8s.io/client-go/discovery" "github.com/jetstack/preflight/pkg/datagatherer" @@ -57,17 +58,18 @@ func (g *DataGathererDiscovery) WaitForCacheSync(ctx context.Context) error { return nil } +type DiscoveryData struct { + ServerVersion *version.Info `json:"server_version"` +} + // Fetch will fetch discovery data from the apiserver, or return an error func (g *DataGathererDiscovery) Fetch() (interface{}, int, error) { - data, err := g.cl.ServerVersion() + serverVersion, err := g.cl.ServerVersion() if err != nil { return nil, -1, fmt.Errorf("failed to get server version: %v", err) } - response := map[string]interface{}{ - // data has type Info: https://godoc.org/k8s.io/apimachinery/pkg/version#Info - "server_version": data, - } - - return response, len(response), nil + return &DiscoveryData{ + ServerVersion: serverVersion, + }, 1, nil } From 667a065429bbbb83ae884f709881c474af05bbfc Mon Sep 17 00:00:00 2001 From: Richard Wall Date: Sat, 9 Aug 2025 12:27:27 +0100 Subject: [PATCH 12/20] Add a data type for dynamic data gatherer Signed-off-by: Richard Wall --- pkg/datagatherer/k8s/dynamic.go | 12 +++++++----- pkg/datagatherer/k8s/dynamic_test.go | 16 ++++++---------- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/pkg/datagatherer/k8s/dynamic.go b/pkg/datagatherer/k8s/dynamic.go index b0e1dedf..aabc3aca 100644 --- a/pkg/datagatherer/k8s/dynamic.go +++ b/pkg/datagatherer/k8s/dynamic.go @@ -307,6 +307,10 @@ func (g *DataGathererDynamic) WaitForCacheSync(ctx context.Context) error { return nil } +type DynamicData struct { + Items []*api.GatheredResource `json:"items"` +} + // Fetch will fetch the requested data from the apiserver, or return an error // if fetching the data fails. func (g *DataGathererDynamic) Fetch() (interface{}, int, error) { @@ -314,7 +318,6 @@ func (g *DataGathererDynamic) Fetch() (interface{}, int, error) { return nil, -1, fmt.Errorf("resource type must be specified") } - var list = map[string]interface{}{} var items = []*api.GatheredResource{} fetchNamespaces := g.namespaces @@ -344,10 +347,9 @@ func (g *DataGathererDynamic) Fetch() (interface{}, int, error) { return nil, -1, err } - // add gathered resources to items - list["items"] = items - - return list, len(items), nil + return &DynamicData{ + Items: items, + }, len(items), nil } func redactList(list []*api.GatheredResource, excludeAnnotKeys, excludeLabelKeys []*regexp.Regexp) error { diff --git a/pkg/datagatherer/k8s/dynamic_test.go b/pkg/datagatherer/k8s/dynamic_test.go index 072c4c1c..414b6429 100644 --- a/pkg/datagatherer/k8s/dynamic_test.go +++ b/pkg/datagatherer/k8s/dynamic_test.go @@ -730,15 +730,12 @@ func TestDynamicGatherer_Fetch(t *testing.T) { } if tc.expected != nil { - items, ok := res.(map[string]interface{}) + data, ok := res.(*DynamicData) if !ok { - t.Errorf("expected result be an map[string]interface{} but wasn't") + t.Errorf("expected result be *DynamicData but wasn't") } - list, ok := items["items"].([]*api.GatheredResource) - if !ok { - t.Errorf("expected result be an []*api.GatheredResource but wasn't") - } + list := data.Items // sorting list of results by name sortGatheredResources(list) // sorting list of expected results by name @@ -1045,10 +1042,9 @@ func TestDynamicGathererNativeResources_Fetch(t *testing.T) { } if tc.expected != nil { - res, ok := rawRes.(map[string]interface{}) - require.Truef(t, ok, "expected result be an map[string]interface{} but wasn't") - actual := res["items"].([]*api.GatheredResource) - require.Truef(t, ok, "expected result be an []*api.GatheredResource but wasn't") + res, ok := rawRes.(*DynamicData) + require.Truef(t, ok, "expected result be an *DynamicData but wasn't") + actual := res.Items // sorting list of results by name sortGatheredResources(actual) From 5fce793e2cf2d9e09fbea0f1ab92762e4fc85272 Mon Sep 17 00:00:00 2001 From: Richard Wall Date: Sat, 9 Aug 2025 12:27:46 +0100 Subject: [PATCH 13/20] Add json annotations for the GatheredResource type so that it can be unmarshaled Signed-off-by: Richard Wall --- api/datareading.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api/datareading.go b/api/datareading.go index 54637f3c..fa500a1d 100644 --- a/api/datareading.go +++ b/api/datareading.go @@ -28,8 +28,8 @@ type DataReading struct { type GatheredResource struct { // Resource is a reference to a k8s object that was found by the informer // should be of type unstructured.Unstructured, raw Object - Resource interface{} - DeletedAt Time + Resource interface{} `json:"resource"` + DeletedAt Time `json:"deleted_at,omitempty"` } func (v GatheredResource) MarshalJSON() ([]byte, error) { From 369494defbf1a427e6e705485a2a341db2f613c5 Mon Sep 17 00:00:00 2001 From: Richard Wall Date: Sat, 9 Aug 2025 12:38:07 +0100 Subject: [PATCH 14/20] Save some example data readings Signed-off-by: Richard Wall --- .../dataupload/testdata/example-1/README.md | 20 + .../dataupload/testdata/example-1/agent.yaml | 54 + .../testdata/example-1/datareadings.json | 13012 ++++++++++++++++ 3 files changed, 13086 insertions(+) create mode 100644 pkg/internal/cyberark/dataupload/testdata/example-1/README.md create mode 100644 pkg/internal/cyberark/dataupload/testdata/example-1/agent.yaml create mode 100644 pkg/internal/cyberark/dataupload/testdata/example-1/datareadings.json diff --git a/pkg/internal/cyberark/dataupload/testdata/example-1/README.md b/pkg/internal/cyberark/dataupload/testdata/example-1/README.md new file mode 100644 index 00000000..ee467223 --- /dev/null +++ b/pkg/internal/cyberark/dataupload/testdata/example-1/README.md @@ -0,0 +1,20 @@ +# README + +Data captured from a cert-manager E2E test cluster. + +```bash +cd cert-manager +make e2e-setup +``` + +```bash +cd jetstack-secure +go run . agent \ + --api-token not-used \ + --install-namespace venafi \ + --log-level 6 \ + --one-shot \ + --agent-config pkg/internal/cyberark/dataupload/testdata/example-1/agent.yaml \ + --output-path pkg/internal/cyberark/dataupload/testdata/example-1/datareadings.json +``` + diff --git a/pkg/internal/cyberark/dataupload/testdata/example-1/agent.yaml b/pkg/internal/cyberark/dataupload/testdata/example-1/agent.yaml new file mode 100644 index 00000000..08861ee8 --- /dev/null +++ b/pkg/internal/cyberark/dataupload/testdata/example-1/agent.yaml @@ -0,0 +1,54 @@ +cluster_id: example-cluster-id +organization_id: example-organization-id +data-gatherers: +# gather k8s apiserver version information +- kind: "k8s-discovery" + name: "k8s-discovery" +- kind: "k8s-dynamic" + name: "k8s/serviceaccounts" + config: + resource-type: + resource: serviceaccounts + version: v1 +- kind: "k8s-dynamic" + name: "k8s/secrets" + config: + resource-type: + version: v1 + resource: secrets + field-selectors: + - type!=kubernetes.io/service-account-token + - type!=kubernetes.io/dockercfg + - type!=kubernetes.io/dockerconfigjson + - type!=kubernetes.io/basic-auth + - type!=kubernetes.io/ssh-auth + - type!=bootstrap.kubernetes.io/token + - type!=helm.sh/release.v1 +- kind: "k8s-dynamic" + name: "k8s/roles" + config: + resource-type: + version: v1 + group: rbac.authorization.k8s.io + resource: roles +- kind: "k8s-dynamic" + name: "k8s/clusterroles" + config: + resource-type: + version: v1 + group: rbac.authorization.k8s.io + resource: clusterroles +- kind: "k8s-dynamic" + name: "k8s/rolebindings" + config: + resource-type: + version: v1 + group: rbac.authorization.k8s.io + resource: rolebindings +- kind: "k8s-dynamic" + name: "k8s/clusterrolebindings" + config: + resource-type: + version: v1 + group: rbac.authorization.k8s.io + resource: clusterrolebindings diff --git a/pkg/internal/cyberark/dataupload/testdata/example-1/datareadings.json b/pkg/internal/cyberark/dataupload/testdata/example-1/datareadings.json new file mode 100644 index 00000000..ae65e24f --- /dev/null +++ b/pkg/internal/cyberark/dataupload/testdata/example-1/datareadings.json @@ -0,0 +1,13012 @@ +[ + { + "cluster_id": "example-cluster-id", + "data-gatherer": "k8s/rolebindings", + "timestamp": "2025-08-09T12:35:09+01:00", + "data": { + "items": [ + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system::leader-locking-kube-scheduler", + "namespace": "kube-system", + "resourceVersion": "227", + "uid": "8bbb36aa-fcb7-4b82-ae97-84268211a5b2" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "system::leader-locking-kube-scheduler" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "User", + "name": "system:kube-scheduler" + }, + { + "kind": "ServiceAccount", + "name": "kube-scheduler", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:01Z", + "name": "kube-proxy", + "namespace": "kube-system", + "resourceVersion": "291", + "uid": "34fa3319-024e-4c1d-a219-0ebf57090837" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "kube-proxy" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:bootstrappers:kubeadm:default-node-token" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "samplewebhook", + "meta.helm.sh/release-namespace": "samplewebhook" + }, + "creationTimestamp": "2025-08-09T06:30:45Z", + "labels": { + "app": "example-webhook", + "app.kubernetes.io/managed-by": "Helm", + "chart": "example-webhook-0.1.0", + "heritage": "Helm", + "release": "samplewebhook" + }, + "name": "samplewebhook-example-webhook:webhook-authentication-reader", + "namespace": "kube-system", + "resourceVersion": "903", + "uid": "abb94dcb-1ab4-48d1-9c4c-1ade9f90247e" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "samplewebhook-example-webhook:webhook-authentication-reader" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "samplewebhook-example-webhook", + "namespace": "samplewebhook" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "kubeadm:kubelet-config", + "namespace": "kube-system", + "resourceVersion": "243", + "uid": "4ddfc123-eef3-4e72-a7e7-934c9af5e5f6" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "kubeadm:kubelet-config" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:nodes" + }, + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:bootstrappers:kubeadm:default-node-token" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cainjector", + "app.kubernetes.io/component": "cainjector", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cainjector", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-cainjector:leaderelection", + "namespace": "kube-system", + "resourceVersion": "619", + "uid": "97c0ac25-5dae-4584-85b3-4afa2a3bc4bc" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "cert-manager-cainjector:leaderelection" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager-cainjector", + "namespace": "cert-manager" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system::leader-locking-kube-controller-manager", + "namespace": "kube-system", + "resourceVersion": "226", + "uid": "3902fafd-36ae-44cd-9d29-2c6181302306" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "system::leader-locking-kube-controller-manager" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "User", + "name": "system:kube-controller-manager" + }, + { + "kind": "ServiceAccount", + "name": "kube-controller-manager", + "namespace": "kube-system" + }, + { + "kind": "ServiceAccount", + "name": "leader-election-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:token-cleaner", + "namespace": "kube-system", + "resourceVersion": "230", + "uid": "c2c8109f-6723-4e22-886e-961824943636" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "system:controller:token-cleaner" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "token-cleaner", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "ingress-nginx", + "meta.helm.sh/release-namespace": "ingress-nginx" + }, + "creationTimestamp": "2025-08-09T06:31:23Z", + "labels": { + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "ingress-nginx", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "ingress-nginx", + "app.kubernetes.io/part-of": "ingress-nginx", + "app.kubernetes.io/version": "1.12.3", + "helm.sh/chart": "ingress-nginx-4.12.3" + }, + "name": "ingress-nginx", + "namespace": "ingress-nginx", + "resourceVersion": "1197", + "uid": "cb338012-14ca-44d6-8ddc-893af9c8d757" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "ingress-nginx" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "ingress-nginx", + "namespace": "ingress-nginx" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:cloud-provider", + "namespace": "kube-system", + "resourceVersion": "229", + "uid": "3f4bd4d9-a3a4-448d-af17-affef7e89451" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "system:controller:cloud-provider" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cloud-provider", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:bootstrap-signer", + "namespace": "kube-public", + "resourceVersion": "231", + "uid": "34e79bed-6f95-4658-8b18-72200b5e70c0" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "system:controller:bootstrap-signer" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "bootstrap-signer", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:bootstrap-signer", + "namespace": "kube-system", + "resourceVersion": "228", + "uid": "1ac2aab9-0b3e-4684-b998-e595097c0091" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "system:controller:bootstrap-signer" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "bootstrap-signer", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "kubeadm:bootstrap-signer-clusterinfo", + "namespace": "kube-public", + "resourceVersion": "254", + "uid": "c7b1fc57-ff87-4b2d-8ea0-8a31f9f5a536" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "kubeadm:bootstrap-signer-clusterinfo" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "User", + "name": "system:anonymous" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:29:03Z", + "name": "local-path-provisioner-bind", + "namespace": "local-path-storage", + "resourceVersion": "325", + "uid": "76a121ce-6a6b-4efd-afa0-a74d754148df" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "local-path-provisioner-role" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "local-path-provisioner-service-account", + "namespace": "local-path-storage" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:30:39Z", + "labels": { + "app.kubernetes.io/component": "rbac", + "app.kubernetes.io/created-by": "sample-external-issuer", + "app.kubernetes.io/instance": "leader-election-rolebinding", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "rolebinding", + "app.kubernetes.io/part-of": "sample-external-issuer" + }, + "name": "sample-external-issuer-leader-election-rolebinding", + "namespace": "sample-external-issuer-system", + "resourceVersion": "847", + "uid": "6c65d429-9003-417f-bf6b-e2c017f00ddd" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "sample-external-issuer-leader-election-role" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "sample-external-issuer-controller-manager", + "namespace": "sample-external-issuer-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager:leaderelection", + "namespace": "kube-system", + "resourceVersion": "621", + "uid": "909cc32e-5be0-4a0f-af52-e3be82754850" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "cert-manager:leaderelection" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager", + "namespace": "cert-manager" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system::extension-apiserver-authentication-reader", + "namespace": "kube-system", + "resourceVersion": "225", + "uid": "8289c4c4-acd4-4cad-a66b-cbb61ee74c11" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "extension-apiserver-authentication-reader" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "User", + "name": "system:kube-controller-manager" + }, + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "User", + "name": "system:kube-scheduler" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-cert-manager-tokenrequest", + "namespace": "cert-manager", + "resourceVersion": "617", + "uid": "03d85ac9-7a41-4532-8441-d8e044270803" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "cert-manager-tokenrequest" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager", + "namespace": "cert-manager" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "projectcontour", + "meta.helm.sh/release-namespace": "projectcontour" + }, + "creationTimestamp": "2025-08-09T06:32:04Z", + "labels": { + "app.kubernetes.io/instance": "projectcontour", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "contour", + "app.kubernetes.io/version": "1.29.1", + "helm.sh/chart": "contour-18.2.4" + }, + "name": "projectcontour-contour-role", + "namespace": "projectcontour", + "resourceVersion": "1419", + "uid": "8dd91576-3e4e-454c-8909-688be31b2a03" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "projectcontour-contour" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "projectcontour-contour", + "namespace": "projectcontour" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "creationTimestamp": "2025-08-09T06:28:59Z", + "name": "kubeadm:nodes-kubeadm-config", + "namespace": "kube-system", + "resourceVersion": "240", + "uid": "ad02e9c2-89b1-470d-9dfe-0a6dd1999854" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "kubeadm:nodes-kubeadm-config" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:bootstrappers:kubeadm:default-node-token" + }, + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:nodes" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "webhook", + "app.kubernetes.io/component": "webhook", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "webhook", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-webhook:dynamic-serving", + "namespace": "cert-manager", + "resourceVersion": "618", + "uid": "ceb24b6d-a933-4eff-a089-b7d6a2306c92" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "cert-manager-webhook:dynamic-serving" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager-webhook", + "namespace": "cert-manager" + } + ] + } + } + ] + }, + "schema_version": "v2.0.0" + }, + { + "cluster_id": "example-cluster-id", + "data-gatherer": "k8s/clusterrolebindings", + "timestamp": "2025-08-09T12:35:09+01:00", + "data": { + "items": [ + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:pod-garbage-collector", + "resourceVersion": "202", + "uid": "fe5028a6-8195-470f-841e-5d2a8db6a786" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:pod-garbage-collector" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "pod-garbage-collector", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "creationTimestamp": "2025-08-09T06:28:59Z", + "name": "kubeadm:cluster-admins", + "resourceVersion": "237", + "uid": "85cc78c6-654f-4b0c-babe-377a3db8fcfa" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "cluster-admin" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "kubeadm:cluster-admins" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:attachdetach-controller", + "resourceVersion": "185", + "uid": "b6ca9cf8-4996-47b3-b9d7-3cebcbd58f70" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:attachdetach-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "attachdetach-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:node-controller", + "resourceVersion": "200", + "uid": "a0922559-5c6d-4e8b-82a7-678603176409" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:node-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "node-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-clusterissuers", + "resourceVersion": "609", + "uid": "1bc56c34-5f3f-4a3e-83fa-5525f9f40fec" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "cert-manager-controller-clusterissuers" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager", + "namespace": "cert-manager" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:node-proxier", + "resourceVersion": "178", + "uid": "fbad939a-acbd-417b-a31f-5cb6ecc4f131" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:node-proxier" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "User", + "name": "system:kube-proxy" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cainjector", + "app.kubernetes.io/component": "cainjector", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cainjector", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-cainjector", + "resourceVersion": "601", + "uid": "7c420237-2b76-475d-96a2-b153be3496ff" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "cert-manager-cainjector" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager-cainjector", + "namespace": "cert-manager" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-orders", + "resourceVersion": "603", + "uid": "95d567e9-796f-4c86-be47-dd7a73f6a63d" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "cert-manager-controller-orders" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager", + "namespace": "cert-manager" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "kubeadm:get-nodes", + "resourceVersion": "248", + "uid": "fd7b89a8-7bb0-4375-a07e-b43736a1d939" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "kubeadm:get-nodes" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:bootstrappers:kubeadm:default-node-token" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:cronjob-controller", + "resourceVersion": "187", + "uid": "79548780-1935-425d-a749-5da64c892aed" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:cronjob-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cronjob-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:node", + "resourceVersion": "183", + "uid": "718931df-e190-4859-ad58-edf1efbd043b" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:node" + } + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:ttl-controller", + "resourceVersion": "210", + "uid": "0169888d-3e73-4ff6-9a86-2ac14ab58f2a" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:ttl-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "ttl-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:generic-garbage-collector", + "resourceVersion": "196", + "uid": "37819522-7231-4c86-85dc-9c5600b6aa25" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:generic-garbage-collector" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "generic-garbage-collector", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:legacy-service-account-token-cleaner", + "resourceVersion": "217", + "uid": "0e02ba77-077f-4e9a-b2fc-ab11dc2ff9e1" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:legacy-service-account-token-cleaner" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "legacy-service-account-token-cleaner", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:kube-controller-manager", + "resourceVersion": "179", + "uid": "152ea945-8dfc-4d24-aa6b-90cce9a254c2" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:kube-controller-manager" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "User", + "name": "system:kube-controller-manager" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "samplewebhook", + "meta.helm.sh/release-namespace": "samplewebhook" + }, + "creationTimestamp": "2025-08-09T06:30:45Z", + "labels": { + "app": "example-webhook", + "app.kubernetes.io/managed-by": "Helm", + "chart": "example-webhook-0.1.0", + "heritage": "Helm", + "release": "samplewebhook" + }, + "name": "samplewebhook-example-webhook:auth-delegator", + "resourceVersion": "901", + "uid": "903bb45e-bbc8-4f98-9d6f-5c587e943241" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:auth-delegator" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "samplewebhook-example-webhook", + "namespace": "samplewebhook" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "system:coredns", + "resourceVersion": "257", + "uid": "3530acfa-ca74-459c-b2c4-8c0f47de3bae" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:coredns" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "coredns", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:statefulset-controller", + "resourceVersion": "209", + "uid": "09def9da-cbb5-46bf-acc6-59f67f2c0a98" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:statefulset-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "statefulset-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:persistent-volume-binder", + "resourceVersion": "201", + "uid": "b68a746a-6224-4354-8704-7b3b868182cd" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:persistent-volume-binder" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "persistent-volume-binder", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-issuers", + "resourceVersion": "605", + "uid": "ee388fbe-180c-4365-a9e4-94a8e2a1deb9" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "cert-manager-controller-issuers" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager", + "namespace": "cert-manager" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "kubeadm:node-autoapprove-certificate-rotation", + "resourceVersion": "251", + "uid": "703634e9-2423-4475-bdff-ed3ca668dab4" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:certificates.k8s.io:certificatesigningrequests:selfnodeclient" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:nodes" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:service-controller", + "resourceVersion": "208", + "uid": "7ff2b5a1-2f4c-4f58-84cf-6ee6155f1d2c" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:service-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "service-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-ingress-shim", + "resourceVersion": "607", + "uid": "a4b43b76-3a0a-4e96-a808-d642863e8261" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "cert-manager-controller-ingress-shim" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager", + "namespace": "cert-manager" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:endpointslice-controller", + "resourceVersion": "192", + "uid": "78a0d9cb-ada8-46e1-a182-91b633f81c06" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:endpointslice-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "endpointslice-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:root-ca-cert-publisher", + "resourceVersion": "215", + "uid": "a80475af-9ad3-4996-84b2-4130fe15a7b9" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:root-ca-cert-publisher" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "root-ca-cert-publisher", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:service-account-controller", + "resourceVersion": "207", + "uid": "acb4e887-6559-4c18-ba1a-d2edf9a77c46" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:service-account-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "service-account-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-certificates", + "resourceVersion": "600", + "uid": "4a7fdc44-8350-4b66-a9a1-6d2ca322012f" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "cert-manager-controller-certificates" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager", + "namespace": "cert-manager" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:discovery", + "resourceVersion": "175", + "uid": "d687789e-ffab-42db-b31e-39eca5600011" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:discovery" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:authenticated" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "ingress-nginx", + "meta.helm.sh/release-namespace": "ingress-nginx" + }, + "creationTimestamp": "2025-08-09T06:31:23Z", + "labels": { + "app.kubernetes.io/instance": "ingress-nginx", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "ingress-nginx", + "app.kubernetes.io/part-of": "ingress-nginx", + "app.kubernetes.io/version": "1.12.3", + "helm.sh/chart": "ingress-nginx-4.12.3" + }, + "name": "ingress-nginx", + "resourceVersion": "1195", + "uid": "0dc0ee83-1071-4700-be25-055eecd36e99" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "ingress-nginx" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "ingress-nginx", + "namespace": "ingress-nginx" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:29:03Z", + "name": "local-path-provisioner-bind", + "resourceVersion": "326", + "uid": "f5870f7d-06c0-480b-98b0-b1b212c8524d" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "local-path-provisioner-role" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "local-path-provisioner-service-account", + "namespace": "local-path-storage" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:certificate-controller", + "resourceVersion": "211", + "uid": "ba3f2c33-d369-4b0e-aef2-5c379b15e6fb" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:certificate-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "certificate-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:replication-controller", + "resourceVersion": "204", + "uid": "5fd097c9-124a-470f-89e9-a5d707fc337f" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:replication-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "replication-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "cert-manager", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-approve:cert-manager-io", + "resourceVersion": "606", + "uid": "d3a2056d-a17d-4419-a360-f4cbbf76ce08" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "cert-manager-controller-approve:cert-manager-io" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager", + "namespace": "cert-manager" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:30:39Z", + "labels": { + "app.kubernetes.io/component": "kube-rbac-proxy", + "app.kubernetes.io/created-by": "sample-external-issuer", + "app.kubernetes.io/instance": "proxy-rolebinding", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "clusterrolebinding", + "app.kubernetes.io/part-of": "sample-external-issuer" + }, + "name": "sample-external-issuer-proxy-rolebinding", + "resourceVersion": "850", + "uid": "6575a038-682c-4237-80b4-5b96d9a49532" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "sample-external-issuer-proxy-role" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "sample-external-issuer-controller-manager", + "namespace": "sample-external-issuer-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:deployment-controller", + "resourceVersion": "189", + "uid": "333d5023-dd21-438c-942d-aee22af7256c" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:deployment-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "deployment-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:ephemeral-volume-controller", + "resourceVersion": "195", + "uid": "298d3beb-9e45-4021-9ce2-8da870217d0b" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:ephemeral-volume-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "ephemeral-volume-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:kube-scheduler", + "resourceVersion": "181", + "uid": "62a896c9-d576-4aed-a904-09b2012ea212" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:kube-scheduler" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "User", + "name": "system:kube-scheduler" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:namespace-controller", + "resourceVersion": "199", + "uid": "3f487cba-c981-4ec8-9d67-2e06dc992d57" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:namespace-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "namespace-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:pvc-protection-controller", + "resourceVersion": "212", + "uid": "94c476bf-8690-4321-9f3b-ba50002d3f99" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:pvc-protection-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "pvc-protection-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "kubeadm:node-proxier", + "resourceVersion": "280", + "uid": "9701a35a-3367-41ee-8ee9-5b70cc0d075d" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:node-proxier" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "kube-proxy", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "samplewebhook", + "meta.helm.sh/release-namespace": "samplewebhook" + }, + "creationTimestamp": "2025-08-09T06:30:45Z", + "labels": { + "app": "example-webhook", + "app.kubernetes.io/managed-by": "Helm", + "chart": "example-webhook-0.1.0", + "heritage": "Helm", + "release": "samplewebhook" + }, + "name": "samplewebhook-example-webhook:domain-solver", + "resourceVersion": "900", + "uid": "895b6a10-1b86-4e14-adf8-f38f96151730" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "samplewebhook-example-webhook:domain-solver" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager", + "namespace": "cert-manager" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:expand-controller", + "resourceVersion": "194", + "uid": "6e82c9d9-26da-4b70-bb61-a2c19327a380" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:expand-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "expand-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:endpointslicemirroring-controller", + "resourceVersion": "193", + "uid": "9742bf80-5aaa-49ff-9917-75a617dd353c" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:endpointslicemirroring-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "endpointslicemirroring-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:validatingadmissionpolicy-status-controller", + "resourceVersion": "216", + "uid": "819af031-1956-45e1-8bdd-6fdae0fc2cec" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:validatingadmissionpolicy-status-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "validatingadmissionpolicy-status-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "kubeadm:node-autoapprove-bootstrap", + "resourceVersion": "250", + "uid": "414eef29-5a00-4ef8-bc19-c3ccce011655" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:certificates.k8s.io:certificatesigningrequests:nodeclient" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:bootstrappers:kubeadm:default-node-token" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:monitoring", + "resourceVersion": "174", + "uid": "fb77040c-f491-4c01-bc72-6bbd9e97cc32" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:monitoring" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:monitoring" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:30:39Z", + "name": "sample-external-issuer-cert-manager-controller-approve:sample-issuer-example-com", + "resourceVersion": "848", + "uid": "a736f227-77aa-4a22-99bc-43cdeb3f0ada" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "sample-external-issuer-cert-manager-controller-approve:sample-issuer-example-com" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager", + "namespace": "cert-manager" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:service-account-issuer-discovery", + "resourceVersion": "184", + "uid": "e2b4a504-b797-49ce-90d8-a3cff9b00585" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:service-account-issuer-discovery" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:serviceaccounts" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:resourcequota-controller", + "resourceVersion": "205", + "uid": "998212be-b1d1-49f3-8a36-aaae13c94934" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:resourcequota-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "resourcequota-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "projectcontour", + "meta.helm.sh/release-namespace": "projectcontour" + }, + "creationTimestamp": "2025-08-09T06:32:04Z", + "labels": { + "app.kubernetes.io/instance": "projectcontour", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "contour", + "app.kubernetes.io/version": "1.29.1", + "helm.sh/chart": "contour-18.2.4" + }, + "name": "projectcontour-contour", + "resourceVersion": "1417", + "uid": "c430e2d8-71be-4b53-b91b-6286e079576e" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "projectcontour-contour" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "projectcontour-contour", + "namespace": "projectcontour" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:route-controller", + "resourceVersion": "206", + "uid": "5b9397a9-572d-40a8-aeda-979018d28c1d" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:route-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "route-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:02Z", + "name": "kindnet", + "resourceVersion": "311", + "uid": "38f6c5dd-1458-4f85-9261-412baa0ccc40" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "kindnet" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "kindnet", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-challenges", + "resourceVersion": "604", + "uid": "2ecbe264-1b1b-4900-b5da-804dd4cd2d35" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "cert-manager-controller-challenges" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager", + "namespace": "cert-manager" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:public-info-viewer", + "resourceVersion": "177", + "uid": "63243e7f-a1c3-48c2-9943-fa389f2b718f" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:public-info-viewer" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:authenticated" + }, + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:unauthenticated" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:basic-user", + "resourceVersion": "176", + "uid": "a1225cc6-6931-44be-a252-cb3a3ded35dd" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:basic-user" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:authenticated" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:volume-scheduler", + "resourceVersion": "182", + "uid": "b72383fa-468d-4e0d-9652-c869c11ebafc" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:volume-scheduler" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "User", + "name": "system:kube-scheduler" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "cert-manager", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-certificatesigningrequests", + "resourceVersion": "608", + "uid": "d2bdbbf6-50b2-4a83-bcfd-2957143866ad" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "cert-manager-controller-certificatesigningrequests" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager", + "namespace": "cert-manager" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:disruption-controller", + "resourceVersion": "190", + "uid": "6624e33d-6c16-4627-b623-dd6d5dc96b45" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:disruption-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "disruption-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:ttl-after-finished-controller", + "resourceVersion": "214", + "uid": "d443ec01-2890-43d3-88be-e6f9b433c07b" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:ttl-after-finished-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "ttl-after-finished-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:endpoint-controller", + "resourceVersion": "191", + "uid": "674385fd-f987-435a-bdd4-5fc5c33ef047" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:endpoint-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "endpoint-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:horizontal-pod-autoscaler", + "resourceVersion": "197", + "uid": "8d12fdb5-2916-4b58-bf9d-6595272230c7" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:horizontal-pod-autoscaler" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "horizontal-pod-autoscaler", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "cluster-admin", + "resourceVersion": "173", + "uid": "d175ef3b-24a9-4464-ab3d-16cf3e9249f9" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "cluster-admin" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:masters" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:clusterrole-aggregation-controller", + "resourceVersion": "186", + "uid": "38c0a55e-0ea0-46f6-af33-0e6e2e9d84b0" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:clusterrole-aggregation-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "clusterrole-aggregation-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:30:39Z", + "labels": { + "app.kubernetes.io/component": "rbac", + "app.kubernetes.io/created-by": "sample-external-issuer", + "app.kubernetes.io/instance": "manager-rolebinding", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "clusterrolebinding", + "app.kubernetes.io/part-of": "sample-external-issuer" + }, + "name": "sample-external-issuer-manager-rolebinding", + "resourceVersion": "849", + "uid": "573c4046-2b0a-4947-b5d0-cef4e359385d" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "sample-external-issuer-manager-role" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "sample-external-issuer-controller-manager", + "namespace": "sample-external-issuer-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:job-controller", + "resourceVersion": "198", + "uid": "1dabc533-8490-4cfb-9469-81898a97cb10" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:job-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "job-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:daemon-set-controller", + "resourceVersion": "188", + "uid": "097399db-c24c-4c5f-924e-b99f9e21e275" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:daemon-set-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "daemon-set-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:pv-protection-controller", + "resourceVersion": "213", + "uid": "635eb2c7-1d98-4af2-9e25-8e1d2cf32f34" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:pv-protection-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "pv-protection-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:replicaset-controller", + "resourceVersion": "203", + "uid": "a69f176d-2177-4dd1-bb49-14f62211b08c" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:replicaset-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "replicaset-controller", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "webhook", + "app.kubernetes.io/component": "webhook", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "webhook", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-webhook:subjectaccessreviews", + "resourceVersion": "599", + "uid": "b095bc8b-7caa-4fb0-9196-4bd1438fb0dd" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "cert-manager-webhook:subjectaccessreviews" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager-webhook", + "namespace": "cert-manager" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:kube-dns", + "resourceVersion": "180", + "uid": "e189e6e7-0b32-4527-a489-02159604af13" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:kube-dns" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "kube-dns", + "namespace": "kube-system" + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "kubeadm:kubelet-bootstrap", + "resourceVersion": "249", + "uid": "5d5042a5-d9db-4c81-a6ba-09f3dda3ba68" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:node-bootstrapper" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:bootstrappers:kubeadm:default-node-token" + } + ] + } + } + ] + }, + "schema_version": "v2.0.0" + }, + { + "cluster_id": "example-cluster-id", + "data-gatherer": "k8s-discovery", + "timestamp": "2025-08-09T12:35:09+01:00", + "data": { + "server_version": { + "major": "1", + "minor": "31", + "gitVersion": "v1.31.9", + "gitCommit": "8f3800390d488f54f74111f22973059e133f9cba", + "gitTreeState": "clean", + "buildDate": "2025-05-15T09:10:43Z", + "goVersion": "go1.23.8", + "compiler": "gc", + "platform": "linux/amd64" + } + }, + "schema_version": "v2.0.0" + }, + { + "cluster_id": "example-cluster-id", + "data-gatherer": "k8s/serviceaccounts", + "timestamp": "2025-08-09T12:35:09+01:00", + "data": { + "items": [ + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:30:45Z", + "name": "default", + "namespace": "samplewebhook", + "resourceVersion": "895", + "uid": "f3f52ab5-ebca-474f-8d13-42a691d58830" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:05Z", + "name": "bootstrap-signer", + "namespace": "kube-system", + "resourceVersion": "344", + "uid": "5eddda6c-d979-4c55-86a2-0e6ccfab5d16" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:30:51Z", + "name": "default", + "namespace": "pebble", + "resourceVersion": "1050", + "uid": "dd3e0d42-e159-4ae7-8905-13b5dde1e893" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:30:34Z", + "name": "default", + "namespace": "bind", + "resourceVersion": "798", + "uid": "c70cbda3-4e6e-4065-9d3d-b78924b95358" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "automountServiceAccountToken": false, + "kind": "ServiceAccount", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "projectcontour", + "meta.helm.sh/release-namespace": "projectcontour" + }, + "creationTimestamp": "2025-08-09T06:32:04Z", + "labels": { + "app.kubernetes.io/component": "contour", + "app.kubernetes.io/instance": "projectcontour", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "contour", + "app.kubernetes.io/version": "1.29.1", + "helm.sh/chart": "contour-18.2.4" + }, + "name": "projectcontour-contour", + "namespace": "projectcontour", + "resourceVersion": "1402", + "uid": "9dff13bf-bf6a-4cff-bb54-d590e3b2018b" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:02Z", + "name": "resourcequota-controller", + "namespace": "kube-system", + "resourceVersion": "309", + "uid": "14d70c78-8dc0-450f-a503-c19c093eec2c" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:01Z", + "name": "generic-garbage-collector", + "namespace": "kube-system", + "resourceVersion": "284", + "uid": "e68f545e-f4a1-4cc7-b887-bfd8ddcbe6f5" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "automountServiceAccountToken": true, + "kind": "ServiceAccount", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cainjector", + "app.kubernetes.io/component": "cainjector", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cainjector", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-cainjector", + "namespace": "cert-manager", + "resourceVersion": "571", + "uid": "13803d0b-f976-4523-9328-7a23679768eb" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:06Z", + "name": "default", + "namespace": "kube-system", + "resourceVersion": "429", + "uid": "cbe61cec-26dc-4618-948f-6dc24ecab633" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:05Z", + "name": "validatingadmissionpolicy-status-controller", + "namespace": "kube-system", + "resourceVersion": "343", + "uid": "5c243cdd-8d23-4b4c-812e-d4225134118d" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:03Z", + "name": "ttl-controller", + "namespace": "kube-system", + "resourceVersion": "330", + "uid": "83af6096-4f72-485a-b375-d31e59ac3118" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "deployment-controller", + "namespace": "kube-system", + "resourceVersion": "281", + "uid": "f82fd4cd-891d-49e4-8a74-a195b23ee305" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "legacy-service-account-token-cleaner", + "namespace": "kube-system", + "resourceVersion": "273", + "uid": "643e15c0-e5b6-4b7a-b766-06bc5f76ad4f" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:03Z", + "name": "pv-protection-controller", + "namespace": "kube-system", + "resourceVersion": "331", + "uid": "d93e4d86-bf3a-4c78-b903-0f3de281c1e0" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:02Z", + "name": "endpointslice-controller", + "namespace": "kube-system", + "resourceVersion": "318", + "uid": "2987f241-576a-4137-963c-9d9a7b0dfc8c" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:06Z", + "name": "default", + "namespace": "local-path-storage", + "resourceVersion": "430", + "uid": "bfe20292-eab6-4d2a-a31c-acab9c16da54" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:02Z", + "name": "expand-controller", + "namespace": "kube-system", + "resourceVersion": "315", + "uid": "e3853327-e93d-467b-b9ad-5053b7b7c099" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:05Z", + "name": "clusterrole-aggregation-controller", + "namespace": "kube-system", + "resourceVersion": "342", + "uid": "8dac47dd-61de-494b-832d-8fa28d91e85c" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:02Z", + "name": "kindnet", + "namespace": "kube-system", + "resourceVersion": "313", + "uid": "fbb24dcc-8e8f-4ca1-8f92-13f6d450793e" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "automountServiceAccountToken": true, + "kind": "ServiceAccount", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "webhook", + "app.kubernetes.io/component": "webhook", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "webhook", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-webhook", + "namespace": "cert-manager", + "resourceVersion": "573", + "uid": "f0c11a80-0271-4dfe-bbb1-b91a071c97a1" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:52Z", + "name": "default", + "namespace": "cert-manager", + "resourceVersion": "568", + "uid": "863f6141-bf29-4daf-90fc-e01b240d7e13" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:01Z", + "name": "replicaset-controller", + "namespace": "kube-system", + "resourceVersion": "290", + "uid": "ffb004e7-734f-4743-a025-598f9abe1e9f" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:31:52Z", + "name": "default", + "namespace": "projectcontour", + "resourceVersion": "1340", + "uid": "0337f4b3-e5fb-49dd-83b6-97fb593c9afa" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:04Z", + "name": "attachdetach-controller", + "namespace": "kube-system", + "resourceVersion": "340", + "uid": "42df16de-153a-4984-b887-2cf916e76ed2" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:01Z", + "name": "disruption-controller", + "namespace": "kube-system", + "resourceVersion": "282", + "uid": "d6f1c4dc-5e74-4014-8e01-3d2c0dd4fb98" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:06Z", + "name": "default", + "namespace": "kube-node-lease", + "resourceVersion": "426", + "uid": "0af020f3-7331-4070-a5aa-3a31593375e0" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:29:03Z", + "name": "local-path-provisioner-service-account", + "namespace": "local-path-storage", + "resourceVersion": "322", + "uid": "03e97934-c0c8-459c-829c-e9db7f7c7cb5" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "pvc-protection-controller", + "namespace": "kube-system", + "resourceVersion": "272", + "uid": "83c24d1d-0b03-4326-8605-eaca5c8a0356" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:04Z", + "name": "persistent-volume-binder", + "namespace": "kube-system", + "resourceVersion": "339", + "uid": "b5e3fa27-5f96-4f50-aa0b-c10dc5f75d78" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:01Z", + "name": "endpointslicemirroring-controller", + "namespace": "kube-system", + "resourceVersion": "293", + "uid": "3f524350-a195-4eb1-8b0f-6d61bd7975c0" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:30:39Z", + "labels": { + "app.kubernetes.io/component": "rbac", + "app.kubernetes.io/created-by": "sample-external-issuer", + "app.kubernetes.io/instance": "controller-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "serviceaccount", + "app.kubernetes.io/part-of": "sample-external-issuer" + }, + "name": "sample-external-issuer-controller-manager", + "namespace": "sample-external-issuer-system", + "resourceVersion": "841", + "uid": "7553ab23-9dc0-4d72-bfe6-e6273d9e9688" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:03Z", + "name": "ttl-after-finished-controller", + "namespace": "kube-system", + "resourceVersion": "333", + "uid": "a7f7041d-8ab3-47ee-a8eb-6abae01f48f2" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "kube-proxy", + "namespace": "kube-system", + "resourceVersion": "276", + "uid": "78b0fee0-87a9-49f2-b265-6f8f94062372" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:06Z", + "name": "default", + "namespace": "kube-public", + "resourceVersion": "428", + "uid": "60052ee7-0d64-4dbb-8b02-47d27186553f" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:01Z", + "name": "job-controller", + "namespace": "kube-system", + "resourceVersion": "298", + "uid": "5e1508e8-fddc-4c99-b13c-15f1c03183a7" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:30:39Z", + "name": "default", + "namespace": "sample-external-issuer-system", + "resourceVersion": "832", + "uid": "3af37a4a-5b78-480b-9c1d-f229bd3d7319" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "samplewebhook", + "meta.helm.sh/release-namespace": "samplewebhook" + }, + "creationTimestamp": "2025-08-09T06:30:45Z", + "labels": { + "app": "example-webhook", + "app.kubernetes.io/managed-by": "Helm", + "chart": "example-webhook-0.1.0", + "heritage": "Helm", + "release": "samplewebhook" + }, + "name": "samplewebhook-example-webhook", + "namespace": "samplewebhook", + "resourceVersion": "898", + "uid": "c7d99aed-268a-4f3b-970d-cfdd9da754e2" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:02Z", + "name": "ephemeral-volume-controller", + "namespace": "kube-system", + "resourceVersion": "316", + "uid": "be13ce1b-4705-453f-8abd-a49c3084ecbd" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:31:12Z", + "name": "default", + "namespace": "ingress-nginx", + "resourceVersion": "1130", + "uid": "f8970a65-f4f6-457c-8f2b-0f1700012951" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:03Z", + "name": "horizontal-pod-autoscaler", + "namespace": "kube-system", + "resourceVersion": "320", + "uid": "31952f15-3d52-43c4-8c84-cfff5c3b6c74" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:01Z", + "name": "replication-controller", + "namespace": "kube-system", + "resourceVersion": "299", + "uid": "7e31dc8c-f32c-4221-b645-07dcd2f60544" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "statefulset-controller", + "namespace": "kube-system", + "resourceVersion": "269", + "uid": "0174ec59-2feb-4bdf-afca-cef89619b3ca" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "service-account-controller", + "namespace": "kube-system", + "resourceVersion": "274", + "uid": "0279b6b6-b5e0-4d51-9ffd-9f9079959ff3" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:01Z", + "name": "root-ca-cert-publisher", + "namespace": "kube-system", + "resourceVersion": "292", + "uid": "27285643-c7e9-43ea-93d7-b5d87ef336f8" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:04Z", + "name": "namespace-controller", + "namespace": "kube-system", + "resourceVersion": "336", + "uid": "28f16864-e98e-4b3b-be20-aba0b616bf0e" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "automountServiceAccountToken": true, + "kind": "ServiceAccount", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "ingress-nginx", + "meta.helm.sh/release-namespace": "ingress-nginx" + }, + "creationTimestamp": "2025-08-09T06:31:23Z", + "labels": { + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "ingress-nginx", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "ingress-nginx", + "app.kubernetes.io/part-of": "ingress-nginx", + "app.kubernetes.io/version": "1.12.3", + "helm.sh/chart": "ingress-nginx-4.12.3" + }, + "name": "ingress-nginx", + "namespace": "ingress-nginx", + "resourceVersion": "1192", + "uid": "da97c824-64d3-402a-a1a2-5329f765d9a6" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:04Z", + "name": "certificate-controller", + "namespace": "kube-system", + "resourceVersion": "337", + "uid": "0b0ee3e9-220e-4142-b117-3da0c1e7ae1b" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "coredns", + "namespace": "kube-system", + "resourceVersion": "258", + "uid": "8169cda4-9543-4934-84ee-ed411b1be588" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:01Z", + "name": "cronjob-controller", + "namespace": "kube-system", + "resourceVersion": "283", + "uid": "d1d98865-35fc-4b0f-9dda-4d1e7c6ce737" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:02Z", + "name": "pod-garbage-collector", + "namespace": "kube-system", + "resourceVersion": "308", + "uid": "c219d0ee-aead-4199-a4da-5955ca507132" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:02Z", + "name": "token-cleaner", + "namespace": "kube-system", + "resourceVersion": "312", + "uid": "7116900a-b8e8-4988-9a9e-ac8cc7f6f2db" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "automountServiceAccountToken": false, + "kind": "ServiceAccount", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "projectcontour", + "meta.helm.sh/release-namespace": "projectcontour" + }, + "creationTimestamp": "2025-08-09T06:32:04Z", + "labels": { + "app.kubernetes.io/component": "envoy", + "app.kubernetes.io/instance": "projectcontour", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "contour", + "app.kubernetes.io/version": "1.29.5", + "helm.sh/chart": "contour-18.2.4" + }, + "name": "projectcontour-envoy", + "namespace": "projectcontour", + "resourceVersion": "1401", + "uid": "1895c3cd-3de8-4c24-b6ca-428d4725b711" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:04Z", + "name": "daemon-set-controller", + "namespace": "kube-system", + "resourceVersion": "338", + "uid": "9d56ff89-148d-4d1e-ad13-b1cc221e5d07" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "node-controller", + "namespace": "kube-system", + "resourceVersion": "270", + "uid": "cc041650-1a6e-43db-83f4-13209d658b9e" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "automountServiceAccountToken": true, + "kind": "ServiceAccount", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager", + "namespace": "cert-manager", + "resourceVersion": "572", + "uid": "1404108d-0edc-4b7e-a59c-4652f64b2dd7" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:06Z", + "name": "default", + "namespace": "default", + "resourceVersion": "424", + "uid": "e3f6384b-0b7a-45d6-ac0b-3ffb94c20b39" + } + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:03Z", + "name": "endpoint-controller", + "namespace": "kube-system", + "resourceVersion": "319", + "uid": "59209742-0502-40c1-b464-f17708f9cdab" + } + } + } + ] + }, + "schema_version": "v2.0.0" + }, + { + "cluster_id": "example-cluster-id", + "data-gatherer": "k8s/secrets", + "timestamp": "2025-08-09T12:35:09+01:00", + "data": { + "items": [ + { + "resource": { + "apiVersion": "v1", + "data": { + "ca.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURIRENDQWdTZ0F3SUJBZ0lFT2FLaTZUQU5CZ2txaGtpRzl3MEJBUXNGQURBdU1SZ3dGZ1lEVlFRREV3OVEKY205cVpXTjBJRU52Ym5SdmRYSXhFakFRQmdOVkJBVVRDVGsyTmprMU9UZzBPVEFlRncweU5UQTRNRGd3TmpNeApOVGhhRncweU5qQTRNRGt3TmpNeE5UWmFNQzR4R0RBV0JnTlZCQU1URDFCeWIycGxZM1FnUTI5dWRHOTFjakVTCk1CQUdBMVVFQlJNSk9UWTJPVFU1T0RRNU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0MKQVFFQXZVRmY2QUJLN3REWVkrWmlScHpLQjdtcWdWa21pUlVmVEx3aTRrV01ETk1KWnk1VXBsaTBaTGRFTE11eApJeWdkYTEyL0RHOGxhcmNnTDNlZlI1VDdRWmszSGJBNTlKN2ljV0p5M3hWNTNadXEvS0IwODZpV2ZtY21UaTMzCk5xNUtnNWlvZ25iL3hUQ2F4MHpBSUsvNXhnZHJjRmhnRGdqMWZLSlYzQlFLUjAzSkUybGdRZ2ZvRGZxbGczVXkKK3BveG14eFdzOUt2bDhFcW5jakMxOXFKam5GbHpZK1E1OWxHb1c0R21oaVI0MnNFSDNFeXBIRG9hYWQ0Z3dCZAppZWN6eWlFN1BwR21xZGNKQ09WdStSVEZhY0crZW5ySHdyT1l3bmNvTDV1TXUwMDdOSmFlOSttV0JsQmdaMk9TCjhjdk1LelFoc3N4N2IzdE5rcGNrVDd2SE13SURBUUFCbzBJd1FEQU9CZ05WSFE4QkFmOEVCQU1DQXFRd0R3WUQKVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVU2YVNhYlQ5cnYzUlhGY0U4ZjEvd0NIb215bDh3RFFZSgpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFDM2xwNG0yL0VGakZoa0JsUzVsSkhIQVBHaWo3cnNLcmtONk90ZzJhbFlHCkpSVmFFK0tZQ3M1R3dJWUVQUFZSWVU5OWg3bGhZdDhZRzZ0N2UvUmJyL05vSDR6cFpObEU5SUx6S1NndndlWFEKVXNYV05JMkQrbU9PWVMwQmtzUWRIejFuV2hrV2pnQWpNdFpQaVovQkJsZEg0MmxyaDVLbGlubXYrOXJ2MXJRMwpCTEdkVm5zdGdyZlpHOFFOTlNLRmY3TWdnTUZ2bmRtd2UyOUNjTllOd243R1RVb2ZhL2Z0N0ROZGh3TVQwZHlnCnNDdVJTdlI5aHlFd1RTaGFYQXBuRWs0ZjA3Ni9yNTZZdU1rNzVqbUluTWxIbWxVM21XY0Z0UEFUZUtXejFLWUMKYkwzNFZtRmpaWVNrSGRWVmlSYlNXL0w1QkNxMEVIc1c1ZUk2Z0krejVDRT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "tls.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURlakNDQW1LZ0F3SUJBZ0lFSWtCTkZEQU5CZ2txaGtpRzl3MEJBUXNGQURBdU1SZ3dGZ1lEVlFRREV3OVEKY205cVpXTjBJRU52Ym5SdmRYSXhFakFRQmdOVkJBVVRDVGsyTmprMU9UZzBPVEFlRncweU5UQTRNRGd3TmpNeQpNREJhRncweU5qQTRNRGt3TmpNeE5UWmFNQkF4RGpBTUJnTlZCQU1UQldWdWRtOTVNSUlCSWpBTkJna3Foa2lHCjl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFtWVQ0enJKNFhkTU9jTDc4Sm4yWUNVMjl4Z1VscHlrZWFTWUYKaElaZ2VzWTJnZW0yQ0FJQklRVHhWc0lQUW94d3BrWFdrMGRwYmJnb2ZRR3NkRjkyclA3V0pTN0JtMjMrK2lsTQpjUWVCNFVkQVNrZU9iMWQycmlDQzRJT2tkYm0zbmxUdEJ0RWRpMnRmMGZqbTV5ZGxNcUFabXBpRHVNRGxTeXJQCjBBYzZ3UkhpM0RtMFZhWHBrZnRnTTZwL24yMkJyV1l0cHBibUhXQkZEaG1pUjVISnZ3VjgxcUxEaHMxRENuMGYKYnBvZ3lzalVUUDRhcXJ1QnRvUGwrN2I1WVl2UVBBVkI2ajhvOUxpbnl4d3lBTEE1THlVaWtHT1dNbUNjR2JOUQo1QnhlQW1MeFNNcVk4M085RzdBaEJFbmxLbmVQc3Y1dUk5MWREY2tjeFlFUm1HZzNNd0lEQVFBQm80RzlNSUc2Ck1BNEdBMVVkRHdFQi93UUVBd0lFOERBZEJnTlZIUTRFRmdRVTloQ1grK243cFdNeEJoM29HLzJmMS9zY0REUXcKSHdZRFZSMGpCQmd3Rm9BVTZhU2FiVDlydjNSWEZjRThmMS93Q0hvbXlsOHdhQVlEVlIwUkJHRXdYNElGWlc1MgpiM21DRkdWdWRtOTVMbkJ5YjJwbFkzUmpiMjUwYjNWeWdoaGxiblp2ZVM1d2NtOXFaV04wWTI5dWRHOTFjaTV6CmRtT0NKbVZ1ZG05NUxuQnliMnBsWTNSamIyNTBiM1Z5TG5OMll5NWpiSFZ6ZEdWeUxteHZZMkZzTUEwR0NTcUcKU0liM0RRRUJDd1VBQTRJQkFRQUgrVXB2VWtBRWJQQlVKNHNReFVuZUdyaHc2RmsxR3hkamg1UzgxcCtqdTNUNApvRUxOQ0h3U0FtWThNL1J5ejFLUmJ3UlQ5ZjZyWk1xRnk0NDBIMmxvb3NSTVZvSU5kbHZGdjJyb1BTN2tDQ3cxCklyR2wzRVowOENFSWhWektDN3MrQk1qOEVMTHorZlA2VldOa1ltaGxQSFZmR0IxUzc4VUUvVVZmQnFwMCtDZ24KRkRxWkpJWThPeWtIeGRJa284RklYWjkzQWRsczZUMnNybWV4TWd2M0JuVVMzY1BoUFY4OUx0VEJ1MEIycVUxUgorZ2F5MU9oQ0dkZmpBK3d5Y3djWmkwTWR1azR4WCtGdFM0SU85RXJvVy9WY2hWUmpqRzJNeEdpY3RqL3BxZXpWCnhxZWZnZ2NzZzk1THc4cUtobVI1RERrOG9BTUpqRzJQdlA1WUxwK1AKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + }, + "kind": "Secret", + "metadata": { + "creationTimestamp": "2025-08-09T06:32:00Z", + "labels": { + "app": "contour" + }, + "name": "envoycert", + "namespace": "projectcontour", + "resourceVersion": "1377", + "uid": "55e2564a-98d3-4cff-917c-096264fc784f" + }, + "type": "kubernetes.io/tls" + } + }, + { + "resource": { + "apiVersion": "v1", + "data": { + "ca.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURKRENDQWd5Z0F3SUJBZ0lVU1hFVGhlanIrbjVFTk1oR0t3d28zOEN1SENVd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0tqRW9NQ1lHQTFVRUF4TWZZMkV1WlhoaGJYQnNaUzEzWldKb2IyOXJMbU5sY25RdGJXRnVZV2RsY2pBZQpGdzB5TlRBNE1Ea3dOak13TkRaYUZ3MHpNREE0TURnd05qTXdORFphTUNveEtEQW1CZ05WQkFNVEgyTmhMbVY0CllXMXdiR1V0ZDJWaWFHOXZheTVqWlhKMExXMWhibUZuWlhJd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUIKRHdBd2dnRUtBb0lCQVFEei9QMEJieE12WVAvVEExd1dUYzhmOWtBQ2pxZzdycW9raDh6d0pJcGt6NkF5c1d6OQpkcU0rb3BqcW9mMGZpZUJmMG1LdGxTNWNHWkFISW9ibHBoc2VGaVQxcWVtd2hHRVpxUFFvbE1TUkRXanoyVERyCkZVU3hlR0dpV1BOcG13cXJMcjhOcVA2ZHBJNWxRSWxzblpYT1ViejR3TnlpS29sTXEwU3BIa25GUGh5RVkzUTAKV25URXlMNUFIOFZLUW4rbzByakJhYURPU2kwWjBJY1JaMXA2ampZcU96VGxNZnB6RHpUN09PTjFyOS9jQzNqegppUURyVG5sNkZiTlJGV3ozYS9RZEkrZUVlQThaT1JETjFSWFE0SUhJc0JveHdMTjVSenNkNnIwcS9NVHlBWThtCjdJVU93QkZtbUVtWE9ONk5LUzQ3TnNSY2tNSVJZZms1VWJ0MUFnTUJBQUdqUWpCQU1BNEdBMVVkRHdFQi93UUUKQXdJQ3BEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCU3E2UTdNM1VrOU5zd3d4cHl0V2E4SQpsaXE5ckRBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXhtZVQzKzdIMGMyTUd5SnNtUkFoczh2ZWxxR1lPd3pGCjdOWnVTNHk2cEk5bjVnbnh2Q1lMejZHZlRkcU8zcllTdm1vd2ZCWU9ZS1ZpSjlEUldKU0VTYmI3azl6N2xheVUKMjZMZno1RHJnb1FKMkhLZ1IvS04rRFVwcDRFOHluM2pJQlBacVJ5clFzT2hMNDVFWFFvWmZHa05INmJERkdnNgpnSDQ1YmF6ajlLcnVqN2x5KytMeUxyU05IMXBNWmN5aFlxYjdNMHpNUVJheWptRnBxK0tXQnIwQkxFNVlWNGFECnpUemxPcDZGSlpIdnZONjNENnlkVmluNnNQM0RwbCtFcXlHYU1KZmZoMk9Yd0JlYnpIRE1yd0toK05laVZ6MUoKdFNjNXFwNHZaQ2YzNnZMRkFwVFNDWHl5V2d2cGVGZ1ZNck1nUnNxaGozdy9rZjZGeHdmcGxnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "tls.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURKRENDQWd5Z0F3SUJBZ0lVU1hFVGhlanIrbjVFTk1oR0t3d28zOEN1SENVd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0tqRW9NQ1lHQTFVRUF4TWZZMkV1WlhoaGJYQnNaUzEzWldKb2IyOXJMbU5sY25RdGJXRnVZV2RsY2pBZQpGdzB5TlRBNE1Ea3dOak13TkRaYUZ3MHpNREE0TURnd05qTXdORFphTUNveEtEQW1CZ05WQkFNVEgyTmhMbVY0CllXMXdiR1V0ZDJWaWFHOXZheTVqWlhKMExXMWhibUZuWlhJd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUIKRHdBd2dnRUtBb0lCQVFEei9QMEJieE12WVAvVEExd1dUYzhmOWtBQ2pxZzdycW9raDh6d0pJcGt6NkF5c1d6OQpkcU0rb3BqcW9mMGZpZUJmMG1LdGxTNWNHWkFISW9ibHBoc2VGaVQxcWVtd2hHRVpxUFFvbE1TUkRXanoyVERyCkZVU3hlR0dpV1BOcG13cXJMcjhOcVA2ZHBJNWxRSWxzblpYT1ViejR3TnlpS29sTXEwU3BIa25GUGh5RVkzUTAKV25URXlMNUFIOFZLUW4rbzByakJhYURPU2kwWjBJY1JaMXA2ampZcU96VGxNZnB6RHpUN09PTjFyOS9jQzNqegppUURyVG5sNkZiTlJGV3ozYS9RZEkrZUVlQThaT1JETjFSWFE0SUhJc0JveHdMTjVSenNkNnIwcS9NVHlBWThtCjdJVU93QkZtbUVtWE9ONk5LUzQ3TnNSY2tNSVJZZms1VWJ0MUFnTUJBQUdqUWpCQU1BNEdBMVVkRHdFQi93UUUKQXdJQ3BEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCU3E2UTdNM1VrOU5zd3d4cHl0V2E4SQpsaXE5ckRBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXhtZVQzKzdIMGMyTUd5SnNtUkFoczh2ZWxxR1lPd3pGCjdOWnVTNHk2cEk5bjVnbnh2Q1lMejZHZlRkcU8zcllTdm1vd2ZCWU9ZS1ZpSjlEUldKU0VTYmI3azl6N2xheVUKMjZMZno1RHJnb1FKMkhLZ1IvS04rRFVwcDRFOHluM2pJQlBacVJ5clFzT2hMNDVFWFFvWmZHa05INmJERkdnNgpnSDQ1YmF6ajlLcnVqN2x5KytMeUxyU05IMXBNWmN5aFlxYjdNMHpNUVJheWptRnBxK0tXQnIwQkxFNVlWNGFECnpUemxPcDZGSlpIdnZONjNENnlkVmluNnNQM0RwbCtFcXlHYU1KZmZoMk9Yd0JlYnpIRE1yd0toK05laVZ6MUoKdFNjNXFwNHZaQ2YzNnZMRkFwVFNDWHl5V2d2cGVGZ1ZNck1nUnNxaGozdy9rZjZGeHdmcGxnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + }, + "kind": "Secret", + "metadata": { + "annotations": { + "cert-manager.io/alt-names": "", + "cert-manager.io/certificate-name": "samplewebhook-example-webhook-ca", + "cert-manager.io/common-name": "ca.example-webhook.cert-manager", + "cert-manager.io/ip-sans": "", + "cert-manager.io/issuer-group": "", + "cert-manager.io/issuer-kind": "", + "cert-manager.io/issuer-name": "samplewebhook-example-webhook-self-sign", + "cert-manager.io/uri-sans": "" + }, + "creationTimestamp": "2025-08-09T06:30:46Z", + "labels": { + "controller.cert-manager.io/fao": "true" + }, + "name": "samplewebhook-example-webhook-ca", + "namespace": "samplewebhook", + "resourceVersion": "956", + "uid": "7b6f80a9-7c5c-414c-90bd-df96ffd8da4f" + }, + "type": "kubernetes.io/tls" + } + }, + { + "resource": { + "apiVersion": "v1", + "data": { + "ca.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURKRENDQWd5Z0F3SUJBZ0lVU1hFVGhlanIrbjVFTk1oR0t3d28zOEN1SENVd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0tqRW9NQ1lHQTFVRUF4TWZZMkV1WlhoaGJYQnNaUzEzWldKb2IyOXJMbU5sY25RdGJXRnVZV2RsY2pBZQpGdzB5TlRBNE1Ea3dOak13TkRaYUZ3MHpNREE0TURnd05qTXdORFphTUNveEtEQW1CZ05WQkFNVEgyTmhMbVY0CllXMXdiR1V0ZDJWaWFHOXZheTVqWlhKMExXMWhibUZuWlhJd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUIKRHdBd2dnRUtBb0lCQVFEei9QMEJieE12WVAvVEExd1dUYzhmOWtBQ2pxZzdycW9raDh6d0pJcGt6NkF5c1d6OQpkcU0rb3BqcW9mMGZpZUJmMG1LdGxTNWNHWkFISW9ibHBoc2VGaVQxcWVtd2hHRVpxUFFvbE1TUkRXanoyVERyCkZVU3hlR0dpV1BOcG13cXJMcjhOcVA2ZHBJNWxRSWxzblpYT1ViejR3TnlpS29sTXEwU3BIa25GUGh5RVkzUTAKV25URXlMNUFIOFZLUW4rbzByakJhYURPU2kwWjBJY1JaMXA2ampZcU96VGxNZnB6RHpUN09PTjFyOS9jQzNqegppUURyVG5sNkZiTlJGV3ozYS9RZEkrZUVlQThaT1JETjFSWFE0SUhJc0JveHdMTjVSenNkNnIwcS9NVHlBWThtCjdJVU93QkZtbUVtWE9ONk5LUzQ3TnNSY2tNSVJZZms1VWJ0MUFnTUJBQUdqUWpCQU1BNEdBMVVkRHdFQi93UUUKQXdJQ3BEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCU3E2UTdNM1VrOU5zd3d4cHl0V2E4SQpsaXE5ckRBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXhtZVQzKzdIMGMyTUd5SnNtUkFoczh2ZWxxR1lPd3pGCjdOWnVTNHk2cEk5bjVnbnh2Q1lMejZHZlRkcU8zcllTdm1vd2ZCWU9ZS1ZpSjlEUldKU0VTYmI3azl6N2xheVUKMjZMZno1RHJnb1FKMkhLZ1IvS04rRFVwcDRFOHluM2pJQlBacVJ5clFzT2hMNDVFWFFvWmZHa05INmJERkdnNgpnSDQ1YmF6ajlLcnVqN2x5KytMeUxyU05IMXBNWmN5aFlxYjdNMHpNUVJheWptRnBxK0tXQnIwQkxFNVlWNGFECnpUemxPcDZGSlpIdnZONjNENnlkVmluNnNQM0RwbCtFcXlHYU1KZmZoMk9Yd0JlYnpIRE1yd0toK05laVZ6MUoKdFNjNXFwNHZaQ2YzNnZMRkFwVFNDWHl5V2d2cGVGZ1ZNck1nUnNxaGozdy9rZjZGeHdmcGxnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "tls.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURoekNDQW0rZ0F3SUJBZ0lVUXI5VVoyR2c2U2JrS044S0ZhdHNENEdoQmxrd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0tqRW9NQ1lHQTFVRUF4TWZZMkV1WlhoaGJYQnNaUzEzWldKb2IyOXJMbU5sY25RdGJXRnVZV2RsY2pBZQpGdzB5TlRBNE1Ea3dOak13TkRaYUZ3MHlOakE0TURrd05qTXdORFphTUFBd2dnRWlNQTBHQ1NxR1NJYjNEUUVCCkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDbzJZVmFvL1AzNkFWbWxWS1dmRGxMOGlTbHMxQ0p1QjNjU3hJakVUUGUKUUZwVytrQm9pQm1CV1lSd1MvYlg1eWlkMkVTNGJJdVVGZVNYTy9OT2IzWlhmcStZTkFSbndnYUxyaFRxblhuVQpUSXlMdlV4cHNvT0ZuMUU5U3lFeXZ3bXIxZUJBWmlwa1EydnVrL1VLY0VuQldWU1E4ZU9jWlBJc08xUzlldnMvCmtoM3FRZXkwVnN2ZXp0bXVCTWUvb1lqWDUvZ2t2Qm9kejY5UjROdFBQNGRNUXRCZWZhelZ4V2JjU3NEbUI0dE4KcDNLMFovOXpFWFdDdTFLdUMza2tOVzRERmpBWlh6eVB2QWJma3hIOThjR3luMGR2YkhwWkFkQnZ4OExFSFFaZwp4ZTk3VTUvUUI5RVk3eHNFT1BYWC81azh2TXk3VU1BRm94VmFJZytoVkh0bEFnTUJBQUdqZ2M0d2djc3dEZ1lEClZSMFBBUUgvQkFRREFnV2dNQXdHQTFVZEV3RUIvd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVVxdWtPek4xSlBUYk0KTU1hY3JWbXZDSllxdmF3d2dZa0dBMVVkRVFFQi93Ui9NSDJDSFhOaGJYQnNaWGRsWW1odmIyc3RaWGhoYlhCcwpaUzEzWldKb2IyOXJnaXR6WVcxd2JHVjNaV0pvYjI5ckxXVjRZVzF3YkdVdGQyVmlhRzl2YXk1ellXMXdiR1YzClpXSm9iMjlyZ2k5ellXMXdiR1YzWldKb2IyOXJMV1Y0WVcxd2JHVXRkMlZpYUc5dmF5NXpZVzF3YkdWM1pXSm8KYjI5ckxuTjJZekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBTHlybzBNSUZlWVdFUVYwb2NsbGMxTFVZa05rKwpuR0t6eTRkSXgvSFoxTGJJVGNLaWdkWUdRWGprakw3b0V4MHE3djFtS0tzSEJQUEcrZjBrQjhBcFlaMCtsWmlxCkZINUFxalQvK2ZGMDFsbFZWRVRhYW5aNE5yMTBPSlcrRDMrT0dHWmUzRWh2dVViczc5TS9lNlQvOVo5WW5tZDQKN2NFQ1hYT1Q1OVh5L0hORktHNjYzbWw1azR6OUQ3dFZIajQ3TGpqSGwwazhrNGo1UzBwbVJnU3hRZnN0elRGZgpGNExGUGNkRllDTlhTMU1EOTNrNFRHUisyeTVKc2tlZHVFQ2hpZnpGYlRoUjJwQmJYTDludzhRRm40UTR2c0R3CmZ3UGdab3BMNG9mdHA4ZklUcVRIcFEyTVlvSm92ME4wY0dVeVBjaEFKMkJRTVJOV2pnNm1PWTdQcHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + }, + "kind": "Secret", + "metadata": { + "annotations": { + "cert-manager.io/alt-names": "samplewebhook-example-webhook,samplewebhook-example-webhook.samplewebhook,samplewebhook-example-webhook.samplewebhook.svc", + "cert-manager.io/certificate-name": "samplewebhook-example-webhook-webhook-tls", + "cert-manager.io/common-name": "", + "cert-manager.io/ip-sans": "", + "cert-manager.io/issuer-group": "", + "cert-manager.io/issuer-kind": "", + "cert-manager.io/issuer-name": "samplewebhook-example-webhook-ca", + "cert-manager.io/uri-sans": "" + }, + "creationTimestamp": "2025-08-09T06:30:46Z", + "labels": { + "controller.cert-manager.io/fao": "true" + }, + "name": "samplewebhook-example-webhook-webhook-tls", + "namespace": "samplewebhook", + "resourceVersion": "979", + "uid": "c304cf49-750c-4800-accd-86ace29382dd" + }, + "type": "kubernetes.io/tls" + } + }, + { + "resource": { + "apiVersion": "v1", + "data": { + "ca.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJ4VENDQVV1Z0F3SUJBZ0lVWlRsamdmMXhMYzZXcjlOcHZUWEw0NmpQanpBd0NnWUlLb1pJemowRUF3TXcKSWpFZ01CNEdBMVVFQXhNWFkyVnlkQzF0WVc1aFoyVnlMWGRsWW1odmIyc3RZMkV3SGhjTk1qVXdPREE1TURZeQpPVFUyV2hjTk1qWXdPREE1TURZeU9UVTJXakFpTVNBd0hnWURWUVFERXhkalpYSjBMVzFoYm1GblpYSXRkMlZpCmFHOXZheTFqWVRCMk1CQUdCeXFHU000OUFnRUdCU3VCQkFBaUEySUFCRHBFZ1BPbUltYkRrMkQ2dFVKa0pNZlYKbHZUOGQrUlpBMVVHd3lwb2JHQlVJUXE2RFNydHZjTG5HRVFQM3NiZjMxM2tBb3pUNWhvSDNYQzRHWU50WjlkZgpnTWJlU0ZFS21IZ3dReExXZ1R1NXJCdnlIb0NGRWgvSWVPZUdNZDc5TTZOQ01FQXdEZ1lEVlIwUEFRSC9CQVFECkFnS2tNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGREJ6dGlqaG9pT2tIcVlEMkJ6UVgwd2QKdDRrMU1Bb0dDQ3FHU000OUJBTURBMmdBTUdVQ01RRDlNRGFHRm5uWXIxdHRrREgrNW5ab3IwT1cxUE9yeDN0SAo1QzhJL21pd25VWkVPQ3oxSUZjeUpsSDcybm4ybURZQ01BbGdBMEdZbEdqa3VkeXJyTno4WlRkOFFySzQ0NTFRCjNXS3BzbGtoRDVKb3QyOFZQZTJ0RjY0bmViVWRKYmlWNHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", + "tls.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJ4VENDQVV1Z0F3SUJBZ0lVWlRsamdmMXhMYzZXcjlOcHZUWEw0NmpQanpBd0NnWUlLb1pJemowRUF3TXcKSWpFZ01CNEdBMVVFQXhNWFkyVnlkQzF0WVc1aFoyVnlMWGRsWW1odmIyc3RZMkV3SGhjTk1qVXdPREE1TURZeQpPVFUyV2hjTk1qWXdPREE1TURZeU9UVTJXakFpTVNBd0hnWURWUVFERXhkalpYSjBMVzFoYm1GblpYSXRkMlZpCmFHOXZheTFqWVRCMk1CQUdCeXFHU000OUFnRUdCU3VCQkFBaUEySUFCRHBFZ1BPbUltYkRrMkQ2dFVKa0pNZlYKbHZUOGQrUlpBMVVHd3lwb2JHQlVJUXE2RFNydHZjTG5HRVFQM3NiZjMxM2tBb3pUNWhvSDNYQzRHWU50WjlkZgpnTWJlU0ZFS21IZ3dReExXZ1R1NXJCdnlIb0NGRWgvSWVPZUdNZDc5TTZOQ01FQXdEZ1lEVlIwUEFRSC9CQVFECkFnS2tNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGREJ6dGlqaG9pT2tIcVlEMkJ6UVgwd2QKdDRrMU1Bb0dDQ3FHU000OUJBTURBMmdBTUdVQ01RRDlNRGFHRm5uWXIxdHRrREgrNW5ab3IwT1cxUE9yeDN0SAo1QzhJL21pd25VWkVPQ3oxSUZjeUpsSDcybm4ybURZQ01BbGdBMEdZbEdqa3VkeXJyTno4WlRkOFFySzQ0NTFRCjNXS3BzbGtoRDVKb3QyOFZQZTJ0RjY0bmViVWRKYmlWNHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + }, + "kind": "Secret", + "metadata": { + "annotations": { + "cert-manager.io/allow-direct-injection": "true" + }, + "creationTimestamp": "2025-08-09T06:29:56Z", + "labels": { + "app.kubernetes.io/managed-by": "cert-manager-webhook" + }, + "name": "cert-manager-webhook-ca", + "namespace": "cert-manager", + "resourceVersion": "702", + "uid": "444264e6-777e-4957-a821-3baae2647476" + }, + "type": "Opaque" + } + }, + { + "resource": { + "apiVersion": "v1", + "kind": "Secret", + "metadata": { + "creationTimestamp": "2025-08-09T06:31:19Z", + "name": "ingress-nginx-admission", + "namespace": "ingress-nginx", + "resourceVersion": "1167", + "uid": "861de112-5d03-4f9c-8ba5-b642ad01eb3d" + }, + "type": "Opaque" + } + }, + { + "resource": { + "apiVersion": "v1", + "data": { + "ca.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURIRENDQWdTZ0F3SUJBZ0lFT2FLaTZUQU5CZ2txaGtpRzl3MEJBUXNGQURBdU1SZ3dGZ1lEVlFRREV3OVEKY205cVpXTjBJRU52Ym5SdmRYSXhFakFRQmdOVkJBVVRDVGsyTmprMU9UZzBPVEFlRncweU5UQTRNRGd3TmpNeApOVGhhRncweU5qQTRNRGt3TmpNeE5UWmFNQzR4R0RBV0JnTlZCQU1URDFCeWIycGxZM1FnUTI5dWRHOTFjakVTCk1CQUdBMVVFQlJNSk9UWTJPVFU1T0RRNU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0MKQVFFQXZVRmY2QUJLN3REWVkrWmlScHpLQjdtcWdWa21pUlVmVEx3aTRrV01ETk1KWnk1VXBsaTBaTGRFTE11eApJeWdkYTEyL0RHOGxhcmNnTDNlZlI1VDdRWmszSGJBNTlKN2ljV0p5M3hWNTNadXEvS0IwODZpV2ZtY21UaTMzCk5xNUtnNWlvZ25iL3hUQ2F4MHpBSUsvNXhnZHJjRmhnRGdqMWZLSlYzQlFLUjAzSkUybGdRZ2ZvRGZxbGczVXkKK3BveG14eFdzOUt2bDhFcW5jakMxOXFKam5GbHpZK1E1OWxHb1c0R21oaVI0MnNFSDNFeXBIRG9hYWQ0Z3dCZAppZWN6eWlFN1BwR21xZGNKQ09WdStSVEZhY0crZW5ySHdyT1l3bmNvTDV1TXUwMDdOSmFlOSttV0JsQmdaMk9TCjhjdk1LelFoc3N4N2IzdE5rcGNrVDd2SE13SURBUUFCbzBJd1FEQU9CZ05WSFE4QkFmOEVCQU1DQXFRd0R3WUQKVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVU2YVNhYlQ5cnYzUlhGY0U4ZjEvd0NIb215bDh3RFFZSgpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFDM2xwNG0yL0VGakZoa0JsUzVsSkhIQVBHaWo3cnNLcmtONk90ZzJhbFlHCkpSVmFFK0tZQ3M1R3dJWUVQUFZSWVU5OWg3bGhZdDhZRzZ0N2UvUmJyL05vSDR6cFpObEU5SUx6S1NndndlWFEKVXNYV05JMkQrbU9PWVMwQmtzUWRIejFuV2hrV2pnQWpNdFpQaVovQkJsZEg0MmxyaDVLbGlubXYrOXJ2MXJRMwpCTEdkVm5zdGdyZlpHOFFOTlNLRmY3TWdnTUZ2bmRtd2UyOUNjTllOd243R1RVb2ZhL2Z0N0ROZGh3TVQwZHlnCnNDdVJTdlI5aHlFd1RTaGFYQXBuRWs0ZjA3Ni9yNTZZdU1rNzVqbUluTWxIbWxVM21XY0Z0UEFUZUtXejFLWUMKYkwzNFZtRmpaWVNrSGRWVmlSYlNXL0w1QkNxMEVIc1c1ZUk2Z0krejVDRT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "tls.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURoRENDQW15Z0F3SUJBZ0lFRmNGRk5UQU5CZ2txaGtpRzl3MEJBUXNGQURBdU1SZ3dGZ1lEVlFRREV3OVEKY205cVpXTjBJRU52Ym5SdmRYSXhFakFRQmdOVkJBVVRDVGsyTmprMU9UZzBPVEFlRncweU5UQTRNRGd3TmpNeApOVGxhRncweU5qQTRNRGt3TmpNeE5UWmFNQkl4RURBT0JnTlZCQU1UQjJOdmJuUnZkWEl3Z2dFaU1BMEdDU3FHClNJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURhejB1OXRlV0lRYkNhRzFZNE42TVh2TFVMQmFMKzgxc2wKQkZOanNIRkJBMCt3QmU0ZE14TzliM081ZkhmUVF4RmQvcFZ5dXFyUnhDRFE3aGhGQ3hKR1Rab2dBRmhPc1h6bgpZQ20rVk43RVdJdW5oTy9XeTdGRzN1RU1OYjZRR2NZUllBQWZiSEFzWktvYzdBUVJxaVQ5RDZjZFpzSjJ6RlQzCnpoTWtmTUlrQ0pOVXc3NnM2S2VDa2hNZzNJT2RtWUVDVlJkT3dWV01qcmMwNDZQK1FzemZPRmN4dHJBYms1UGEKeC8yd0dHSSs5Y1ozRWNIOWxiUjZpTVlUeVV6bjQ1RVJJWjJZc0dhTk9QdThUT01ieHBXa2FjZlk1ZWdjdUJqZQowR0xmaTB3TmZZTXNxRnhxNDdBZVF0dHIzdXFjL0xNWjVpSmdvSFlXUG9zYXRFVEpKTktqQWdNQkFBR2pnY1V3CmdjSXdEZ1lEVlIwUEFRSC9CQVFEQWdUd01CMEdBMVVkRGdRV0JCUk9VZzlpMEJld3NIeXpRdXF5RnZsUFdsVloKT3pBZkJnTlZIU01FR0RBV2dCVHBwSnB0UDJ1L2RGY1Z3VHgvWC9BSWVpYktYekJ3QmdOVkhSRUVhVEJuZ2dkagpiMjUwYjNWeWdoWmpiMjUwYjNWeUxuQnliMnBsWTNSamIyNTBiM1Z5Z2hwamIyNTBiM1Z5TG5CeWIycGxZM1JqCmIyNTBiM1Z5TG5OMlk0SW9ZMjl1ZEc5MWNpNXdjbTlxWldOMFkyOXVkRzkxY2k1emRtTXVZMngxYzNSbGNpNXMKYjJOaGJEQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFlYThKWk5jUTNiN3NURGEyckdkTzBGM0l3YmNybjFCMApKanNOeHI0aDM0YXp5UVFQT1kyT0lZRkdWbXFIMXlLbFNBRG0wcmVZTEQrZzJoTGxnSC9xd0UzZUZodjRvdWMvCnRIN1U3Vmd3WXVsL0g1cGlTbkgyYTdVZGMzRDI3K3ZoL1ZJNytVNFN0V3NMcVFaeFFYS2ZTYUhWTzV3MWhzWFoKYjBpTTI4MUZzRTVGMnFsR1U0ZysrMUJ2WDJWVVZ6R0pwT0Y5aGV3cnArQm1JZFRKU3haZXVlSjhvWnd5MXJ6YgoweGt1bGdYS2ZMRzNZNm9GL3dQcWxIMi9vRXRON2lHc0RIc05nUER0dDU3eWxMWHV0OWVZbFcyV3pORVVaTHV1Cjk4N1hqaFBXUUJjYW8yMTZZZis0VHE5OUwxaHp5TTQ3ekdGZGdSaUNUSzZFS0UyVkZDVy9Tdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + "kind": "Secret", + "metadata": { + "creationTimestamp": "2025-08-09T06:32:00Z", + "labels": { + "app": "contour" + }, + "name": "contourcert", + "namespace": "projectcontour", + "resourceVersion": "1376", + "uid": "03893c04-4332-4be0-9f51-c7e842abce97" + }, + "type": "kubernetes.io/tls" + } + } + ] + }, + "schema_version": "v2.0.0" + }, + { + "cluster_id": "example-cluster-id", + "data-gatherer": "k8s/roles", + "timestamp": "2025-08-09T12:35:09+01:00", + "data": { + "items": [ + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system::leader-locking-kube-scheduler", + "namespace": "kube-system", + "resourceVersion": "223", + "uid": "d5050601-60c7-439a-a225-456deefc9670" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resourceNames": [ + "kube-scheduler" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "get", + "update" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "create", + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leasecandidates" + ], + "verbs": [ + "create", + "get", + "list", + "update", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-tokenrequest", + "namespace": "cert-manager", + "resourceVersion": "615", + "uid": "3e6c2c2f-9155-4f2e-9418-5be771b24ba8" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resourceNames": [ + "cert-manager" + ], + "resources": [ + "serviceaccounts/token" + ], + "verbs": [ + "create" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "creationTimestamp": "2025-08-09T06:28:59Z", + "name": "kubeadm:nodes-kubeadm-config", + "namespace": "kube-system", + "resourceVersion": "239", + "uid": "47539ae7-9b5b-4023-87c4-4cb96d312e61" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resourceNames": [ + "kubeadm-config" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "get" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:token-cleaner", + "namespace": "kube-system", + "resourceVersion": "221", + "uid": "78dde366-cd8d-423f-83f0-85a6046ca70c" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "delete", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "kubeadm:bootstrap-signer-clusterinfo", + "namespace": "kube-public", + "resourceVersion": "253", + "uid": "cc0c9cf2-8286-4809-a120-76aa1ced326b" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resourceNames": [ + "cluster-info" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "get" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:cloud-provider", + "namespace": "kube-system", + "resourceVersion": "220", + "uid": "63b800c0-bc06-4782-9a0a-ba525b6f5136" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "create", + "get", + "list", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "webhook", + "app.kubernetes.io/component": "webhook", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "webhook", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-webhook:dynamic-serving", + "namespace": "cert-manager", + "resourceVersion": "612", + "uid": "93320e51-80c5-4ce6-a849-a608cf312eb5" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resourceNames": [ + "cert-manager-webhook-ca" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get", + "list", + "watch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "create" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "kubeadm:kubelet-config", + "namespace": "kube-system", + "resourceVersion": "242", + "uid": "a9be9dd2-02d4-47ce-b3da-9d0b678b4e35" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resourceNames": [ + "kubelet-config" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "get" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:bootstrap-signer", + "namespace": "kube-public", + "resourceVersion": "224", + "uid": "ff4c70f9-4aef-4b3c-a0fc-2939cc68e433" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resourceNames": [ + "cluster-info" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system::leader-locking-kube-controller-manager", + "namespace": "kube-system", + "resourceVersion": "222", + "uid": "a6966a70-1bac-47cd-8b0a-0b842dda051b" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resourceNames": [ + "kube-controller-manager" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "get", + "update" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "create", + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leasecandidates" + ], + "verbs": [ + "create", + "get", + "list", + "update", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "projectcontour", + "meta.helm.sh/release-namespace": "projectcontour" + }, + "creationTimestamp": "2025-08-09T06:32:04Z", + "labels": { + "app.kubernetes.io/instance": "projectcontour", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "contour", + "app.kubernetes.io/version": "1.29.1", + "helm.sh/chart": "contour-18.2.4" + }, + "name": "projectcontour-contour", + "namespace": "projectcontour", + "resourceVersion": "1418", + "uid": "37735b80-b7d7-40c5-a35d-06f3dda902d8" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "get", + "update" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "create", + "get", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "ingress-nginx", + "meta.helm.sh/release-namespace": "ingress-nginx" + }, + "creationTimestamp": "2025-08-09T06:31:23Z", + "labels": { + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "ingress-nginx", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "ingress-nginx", + "app.kubernetes.io/part-of": "ingress-nginx", + "app.kubernetes.io/version": "1.12.3", + "helm.sh/chart": "ingress-nginx-4.12.3" + }, + "name": "ingress-nginx", + "namespace": "ingress-nginx", + "resourceVersion": "1196", + "uid": "776fbcc5-431b-4169-a0bf-23599c3b7b6d" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ], + "verbs": [ + "get" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps", + "pods", + "secrets", + "endpoints" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "services" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingressclasses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resourceNames": [ + "ingress-nginx-leader" + ], + "resources": [ + "leases" + ], + "verbs": [ + "get", + "update" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch" + ] + }, + { + "apiGroups": [ + "discovery.k8s.io" + ], + "resources": [ + "endpointslices" + ], + "verbs": [ + "list", + "watch", + "get" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager:leaderelection", + "namespace": "kube-system", + "resourceVersion": "614", + "uid": "6c51c28d-8cee-419b-9a75-696e1c00d90b" + }, + "rules": [ + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resourceNames": [ + "cert-manager-controller" + ], + "resources": [ + "leases" + ], + "verbs": [ + "get", + "update", + "patch" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "create" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:29:03Z", + "name": "local-path-provisioner-role", + "namespace": "local-path-storage", + "resourceVersion": "323", + "uid": "11500ffc-4ba1-45f4-b258-9e59b9ff729b" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "get", + "list", + "watch", + "create", + "patch", + "update", + "delete" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:01Z", + "name": "kube-proxy", + "namespace": "kube-system", + "resourceVersion": "289", + "uid": "3e0e7e48-8cb7-46e8-921e-c55a15e6e839" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resourceNames": [ + "kube-proxy" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "get" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "samplewebhook", + "meta.helm.sh/release-namespace": "samplewebhook" + }, + "creationTimestamp": "2025-08-09T06:30:45Z", + "labels": { + "app.kubernetes.io/managed-by": "Helm" + }, + "name": "samplewebhook-example-webhook:webhook-authentication-reader", + "namespace": "kube-system", + "resourceVersion": "902", + "uid": "62950c4e-158a-4d87-8aa2-c59bdb85ca72" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resourceNames": [ + "extension-apiserver-authentication" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cainjector", + "app.kubernetes.io/component": "cainjector", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cainjector", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-cainjector:leaderelection", + "namespace": "kube-system", + "resourceVersion": "613", + "uid": "6223066f-0a7b-4047-bf70-ee55a3963b2d" + }, + "rules": [ + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resourceNames": [ + "cert-manager-cainjector-leader-election", + "cert-manager-cainjector-leader-election-core" + ], + "resources": [ + "leases" + ], + "verbs": [ + "get", + "update", + "patch" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "create" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:bootstrap-signer", + "namespace": "kube-system", + "resourceVersion": "219", + "uid": "c20f18bc-b401-40f7-9874-cddd690f6575" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:30:39Z", + "labels": { + "app.kubernetes.io/component": "rbac", + "app.kubernetes.io/created-by": "sample-external-issuer", + "app.kubernetes.io/instance": "leader-election-role", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "role", + "app.kubernetes.io/part-of": "sample-external-issuer" + }, + "name": "sample-external-issuer-leader-election-role", + "namespace": "sample-external-issuer-system", + "resourceVersion": "842", + "uid": "fb894d57-0d77-4619-99f1-e41c4704ea20" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "get", + "list", + "watch", + "create", + "update", + "patch", + "delete" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "get", + "list", + "watch", + "create", + "update", + "patch", + "delete" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "extension-apiserver-authentication-reader", + "namespace": "kube-system", + "resourceVersion": "218", + "uid": "6ccfa415-3634-44de-964e-344763ada77b" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resourceNames": [ + "extension-apiserver-authentication" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + } + } + ] + }, + "schema_version": "v2.0.0" + }, + { + "cluster_id": "example-cluster-id", + "data-gatherer": "k8s/clusterroles", + "timestamp": "2025-08-09T12:35:09+01:00", + "data": { + "items": [ + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974", + "rbac.authorization.k8s.io/aggregate-to-cluster-reader": "true" + }, + "name": "cert-manager-cluster-view", + "resourceVersion": "595", + "uid": "6c0848e6-134c-4a92-8fb9-0cc437909e71" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "clusterissuers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:heapster", + "resourceVersion": "120", + "uid": "33dbe304-7fd9-411e-bcf9-b92b53015e69" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "events", + "namespaces", + "nodes", + "pods" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:pod-garbage-collector", + "resourceVersion": "157", + "uid": "f7ac53f8-4788-4c83-8543-d4065d235770" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "delete", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "get", + "list" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ], + "verbs": [ + "patch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults", + "rbac.authorization.k8s.io/aggregate-to-admin": "true" + }, + "name": "system:aggregate-to-admin", + "resourceVersion": "117", + "uid": "1d6b826f-2dc0-4a83-9ae6-37f6cfc70a3b" + }, + "rules": [ + { + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "localsubjectaccessreviews" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "rolebindings", + "roles" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:kube-controller-manager", + "resourceVersion": "127", + "uid": "85ffa7c4-9494-432b-a5cb-55435a5d353a" + }, + "rules": [ + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resourceNames": [ + "kube-controller-manager" + ], + "resources": [ + "leases" + ], + "verbs": [ + "get", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets", + "serviceaccounts" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "delete" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps", + "namespaces", + "secrets", + "serviceaccounts" + ], + "verbs": [ + "get" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets", + "serviceaccounts" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "tokenreviews" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "subjectaccessreviews" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "*" + ], + "resources": [ + "*" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts/token" + ], + "verbs": [ + "create" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:expand-controller", + "resourceVersion": "149", + "uid": "a10f839d-0f17-435c-90f9-69e1937bdf3a" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumes" + ], + "verbs": [ + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims/status" + ], + "verbs": [ + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "endpoints", + "services" + ], + "verbs": [ + "get" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:monitoring", + "resourceVersion": "111", + "uid": "43b5dc6d-6c21-412a-ac20-7fce5bb4c47b" + }, + "rules": [ + { + "nonResourceURLs": [ + "/healthz", + "/healthz/*", + "/livez", + "/livez/*", + "/metrics", + "/metrics/slis", + "/readyz", + "/readyz/*" + ], + "verbs": [ + "get" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:kubelet-api-admin", + "resourceVersion": "123", + "uid": "8b405732-25ed-4919-99ae-afa9156c636f" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "proxy" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes/log", + "nodes/metrics", + "nodes/proxy", + "nodes/stats" + ], + "verbs": [ + "*" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-clusterissuers", + "resourceVersion": "591", + "uid": "5eb46cae-c947-4c23-9e2b-58efbc57b6db" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "clusterissuers", + "clusterissuers/status" + ], + "verbs": [ + "update", + "patch" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "clusterissuers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get", + "list", + "watch", + "create", + "update", + "delete" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:certificates.k8s.io:kube-apiserver-client-kubelet-approver", + "resourceVersion": "136", + "uid": "6757dd77-13c8-4a3f-8340-93bf3f9bf6f5" + }, + "rules": [ + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resourceNames": [ + "kubernetes.io/kube-apiserver-client-kubelet" + ], + "resources": [ + "signers" + ], + "verbs": [ + "approve" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults", + "rbac.authorization.k8s.io/aggregate-to-view": "true" + }, + "name": "system:aggregate-to-view", + "resourceVersion": "119", + "uid": "e58aec58-bb5b-4d6e-be30-c286838d51d1" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps", + "endpoints", + "persistentvolumeclaims", + "persistentvolumeclaims/status", + "pods", + "replicationcontrollers", + "replicationcontrollers/scale", + "serviceaccounts", + "services", + "services/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "bindings", + "events", + "limitranges", + "namespaces/status", + "pods/log", + "pods/status", + "replicationcontrollers/status", + "resourcequotas", + "resourcequotas/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "discovery.k8s.io" + ], + "resources": [ + "endpointslices" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "controllerrevisions", + "daemonsets", + "daemonsets/status", + "deployments", + "deployments/scale", + "deployments/status", + "replicasets", + "replicasets/scale", + "replicasets/status", + "statefulsets", + "statefulsets/scale", + "statefulsets/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers", + "horizontalpodautoscalers/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs", + "cronjobs/status", + "jobs", + "jobs/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets", + "daemonsets/status", + "deployments", + "deployments/scale", + "deployments/status", + "ingresses", + "ingresses/status", + "networkpolicies", + "replicasets", + "replicasets/scale", + "replicasets/status", + "replicationcontrollers/scale" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets", + "poddisruptionbudgets/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses", + "ingresses/status", + "networkpolicies" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:endpointslicemirroring-controller", + "resourceVersion": "148", + "uid": "e1cc1711-ae42-4658-97a5-24f84df6d899" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "endpoints", + "services" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "services/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "endpoints/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "discovery.k8s.io" + ], + "resources": [ + "endpointslices" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "update" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:30:39Z", + "labels": { + "app.kubernetes.io/component": "kube-rbac-proxy", + "app.kubernetes.io/created-by": "sample-external-issuer", + "app.kubernetes.io/instance": "proxy-role", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "clusterrole", + "app.kubernetes.io/part-of": "sample-external-issuer" + }, + "name": "sample-external-issuer-proxy-role", + "resourceVersion": "846", + "uid": "6a8fb9fa-ee15-4e91-b351-b131d644ead4" + }, + "rules": [ + { + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "tokenreviews" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "subjectaccessreviews" + ], + "verbs": [ + "create" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:auth-delegator", + "resourceVersion": "125", + "uid": "a9e38ef0-42ed-4fb7-b53e-a50eb85b2ab2" + }, + "rules": [ + { + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "tokenreviews" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "subjectaccessreviews" + ], + "verbs": [ + "create" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "system:coredns", + "resourceVersion": "256", + "uid": "814cc257-97bf-4f6e-a773-3e0552761dbb" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "endpoints", + "services", + "pods", + "namespaces" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "discovery.k8s.io" + ], + "resources": [ + "endpointslices" + ], + "verbs": [ + "list", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "projectcontour", + "meta.helm.sh/release-namespace": "projectcontour" + }, + "creationTimestamp": "2025-08-09T06:32:04Z", + "labels": { + "app.kubernetes.io/instance": "projectcontour", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "contour", + "app.kubernetes.io/version": "1.29.1", + "helm.sh/chart": "contour-18.2.4" + }, + "name": "projectcontour-contour", + "resourceVersion": "1415", + "uid": "f38d6b18-b3fb-4094-b8cf-2cdef860e09b" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "create", + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "services" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingressclasses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses/status" + ], + "verbs": [ + "create", + "get", + "update" + ] + }, + { + "apiGroups": [ + "networking.x-k8s.io", + "gateway.networking.k8s.io" + ], + "resources": [ + "gatewayclasses", + "gateways", + "grpcroutes", + "httproutes", + "tcproutes", + "tlsroutes", + "udproutes", + "referencepolicies", + "referencegrants", + "backendtlspolicies" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.x-k8s.io", + "gateway.networking.k8s.io" + ], + "resources": [ + "gatewayclasses/status", + "gateways/status", + "grpcroutes/status", + "httproutes/status", + "tcproutes/status", + "tlsroutes/status", + "udproutes/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "projectcontour.io" + ], + "resources": [ + "contourconfigurations" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "projectcontour.io" + ], + "resources": [ + "contourconfigurations/status" + ], + "verbs": [ + "create", + "get", + "update" + ] + }, + { + "apiGroups": [ + "projectcontour.io" + ], + "resources": [ + "extensionservices" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "projectcontour.io" + ], + "resources": [ + "extensionservices/status" + ], + "verbs": [ + "create", + "get", + "update" + ] + }, + { + "apiGroups": [ + "projectcontour.io" + ], + "resources": [ + "httpproxies", + "tlscertificatedelegations" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "projectcontour.io" + ], + "resources": [ + "httpproxies/status" + ], + "verbs": [ + "create", + "get", + "update" + ] + }, + { + "apiGroups": [ + "discovery.k8s.io" + ], + "resources": [ + "endpointslices" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:certificates.k8s.io:certificatesigningrequests:selfnodeclient", + "resourceVersion": "131", + "uid": "23a0dae6-eb0f-4ed8-9175-f1bfc5002f4d" + }, + "rules": [ + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resources": [ + "certificatesigningrequests/selfnodeclient" + ], + "verbs": [ + "create" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults", + "rbac.authorization.k8s.io/aggregate-to-edit": "true" + }, + "name": "system:aggregate-to-edit", + "resourceVersion": "118", + "uid": "238b229b-360a-4b8b-bd63-5007a8bc0f8f" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/attach", + "pods/exec", + "pods/portforward", + "pods/proxy", + "secrets", + "services/proxy" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ], + "verbs": [ + "impersonate" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods", + "pods/attach", + "pods/exec", + "pods/portforward", + "pods/proxy" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/eviction" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps", + "events", + "persistentvolumeclaims", + "replicationcontrollers", + "replicationcontrollers/scale", + "secrets", + "serviceaccounts", + "services", + "services/proxy" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts/token" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets", + "deployments", + "deployments/rollback", + "deployments/scale", + "replicasets", + "replicasets/scale", + "statefulsets", + "statefulsets/scale" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs", + "jobs" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets", + "deployments", + "deployments/rollback", + "deployments/scale", + "ingresses", + "networkpolicies", + "replicasets", + "replicasets/scale", + "replicationcontrollers/scale" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses", + "networkpolicies" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:30:39Z", + "name": "sample-external-issuer-manager-role", + "resourceVersion": "844", + "uid": "67788166-6629-47b9-9a6e-b628d5564f04" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificaterequests" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificaterequests/status" + ], + "verbs": [ + "get", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "sample-issuer.example.com" + ], + "resources": [ + "clusterissuers", + "issuers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "sample-issuer.example.com" + ], + "resources": [ + "clusterissuers/status", + "issuers/status" + ], + "verbs": [ + "get", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:kube-aggregator", + "resourceVersion": "126", + "uid": "b63836e0-153d-46ed-9a0d-50035bd52599" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "endpoints", + "services" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:job-controller", + "resourceVersion": "153", + "uid": "a463c2b7-7c63-4dee-90cf-0723472b3bb3" + }, + "rules": [ + { + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ], + "verbs": [ + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "create", + "delete", + "list", + "patch", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:resourcequota-controller", + "resourceVersion": "160", + "uid": "b4e1a20b-314c-4b45-a685-0cc8c5f520fb" + }, + "rules": [ + { + "apiGroups": [ + "*" + ], + "resources": [ + "*" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:kube-dns", + "resourceVersion": "128", + "uid": "ecb79ae7-1cfb-4bc9-a116-d500fc7f4863" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "endpoints", + "services" + ], + "verbs": [ + "list", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:certificates.k8s.io:kubelet-serving-approver", + "resourceVersion": "134", + "uid": "9ffe0b54-75d3-4d19-b0e9-dc8602156645" + }, + "rules": [ + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resourceNames": [ + "kubernetes.io/kubelet-serving" + ], + "resources": [ + "signers" + ], + "verbs": [ + "approve" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:disruption-controller", + "resourceVersion": "145", + "uid": "2aee33b4-4216-45bd-afca-59c21f9a8d41" + }, + "rules": [ + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "deployments" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "replicasets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ], + "verbs": [ + "patch", + "update" + ] + }, + { + "apiGroups": [ + "*" + ], + "resources": [ + "*/scale" + ], + "verbs": [ + "get" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:legacy-service-account-token-cleaner", + "resourceVersion": "172", + "uid": "f912e505-d431-4ab3-a02e-422df71ca1ca" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resourceNames": [ + "kube-apiserver-legacy-service-account-token-tracking" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "get" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "delete", + "patch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:service-account-issuer-discovery", + "resourceVersion": "137", + "uid": "c362b375-2991-44f8-9d8d-b2b5995a6d7e" + }, + "rules": [ + { + "nonResourceURLs": [ + "/.well-known/openid-configuration", + "/.well-known/openid-configuration/", + "/openid/v1/jwks", + "/openid/v1/jwks/" + ], + "verbs": [ + "get" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:node-controller", + "resourceVersion": "155", + "uid": "f25dc654-fece-4f19-97fe-728c671cf62c" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "delete", + "get", + "list", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes/status" + ], + "verbs": [ + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ], + "verbs": [ + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "delete", + "get", + "list" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:namespace-controller", + "resourceVersion": "154", + "uid": "67982a4f-51c6-476d-826b-b529bc6b2f01" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ], + "verbs": [ + "delete", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/finalize", + "namespaces/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "*" + ], + "resources": [ + "*" + ], + "verbs": [ + "delete", + "deletecollection", + "get", + "list" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:route-controller", + "resourceVersion": "161", + "uid": "45149ebf-f182-42d8-98e5-1d00b1138bb9" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes/status" + ], + "verbs": [ + "patch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:pvc-protection-controller", + "resourceVersion": "167", + "uid": "92d10ef9-5709-4606-ac81-d18aaba6ec50" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ], + "verbs": [ + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:node-proxier", + "resourceVersion": "138", + "uid": "6e8fd0a8-6dcd-4fb9-aec7-fe85b6dc0ccf" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "endpoints", + "services" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "discovery.k8s.io" + ], + "resources": [ + "endpointslices" + ], + "verbs": [ + "list", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:replication-controller", + "resourceVersion": "159", + "uid": "b12d8578-8556-4907-a62d-63f34aeac155" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ], + "verbs": [ + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "create", + "delete", + "list", + "patch", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974", + "rbac.authorization.k8s.io/aggregate-to-admin": "true", + "rbac.authorization.k8s.io/aggregate-to-edit": "true" + }, + "name": "cert-manager-edit", + "resourceVersion": "588", + "uid": "2395e9fe-81d2-426b-a958-4cf67b0df1ee" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates", + "certificaterequests", + "issuers" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "challenges", + "orders" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:node", + "resourceVersion": "121", + "uid": "bafa03fc-8f24-4bc1-82ba-3bb6cda49310" + }, + "rules": [ + { + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "tokenreviews" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "localsubjectaccessreviews", + "subjectaccessreviews" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "services" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "create", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes/status" + ], + "verbs": [ + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "create", + "delete" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ], + "verbs": [ + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/eviction" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps", + "secrets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims", + "persistentvolumes" + ], + "verbs": [ + "get" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ], + "verbs": [ + "get" + ] + }, + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resources": [ + "certificatesigningrequests" + ], + "verbs": [ + "create", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "create", + "delete", + "get", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "volumeattachments" + ], + "verbs": [ + "get" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts/token" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims/status" + ], + "verbs": [ + "get", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "csidrivers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "csinodes" + ], + "verbs": [ + "create", + "delete", + "get", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "node.k8s.io" + ], + "resources": [ + "runtimeclasses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:endpointslice-controller", + "resourceVersion": "147", + "uid": "ea97532b-380c-4f38-b24e-630d21124e00" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes", + "pods", + "services" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "services/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "discovery.k8s.io" + ], + "resources": [ + "endpointslices" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "update" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:service-account-controller", + "resourceVersion": "162", + "uid": "de1aa90c-29c5-4093-b52d-d08c15c3f63b" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:node-problem-detector", + "resourceVersion": "122", + "uid": "e48051bc-9113-40d0-8fce-5b3c2919e9f0" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "get" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes/status" + ], + "verbs": [ + "patch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:02Z", + "name": "kindnet", + "resourceVersion": "310", + "uid": "5f70ede2-9170-4a90-8385-555766ccb87e" + }, + "rules": [ + { + "apiGroups": [ + "policy" + ], + "resourceNames": [ + "kindnet" + ], + "resources": [ + "podsecuritypolicies" + ], + "verbs": [ + "use" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes", + "pods", + "namespaces" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ], + "verbs": [ + "list", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:validatingadmissionpolicy-status-controller", + "resourceVersion": "171", + "uid": "89541ad1-519b-4b87-a7f7-e359b555c72a" + }, + "rules": [ + { + "apiGroups": [ + "admissionregistration.k8s.io" + ], + "resources": [ + "validatingadmissionpolicies" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "admissionregistration.k8s.io" + ], + "resources": [ + "validatingadmissionpolicies/status" + ], + "verbs": [ + "get", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:attachdetach-controller", + "resourceVersion": "140", + "uid": "45d49d9a-8530-467e-aec7-53d2b9936926" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims", + "persistentvolumes" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes/status" + ], + "verbs": [ + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "volumeattachments" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "csidrivers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "csinodes" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "cert-manager", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-certificatesigningrequests", + "resourceVersion": "590", + "uid": "5141674e-1834-4ea1-9332-ddc6a407203f" + }, + "rules": [ + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resources": [ + "certificatesigningrequests" + ], + "verbs": [ + "get", + "list", + "watch", + "update" + ] + }, + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resources": [ + "certificatesigningrequests/status" + ], + "verbs": [ + "update", + "patch" + ] + }, + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resourceNames": [ + "issuers.cert-manager.io/*", + "clusterissuers.cert-manager.io/*" + ], + "resources": [ + "signers" + ], + "verbs": [ + "sign" + ] + }, + { + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "subjectaccessreviews" + ], + "verbs": [ + "create" + ] + } + ] + } + }, + { + "resource": { + "aggregationRule": { + "clusterRoleSelectors": [ + { + "matchLabels": { + "rbac.authorization.k8s.io/aggregate-to-admin": "true" + } + } + ] + }, + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "admin", + "resourceVersion": "616", + "uid": "c2b73b58-8df2-478f-8038-9401025e391e" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates", + "certificaterequests", + "issuers" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "challenges", + "orders" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates", + "certificaterequests", + "issuers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "challenges", + "orders" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/attach", + "pods/exec", + "pods/portforward", + "pods/proxy", + "secrets", + "services/proxy" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ], + "verbs": [ + "impersonate" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods", + "pods/attach", + "pods/exec", + "pods/portforward", + "pods/proxy" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/eviction" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps", + "events", + "persistentvolumeclaims", + "replicationcontrollers", + "replicationcontrollers/scale", + "secrets", + "serviceaccounts", + "services", + "services/proxy" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts/token" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets", + "deployments", + "deployments/rollback", + "deployments/scale", + "replicasets", + "replicasets/scale", + "statefulsets", + "statefulsets/scale" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs", + "jobs" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets", + "deployments", + "deployments/rollback", + "deployments/scale", + "ingresses", + "networkpolicies", + "replicasets", + "replicasets/scale", + "replicationcontrollers/scale" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses", + "networkpolicies" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps", + "endpoints", + "persistentvolumeclaims", + "persistentvolumeclaims/status", + "pods", + "replicationcontrollers", + "replicationcontrollers/scale", + "serviceaccounts", + "services", + "services/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "bindings", + "events", + "limitranges", + "namespaces/status", + "pods/log", + "pods/status", + "replicationcontrollers/status", + "resourcequotas", + "resourcequotas/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "discovery.k8s.io" + ], + "resources": [ + "endpointslices" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "controllerrevisions", + "daemonsets", + "daemonsets/status", + "deployments", + "deployments/scale", + "deployments/status", + "replicasets", + "replicasets/scale", + "replicasets/status", + "statefulsets", + "statefulsets/scale", + "statefulsets/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers", + "horizontalpodautoscalers/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs", + "cronjobs/status", + "jobs", + "jobs/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets", + "daemonsets/status", + "deployments", + "deployments/scale", + "deployments/status", + "ingresses", + "ingresses/status", + "networkpolicies", + "replicasets", + "replicasets/scale", + "replicasets/status", + "replicationcontrollers/scale" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets", + "poddisruptionbudgets/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses", + "ingresses/status", + "networkpolicies" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "localsubjectaccessreviews" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "rolebindings", + "roles" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:cronjob-controller", + "resourceVersion": "142", + "uid": "4b376b8e-d9b1-4d5e-89f8-5af2ada5159a" + }, + "rules": [ + { + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ], + "verbs": [ + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "delete", + "list" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "cert-manager", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-approve:cert-manager-io", + "resourceVersion": "598", + "uid": "9a189eb0-0d74-4cea-aab2-f873ab7b5ec2" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resourceNames": [ + "issuers.cert-manager.io/*", + "clusterissuers.cert-manager.io/*" + ], + "resources": [ + "signers" + ], + "verbs": [ + "approve" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:node-bootstrapper", + "resourceVersion": "124", + "uid": "ac540e82-9a48-4546-9def-04851fc8c05b" + }, + "rules": [ + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resources": [ + "certificatesigningrequests" + ], + "verbs": [ + "create", + "get", + "list", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:endpoint-controller", + "resourceVersion": "146", + "uid": "ff9e722f-92e8-42c4-a4db-77937925d5a7" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "pods", + "services" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "endpoints/restricted" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cainjector", + "app.kubernetes.io/component": "cainjector", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cainjector", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-cainjector", + "resourceVersion": "596", + "uid": "f2064832-1d75-4544-9332-9ed32647b029" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "get", + "create", + "update", + "patch" + ] + }, + { + "apiGroups": [ + "admissionregistration.k8s.io" + ], + "resources": [ + "validatingwebhookconfigurations", + "mutatingwebhookconfigurations" + ], + "verbs": [ + "get", + "list", + "watch", + "update", + "patch" + ] + }, + { + "apiGroups": [ + "apiregistration.k8s.io" + ], + "resources": [ + "apiservices" + ], + "verbs": [ + "get", + "list", + "watch", + "update", + "patch" + ] + }, + { + "apiGroups": [ + "apiextensions.k8s.io" + ], + "resources": [ + "customresourcedefinitions" + ], + "verbs": [ + "get", + "list", + "watch", + "update", + "patch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:30:39Z", + "name": "sample-external-issuer-cert-manager-controller-approve:sample-issuer-example-com", + "resourceVersion": "843", + "uid": "c3fde9b8-4bb8-4920-99db-fdb9efc98596" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resourceNames": [ + "issuers.sample-issuer.example.com/*", + "clusterissuers.sample-issuer.example.com/*" + ], + "resources": [ + "signers" + ], + "verbs": [ + "approve" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-ingress-shim", + "resourceVersion": "586", + "uid": "83aee888-fba3-4d21-b590-b7027688c215" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates", + "certificaterequests" + ], + "verbs": [ + "create", + "update", + "delete" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates", + "certificaterequests", + "issuers", + "clusterissuers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "gateway.networking.k8s.io" + ], + "resources": [ + "gateways", + "httproutes" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "gateway.networking.k8s.io" + ], + "resources": [ + "gateways/finalizers", + "httproutes/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:certificate-controller", + "resourceVersion": "166", + "uid": "b6b9e887-c27e-4dfb-894b-df57e0a26f47" + }, + "rules": [ + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resources": [ + "certificatesigningrequests" + ], + "verbs": [ + "delete", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resources": [ + "certificatesigningrequests/approval", + "certificatesigningrequests/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resourceNames": [ + "kubernetes.io/kube-apiserver-client-kubelet" + ], + "resources": [ + "signers" + ], + "verbs": [ + "approve" + ] + }, + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resourceNames": [ + "kubernetes.io/kube-apiserver-client", + "kubernetes.io/kube-apiserver-client-kubelet", + "kubernetes.io/kubelet-serving", + "kubernetes.io/legacy-unknown" + ], + "resources": [ + "signers" + ], + "verbs": [ + "sign" + ] + }, + { + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "subjectaccessreviews" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:certificates.k8s.io:certificatesigningrequests:nodeclient", + "resourceVersion": "130", + "uid": "88045c5f-c71c-4282-a05e-35f30cd500ef" + }, + "rules": [ + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resources": [ + "certificatesigningrequests/nodeclient" + ], + "verbs": [ + "create" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:certificates.k8s.io:legacy-unknown-approver", + "resourceVersion": "133", + "uid": "80ebb3a0-98e6-4f98-80f9-5066c7ae3ea2" + }, + "rules": [ + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resourceNames": [ + "kubernetes.io/legacy-unknown" + ], + "resources": [ + "signers" + ], + "verbs": [ + "approve" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:public-info-viewer", + "resourceVersion": "113", + "uid": "16e4f281-de96-476f-8fbe-c729ddf5567f" + }, + "rules": [ + { + "nonResourceURLs": [ + "/healthz", + "/livez", + "/readyz", + "/version", + "/version/" + ], + "verbs": [ + "get" + ] + } + ] + } + }, + { + "resource": { + "aggregationRule": { + "clusterRoleSelectors": [ + { + "matchLabels": { + "rbac.authorization.k8s.io/aggregate-to-view": "true" + } + } + ] + }, + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults", + "rbac.authorization.k8s.io/aggregate-to-edit": "true" + }, + "name": "view", + "resourceVersion": "610", + "uid": "73da5e97-b87d-4acf-aae6-27ffbaecb312" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates", + "certificaterequests", + "issuers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "challenges", + "orders" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps", + "endpoints", + "persistentvolumeclaims", + "persistentvolumeclaims/status", + "pods", + "replicationcontrollers", + "replicationcontrollers/scale", + "serviceaccounts", + "services", + "services/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "bindings", + "events", + "limitranges", + "namespaces/status", + "pods/log", + "pods/status", + "replicationcontrollers/status", + "resourcequotas", + "resourcequotas/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "discovery.k8s.io" + ], + "resources": [ + "endpointslices" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "controllerrevisions", + "daemonsets", + "daemonsets/status", + "deployments", + "deployments/scale", + "deployments/status", + "replicasets", + "replicasets/scale", + "replicasets/status", + "statefulsets", + "statefulsets/scale", + "statefulsets/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers", + "horizontalpodautoscalers/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs", + "cronjobs/status", + "jobs", + "jobs/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets", + "daemonsets/status", + "deployments", + "deployments/scale", + "deployments/status", + "ingresses", + "ingresses/status", + "networkpolicies", + "replicasets", + "replicasets/scale", + "replicasets/status", + "replicationcontrollers/scale" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets", + "poddisruptionbudgets/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses", + "ingresses/status", + "networkpolicies" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974", + "rbac.authorization.k8s.io/aggregate-to-admin": "true", + "rbac.authorization.k8s.io/aggregate-to-cluster-reader": "true", + "rbac.authorization.k8s.io/aggregate-to-edit": "true", + "rbac.authorization.k8s.io/aggregate-to-view": "true" + }, + "name": "cert-manager-view", + "resourceVersion": "594", + "uid": "6da502e4-445b-4700-8efe-f523c918440a" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates", + "certificaterequests", + "issuers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "challenges", + "orders" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:statefulset-controller", + "resourceVersion": "164", + "uid": "6d120614-a05f-4d00-8dc6-b88db6543dfa" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "create", + "delete", + "get", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "controllerrevisions" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ], + "verbs": [ + "create", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ], + "verbs": [ + "delete", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/finalizers" + ], + "verbs": [ + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:persistent-volume-provisioner", + "resourceVersion": "129", + "uid": "8ccf78da-6e95-4a9c-8c09-3d0d030ca282" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumes" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ], + "verbs": [ + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "aggregationRule": { + "clusterRoleSelectors": [ + { + "matchLabels": { + "rbac.authorization.k8s.io/aggregate-to-edit": "true" + } + } + ] + }, + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults", + "rbac.authorization.k8s.io/aggregate-to-admin": "true" + }, + "name": "edit", + "resourceVersion": "620", + "uid": "be24d67c-e79d-4e7d-a8cb-042f43358e7b" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates", + "certificaterequests", + "issuers" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "challenges", + "orders" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates", + "certificaterequests", + "issuers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "challenges", + "orders" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/attach", + "pods/exec", + "pods/portforward", + "pods/proxy", + "secrets", + "services/proxy" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ], + "verbs": [ + "impersonate" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods", + "pods/attach", + "pods/exec", + "pods/portforward", + "pods/proxy" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/eviction" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps", + "events", + "persistentvolumeclaims", + "replicationcontrollers", + "replicationcontrollers/scale", + "secrets", + "serviceaccounts", + "services", + "services/proxy" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts/token" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets", + "deployments", + "deployments/rollback", + "deployments/scale", + "replicasets", + "replicasets/scale", + "statefulsets", + "statefulsets/scale" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs", + "jobs" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets", + "deployments", + "deployments/rollback", + "deployments/scale", + "ingresses", + "networkpolicies", + "replicasets", + "replicasets/scale", + "replicationcontrollers/scale" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses", + "networkpolicies" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps", + "endpoints", + "persistentvolumeclaims", + "persistentvolumeclaims/status", + "pods", + "replicationcontrollers", + "replicationcontrollers/scale", + "serviceaccounts", + "services", + "services/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "bindings", + "events", + "limitranges", + "namespaces/status", + "pods/log", + "pods/status", + "replicationcontrollers/status", + "resourcequotas", + "resourcequotas/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "discovery.k8s.io" + ], + "resources": [ + "endpointslices" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "controllerrevisions", + "daemonsets", + "daemonsets/status", + "deployments", + "deployments/scale", + "deployments/status", + "replicasets", + "replicasets/scale", + "replicasets/status", + "statefulsets", + "statefulsets/scale", + "statefulsets/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers", + "horizontalpodautoscalers/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs", + "cronjobs/status", + "jobs", + "jobs/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets", + "daemonsets/status", + "deployments", + "deployments/scale", + "deployments/status", + "ingresses", + "ingresses/status", + "networkpolicies", + "replicasets", + "replicasets/scale", + "replicasets/status", + "replicationcontrollers/scale" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets", + "poddisruptionbudgets/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses", + "ingresses/status", + "networkpolicies" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:basic-user", + "resourceVersion": "112", + "uid": "a14ff149-adb1-4507-8962-e13f00a58d00" + }, + "rules": [ + { + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews", + "selfsubjectrulesreviews" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "selfsubjectreviews" + ], + "verbs": [ + "create" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:persistent-volume-binder", + "resourceVersion": "156", + "uid": "d4d42ee8-2af3-4a95-816c-a1a348132d94" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumes" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumes/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ], + "verbs": [ + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ], + "verbs": [ + "create", + "delete", + "get", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "services" + ], + "verbs": [ + "create", + "delete", + "get" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "get", + "list" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-certificates", + "resourceVersion": "593", + "uid": "8f14327a-9850-4108-81bd-f4b77f93b80c" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates", + "certificates/status", + "certificaterequests", + "certificaterequests/status" + ], + "verbs": [ + "update", + "patch" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates", + "certificaterequests", + "clusterissuers", + "issuers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates/finalizers", + "certificaterequests/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "orders" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get", + "list", + "watch", + "create", + "update", + "delete", + "patch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:horizontal-pod-autoscaler", + "resourceVersion": "152", + "uid": "4ba85837-e685-478c-b566-0e892a75d3e1" + }, + "rules": [ + { + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "*" + ], + "resources": [ + "*/scale" + ], + "verbs": [ + "get", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "list" + ] + }, + { + "apiGroups": [ + "metrics.k8s.io" + ], + "resources": [ + "pods" + ], + "verbs": [ + "list" + ] + }, + { + "apiGroups": [ + "custom.metrics.k8s.io" + ], + "resources": [ + "*" + ], + "verbs": [ + "get", + "list" + ] + }, + { + "apiGroups": [ + "external.metrics.k8s.io" + ], + "resources": [ + "*" + ], + "verbs": [ + "get", + "list" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-orders", + "resourceVersion": "597", + "uid": "7d26c4d8-9442-4056-93b8-eb7f4dbb9535" + }, + "rules": [ + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "orders", + "orders/status" + ], + "verbs": [ + "update", + "patch" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "orders", + "challenges" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "clusterissuers", + "issuers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "challenges" + ], + "verbs": [ + "create", + "delete" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "orders/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:clusterrole-aggregation-controller", + "resourceVersion": "141", + "uid": "0d6df463-717b-4065-9073-734e8ee780b9" + }, + "rules": [ + { + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ], + "verbs": [ + "escalate", + "get", + "list", + "patch", + "update", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "ingress-nginx", + "meta.helm.sh/release-namespace": "ingress-nginx" + }, + "creationTimestamp": "2025-08-09T06:31:23Z", + "labels": { + "app.kubernetes.io/instance": "ingress-nginx", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "ingress-nginx", + "app.kubernetes.io/part-of": "ingress-nginx", + "app.kubernetes.io/version": "1.12.3", + "helm.sh/chart": "ingress-nginx-4.12.3" + }, + "name": "ingress-nginx", + "resourceVersion": "1194", + "uid": "6cd55240-506f-40fe-bebe-c452853742eb" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps", + "endpoints", + "nodes", + "pods", + "secrets", + "namespaces" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "get" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "services" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingressclasses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "discovery.k8s.io" + ], + "resources": [ + "endpointslices" + ], + "verbs": [ + "list", + "watch", + "get" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:kube-scheduler", + "resourceVersion": "139", + "uid": "f97e70e6-8c05-406e-9763-fd557dc114bc" + }, + "rules": [ + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resourceNames": [ + "kube-scheduler" + ], + "resources": [ + "leases" + ], + "verbs": [ + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leasecandidates" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "delete", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "bindings", + "pods/binding" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ], + "verbs": [ + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers", + "services" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "replicasets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims", + "persistentvolumes" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "tokenreviews" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "subjectaccessreviews" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "csinodes" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "csidrivers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "csistoragecapacities" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:pv-protection-controller", + "resourceVersion": "168", + "uid": "03ed1e20-f61f-41ac-a4b5-18d6f3b84a6b" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumes" + ], + "verbs": [ + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "kubeadm:get-nodes", + "resourceVersion": "247", + "uid": "d6b76c09-6aea-454f-9b93-11f8e9499e9d" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "get" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:volume-scheduler", + "resourceVersion": "132", + "uid": "d61ef472-a5a4-4686-8f9a-6d5bc5466aab" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumes" + ], + "verbs": [ + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ], + "verbs": [ + "get", + "list", + "patch", + "update", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-issuers", + "resourceVersion": "589", + "uid": "e957b2e6-f760-4f23-88f7-ae841a9ea43e" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "issuers", + "issuers/status" + ], + "verbs": [ + "update", + "patch" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "issuers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get", + "list", + "watch", + "create", + "update", + "delete" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:daemon-set-controller", + "resourceVersion": "143", + "uid": "6a4e200c-094c-44b6-a4b4-81d5649533e8" + }, + "rules": [ + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "daemonsets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "daemonsets/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "daemonsets/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "create", + "delete", + "list", + "patch", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/binding" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "controllerrevisions" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:service-controller", + "resourceVersion": "163", + "uid": "d71b1daf-4aea-4d77-b842-4b80c6447512" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "services" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "services/status" + ], + "verbs": [ + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:generic-garbage-collector", + "resourceVersion": "151", + "uid": "eb8df5c3-a89f-4dcd-a7af-465232f772eb" + }, + "rules": [ + { + "apiGroups": [ + "*" + ], + "resources": [ + "*" + ], + "verbs": [ + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:ttl-controller", + "resourceVersion": "165", + "uid": "4fca7ebe-fd4e-4ca2-83c5-c0586561b8cf" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:discovery", + "resourceVersion": "110", + "uid": "ed36029a-be42-40f3-8669-85d462c02897" + }, + "rules": [ + { + "nonResourceURLs": [ + "/api", + "/api/*", + "/apis", + "/apis/*", + "/healthz", + "/livez", + "/openapi", + "/openapi/*", + "/readyz", + "/version", + "/version/" + ], + "verbs": [ + "get" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "samplewebhook", + "meta.helm.sh/release-namespace": "samplewebhook" + }, + "creationTimestamp": "2025-08-09T06:30:45Z", + "labels": { + "app": "example-webhook", + "app.kubernetes.io/managed-by": "Helm", + "chart": "example-webhook-0.1.0", + "heritage": "Helm", + "release": "samplewebhook" + }, + "name": "samplewebhook-example-webhook:domain-solver", + "resourceVersion": "899", + "uid": "ff915b09-c8f8-4420-bd24-1667e523af48" + }, + "rules": [ + { + "apiGroups": [ + "acme.testing.cert-manager.io" + ], + "resources": [ + "*" + ], + "verbs": [ + "create" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:ephemeral-volume-controller", + "resourceVersion": "150", + "uid": "3000a5a9-43b1-4ff8-b771-066ada94ddfa" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ], + "verbs": [ + "create", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "cluster-admin", + "resourceVersion": "109", + "uid": "ff61c7c7-aa4a-4382-a3ae-21e5d744614e" + }, + "rules": [ + { + "apiGroups": [ + "*" + ], + "resources": [ + "*" + ], + "verbs": [ + "*" + ] + }, + { + "nonResourceURLs": [ + "*" + ], + "verbs": [ + "*" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:replicaset-controller", + "resourceVersion": "158", + "uid": "61798f94-82ac-4c42-8697-57f21d650701" + }, + "rules": [ + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "replicasets" + ], + "verbs": [ + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "replicasets/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "replicasets/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "create", + "delete", + "list", + "patch", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "webhook", + "app.kubernetes.io/component": "webhook", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "webhook", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-webhook:subjectaccessreviews", + "resourceVersion": "592", + "uid": "1ca5215f-1b4b-4911-af27-d46b2bc4f5fe" + }, + "rules": [ + { + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "subjectaccessreviews" + ], + "verbs": [ + "create" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:root-ca-cert-publisher", + "resourceVersion": "170", + "uid": "be33575f-62dc-451f-8f80-abccae412771" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "create", + "update" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-challenges", + "resourceVersion": "587", + "uid": "b8e5bd37-0a32-49da-a9df-6d768b1af0b7" + }, + "rules": [ + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "challenges", + "challenges/status" + ], + "verbs": [ + "update", + "patch" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "challenges" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "issuers", + "clusterissuers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods", + "services" + ], + "verbs": [ + "get", + "list", + "watch", + "create", + "delete" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses" + ], + "verbs": [ + "get", + "list", + "watch", + "create", + "delete", + "update" + ] + }, + { + "apiGroups": [ + "gateway.networking.k8s.io" + ], + "resources": [ + "httproutes" + ], + "verbs": [ + "get", + "list", + "watch", + "create", + "delete", + "update" + ] + }, + { + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/custom-host" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "challenges/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:deployment-controller", + "resourceVersion": "144", + "uid": "9165c9d4-0dfc-4a04-b7bf-0155a4f863a0" + }, + "rules": [ + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "deployments" + ], + "verbs": [ + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "deployments/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "deployments/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "replicasets" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:certificates.k8s.io:kube-apiserver-client-approver", + "resourceVersion": "135", + "uid": "e04371c2-d6e0-4f16-96bb-6ef10a2ea711" + }, + "rules": [ + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resourceNames": [ + "kubernetes.io/kube-apiserver-client" + ], + "resources": [ + "signers" + ], + "verbs": [ + "approve" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:ttl-after-finished-controller", + "resourceVersion": "169", + "uid": "353d8dc9-f732-418d-8c0f-0316550bbc0f" + }, + "rules": [ + { + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ], + "verbs": [ + "delete", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:29:03Z", + "name": "local-path-provisioner-role", + "resourceVersion": "324", + "uid": "76f794b4-a981-4120-b24c-d48b9b4b2326" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes", + "persistentvolumeclaims", + "configmaps", + "pods", + "pods/log" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumes" + ], + "verbs": [ + "get", + "list", + "watch", + "create", + "patch", + "update", + "delete" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + } + }, + { + "resource": { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:30:39Z", + "labels": { + "app.kubernetes.io/component": "kube-rbac-proxy", + "app.kubernetes.io/created-by": "sample-external-issuer", + "app.kubernetes.io/instance": "metrics-reader", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "clusterrole", + "app.kubernetes.io/part-of": "sample-external-issuer" + }, + "name": "sample-external-issuer-metrics-reader", + "resourceVersion": "845", + "uid": "222bd5fb-16b4-45df-82fe-fcde5a7d12ef" + }, + "rules": [ + { + "nonResourceURLs": [ + "/metrics" + ], + "verbs": [ + "get" + ] + } + ] + } + } + ] + }, + "schema_version": "v2.0.0" + } +] \ No newline at end of file From a5a375cb932243ba4a001e155ed59e6bec90f080 Mon Sep 17 00:00:00 2001 From: Richard Wall Date: Sat, 9 Aug 2025 12:52:45 +0100 Subject: [PATCH 15/20] Simplify the conversion function and add a golden file test Signed-off-by: Richard Wall --- .../cyberark/dataupload/dataupload.go | 154 +- .../cyberark/dataupload/dataupload_test.go | 68 + .../dataupload/testdata/example-1/README.md | 6 + .../testdata/example-1/snapshot.json | 12420 ++++++++++++++++ 4 files changed, 12558 insertions(+), 90 deletions(-) create mode 100644 pkg/internal/cyberark/dataupload/testdata/example-1/snapshot.json diff --git a/pkg/internal/cyberark/dataupload/dataupload.go b/pkg/internal/cyberark/dataupload/dataupload.go index d41aef39..4067c726 100644 --- a/pkg/internal/cyberark/dataupload/dataupload.go +++ b/pkg/internal/cyberark/dataupload/dataupload.go @@ -15,6 +15,7 @@ import ( "k8s.io/client-go/transport" "github.com/jetstack/preflight/api" + "github.com/jetstack/preflight/pkg/datagatherer/k8s" "github.com/jetstack/preflight/pkg/version" ) @@ -29,6 +30,8 @@ const ( apiPathSnapshotLinks = "/api/ingestions/kubernetes/snapshot-links" ) +type ResourceData map[string][]interface{} + // Snapshot is the JSON that the CyberArk Discovery and Context API expects to // be uploaded to the AWS presigned URL. type Snapshot struct { @@ -41,110 +44,81 @@ type Snapshot struct { RoleBindings []interface{} `json:"role_bindings"` } -// The names of Datagatherer configs which have the data to populate the Cyberark Snapshot -const ( - Discovery = "k8s-discovery" - SecretsGatherer = "k8s/secrets" - ServiceAccountsGatherer = "k8s/serviceaccounts" - RolesGatherer = "k8s/roles" - RoleBindingsGatherer = "k8s/rolebindings" - ClusterRolesGatherer = "k8s/clusterroles" - ClusterRoleBindingsGatherer = "k8s/clusterrolebindings" -) +// The names of Datagatherers which have the data to populate the Cyberark Snapshot mapped to the key in the Cyberark snapshot. +var gathererNameToresourceDataKeyMap = map[string]string{ + "k8s/secrets": "secrets", + "k8s/serviceaccounts": "serviceaccounts", + "k8s/roles": "roles", + "k8s/clusterroles": "roles", + "k8s/rolebindings": "rolebindings", + "k8s/clusterrolebindings": "rolebindings", +} + +func extractResourceListFromReading(reading *api.DataReading) ([]interface{}, error) { + data, ok := reading.Data.(*k8s.DynamicData) + if !ok { + return nil, fmt.Errorf("failed to convert data: %s", reading.DataGatherer) + } + items := data.Items + resources := make([]interface{}, len(items)) + for i, resource := range items { + resources[i] = resource.Resource + } + return resources, nil +} + +// TODO(wallj): Use k8s version.Info struct here +func extractServerVersionFromReading(reading *api.DataReading) (string, error) { + data, ok := reading.Data.(map[string]interface{}) + if !ok { + return "", fmt.Errorf("failed to convert data: %s", reading.DataGatherer) + } + serverVersion, ok := data["server_version"] + if !ok { + return "", fmt.Errorf("server_version key not found in data: %v", data) + } + serverVersionBytes, err := json.Marshal(serverVersion) + if err != nil { + return "", fmt.Errorf("while marshalling server_version: %s", err) + } + var serverVersionInfo map[string]string + if err := json.Unmarshal(serverVersionBytes, &serverVersionInfo); err != nil { + return "", fmt.Errorf("while un-marshalling server_version bytes: %s", err) + } + return serverVersionInfo["gitVersion"], nil +} // ConvertDataReadingsToCyberarkSnapshot converts jetstack-secure DataReadings into Cyberark Snapshot format. func ConvertDataReadingsToCyberarkSnapshot( input api.DataReadingsPost, -) (snapshot Snapshot, err error) { - var ( - k8sVersion string - secrets, serviceAccounts, roles, roleBindings []interface{} - ) - +) (_ *Snapshot, err error) { + k8sVersion := "" + resourceData := ResourceData{} for _, reading := range input.DataReadings { - switch reading.DataGatherer { - case Discovery: - data, ok := reading.Data.(map[string]interface{}) - if !ok { - return snapshot, fmt.Errorf("failed to convert: %s", reading.DataGatherer) - } - serverVersion := data["server_version"] - serverVersionBytes, err := json.Marshal(serverVersion) + if reading.DataGatherer == "k8s/discovery" { + k8sVersion, err = extractServerVersionFromReading(reading) if err != nil { - return snapshot, fmt.Errorf("while marshalling server_version: %s", err) - } - var serverVersionInfo map[string]string - if err := json.Unmarshal(serverVersionBytes, &serverVersionInfo); err != nil { - return snapshot, fmt.Errorf("while un-marshalling server_version bytes: %s", err) + return nil, fmt.Errorf("while extracting server version from data-reading: %s", err) } - k8sVersion = serverVersionInfo["gitVersion"] - case SecretsGatherer: - if data, ok := reading.Data.(map[string]interface{}); ok { - if items, ok := data["items"].([]*api.GatheredResource); ok { - resources := make([]interface{}, len(items)) - for i, resource := range items { - resources[i] = resource.Resource - } - secrets = append(secrets, resources...) - } else { - return snapshot, fmt.Errorf("failed to convert: %s", reading.DataGatherer) - } - } else { - return snapshot, fmt.Errorf("failed to convert: %s", reading.DataGatherer) - } - case ServiceAccountsGatherer: - if data, ok := reading.Data.(map[string]interface{}); ok { - if items, ok := data["items"].([]*api.GatheredResource); ok { - resources := make([]interface{}, len(items)) - for i, resource := range items { - resources[i] = resource.Resource - } - serviceAccounts = append(serviceAccounts, resources...) - } else { - return snapshot, fmt.Errorf("failed to convert: %s", reading.DataGatherer) - } - } else { - return snapshot, fmt.Errorf("failed to convert: %s", reading.DataGatherer) - } - case RolesGatherer, ClusterRoleBindingsGatherer: - if data, ok := reading.Data.(map[string]interface{}); ok { - if items, ok := data["items"].([]*api.GatheredResource); ok { - resources := make([]interface{}, len(items)) - for i, resource := range items { - resources[i] = resource.Resource - } - roles = append(roles, resources...) - } else { - return snapshot, fmt.Errorf("failed to convert: %s", reading.DataGatherer) - } - } else { - return snapshot, fmt.Errorf("failed to convert: %s", reading.DataGatherer) - } - case RoleBindingsGatherer, ClusterRolesGatherer: - if data, ok := reading.Data.(map[string]interface{}); ok { - if items, ok := data["items"].([]*api.GatheredResource); ok { - resources := make([]interface{}, len(items)) - for i, resource := range items { - resources[i] = resource.Resource - } - roleBindings = append(roleBindings, resources...) - } else { - return snapshot, fmt.Errorf("failed to convert: %s", reading.DataGatherer) - } - } else { - return snapshot, fmt.Errorf("failed to convert: %s", reading.DataGatherer) + } + if key, found := gathererNameToresourceDataKeyMap[reading.DataGatherer]; found { + var resources []interface{} + resources, err = extractResourceListFromReading(reading) + if err != nil { + return nil, fmt.Errorf("while extracting resource list from data-reading: %s", err) } + resourceData[key] = append(resourceData[key], resources...) } } - return Snapshot{ + return &Snapshot{ AgentVersion: input.AgentMetadata.Version, ClusterID: input.AgentMetadata.ClusterID, K8SVersion: k8sVersion, - Secrets: secrets, - ServiceAccounts: serviceAccounts, - Roles: roles, - RoleBindings: roleBindings, + Secrets: resourceData["secrets"], + ServiceAccounts: resourceData["serviceaccounts"], + Roles: resourceData["roles"], + RoleBindings: resourceData["rolebindings"], }, nil } diff --git a/pkg/internal/cyberark/dataupload/dataupload_test.go b/pkg/internal/cyberark/dataupload/dataupload_test.go index d950696f..1301c08d 100644 --- a/pkg/internal/cyberark/dataupload/dataupload_test.go +++ b/pkg/internal/cyberark/dataupload/dataupload_test.go @@ -1,7 +1,9 @@ package dataupload_test import ( + "bytes" "crypto/x509" + "encoding/json" "encoding/pem" "errors" "fmt" @@ -10,11 +12,13 @@ import ( "testing" "time" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "k8s.io/klog/v2" "k8s.io/klog/v2/ktesting" "github.com/jetstack/preflight/api" + "github.com/jetstack/preflight/pkg/datagatherer/k8s" "github.com/jetstack/preflight/pkg/internal/cyberark/dataupload" "github.com/jetstack/preflight/pkg/internal/cyberark/identity" "github.com/jetstack/preflight/pkg/internal/cyberark/servicediscovery" @@ -187,12 +191,14 @@ func TestCyberArkClient_PostDataReadingsWithOptions_RealAPI(t *testing.T) { cyberArkClient, err := dataupload.NewCyberArkClient(nil, serviceURL, identityClient.AuthenticateRequest) require.NoError(t, err) + dataReadings := loadDataReadings(t, "testdata/example-1/datareadings.json") err = cyberArkClient.PostDataReadingsWithOptions( ctx, api.DataReadingsPost{ AgentMetadata: &api.AgentMetadata{ ClusterID: "bb068932-c80d-460d-88df-34bc7f3f3297", }, + DataReadings: dataReadings, }, dataupload.Options{ ClusterName: "bb068932-c80d-460d-88df-34bc7f3f3297", @@ -200,3 +206,65 @@ func TestCyberArkClient_PostDataReadingsWithOptions_RealAPI(t *testing.T) { ) require.NoError(t, err) } + +func loadDataReadings(t *testing.T, path string) []*api.DataReading { + var dataReadings []*api.DataReading + { + f, err := os.Open(path) + require.NoError(t, err) + err = json.NewDecoder(f).Decode(&dataReadings) + require.NoError(t, f.Close()) + require.NoError(t, err) + } + + for _, reading := range dataReadings { + dataBytes, err := json.Marshal(reading.Data) + require.NoError(t, err) + in := bytes.NewReader(dataBytes) + d := json.NewDecoder(in) + d.DisallowUnknownFields() + + var dynamicGatherData k8s.DynamicData + if err := d.Decode(&dynamicGatherData); err == nil { + reading.Data = &dynamicGatherData + continue + } + + _, err = in.Seek(0, 0) + require.NoError(t, err) + + var discoveryData k8s.DiscoveryData + if err = d.Decode(&discoveryData); err == nil { + reading.Data = &discoveryData + continue + } + + require.Failf(t, "failed to parse reading", "reading: %#v", reading) + } + return dataReadings +} + +func TestConvertDataReadingsToCyberarkSnapshot(t *testing.T) { + dataReadings := loadDataReadings(t, "testdata/example-1/datareadings.json") + snapshot, err := dataupload.ConvertDataReadingsToCyberarkSnapshot(api.DataReadingsPost{ + AgentMetadata: &api.AgentMetadata{ + Version: "test-version", + ClusterID: "test-cluster-id", + }, + DataReadings: dataReadings, + }) + require.NoError(t, err) + + actualSnapshotBytes, err := json.MarshalIndent(snapshot, "", " ") + require.NoError(t, err) + + goldenFilePath := "testdata/example-1/snapshot.json" + if _, update := os.LookupEnv("UPDATE_GOLDEN_FILES"); update { + err := os.WriteFile(goldenFilePath, actualSnapshotBytes, 0o0644) + require.NoError(t, err) + } else { + expectedSnapshotBytes, err := os.ReadFile(goldenFilePath) + require.NoError(t, err) + assert.JSONEq(t, string(expectedSnapshotBytes), string(actualSnapshotBytes)) + } +} diff --git a/pkg/internal/cyberark/dataupload/testdata/example-1/README.md b/pkg/internal/cyberark/dataupload/testdata/example-1/README.md index ee467223..b9259219 100644 --- a/pkg/internal/cyberark/dataupload/testdata/example-1/README.md +++ b/pkg/internal/cyberark/dataupload/testdata/example-1/README.md @@ -18,3 +18,9 @@ go run . agent \ --output-path pkg/internal/cyberark/dataupload/testdata/example-1/datareadings.json ``` + +To recreate the golden output file: + +```bash +UPDATE_GOLDEN_FILES=true go test ./pkg/internal/cyberark/dataupload/... -run TestConvertDataReadingsToCyberarkSnapshot +``` diff --git a/pkg/internal/cyberark/dataupload/testdata/example-1/snapshot.json b/pkg/internal/cyberark/dataupload/testdata/example-1/snapshot.json new file mode 100644 index 00000000..6f908f7d --- /dev/null +++ b/pkg/internal/cyberark/dataupload/testdata/example-1/snapshot.json @@ -0,0 +1,12420 @@ +{ + "agent_version": "test-version", + "cluster_id": "test-cluster-id", + "k8s_version": "", + "secrets": [ + { + "apiVersion": "v1", + "data": { + "ca.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURIRENDQWdTZ0F3SUJBZ0lFT2FLaTZUQU5CZ2txaGtpRzl3MEJBUXNGQURBdU1SZ3dGZ1lEVlFRREV3OVEKY205cVpXTjBJRU52Ym5SdmRYSXhFakFRQmdOVkJBVVRDVGsyTmprMU9UZzBPVEFlRncweU5UQTRNRGd3TmpNeApOVGhhRncweU5qQTRNRGt3TmpNeE5UWmFNQzR4R0RBV0JnTlZCQU1URDFCeWIycGxZM1FnUTI5dWRHOTFjakVTCk1CQUdBMVVFQlJNSk9UWTJPVFU1T0RRNU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0MKQVFFQXZVRmY2QUJLN3REWVkrWmlScHpLQjdtcWdWa21pUlVmVEx3aTRrV01ETk1KWnk1VXBsaTBaTGRFTE11eApJeWdkYTEyL0RHOGxhcmNnTDNlZlI1VDdRWmszSGJBNTlKN2ljV0p5M3hWNTNadXEvS0IwODZpV2ZtY21UaTMzCk5xNUtnNWlvZ25iL3hUQ2F4MHpBSUsvNXhnZHJjRmhnRGdqMWZLSlYzQlFLUjAzSkUybGdRZ2ZvRGZxbGczVXkKK3BveG14eFdzOUt2bDhFcW5jakMxOXFKam5GbHpZK1E1OWxHb1c0R21oaVI0MnNFSDNFeXBIRG9hYWQ0Z3dCZAppZWN6eWlFN1BwR21xZGNKQ09WdStSVEZhY0crZW5ySHdyT1l3bmNvTDV1TXUwMDdOSmFlOSttV0JsQmdaMk9TCjhjdk1LelFoc3N4N2IzdE5rcGNrVDd2SE13SURBUUFCbzBJd1FEQU9CZ05WSFE4QkFmOEVCQU1DQXFRd0R3WUQKVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVU2YVNhYlQ5cnYzUlhGY0U4ZjEvd0NIb215bDh3RFFZSgpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFDM2xwNG0yL0VGakZoa0JsUzVsSkhIQVBHaWo3cnNLcmtONk90ZzJhbFlHCkpSVmFFK0tZQ3M1R3dJWUVQUFZSWVU5OWg3bGhZdDhZRzZ0N2UvUmJyL05vSDR6cFpObEU5SUx6S1NndndlWFEKVXNYV05JMkQrbU9PWVMwQmtzUWRIejFuV2hrV2pnQWpNdFpQaVovQkJsZEg0MmxyaDVLbGlubXYrOXJ2MXJRMwpCTEdkVm5zdGdyZlpHOFFOTlNLRmY3TWdnTUZ2bmRtd2UyOUNjTllOd243R1RVb2ZhL2Z0N0ROZGh3TVQwZHlnCnNDdVJTdlI5aHlFd1RTaGFYQXBuRWs0ZjA3Ni9yNTZZdU1rNzVqbUluTWxIbWxVM21XY0Z0UEFUZUtXejFLWUMKYkwzNFZtRmpaWVNrSGRWVmlSYlNXL0w1QkNxMEVIc1c1ZUk2Z0krejVDRT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "tls.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURlakNDQW1LZ0F3SUJBZ0lFSWtCTkZEQU5CZ2txaGtpRzl3MEJBUXNGQURBdU1SZ3dGZ1lEVlFRREV3OVEKY205cVpXTjBJRU52Ym5SdmRYSXhFakFRQmdOVkJBVVRDVGsyTmprMU9UZzBPVEFlRncweU5UQTRNRGd3TmpNeQpNREJhRncweU5qQTRNRGt3TmpNeE5UWmFNQkF4RGpBTUJnTlZCQU1UQldWdWRtOTVNSUlCSWpBTkJna3Foa2lHCjl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFtWVQ0enJKNFhkTU9jTDc4Sm4yWUNVMjl4Z1VscHlrZWFTWUYKaElaZ2VzWTJnZW0yQ0FJQklRVHhWc0lQUW94d3BrWFdrMGRwYmJnb2ZRR3NkRjkyclA3V0pTN0JtMjMrK2lsTQpjUWVCNFVkQVNrZU9iMWQycmlDQzRJT2tkYm0zbmxUdEJ0RWRpMnRmMGZqbTV5ZGxNcUFabXBpRHVNRGxTeXJQCjBBYzZ3UkhpM0RtMFZhWHBrZnRnTTZwL24yMkJyV1l0cHBibUhXQkZEaG1pUjVISnZ3VjgxcUxEaHMxRENuMGYKYnBvZ3lzalVUUDRhcXJ1QnRvUGwrN2I1WVl2UVBBVkI2ajhvOUxpbnl4d3lBTEE1THlVaWtHT1dNbUNjR2JOUQo1QnhlQW1MeFNNcVk4M085RzdBaEJFbmxLbmVQc3Y1dUk5MWREY2tjeFlFUm1HZzNNd0lEQVFBQm80RzlNSUc2Ck1BNEdBMVVkRHdFQi93UUVBd0lFOERBZEJnTlZIUTRFRmdRVTloQ1grK243cFdNeEJoM29HLzJmMS9zY0REUXcKSHdZRFZSMGpCQmd3Rm9BVTZhU2FiVDlydjNSWEZjRThmMS93Q0hvbXlsOHdhQVlEVlIwUkJHRXdYNElGWlc1MgpiM21DRkdWdWRtOTVMbkJ5YjJwbFkzUmpiMjUwYjNWeWdoaGxiblp2ZVM1d2NtOXFaV04wWTI5dWRHOTFjaTV6CmRtT0NKbVZ1ZG05NUxuQnliMnBsWTNSamIyNTBiM1Z5TG5OMll5NWpiSFZ6ZEdWeUxteHZZMkZzTUEwR0NTcUcKU0liM0RRRUJDd1VBQTRJQkFRQUgrVXB2VWtBRWJQQlVKNHNReFVuZUdyaHc2RmsxR3hkamg1UzgxcCtqdTNUNApvRUxOQ0h3U0FtWThNL1J5ejFLUmJ3UlQ5ZjZyWk1xRnk0NDBIMmxvb3NSTVZvSU5kbHZGdjJyb1BTN2tDQ3cxCklyR2wzRVowOENFSWhWektDN3MrQk1qOEVMTHorZlA2VldOa1ltaGxQSFZmR0IxUzc4VUUvVVZmQnFwMCtDZ24KRkRxWkpJWThPeWtIeGRJa284RklYWjkzQWRsczZUMnNybWV4TWd2M0JuVVMzY1BoUFY4OUx0VEJ1MEIycVUxUgorZ2F5MU9oQ0dkZmpBK3d5Y3djWmkwTWR1azR4WCtGdFM0SU85RXJvVy9WY2hWUmpqRzJNeEdpY3RqL3BxZXpWCnhxZWZnZ2NzZzk1THc4cUtobVI1RERrOG9BTUpqRzJQdlA1WUxwK1AKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + }, + "kind": "Secret", + "metadata": { + "creationTimestamp": "2025-08-09T06:32:00Z", + "labels": { + "app": "contour" + }, + "name": "envoycert", + "namespace": "projectcontour", + "resourceVersion": "1377", + "uid": "55e2564a-98d3-4cff-917c-096264fc784f" + }, + "type": "kubernetes.io/tls" + }, + { + "apiVersion": "v1", + "data": { + "ca.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURKRENDQWd5Z0F3SUJBZ0lVU1hFVGhlanIrbjVFTk1oR0t3d28zOEN1SENVd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0tqRW9NQ1lHQTFVRUF4TWZZMkV1WlhoaGJYQnNaUzEzWldKb2IyOXJMbU5sY25RdGJXRnVZV2RsY2pBZQpGdzB5TlRBNE1Ea3dOak13TkRaYUZ3MHpNREE0TURnd05qTXdORFphTUNveEtEQW1CZ05WQkFNVEgyTmhMbVY0CllXMXdiR1V0ZDJWaWFHOXZheTVqWlhKMExXMWhibUZuWlhJd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUIKRHdBd2dnRUtBb0lCQVFEei9QMEJieE12WVAvVEExd1dUYzhmOWtBQ2pxZzdycW9raDh6d0pJcGt6NkF5c1d6OQpkcU0rb3BqcW9mMGZpZUJmMG1LdGxTNWNHWkFISW9ibHBoc2VGaVQxcWVtd2hHRVpxUFFvbE1TUkRXanoyVERyCkZVU3hlR0dpV1BOcG13cXJMcjhOcVA2ZHBJNWxRSWxzblpYT1ViejR3TnlpS29sTXEwU3BIa25GUGh5RVkzUTAKV25URXlMNUFIOFZLUW4rbzByakJhYURPU2kwWjBJY1JaMXA2ampZcU96VGxNZnB6RHpUN09PTjFyOS9jQzNqegppUURyVG5sNkZiTlJGV3ozYS9RZEkrZUVlQThaT1JETjFSWFE0SUhJc0JveHdMTjVSenNkNnIwcS9NVHlBWThtCjdJVU93QkZtbUVtWE9ONk5LUzQ3TnNSY2tNSVJZZms1VWJ0MUFnTUJBQUdqUWpCQU1BNEdBMVVkRHdFQi93UUUKQXdJQ3BEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCU3E2UTdNM1VrOU5zd3d4cHl0V2E4SQpsaXE5ckRBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXhtZVQzKzdIMGMyTUd5SnNtUkFoczh2ZWxxR1lPd3pGCjdOWnVTNHk2cEk5bjVnbnh2Q1lMejZHZlRkcU8zcllTdm1vd2ZCWU9ZS1ZpSjlEUldKU0VTYmI3azl6N2xheVUKMjZMZno1RHJnb1FKMkhLZ1IvS04rRFVwcDRFOHluM2pJQlBacVJ5clFzT2hMNDVFWFFvWmZHa05INmJERkdnNgpnSDQ1YmF6ajlLcnVqN2x5KytMeUxyU05IMXBNWmN5aFlxYjdNMHpNUVJheWptRnBxK0tXQnIwQkxFNVlWNGFECnpUemxPcDZGSlpIdnZONjNENnlkVmluNnNQM0RwbCtFcXlHYU1KZmZoMk9Yd0JlYnpIRE1yd0toK05laVZ6MUoKdFNjNXFwNHZaQ2YzNnZMRkFwVFNDWHl5V2d2cGVGZ1ZNck1nUnNxaGozdy9rZjZGeHdmcGxnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "tls.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURKRENDQWd5Z0F3SUJBZ0lVU1hFVGhlanIrbjVFTk1oR0t3d28zOEN1SENVd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0tqRW9NQ1lHQTFVRUF4TWZZMkV1WlhoaGJYQnNaUzEzWldKb2IyOXJMbU5sY25RdGJXRnVZV2RsY2pBZQpGdzB5TlRBNE1Ea3dOak13TkRaYUZ3MHpNREE0TURnd05qTXdORFphTUNveEtEQW1CZ05WQkFNVEgyTmhMbVY0CllXMXdiR1V0ZDJWaWFHOXZheTVqWlhKMExXMWhibUZuWlhJd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUIKRHdBd2dnRUtBb0lCQVFEei9QMEJieE12WVAvVEExd1dUYzhmOWtBQ2pxZzdycW9raDh6d0pJcGt6NkF5c1d6OQpkcU0rb3BqcW9mMGZpZUJmMG1LdGxTNWNHWkFISW9ibHBoc2VGaVQxcWVtd2hHRVpxUFFvbE1TUkRXanoyVERyCkZVU3hlR0dpV1BOcG13cXJMcjhOcVA2ZHBJNWxRSWxzblpYT1ViejR3TnlpS29sTXEwU3BIa25GUGh5RVkzUTAKV25URXlMNUFIOFZLUW4rbzByakJhYURPU2kwWjBJY1JaMXA2ampZcU96VGxNZnB6RHpUN09PTjFyOS9jQzNqegppUURyVG5sNkZiTlJGV3ozYS9RZEkrZUVlQThaT1JETjFSWFE0SUhJc0JveHdMTjVSenNkNnIwcS9NVHlBWThtCjdJVU93QkZtbUVtWE9ONk5LUzQ3TnNSY2tNSVJZZms1VWJ0MUFnTUJBQUdqUWpCQU1BNEdBMVVkRHdFQi93UUUKQXdJQ3BEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCU3E2UTdNM1VrOU5zd3d4cHl0V2E4SQpsaXE5ckRBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXhtZVQzKzdIMGMyTUd5SnNtUkFoczh2ZWxxR1lPd3pGCjdOWnVTNHk2cEk5bjVnbnh2Q1lMejZHZlRkcU8zcllTdm1vd2ZCWU9ZS1ZpSjlEUldKU0VTYmI3azl6N2xheVUKMjZMZno1RHJnb1FKMkhLZ1IvS04rRFVwcDRFOHluM2pJQlBacVJ5clFzT2hMNDVFWFFvWmZHa05INmJERkdnNgpnSDQ1YmF6ajlLcnVqN2x5KytMeUxyU05IMXBNWmN5aFlxYjdNMHpNUVJheWptRnBxK0tXQnIwQkxFNVlWNGFECnpUemxPcDZGSlpIdnZONjNENnlkVmluNnNQM0RwbCtFcXlHYU1KZmZoMk9Yd0JlYnpIRE1yd0toK05laVZ6MUoKdFNjNXFwNHZaQ2YzNnZMRkFwVFNDWHl5V2d2cGVGZ1ZNck1nUnNxaGozdy9rZjZGeHdmcGxnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + }, + "kind": "Secret", + "metadata": { + "annotations": { + "cert-manager.io/alt-names": "", + "cert-manager.io/certificate-name": "samplewebhook-example-webhook-ca", + "cert-manager.io/common-name": "ca.example-webhook.cert-manager", + "cert-manager.io/ip-sans": "", + "cert-manager.io/issuer-group": "", + "cert-manager.io/issuer-kind": "", + "cert-manager.io/issuer-name": "samplewebhook-example-webhook-self-sign", + "cert-manager.io/uri-sans": "" + }, + "creationTimestamp": "2025-08-09T06:30:46Z", + "labels": { + "controller.cert-manager.io/fao": "true" + }, + "name": "samplewebhook-example-webhook-ca", + "namespace": "samplewebhook", + "resourceVersion": "956", + "uid": "7b6f80a9-7c5c-414c-90bd-df96ffd8da4f" + }, + "type": "kubernetes.io/tls" + }, + { + "apiVersion": "v1", + "data": { + "ca.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURKRENDQWd5Z0F3SUJBZ0lVU1hFVGhlanIrbjVFTk1oR0t3d28zOEN1SENVd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0tqRW9NQ1lHQTFVRUF4TWZZMkV1WlhoaGJYQnNaUzEzWldKb2IyOXJMbU5sY25RdGJXRnVZV2RsY2pBZQpGdzB5TlRBNE1Ea3dOak13TkRaYUZ3MHpNREE0TURnd05qTXdORFphTUNveEtEQW1CZ05WQkFNVEgyTmhMbVY0CllXMXdiR1V0ZDJWaWFHOXZheTVqWlhKMExXMWhibUZuWlhJd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUIKRHdBd2dnRUtBb0lCQVFEei9QMEJieE12WVAvVEExd1dUYzhmOWtBQ2pxZzdycW9raDh6d0pJcGt6NkF5c1d6OQpkcU0rb3BqcW9mMGZpZUJmMG1LdGxTNWNHWkFISW9ibHBoc2VGaVQxcWVtd2hHRVpxUFFvbE1TUkRXanoyVERyCkZVU3hlR0dpV1BOcG13cXJMcjhOcVA2ZHBJNWxRSWxzblpYT1ViejR3TnlpS29sTXEwU3BIa25GUGh5RVkzUTAKV25URXlMNUFIOFZLUW4rbzByakJhYURPU2kwWjBJY1JaMXA2ampZcU96VGxNZnB6RHpUN09PTjFyOS9jQzNqegppUURyVG5sNkZiTlJGV3ozYS9RZEkrZUVlQThaT1JETjFSWFE0SUhJc0JveHdMTjVSenNkNnIwcS9NVHlBWThtCjdJVU93QkZtbUVtWE9ONk5LUzQ3TnNSY2tNSVJZZms1VWJ0MUFnTUJBQUdqUWpCQU1BNEdBMVVkRHdFQi93UUUKQXdJQ3BEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCU3E2UTdNM1VrOU5zd3d4cHl0V2E4SQpsaXE5ckRBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXhtZVQzKzdIMGMyTUd5SnNtUkFoczh2ZWxxR1lPd3pGCjdOWnVTNHk2cEk5bjVnbnh2Q1lMejZHZlRkcU8zcllTdm1vd2ZCWU9ZS1ZpSjlEUldKU0VTYmI3azl6N2xheVUKMjZMZno1RHJnb1FKMkhLZ1IvS04rRFVwcDRFOHluM2pJQlBacVJ5clFzT2hMNDVFWFFvWmZHa05INmJERkdnNgpnSDQ1YmF6ajlLcnVqN2x5KytMeUxyU05IMXBNWmN5aFlxYjdNMHpNUVJheWptRnBxK0tXQnIwQkxFNVlWNGFECnpUemxPcDZGSlpIdnZONjNENnlkVmluNnNQM0RwbCtFcXlHYU1KZmZoMk9Yd0JlYnpIRE1yd0toK05laVZ6MUoKdFNjNXFwNHZaQ2YzNnZMRkFwVFNDWHl5V2d2cGVGZ1ZNck1nUnNxaGozdy9rZjZGeHdmcGxnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "tls.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURoekNDQW0rZ0F3SUJBZ0lVUXI5VVoyR2c2U2JrS044S0ZhdHNENEdoQmxrd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0tqRW9NQ1lHQTFVRUF4TWZZMkV1WlhoaGJYQnNaUzEzWldKb2IyOXJMbU5sY25RdGJXRnVZV2RsY2pBZQpGdzB5TlRBNE1Ea3dOak13TkRaYUZ3MHlOakE0TURrd05qTXdORFphTUFBd2dnRWlNQTBHQ1NxR1NJYjNEUUVCCkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDbzJZVmFvL1AzNkFWbWxWS1dmRGxMOGlTbHMxQ0p1QjNjU3hJakVUUGUKUUZwVytrQm9pQm1CV1lSd1MvYlg1eWlkMkVTNGJJdVVGZVNYTy9OT2IzWlhmcStZTkFSbndnYUxyaFRxblhuVQpUSXlMdlV4cHNvT0ZuMUU5U3lFeXZ3bXIxZUJBWmlwa1EydnVrL1VLY0VuQldWU1E4ZU9jWlBJc08xUzlldnMvCmtoM3FRZXkwVnN2ZXp0bXVCTWUvb1lqWDUvZ2t2Qm9kejY5UjROdFBQNGRNUXRCZWZhelZ4V2JjU3NEbUI0dE4KcDNLMFovOXpFWFdDdTFLdUMza2tOVzRERmpBWlh6eVB2QWJma3hIOThjR3luMGR2YkhwWkFkQnZ4OExFSFFaZwp4ZTk3VTUvUUI5RVk3eHNFT1BYWC81azh2TXk3VU1BRm94VmFJZytoVkh0bEFnTUJBQUdqZ2M0d2djc3dEZ1lEClZSMFBBUUgvQkFRREFnV2dNQXdHQTFVZEV3RUIvd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVVxdWtPek4xSlBUYk0KTU1hY3JWbXZDSllxdmF3d2dZa0dBMVVkRVFFQi93Ui9NSDJDSFhOaGJYQnNaWGRsWW1odmIyc3RaWGhoYlhCcwpaUzEzWldKb2IyOXJnaXR6WVcxd2JHVjNaV0pvYjI5ckxXVjRZVzF3YkdVdGQyVmlhRzl2YXk1ellXMXdiR1YzClpXSm9iMjlyZ2k5ellXMXdiR1YzWldKb2IyOXJMV1Y0WVcxd2JHVXRkMlZpYUc5dmF5NXpZVzF3YkdWM1pXSm8KYjI5ckxuTjJZekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBTHlybzBNSUZlWVdFUVYwb2NsbGMxTFVZa05rKwpuR0t6eTRkSXgvSFoxTGJJVGNLaWdkWUdRWGprakw3b0V4MHE3djFtS0tzSEJQUEcrZjBrQjhBcFlaMCtsWmlxCkZINUFxalQvK2ZGMDFsbFZWRVRhYW5aNE5yMTBPSlcrRDMrT0dHWmUzRWh2dVViczc5TS9lNlQvOVo5WW5tZDQKN2NFQ1hYT1Q1OVh5L0hORktHNjYzbWw1azR6OUQ3dFZIajQ3TGpqSGwwazhrNGo1UzBwbVJnU3hRZnN0elRGZgpGNExGUGNkRllDTlhTMU1EOTNrNFRHUisyeTVKc2tlZHVFQ2hpZnpGYlRoUjJwQmJYTDludzhRRm40UTR2c0R3CmZ3UGdab3BMNG9mdHA4ZklUcVRIcFEyTVlvSm92ME4wY0dVeVBjaEFKMkJRTVJOV2pnNm1PWTdQcHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + }, + "kind": "Secret", + "metadata": { + "annotations": { + "cert-manager.io/alt-names": "samplewebhook-example-webhook,samplewebhook-example-webhook.samplewebhook,samplewebhook-example-webhook.samplewebhook.svc", + "cert-manager.io/certificate-name": "samplewebhook-example-webhook-webhook-tls", + "cert-manager.io/common-name": "", + "cert-manager.io/ip-sans": "", + "cert-manager.io/issuer-group": "", + "cert-manager.io/issuer-kind": "", + "cert-manager.io/issuer-name": "samplewebhook-example-webhook-ca", + "cert-manager.io/uri-sans": "" + }, + "creationTimestamp": "2025-08-09T06:30:46Z", + "labels": { + "controller.cert-manager.io/fao": "true" + }, + "name": "samplewebhook-example-webhook-webhook-tls", + "namespace": "samplewebhook", + "resourceVersion": "979", + "uid": "c304cf49-750c-4800-accd-86ace29382dd" + }, + "type": "kubernetes.io/tls" + }, + { + "apiVersion": "v1", + "data": { + "ca.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJ4VENDQVV1Z0F3SUJBZ0lVWlRsamdmMXhMYzZXcjlOcHZUWEw0NmpQanpBd0NnWUlLb1pJemowRUF3TXcKSWpFZ01CNEdBMVVFQXhNWFkyVnlkQzF0WVc1aFoyVnlMWGRsWW1odmIyc3RZMkV3SGhjTk1qVXdPREE1TURZeQpPVFUyV2hjTk1qWXdPREE1TURZeU9UVTJXakFpTVNBd0hnWURWUVFERXhkalpYSjBMVzFoYm1GblpYSXRkMlZpCmFHOXZheTFqWVRCMk1CQUdCeXFHU000OUFnRUdCU3VCQkFBaUEySUFCRHBFZ1BPbUltYkRrMkQ2dFVKa0pNZlYKbHZUOGQrUlpBMVVHd3lwb2JHQlVJUXE2RFNydHZjTG5HRVFQM3NiZjMxM2tBb3pUNWhvSDNYQzRHWU50WjlkZgpnTWJlU0ZFS21IZ3dReExXZ1R1NXJCdnlIb0NGRWgvSWVPZUdNZDc5TTZOQ01FQXdEZ1lEVlIwUEFRSC9CQVFECkFnS2tNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGREJ6dGlqaG9pT2tIcVlEMkJ6UVgwd2QKdDRrMU1Bb0dDQ3FHU000OUJBTURBMmdBTUdVQ01RRDlNRGFHRm5uWXIxdHRrREgrNW5ab3IwT1cxUE9yeDN0SAo1QzhJL21pd25VWkVPQ3oxSUZjeUpsSDcybm4ybURZQ01BbGdBMEdZbEdqa3VkeXJyTno4WlRkOFFySzQ0NTFRCjNXS3BzbGtoRDVKb3QyOFZQZTJ0RjY0bmViVWRKYmlWNHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", + "tls.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJ4VENDQVV1Z0F3SUJBZ0lVWlRsamdmMXhMYzZXcjlOcHZUWEw0NmpQanpBd0NnWUlLb1pJemowRUF3TXcKSWpFZ01CNEdBMVVFQXhNWFkyVnlkQzF0WVc1aFoyVnlMWGRsWW1odmIyc3RZMkV3SGhjTk1qVXdPREE1TURZeQpPVFUyV2hjTk1qWXdPREE1TURZeU9UVTJXakFpTVNBd0hnWURWUVFERXhkalpYSjBMVzFoYm1GblpYSXRkMlZpCmFHOXZheTFqWVRCMk1CQUdCeXFHU000OUFnRUdCU3VCQkFBaUEySUFCRHBFZ1BPbUltYkRrMkQ2dFVKa0pNZlYKbHZUOGQrUlpBMVVHd3lwb2JHQlVJUXE2RFNydHZjTG5HRVFQM3NiZjMxM2tBb3pUNWhvSDNYQzRHWU50WjlkZgpnTWJlU0ZFS21IZ3dReExXZ1R1NXJCdnlIb0NGRWgvSWVPZUdNZDc5TTZOQ01FQXdEZ1lEVlIwUEFRSC9CQVFECkFnS2tNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGREJ6dGlqaG9pT2tIcVlEMkJ6UVgwd2QKdDRrMU1Bb0dDQ3FHU000OUJBTURBMmdBTUdVQ01RRDlNRGFHRm5uWXIxdHRrREgrNW5ab3IwT1cxUE9yeDN0SAo1QzhJL21pd25VWkVPQ3oxSUZjeUpsSDcybm4ybURZQ01BbGdBMEdZbEdqa3VkeXJyTno4WlRkOFFySzQ0NTFRCjNXS3BzbGtoRDVKb3QyOFZQZTJ0RjY0bmViVWRKYmlWNHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + }, + "kind": "Secret", + "metadata": { + "annotations": { + "cert-manager.io/allow-direct-injection": "true" + }, + "creationTimestamp": "2025-08-09T06:29:56Z", + "labels": { + "app.kubernetes.io/managed-by": "cert-manager-webhook" + }, + "name": "cert-manager-webhook-ca", + "namespace": "cert-manager", + "resourceVersion": "702", + "uid": "444264e6-777e-4957-a821-3baae2647476" + }, + "type": "Opaque" + }, + { + "apiVersion": "v1", + "kind": "Secret", + "metadata": { + "creationTimestamp": "2025-08-09T06:31:19Z", + "name": "ingress-nginx-admission", + "namespace": "ingress-nginx", + "resourceVersion": "1167", + "uid": "861de112-5d03-4f9c-8ba5-b642ad01eb3d" + }, + "type": "Opaque" + }, + { + "apiVersion": "v1", + "data": { + "ca.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURIRENDQWdTZ0F3SUJBZ0lFT2FLaTZUQU5CZ2txaGtpRzl3MEJBUXNGQURBdU1SZ3dGZ1lEVlFRREV3OVEKY205cVpXTjBJRU52Ym5SdmRYSXhFakFRQmdOVkJBVVRDVGsyTmprMU9UZzBPVEFlRncweU5UQTRNRGd3TmpNeApOVGhhRncweU5qQTRNRGt3TmpNeE5UWmFNQzR4R0RBV0JnTlZCQU1URDFCeWIycGxZM1FnUTI5dWRHOTFjakVTCk1CQUdBMVVFQlJNSk9UWTJPVFU1T0RRNU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0MKQVFFQXZVRmY2QUJLN3REWVkrWmlScHpLQjdtcWdWa21pUlVmVEx3aTRrV01ETk1KWnk1VXBsaTBaTGRFTE11eApJeWdkYTEyL0RHOGxhcmNnTDNlZlI1VDdRWmszSGJBNTlKN2ljV0p5M3hWNTNadXEvS0IwODZpV2ZtY21UaTMzCk5xNUtnNWlvZ25iL3hUQ2F4MHpBSUsvNXhnZHJjRmhnRGdqMWZLSlYzQlFLUjAzSkUybGdRZ2ZvRGZxbGczVXkKK3BveG14eFdzOUt2bDhFcW5jakMxOXFKam5GbHpZK1E1OWxHb1c0R21oaVI0MnNFSDNFeXBIRG9hYWQ0Z3dCZAppZWN6eWlFN1BwR21xZGNKQ09WdStSVEZhY0crZW5ySHdyT1l3bmNvTDV1TXUwMDdOSmFlOSttV0JsQmdaMk9TCjhjdk1LelFoc3N4N2IzdE5rcGNrVDd2SE13SURBUUFCbzBJd1FEQU9CZ05WSFE4QkFmOEVCQU1DQXFRd0R3WUQKVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVU2YVNhYlQ5cnYzUlhGY0U4ZjEvd0NIb215bDh3RFFZSgpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFDM2xwNG0yL0VGakZoa0JsUzVsSkhIQVBHaWo3cnNLcmtONk90ZzJhbFlHCkpSVmFFK0tZQ3M1R3dJWUVQUFZSWVU5OWg3bGhZdDhZRzZ0N2UvUmJyL05vSDR6cFpObEU5SUx6S1NndndlWFEKVXNYV05JMkQrbU9PWVMwQmtzUWRIejFuV2hrV2pnQWpNdFpQaVovQkJsZEg0MmxyaDVLbGlubXYrOXJ2MXJRMwpCTEdkVm5zdGdyZlpHOFFOTlNLRmY3TWdnTUZ2bmRtd2UyOUNjTllOd243R1RVb2ZhL2Z0N0ROZGh3TVQwZHlnCnNDdVJTdlI5aHlFd1RTaGFYQXBuRWs0ZjA3Ni9yNTZZdU1rNzVqbUluTWxIbWxVM21XY0Z0UEFUZUtXejFLWUMKYkwzNFZtRmpaWVNrSGRWVmlSYlNXL0w1QkNxMEVIc1c1ZUk2Z0krejVDRT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "tls.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURoRENDQW15Z0F3SUJBZ0lFRmNGRk5UQU5CZ2txaGtpRzl3MEJBUXNGQURBdU1SZ3dGZ1lEVlFRREV3OVEKY205cVpXTjBJRU52Ym5SdmRYSXhFakFRQmdOVkJBVVRDVGsyTmprMU9UZzBPVEFlRncweU5UQTRNRGd3TmpNeApOVGxhRncweU5qQTRNRGt3TmpNeE5UWmFNQkl4RURBT0JnTlZCQU1UQjJOdmJuUnZkWEl3Z2dFaU1BMEdDU3FHClNJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURhejB1OXRlV0lRYkNhRzFZNE42TVh2TFVMQmFMKzgxc2wKQkZOanNIRkJBMCt3QmU0ZE14TzliM081ZkhmUVF4RmQvcFZ5dXFyUnhDRFE3aGhGQ3hKR1Rab2dBRmhPc1h6bgpZQ20rVk43RVdJdW5oTy9XeTdGRzN1RU1OYjZRR2NZUllBQWZiSEFzWktvYzdBUVJxaVQ5RDZjZFpzSjJ6RlQzCnpoTWtmTUlrQ0pOVXc3NnM2S2VDa2hNZzNJT2RtWUVDVlJkT3dWV01qcmMwNDZQK1FzemZPRmN4dHJBYms1UGEKeC8yd0dHSSs5Y1ozRWNIOWxiUjZpTVlUeVV6bjQ1RVJJWjJZc0dhTk9QdThUT01ieHBXa2FjZlk1ZWdjdUJqZQowR0xmaTB3TmZZTXNxRnhxNDdBZVF0dHIzdXFjL0xNWjVpSmdvSFlXUG9zYXRFVEpKTktqQWdNQkFBR2pnY1V3CmdjSXdEZ1lEVlIwUEFRSC9CQVFEQWdUd01CMEdBMVVkRGdRV0JCUk9VZzlpMEJld3NIeXpRdXF5RnZsUFdsVloKT3pBZkJnTlZIU01FR0RBV2dCVHBwSnB0UDJ1L2RGY1Z3VHgvWC9BSWVpYktYekJ3QmdOVkhSRUVhVEJuZ2dkagpiMjUwYjNWeWdoWmpiMjUwYjNWeUxuQnliMnBsWTNSamIyNTBiM1Z5Z2hwamIyNTBiM1Z5TG5CeWIycGxZM1JqCmIyNTBiM1Z5TG5OMlk0SW9ZMjl1ZEc5MWNpNXdjbTlxWldOMFkyOXVkRzkxY2k1emRtTXVZMngxYzNSbGNpNXMKYjJOaGJEQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFlYThKWk5jUTNiN3NURGEyckdkTzBGM0l3YmNybjFCMApKanNOeHI0aDM0YXp5UVFQT1kyT0lZRkdWbXFIMXlLbFNBRG0wcmVZTEQrZzJoTGxnSC9xd0UzZUZodjRvdWMvCnRIN1U3Vmd3WXVsL0g1cGlTbkgyYTdVZGMzRDI3K3ZoL1ZJNytVNFN0V3NMcVFaeFFYS2ZTYUhWTzV3MWhzWFoKYjBpTTI4MUZzRTVGMnFsR1U0ZysrMUJ2WDJWVVZ6R0pwT0Y5aGV3cnArQm1JZFRKU3haZXVlSjhvWnd5MXJ6YgoweGt1bGdYS2ZMRzNZNm9GL3dQcWxIMi9vRXRON2lHc0RIc05nUER0dDU3eWxMWHV0OWVZbFcyV3pORVVaTHV1Cjk4N1hqaFBXUUJjYW8yMTZZZis0VHE5OUwxaHp5TTQ3ekdGZGdSaUNUSzZFS0UyVkZDVy9Tdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + "kind": "Secret", + "metadata": { + "creationTimestamp": "2025-08-09T06:32:00Z", + "labels": { + "app": "contour" + }, + "name": "contourcert", + "namespace": "projectcontour", + "resourceVersion": "1376", + "uid": "03893c04-4332-4be0-9f51-c7e842abce97" + }, + "type": "kubernetes.io/tls" + } + ], + "service_accounts": [ + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:30:45Z", + "name": "default", + "namespace": "samplewebhook", + "resourceVersion": "895", + "uid": "f3f52ab5-ebca-474f-8d13-42a691d58830" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:05Z", + "name": "bootstrap-signer", + "namespace": "kube-system", + "resourceVersion": "344", + "uid": "5eddda6c-d979-4c55-86a2-0e6ccfab5d16" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:30:51Z", + "name": "default", + "namespace": "pebble", + "resourceVersion": "1050", + "uid": "dd3e0d42-e159-4ae7-8905-13b5dde1e893" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:30:34Z", + "name": "default", + "namespace": "bind", + "resourceVersion": "798", + "uid": "c70cbda3-4e6e-4065-9d3d-b78924b95358" + } + }, + { + "apiVersion": "v1", + "automountServiceAccountToken": false, + "kind": "ServiceAccount", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "projectcontour", + "meta.helm.sh/release-namespace": "projectcontour" + }, + "creationTimestamp": "2025-08-09T06:32:04Z", + "labels": { + "app.kubernetes.io/component": "contour", + "app.kubernetes.io/instance": "projectcontour", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "contour", + "app.kubernetes.io/version": "1.29.1", + "helm.sh/chart": "contour-18.2.4" + }, + "name": "projectcontour-contour", + "namespace": "projectcontour", + "resourceVersion": "1402", + "uid": "9dff13bf-bf6a-4cff-bb54-d590e3b2018b" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:02Z", + "name": "resourcequota-controller", + "namespace": "kube-system", + "resourceVersion": "309", + "uid": "14d70c78-8dc0-450f-a503-c19c093eec2c" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:01Z", + "name": "generic-garbage-collector", + "namespace": "kube-system", + "resourceVersion": "284", + "uid": "e68f545e-f4a1-4cc7-b887-bfd8ddcbe6f5" + } + }, + { + "apiVersion": "v1", + "automountServiceAccountToken": true, + "kind": "ServiceAccount", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cainjector", + "app.kubernetes.io/component": "cainjector", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cainjector", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-cainjector", + "namespace": "cert-manager", + "resourceVersion": "571", + "uid": "13803d0b-f976-4523-9328-7a23679768eb" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:06Z", + "name": "default", + "namespace": "kube-system", + "resourceVersion": "429", + "uid": "cbe61cec-26dc-4618-948f-6dc24ecab633" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:05Z", + "name": "validatingadmissionpolicy-status-controller", + "namespace": "kube-system", + "resourceVersion": "343", + "uid": "5c243cdd-8d23-4b4c-812e-d4225134118d" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:03Z", + "name": "ttl-controller", + "namespace": "kube-system", + "resourceVersion": "330", + "uid": "83af6096-4f72-485a-b375-d31e59ac3118" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "deployment-controller", + "namespace": "kube-system", + "resourceVersion": "281", + "uid": "f82fd4cd-891d-49e4-8a74-a195b23ee305" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "legacy-service-account-token-cleaner", + "namespace": "kube-system", + "resourceVersion": "273", + "uid": "643e15c0-e5b6-4b7a-b766-06bc5f76ad4f" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:03Z", + "name": "pv-protection-controller", + "namespace": "kube-system", + "resourceVersion": "331", + "uid": "d93e4d86-bf3a-4c78-b903-0f3de281c1e0" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:02Z", + "name": "endpointslice-controller", + "namespace": "kube-system", + "resourceVersion": "318", + "uid": "2987f241-576a-4137-963c-9d9a7b0dfc8c" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:06Z", + "name": "default", + "namespace": "local-path-storage", + "resourceVersion": "430", + "uid": "bfe20292-eab6-4d2a-a31c-acab9c16da54" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:02Z", + "name": "expand-controller", + "namespace": "kube-system", + "resourceVersion": "315", + "uid": "e3853327-e93d-467b-b9ad-5053b7b7c099" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:05Z", + "name": "clusterrole-aggregation-controller", + "namespace": "kube-system", + "resourceVersion": "342", + "uid": "8dac47dd-61de-494b-832d-8fa28d91e85c" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:02Z", + "name": "kindnet", + "namespace": "kube-system", + "resourceVersion": "313", + "uid": "fbb24dcc-8e8f-4ca1-8f92-13f6d450793e" + } + }, + { + "apiVersion": "v1", + "automountServiceAccountToken": true, + "kind": "ServiceAccount", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "webhook", + "app.kubernetes.io/component": "webhook", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "webhook", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-webhook", + "namespace": "cert-manager", + "resourceVersion": "573", + "uid": "f0c11a80-0271-4dfe-bbb1-b91a071c97a1" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:52Z", + "name": "default", + "namespace": "cert-manager", + "resourceVersion": "568", + "uid": "863f6141-bf29-4daf-90fc-e01b240d7e13" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:01Z", + "name": "replicaset-controller", + "namespace": "kube-system", + "resourceVersion": "290", + "uid": "ffb004e7-734f-4743-a025-598f9abe1e9f" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:31:52Z", + "name": "default", + "namespace": "projectcontour", + "resourceVersion": "1340", + "uid": "0337f4b3-e5fb-49dd-83b6-97fb593c9afa" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:04Z", + "name": "attachdetach-controller", + "namespace": "kube-system", + "resourceVersion": "340", + "uid": "42df16de-153a-4984-b887-2cf916e76ed2" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:01Z", + "name": "disruption-controller", + "namespace": "kube-system", + "resourceVersion": "282", + "uid": "d6f1c4dc-5e74-4014-8e01-3d2c0dd4fb98" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:06Z", + "name": "default", + "namespace": "kube-node-lease", + "resourceVersion": "426", + "uid": "0af020f3-7331-4070-a5aa-3a31593375e0" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:29:03Z", + "name": "local-path-provisioner-service-account", + "namespace": "local-path-storage", + "resourceVersion": "322", + "uid": "03e97934-c0c8-459c-829c-e9db7f7c7cb5" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "pvc-protection-controller", + "namespace": "kube-system", + "resourceVersion": "272", + "uid": "83c24d1d-0b03-4326-8605-eaca5c8a0356" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:04Z", + "name": "persistent-volume-binder", + "namespace": "kube-system", + "resourceVersion": "339", + "uid": "b5e3fa27-5f96-4f50-aa0b-c10dc5f75d78" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:01Z", + "name": "endpointslicemirroring-controller", + "namespace": "kube-system", + "resourceVersion": "293", + "uid": "3f524350-a195-4eb1-8b0f-6d61bd7975c0" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:30:39Z", + "labels": { + "app.kubernetes.io/component": "rbac", + "app.kubernetes.io/created-by": "sample-external-issuer", + "app.kubernetes.io/instance": "controller-manager", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "serviceaccount", + "app.kubernetes.io/part-of": "sample-external-issuer" + }, + "name": "sample-external-issuer-controller-manager", + "namespace": "sample-external-issuer-system", + "resourceVersion": "841", + "uid": "7553ab23-9dc0-4d72-bfe6-e6273d9e9688" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:03Z", + "name": "ttl-after-finished-controller", + "namespace": "kube-system", + "resourceVersion": "333", + "uid": "a7f7041d-8ab3-47ee-a8eb-6abae01f48f2" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "kube-proxy", + "namespace": "kube-system", + "resourceVersion": "276", + "uid": "78b0fee0-87a9-49f2-b265-6f8f94062372" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:06Z", + "name": "default", + "namespace": "kube-public", + "resourceVersion": "428", + "uid": "60052ee7-0d64-4dbb-8b02-47d27186553f" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:01Z", + "name": "job-controller", + "namespace": "kube-system", + "resourceVersion": "298", + "uid": "5e1508e8-fddc-4c99-b13c-15f1c03183a7" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:30:39Z", + "name": "default", + "namespace": "sample-external-issuer-system", + "resourceVersion": "832", + "uid": "3af37a4a-5b78-480b-9c1d-f229bd3d7319" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "samplewebhook", + "meta.helm.sh/release-namespace": "samplewebhook" + }, + "creationTimestamp": "2025-08-09T06:30:45Z", + "labels": { + "app": "example-webhook", + "app.kubernetes.io/managed-by": "Helm", + "chart": "example-webhook-0.1.0", + "heritage": "Helm", + "release": "samplewebhook" + }, + "name": "samplewebhook-example-webhook", + "namespace": "samplewebhook", + "resourceVersion": "898", + "uid": "c7d99aed-268a-4f3b-970d-cfdd9da754e2" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:02Z", + "name": "ephemeral-volume-controller", + "namespace": "kube-system", + "resourceVersion": "316", + "uid": "be13ce1b-4705-453f-8abd-a49c3084ecbd" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:31:12Z", + "name": "default", + "namespace": "ingress-nginx", + "resourceVersion": "1130", + "uid": "f8970a65-f4f6-457c-8f2b-0f1700012951" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:03Z", + "name": "horizontal-pod-autoscaler", + "namespace": "kube-system", + "resourceVersion": "320", + "uid": "31952f15-3d52-43c4-8c84-cfff5c3b6c74" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:01Z", + "name": "replication-controller", + "namespace": "kube-system", + "resourceVersion": "299", + "uid": "7e31dc8c-f32c-4221-b645-07dcd2f60544" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "statefulset-controller", + "namespace": "kube-system", + "resourceVersion": "269", + "uid": "0174ec59-2feb-4bdf-afca-cef89619b3ca" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "service-account-controller", + "namespace": "kube-system", + "resourceVersion": "274", + "uid": "0279b6b6-b5e0-4d51-9ffd-9f9079959ff3" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:01Z", + "name": "root-ca-cert-publisher", + "namespace": "kube-system", + "resourceVersion": "292", + "uid": "27285643-c7e9-43ea-93d7-b5d87ef336f8" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:04Z", + "name": "namespace-controller", + "namespace": "kube-system", + "resourceVersion": "336", + "uid": "28f16864-e98e-4b3b-be20-aba0b616bf0e" + } + }, + { + "apiVersion": "v1", + "automountServiceAccountToken": true, + "kind": "ServiceAccount", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "ingress-nginx", + "meta.helm.sh/release-namespace": "ingress-nginx" + }, + "creationTimestamp": "2025-08-09T06:31:23Z", + "labels": { + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "ingress-nginx", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "ingress-nginx", + "app.kubernetes.io/part-of": "ingress-nginx", + "app.kubernetes.io/version": "1.12.3", + "helm.sh/chart": "ingress-nginx-4.12.3" + }, + "name": "ingress-nginx", + "namespace": "ingress-nginx", + "resourceVersion": "1192", + "uid": "da97c824-64d3-402a-a1a2-5329f765d9a6" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:04Z", + "name": "certificate-controller", + "namespace": "kube-system", + "resourceVersion": "337", + "uid": "0b0ee3e9-220e-4142-b117-3da0c1e7ae1b" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "coredns", + "namespace": "kube-system", + "resourceVersion": "258", + "uid": "8169cda4-9543-4934-84ee-ed411b1be588" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:01Z", + "name": "cronjob-controller", + "namespace": "kube-system", + "resourceVersion": "283", + "uid": "d1d98865-35fc-4b0f-9dda-4d1e7c6ce737" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:02Z", + "name": "pod-garbage-collector", + "namespace": "kube-system", + "resourceVersion": "308", + "uid": "c219d0ee-aead-4199-a4da-5955ca507132" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:02Z", + "name": "token-cleaner", + "namespace": "kube-system", + "resourceVersion": "312", + "uid": "7116900a-b8e8-4988-9a9e-ac8cc7f6f2db" + } + }, + { + "apiVersion": "v1", + "automountServiceAccountToken": false, + "kind": "ServiceAccount", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "projectcontour", + "meta.helm.sh/release-namespace": "projectcontour" + }, + "creationTimestamp": "2025-08-09T06:32:04Z", + "labels": { + "app.kubernetes.io/component": "envoy", + "app.kubernetes.io/instance": "projectcontour", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "contour", + "app.kubernetes.io/version": "1.29.5", + "helm.sh/chart": "contour-18.2.4" + }, + "name": "projectcontour-envoy", + "namespace": "projectcontour", + "resourceVersion": "1401", + "uid": "1895c3cd-3de8-4c24-b6ca-428d4725b711" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:04Z", + "name": "daemon-set-controller", + "namespace": "kube-system", + "resourceVersion": "338", + "uid": "9d56ff89-148d-4d1e-ad13-b1cc221e5d07" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "node-controller", + "namespace": "kube-system", + "resourceVersion": "270", + "uid": "cc041650-1a6e-43db-83f4-13209d658b9e" + } + }, + { + "apiVersion": "v1", + "automountServiceAccountToken": true, + "kind": "ServiceAccount", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager", + "namespace": "cert-manager", + "resourceVersion": "572", + "uid": "1404108d-0edc-4b7e-a59c-4652f64b2dd7" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:06Z", + "name": "default", + "namespace": "default", + "resourceVersion": "424", + "uid": "e3f6384b-0b7a-45d6-ac0b-3ffb94c20b39" + } + }, + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:03Z", + "name": "endpoint-controller", + "namespace": "kube-system", + "resourceVersion": "319", + "uid": "59209742-0502-40c1-b464-f17708f9cdab" + } + } + ], + "roles": [ + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system::leader-locking-kube-scheduler", + "namespace": "kube-system", + "resourceVersion": "223", + "uid": "d5050601-60c7-439a-a225-456deefc9670" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resourceNames": [ + "kube-scheduler" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "get", + "update" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "create", + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leasecandidates" + ], + "verbs": [ + "create", + "get", + "list", + "update", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-tokenrequest", + "namespace": "cert-manager", + "resourceVersion": "615", + "uid": "3e6c2c2f-9155-4f2e-9418-5be771b24ba8" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resourceNames": [ + "cert-manager" + ], + "resources": [ + "serviceaccounts/token" + ], + "verbs": [ + "create" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "creationTimestamp": "2025-08-09T06:28:59Z", + "name": "kubeadm:nodes-kubeadm-config", + "namespace": "kube-system", + "resourceVersion": "239", + "uid": "47539ae7-9b5b-4023-87c4-4cb96d312e61" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resourceNames": [ + "kubeadm-config" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "get" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:token-cleaner", + "namespace": "kube-system", + "resourceVersion": "221", + "uid": "78dde366-cd8d-423f-83f0-85a6046ca70c" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "delete", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "kubeadm:bootstrap-signer-clusterinfo", + "namespace": "kube-public", + "resourceVersion": "253", + "uid": "cc0c9cf2-8286-4809-a120-76aa1ced326b" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resourceNames": [ + "cluster-info" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "get" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:cloud-provider", + "namespace": "kube-system", + "resourceVersion": "220", + "uid": "63b800c0-bc06-4782-9a0a-ba525b6f5136" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "create", + "get", + "list", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "webhook", + "app.kubernetes.io/component": "webhook", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "webhook", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-webhook:dynamic-serving", + "namespace": "cert-manager", + "resourceVersion": "612", + "uid": "93320e51-80c5-4ce6-a849-a608cf312eb5" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resourceNames": [ + "cert-manager-webhook-ca" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get", + "list", + "watch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "create" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "kubeadm:kubelet-config", + "namespace": "kube-system", + "resourceVersion": "242", + "uid": "a9be9dd2-02d4-47ce-b3da-9d0b678b4e35" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resourceNames": [ + "kubelet-config" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "get" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:bootstrap-signer", + "namespace": "kube-public", + "resourceVersion": "224", + "uid": "ff4c70f9-4aef-4b3c-a0fc-2939cc68e433" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resourceNames": [ + "cluster-info" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system::leader-locking-kube-controller-manager", + "namespace": "kube-system", + "resourceVersion": "222", + "uid": "a6966a70-1bac-47cd-8b0a-0b842dda051b" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resourceNames": [ + "kube-controller-manager" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "get", + "update" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "create", + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leasecandidates" + ], + "verbs": [ + "create", + "get", + "list", + "update", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "projectcontour", + "meta.helm.sh/release-namespace": "projectcontour" + }, + "creationTimestamp": "2025-08-09T06:32:04Z", + "labels": { + "app.kubernetes.io/instance": "projectcontour", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "contour", + "app.kubernetes.io/version": "1.29.1", + "helm.sh/chart": "contour-18.2.4" + }, + "name": "projectcontour-contour", + "namespace": "projectcontour", + "resourceVersion": "1418", + "uid": "37735b80-b7d7-40c5-a35d-06f3dda902d8" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "get", + "update" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "create", + "get", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "ingress-nginx", + "meta.helm.sh/release-namespace": "ingress-nginx" + }, + "creationTimestamp": "2025-08-09T06:31:23Z", + "labels": { + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "ingress-nginx", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "ingress-nginx", + "app.kubernetes.io/part-of": "ingress-nginx", + "app.kubernetes.io/version": "1.12.3", + "helm.sh/chart": "ingress-nginx-4.12.3" + }, + "name": "ingress-nginx", + "namespace": "ingress-nginx", + "resourceVersion": "1196", + "uid": "776fbcc5-431b-4169-a0bf-23599c3b7b6d" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ], + "verbs": [ + "get" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps", + "pods", + "secrets", + "endpoints" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "services" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingressclasses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resourceNames": [ + "ingress-nginx-leader" + ], + "resources": [ + "leases" + ], + "verbs": [ + "get", + "update" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch" + ] + }, + { + "apiGroups": [ + "discovery.k8s.io" + ], + "resources": [ + "endpointslices" + ], + "verbs": [ + "list", + "watch", + "get" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager:leaderelection", + "namespace": "kube-system", + "resourceVersion": "614", + "uid": "6c51c28d-8cee-419b-9a75-696e1c00d90b" + }, + "rules": [ + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resourceNames": [ + "cert-manager-controller" + ], + "resources": [ + "leases" + ], + "verbs": [ + "get", + "update", + "patch" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "create" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:29:03Z", + "name": "local-path-provisioner-role", + "namespace": "local-path-storage", + "resourceVersion": "323", + "uid": "11500ffc-4ba1-45f4-b258-9e59b9ff729b" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "get", + "list", + "watch", + "create", + "patch", + "update", + "delete" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:01Z", + "name": "kube-proxy", + "namespace": "kube-system", + "resourceVersion": "289", + "uid": "3e0e7e48-8cb7-46e8-921e-c55a15e6e839" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resourceNames": [ + "kube-proxy" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "get" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "samplewebhook", + "meta.helm.sh/release-namespace": "samplewebhook" + }, + "creationTimestamp": "2025-08-09T06:30:45Z", + "labels": { + "app.kubernetes.io/managed-by": "Helm" + }, + "name": "samplewebhook-example-webhook:webhook-authentication-reader", + "namespace": "kube-system", + "resourceVersion": "902", + "uid": "62950c4e-158a-4d87-8aa2-c59bdb85ca72" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resourceNames": [ + "extension-apiserver-authentication" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cainjector", + "app.kubernetes.io/component": "cainjector", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cainjector", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-cainjector:leaderelection", + "namespace": "kube-system", + "resourceVersion": "613", + "uid": "6223066f-0a7b-4047-bf70-ee55a3963b2d" + }, + "rules": [ + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resourceNames": [ + "cert-manager-cainjector-leader-election", + "cert-manager-cainjector-leader-election-core" + ], + "resources": [ + "leases" + ], + "verbs": [ + "get", + "update", + "patch" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "create" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:bootstrap-signer", + "namespace": "kube-system", + "resourceVersion": "219", + "uid": "c20f18bc-b401-40f7-9874-cddd690f6575" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:30:39Z", + "labels": { + "app.kubernetes.io/component": "rbac", + "app.kubernetes.io/created-by": "sample-external-issuer", + "app.kubernetes.io/instance": "leader-election-role", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "role", + "app.kubernetes.io/part-of": "sample-external-issuer" + }, + "name": "sample-external-issuer-leader-election-role", + "namespace": "sample-external-issuer-system", + "resourceVersion": "842", + "uid": "fb894d57-0d77-4619-99f1-e41c4704ea20" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "get", + "list", + "watch", + "create", + "update", + "patch", + "delete" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "get", + "list", + "watch", + "create", + "update", + "patch", + "delete" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "extension-apiserver-authentication-reader", + "namespace": "kube-system", + "resourceVersion": "218", + "uid": "6ccfa415-3634-44de-964e-344763ada77b" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resourceNames": [ + "extension-apiserver-authentication" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974", + "rbac.authorization.k8s.io/aggregate-to-cluster-reader": "true" + }, + "name": "cert-manager-cluster-view", + "resourceVersion": "595", + "uid": "6c0848e6-134c-4a92-8fb9-0cc437909e71" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "clusterissuers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:heapster", + "resourceVersion": "120", + "uid": "33dbe304-7fd9-411e-bcf9-b92b53015e69" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "events", + "namespaces", + "nodes", + "pods" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "extensions" + ], + "resources": [ + "deployments" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:pod-garbage-collector", + "resourceVersion": "157", + "uid": "f7ac53f8-4788-4c83-8543-d4065d235770" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "delete", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "get", + "list" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ], + "verbs": [ + "patch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults", + "rbac.authorization.k8s.io/aggregate-to-admin": "true" + }, + "name": "system:aggregate-to-admin", + "resourceVersion": "117", + "uid": "1d6b826f-2dc0-4a83-9ae6-37f6cfc70a3b" + }, + "rules": [ + { + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "localsubjectaccessreviews" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "rolebindings", + "roles" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:kube-controller-manager", + "resourceVersion": "127", + "uid": "85ffa7c4-9494-432b-a5cb-55435a5d353a" + }, + "rules": [ + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resourceNames": [ + "kube-controller-manager" + ], + "resources": [ + "leases" + ], + "verbs": [ + "get", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets", + "serviceaccounts" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "delete" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps", + "namespaces", + "secrets", + "serviceaccounts" + ], + "verbs": [ + "get" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets", + "serviceaccounts" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "tokenreviews" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "subjectaccessreviews" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "*" + ], + "resources": [ + "*" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts/token" + ], + "verbs": [ + "create" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:expand-controller", + "resourceVersion": "149", + "uid": "a10f839d-0f17-435c-90f9-69e1937bdf3a" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumes" + ], + "verbs": [ + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims/status" + ], + "verbs": [ + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "endpoints", + "services" + ], + "verbs": [ + "get" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:monitoring", + "resourceVersion": "111", + "uid": "43b5dc6d-6c21-412a-ac20-7fce5bb4c47b" + }, + "rules": [ + { + "nonResourceURLs": [ + "/healthz", + "/healthz/*", + "/livez", + "/livez/*", + "/metrics", + "/metrics/slis", + "/readyz", + "/readyz/*" + ], + "verbs": [ + "get" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:kubelet-api-admin", + "resourceVersion": "123", + "uid": "8b405732-25ed-4919-99ae-afa9156c636f" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "proxy" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes/log", + "nodes/metrics", + "nodes/proxy", + "nodes/stats" + ], + "verbs": [ + "*" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-clusterissuers", + "resourceVersion": "591", + "uid": "5eb46cae-c947-4c23-9e2b-58efbc57b6db" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "clusterissuers", + "clusterissuers/status" + ], + "verbs": [ + "update", + "patch" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "clusterissuers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get", + "list", + "watch", + "create", + "update", + "delete" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:certificates.k8s.io:kube-apiserver-client-kubelet-approver", + "resourceVersion": "136", + "uid": "6757dd77-13c8-4a3f-8340-93bf3f9bf6f5" + }, + "rules": [ + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resourceNames": [ + "kubernetes.io/kube-apiserver-client-kubelet" + ], + "resources": [ + "signers" + ], + "verbs": [ + "approve" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults", + "rbac.authorization.k8s.io/aggregate-to-view": "true" + }, + "name": "system:aggregate-to-view", + "resourceVersion": "119", + "uid": "e58aec58-bb5b-4d6e-be30-c286838d51d1" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps", + "endpoints", + "persistentvolumeclaims", + "persistentvolumeclaims/status", + "pods", + "replicationcontrollers", + "replicationcontrollers/scale", + "serviceaccounts", + "services", + "services/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "bindings", + "events", + "limitranges", + "namespaces/status", + "pods/log", + "pods/status", + "replicationcontrollers/status", + "resourcequotas", + "resourcequotas/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "discovery.k8s.io" + ], + "resources": [ + "endpointslices" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "controllerrevisions", + "daemonsets", + "daemonsets/status", + "deployments", + "deployments/scale", + "deployments/status", + "replicasets", + "replicasets/scale", + "replicasets/status", + "statefulsets", + "statefulsets/scale", + "statefulsets/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers", + "horizontalpodautoscalers/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs", + "cronjobs/status", + "jobs", + "jobs/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets", + "daemonsets/status", + "deployments", + "deployments/scale", + "deployments/status", + "ingresses", + "ingresses/status", + "networkpolicies", + "replicasets", + "replicasets/scale", + "replicasets/status", + "replicationcontrollers/scale" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets", + "poddisruptionbudgets/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses", + "ingresses/status", + "networkpolicies" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:endpointslicemirroring-controller", + "resourceVersion": "148", + "uid": "e1cc1711-ae42-4658-97a5-24f84df6d899" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "endpoints", + "services" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "services/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "endpoints/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "discovery.k8s.io" + ], + "resources": [ + "endpointslices" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "update" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:30:39Z", + "labels": { + "app.kubernetes.io/component": "kube-rbac-proxy", + "app.kubernetes.io/created-by": "sample-external-issuer", + "app.kubernetes.io/instance": "proxy-role", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "clusterrole", + "app.kubernetes.io/part-of": "sample-external-issuer" + }, + "name": "sample-external-issuer-proxy-role", + "resourceVersion": "846", + "uid": "6a8fb9fa-ee15-4e91-b351-b131d644ead4" + }, + "rules": [ + { + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "tokenreviews" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "subjectaccessreviews" + ], + "verbs": [ + "create" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:auth-delegator", + "resourceVersion": "125", + "uid": "a9e38ef0-42ed-4fb7-b53e-a50eb85b2ab2" + }, + "rules": [ + { + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "tokenreviews" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "subjectaccessreviews" + ], + "verbs": [ + "create" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "system:coredns", + "resourceVersion": "256", + "uid": "814cc257-97bf-4f6e-a773-3e0552761dbb" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "endpoints", + "services", + "pods", + "namespaces" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "discovery.k8s.io" + ], + "resources": [ + "endpointslices" + ], + "verbs": [ + "list", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "projectcontour", + "meta.helm.sh/release-namespace": "projectcontour" + }, + "creationTimestamp": "2025-08-09T06:32:04Z", + "labels": { + "app.kubernetes.io/instance": "projectcontour", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "contour", + "app.kubernetes.io/version": "1.29.1", + "helm.sh/chart": "contour-18.2.4" + }, + "name": "projectcontour-contour", + "resourceVersion": "1415", + "uid": "f38d6b18-b3fb-4094-b8cf-2cdef860e09b" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "create", + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "services" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingressclasses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses/status" + ], + "verbs": [ + "create", + "get", + "update" + ] + }, + { + "apiGroups": [ + "networking.x-k8s.io", + "gateway.networking.k8s.io" + ], + "resources": [ + "gatewayclasses", + "gateways", + "grpcroutes", + "httproutes", + "tcproutes", + "tlsroutes", + "udproutes", + "referencepolicies", + "referencegrants", + "backendtlspolicies" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.x-k8s.io", + "gateway.networking.k8s.io" + ], + "resources": [ + "gatewayclasses/status", + "gateways/status", + "grpcroutes/status", + "httproutes/status", + "tcproutes/status", + "tlsroutes/status", + "udproutes/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "projectcontour.io" + ], + "resources": [ + "contourconfigurations" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "projectcontour.io" + ], + "resources": [ + "contourconfigurations/status" + ], + "verbs": [ + "create", + "get", + "update" + ] + }, + { + "apiGroups": [ + "projectcontour.io" + ], + "resources": [ + "extensionservices" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "projectcontour.io" + ], + "resources": [ + "extensionservices/status" + ], + "verbs": [ + "create", + "get", + "update" + ] + }, + { + "apiGroups": [ + "projectcontour.io" + ], + "resources": [ + "httpproxies", + "tlscertificatedelegations" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "projectcontour.io" + ], + "resources": [ + "httpproxies/status" + ], + "verbs": [ + "create", + "get", + "update" + ] + }, + { + "apiGroups": [ + "discovery.k8s.io" + ], + "resources": [ + "endpointslices" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:certificates.k8s.io:certificatesigningrequests:selfnodeclient", + "resourceVersion": "131", + "uid": "23a0dae6-eb0f-4ed8-9175-f1bfc5002f4d" + }, + "rules": [ + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resources": [ + "certificatesigningrequests/selfnodeclient" + ], + "verbs": [ + "create" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults", + "rbac.authorization.k8s.io/aggregate-to-edit": "true" + }, + "name": "system:aggregate-to-edit", + "resourceVersion": "118", + "uid": "238b229b-360a-4b8b-bd63-5007a8bc0f8f" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/attach", + "pods/exec", + "pods/portforward", + "pods/proxy", + "secrets", + "services/proxy" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ], + "verbs": [ + "impersonate" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods", + "pods/attach", + "pods/exec", + "pods/portforward", + "pods/proxy" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/eviction" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps", + "events", + "persistentvolumeclaims", + "replicationcontrollers", + "replicationcontrollers/scale", + "secrets", + "serviceaccounts", + "services", + "services/proxy" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts/token" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets", + "deployments", + "deployments/rollback", + "deployments/scale", + "replicasets", + "replicasets/scale", + "statefulsets", + "statefulsets/scale" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs", + "jobs" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets", + "deployments", + "deployments/rollback", + "deployments/scale", + "ingresses", + "networkpolicies", + "replicasets", + "replicasets/scale", + "replicationcontrollers/scale" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses", + "networkpolicies" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:30:39Z", + "name": "sample-external-issuer-manager-role", + "resourceVersion": "844", + "uid": "67788166-6629-47b9-9a6e-b628d5564f04" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificaterequests" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificaterequests/status" + ], + "verbs": [ + "get", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "sample-issuer.example.com" + ], + "resources": [ + "clusterissuers", + "issuers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "sample-issuer.example.com" + ], + "resources": [ + "clusterissuers/status", + "issuers/status" + ], + "verbs": [ + "get", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:kube-aggregator", + "resourceVersion": "126", + "uid": "b63836e0-153d-46ed-9a0d-50035bd52599" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "endpoints", + "services" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:job-controller", + "resourceVersion": "153", + "uid": "a463c2b7-7c63-4dee-90cf-0723472b3bb3" + }, + "rules": [ + { + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ], + "verbs": [ + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "create", + "delete", + "list", + "patch", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:resourcequota-controller", + "resourceVersion": "160", + "uid": "b4e1a20b-314c-4b45-a685-0cc8c5f520fb" + }, + "rules": [ + { + "apiGroups": [ + "*" + ], + "resources": [ + "*" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "resourcequotas/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:kube-dns", + "resourceVersion": "128", + "uid": "ecb79ae7-1cfb-4bc9-a116-d500fc7f4863" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "endpoints", + "services" + ], + "verbs": [ + "list", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:certificates.k8s.io:kubelet-serving-approver", + "resourceVersion": "134", + "uid": "9ffe0b54-75d3-4d19-b0e9-dc8602156645" + }, + "rules": [ + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resourceNames": [ + "kubernetes.io/kubelet-serving" + ], + "resources": [ + "signers" + ], + "verbs": [ + "approve" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:disruption-controller", + "resourceVersion": "145", + "uid": "2aee33b4-4216-45bd-afca-59c21f9a8d41" + }, + "rules": [ + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "deployments" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "replicasets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ], + "verbs": [ + "patch", + "update" + ] + }, + { + "apiGroups": [ + "*" + ], + "resources": [ + "*/scale" + ], + "verbs": [ + "get" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:legacy-service-account-token-cleaner", + "resourceVersion": "172", + "uid": "f912e505-d431-4ab3-a02e-422df71ca1ca" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resourceNames": [ + "kube-apiserver-legacy-service-account-token-tracking" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "get" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "delete", + "patch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:service-account-issuer-discovery", + "resourceVersion": "137", + "uid": "c362b375-2991-44f8-9d8d-b2b5995a6d7e" + }, + "rules": [ + { + "nonResourceURLs": [ + "/.well-known/openid-configuration", + "/.well-known/openid-configuration/", + "/openid/v1/jwks", + "/openid/v1/jwks/" + ], + "verbs": [ + "get" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:node-controller", + "resourceVersion": "155", + "uid": "f25dc654-fece-4f19-97fe-728c671cf62c" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "delete", + "get", + "list", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes/status" + ], + "verbs": [ + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ], + "verbs": [ + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "delete", + "get", + "list" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:namespace-controller", + "resourceVersion": "154", + "uid": "67982a4f-51c6-476d-826b-b529bc6b2f01" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ], + "verbs": [ + "delete", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "namespaces/finalize", + "namespaces/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "*" + ], + "resources": [ + "*" + ], + "verbs": [ + "delete", + "deletecollection", + "get", + "list" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:route-controller", + "resourceVersion": "161", + "uid": "45149ebf-f182-42d8-98e5-1d00b1138bb9" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes/status" + ], + "verbs": [ + "patch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:pvc-protection-controller", + "resourceVersion": "167", + "uid": "92d10ef9-5709-4606-ac81-d18aaba6ec50" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ], + "verbs": [ + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:node-proxier", + "resourceVersion": "138", + "uid": "6e8fd0a8-6dcd-4fb9-aec7-fe85b6dc0ccf" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "endpoints", + "services" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "discovery.k8s.io" + ], + "resources": [ + "endpointslices" + ], + "verbs": [ + "list", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:replication-controller", + "resourceVersion": "159", + "uid": "b12d8578-8556-4907-a62d-63f34aeac155" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers" + ], + "verbs": [ + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "create", + "delete", + "list", + "patch", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974", + "rbac.authorization.k8s.io/aggregate-to-admin": "true", + "rbac.authorization.k8s.io/aggregate-to-edit": "true" + }, + "name": "cert-manager-edit", + "resourceVersion": "588", + "uid": "2395e9fe-81d2-426b-a958-4cf67b0df1ee" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates", + "certificaterequests", + "issuers" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "challenges", + "orders" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:node", + "resourceVersion": "121", + "uid": "bafa03fc-8f24-4bc1-82ba-3bb6cda49310" + }, + "rules": [ + { + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "tokenreviews" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "localsubjectaccessreviews", + "subjectaccessreviews" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "services" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "create", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes/status" + ], + "verbs": [ + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "create", + "delete" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ], + "verbs": [ + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/eviction" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps", + "secrets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims", + "persistentvolumes" + ], + "verbs": [ + "get" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ], + "verbs": [ + "get" + ] + }, + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resources": [ + "certificatesigningrequests" + ], + "verbs": [ + "create", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "create", + "delete", + "get", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "volumeattachments" + ], + "verbs": [ + "get" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts/token" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims/status" + ], + "verbs": [ + "get", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "csidrivers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "csinodes" + ], + "verbs": [ + "create", + "delete", + "get", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "node.k8s.io" + ], + "resources": [ + "runtimeclasses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:endpointslice-controller", + "resourceVersion": "147", + "uid": "ea97532b-380c-4f38-b24e-630d21124e00" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes", + "pods", + "services" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "services/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "discovery.k8s.io" + ], + "resources": [ + "endpointslices" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "update" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:service-account-controller", + "resourceVersion": "162", + "uid": "de1aa90c-29c5-4093-b52d-d08c15c3f63b" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:node-problem-detector", + "resourceVersion": "122", + "uid": "e48051bc-9113-40d0-8fce-5b3c2919e9f0" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "get" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes/status" + ], + "verbs": [ + "patch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:02Z", + "name": "kindnet", + "resourceVersion": "310", + "uid": "5f70ede2-9170-4a90-8385-555766ccb87e" + }, + "rules": [ + { + "apiGroups": [ + "policy" + ], + "resourceNames": [ + "kindnet" + ], + "resources": [ + "podsecuritypolicies" + ], + "verbs": [ + "use" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes", + "pods", + "namespaces" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "networkpolicies" + ], + "verbs": [ + "list", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:validatingadmissionpolicy-status-controller", + "resourceVersion": "171", + "uid": "89541ad1-519b-4b87-a7f7-e359b555c72a" + }, + "rules": [ + { + "apiGroups": [ + "admissionregistration.k8s.io" + ], + "resources": [ + "validatingadmissionpolicies" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "admissionregistration.k8s.io" + ], + "resources": [ + "validatingadmissionpolicies/status" + ], + "verbs": [ + "get", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:attachdetach-controller", + "resourceVersion": "140", + "uid": "45d49d9a-8530-467e-aec7-53d2b9936926" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims", + "persistentvolumes" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes/status" + ], + "verbs": [ + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "volumeattachments" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "csidrivers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "csinodes" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "cert-manager", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-certificatesigningrequests", + "resourceVersion": "590", + "uid": "5141674e-1834-4ea1-9332-ddc6a407203f" + }, + "rules": [ + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resources": [ + "certificatesigningrequests" + ], + "verbs": [ + "get", + "list", + "watch", + "update" + ] + }, + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resources": [ + "certificatesigningrequests/status" + ], + "verbs": [ + "update", + "patch" + ] + }, + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resourceNames": [ + "issuers.cert-manager.io/*", + "clusterissuers.cert-manager.io/*" + ], + "resources": [ + "signers" + ], + "verbs": [ + "sign" + ] + }, + { + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "subjectaccessreviews" + ], + "verbs": [ + "create" + ] + } + ] + }, + { + "aggregationRule": { + "clusterRoleSelectors": [ + { + "matchLabels": { + "rbac.authorization.k8s.io/aggregate-to-admin": "true" + } + } + ] + }, + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "admin", + "resourceVersion": "616", + "uid": "c2b73b58-8df2-478f-8038-9401025e391e" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates", + "certificaterequests", + "issuers" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "challenges", + "orders" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates", + "certificaterequests", + "issuers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "challenges", + "orders" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/attach", + "pods/exec", + "pods/portforward", + "pods/proxy", + "secrets", + "services/proxy" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ], + "verbs": [ + "impersonate" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods", + "pods/attach", + "pods/exec", + "pods/portforward", + "pods/proxy" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/eviction" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps", + "events", + "persistentvolumeclaims", + "replicationcontrollers", + "replicationcontrollers/scale", + "secrets", + "serviceaccounts", + "services", + "services/proxy" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts/token" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets", + "deployments", + "deployments/rollback", + "deployments/scale", + "replicasets", + "replicasets/scale", + "statefulsets", + "statefulsets/scale" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs", + "jobs" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets", + "deployments", + "deployments/rollback", + "deployments/scale", + "ingresses", + "networkpolicies", + "replicasets", + "replicasets/scale", + "replicationcontrollers/scale" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses", + "networkpolicies" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps", + "endpoints", + "persistentvolumeclaims", + "persistentvolumeclaims/status", + "pods", + "replicationcontrollers", + "replicationcontrollers/scale", + "serviceaccounts", + "services", + "services/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "bindings", + "events", + "limitranges", + "namespaces/status", + "pods/log", + "pods/status", + "replicationcontrollers/status", + "resourcequotas", + "resourcequotas/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "discovery.k8s.io" + ], + "resources": [ + "endpointslices" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "controllerrevisions", + "daemonsets", + "daemonsets/status", + "deployments", + "deployments/scale", + "deployments/status", + "replicasets", + "replicasets/scale", + "replicasets/status", + "statefulsets", + "statefulsets/scale", + "statefulsets/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers", + "horizontalpodautoscalers/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs", + "cronjobs/status", + "jobs", + "jobs/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets", + "daemonsets/status", + "deployments", + "deployments/scale", + "deployments/status", + "ingresses", + "ingresses/status", + "networkpolicies", + "replicasets", + "replicasets/scale", + "replicasets/status", + "replicationcontrollers/scale" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets", + "poddisruptionbudgets/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses", + "ingresses/status", + "networkpolicies" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "localsubjectaccessreviews" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "rolebindings", + "roles" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:cronjob-controller", + "resourceVersion": "142", + "uid": "4b376b8e-d9b1-4d5e-89f8-5af2ada5159a" + }, + "rules": [ + { + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs" + ], + "verbs": [ + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "delete", + "list" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "cert-manager", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-approve:cert-manager-io", + "resourceVersion": "598", + "uid": "9a189eb0-0d74-4cea-aab2-f873ab7b5ec2" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resourceNames": [ + "issuers.cert-manager.io/*", + "clusterissuers.cert-manager.io/*" + ], + "resources": [ + "signers" + ], + "verbs": [ + "approve" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:node-bootstrapper", + "resourceVersion": "124", + "uid": "ac540e82-9a48-4546-9def-04851fc8c05b" + }, + "rules": [ + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resources": [ + "certificatesigningrequests" + ], + "verbs": [ + "create", + "get", + "list", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:endpoint-controller", + "resourceVersion": "146", + "uid": "ff9e722f-92e8-42c4-a4db-77937925d5a7" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "pods", + "services" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "endpoints/restricted" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cainjector", + "app.kubernetes.io/component": "cainjector", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cainjector", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-cainjector", + "resourceVersion": "596", + "uid": "f2064832-1d75-4544-9332-9ed32647b029" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "get", + "create", + "update", + "patch" + ] + }, + { + "apiGroups": [ + "admissionregistration.k8s.io" + ], + "resources": [ + "validatingwebhookconfigurations", + "mutatingwebhookconfigurations" + ], + "verbs": [ + "get", + "list", + "watch", + "update", + "patch" + ] + }, + { + "apiGroups": [ + "apiregistration.k8s.io" + ], + "resources": [ + "apiservices" + ], + "verbs": [ + "get", + "list", + "watch", + "update", + "patch" + ] + }, + { + "apiGroups": [ + "apiextensions.k8s.io" + ], + "resources": [ + "customresourcedefinitions" + ], + "verbs": [ + "get", + "list", + "watch", + "update", + "patch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:30:39Z", + "name": "sample-external-issuer-cert-manager-controller-approve:sample-issuer-example-com", + "resourceVersion": "843", + "uid": "c3fde9b8-4bb8-4920-99db-fdb9efc98596" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resourceNames": [ + "issuers.sample-issuer.example.com/*", + "clusterissuers.sample-issuer.example.com/*" + ], + "resources": [ + "signers" + ], + "verbs": [ + "approve" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-ingress-shim", + "resourceVersion": "586", + "uid": "83aee888-fba3-4d21-b590-b7027688c215" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates", + "certificaterequests" + ], + "verbs": [ + "create", + "update", + "delete" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates", + "certificaterequests", + "issuers", + "clusterissuers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "gateway.networking.k8s.io" + ], + "resources": [ + "gateways", + "httproutes" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "gateway.networking.k8s.io" + ], + "resources": [ + "gateways/finalizers", + "httproutes/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:certificate-controller", + "resourceVersion": "166", + "uid": "b6b9e887-c27e-4dfb-894b-df57e0a26f47" + }, + "rules": [ + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resources": [ + "certificatesigningrequests" + ], + "verbs": [ + "delete", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resources": [ + "certificatesigningrequests/approval", + "certificatesigningrequests/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resourceNames": [ + "kubernetes.io/kube-apiserver-client-kubelet" + ], + "resources": [ + "signers" + ], + "verbs": [ + "approve" + ] + }, + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resourceNames": [ + "kubernetes.io/kube-apiserver-client", + "kubernetes.io/kube-apiserver-client-kubelet", + "kubernetes.io/kubelet-serving", + "kubernetes.io/legacy-unknown" + ], + "resources": [ + "signers" + ], + "verbs": [ + "sign" + ] + }, + { + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "subjectaccessreviews" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:certificates.k8s.io:certificatesigningrequests:nodeclient", + "resourceVersion": "130", + "uid": "88045c5f-c71c-4282-a05e-35f30cd500ef" + }, + "rules": [ + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resources": [ + "certificatesigningrequests/nodeclient" + ], + "verbs": [ + "create" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:certificates.k8s.io:legacy-unknown-approver", + "resourceVersion": "133", + "uid": "80ebb3a0-98e6-4f98-80f9-5066c7ae3ea2" + }, + "rules": [ + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resourceNames": [ + "kubernetes.io/legacy-unknown" + ], + "resources": [ + "signers" + ], + "verbs": [ + "approve" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:public-info-viewer", + "resourceVersion": "113", + "uid": "16e4f281-de96-476f-8fbe-c729ddf5567f" + }, + "rules": [ + { + "nonResourceURLs": [ + "/healthz", + "/livez", + "/readyz", + "/version", + "/version/" + ], + "verbs": [ + "get" + ] + } + ] + }, + { + "aggregationRule": { + "clusterRoleSelectors": [ + { + "matchLabels": { + "rbac.authorization.k8s.io/aggregate-to-view": "true" + } + } + ] + }, + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults", + "rbac.authorization.k8s.io/aggregate-to-edit": "true" + }, + "name": "view", + "resourceVersion": "610", + "uid": "73da5e97-b87d-4acf-aae6-27ffbaecb312" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates", + "certificaterequests", + "issuers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "challenges", + "orders" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps", + "endpoints", + "persistentvolumeclaims", + "persistentvolumeclaims/status", + "pods", + "replicationcontrollers", + "replicationcontrollers/scale", + "serviceaccounts", + "services", + "services/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "bindings", + "events", + "limitranges", + "namespaces/status", + "pods/log", + "pods/status", + "replicationcontrollers/status", + "resourcequotas", + "resourcequotas/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "discovery.k8s.io" + ], + "resources": [ + "endpointslices" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "controllerrevisions", + "daemonsets", + "daemonsets/status", + "deployments", + "deployments/scale", + "deployments/status", + "replicasets", + "replicasets/scale", + "replicasets/status", + "statefulsets", + "statefulsets/scale", + "statefulsets/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers", + "horizontalpodautoscalers/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs", + "cronjobs/status", + "jobs", + "jobs/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets", + "daemonsets/status", + "deployments", + "deployments/scale", + "deployments/status", + "ingresses", + "ingresses/status", + "networkpolicies", + "replicasets", + "replicasets/scale", + "replicasets/status", + "replicationcontrollers/scale" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets", + "poddisruptionbudgets/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses", + "ingresses/status", + "networkpolicies" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974", + "rbac.authorization.k8s.io/aggregate-to-admin": "true", + "rbac.authorization.k8s.io/aggregate-to-cluster-reader": "true", + "rbac.authorization.k8s.io/aggregate-to-edit": "true", + "rbac.authorization.k8s.io/aggregate-to-view": "true" + }, + "name": "cert-manager-view", + "resourceVersion": "594", + "uid": "6da502e4-445b-4700-8efe-f523c918440a" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates", + "certificaterequests", + "issuers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "challenges", + "orders" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:statefulset-controller", + "resourceVersion": "164", + "uid": "6d120614-a05f-4d00-8dc6-b88db6543dfa" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "create", + "delete", + "get", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "controllerrevisions" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ], + "verbs": [ + "create", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ], + "verbs": [ + "delete", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/finalizers" + ], + "verbs": [ + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:persistent-volume-provisioner", + "resourceVersion": "129", + "uid": "8ccf78da-6e95-4a9c-8c09-3d0d030ca282" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumes" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ], + "verbs": [ + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "aggregationRule": { + "clusterRoleSelectors": [ + { + "matchLabels": { + "rbac.authorization.k8s.io/aggregate-to-edit": "true" + } + } + ] + }, + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults", + "rbac.authorization.k8s.io/aggregate-to-admin": "true" + }, + "name": "edit", + "resourceVersion": "620", + "uid": "be24d67c-e79d-4e7d-a8cb-042f43358e7b" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates", + "certificaterequests", + "issuers" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "challenges", + "orders" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates", + "certificaterequests", + "issuers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "challenges", + "orders" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/attach", + "pods/exec", + "pods/portforward", + "pods/proxy", + "secrets", + "services/proxy" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts" + ], + "verbs": [ + "impersonate" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods", + "pods/attach", + "pods/exec", + "pods/portforward", + "pods/proxy" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/eviction" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps", + "events", + "persistentvolumeclaims", + "replicationcontrollers", + "replicationcontrollers/scale", + "secrets", + "serviceaccounts", + "services", + "services/proxy" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "serviceaccounts/token" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "daemonsets", + "deployments", + "deployments/rollback", + "deployments/scale", + "replicasets", + "replicasets/scale", + "statefulsets", + "statefulsets/scale" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs", + "jobs" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets", + "deployments", + "deployments/rollback", + "deployments/scale", + "ingresses", + "networkpolicies", + "replicasets", + "replicasets/scale", + "replicationcontrollers/scale" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses", + "networkpolicies" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps", + "endpoints", + "persistentvolumeclaims", + "persistentvolumeclaims/status", + "pods", + "replicationcontrollers", + "replicationcontrollers/scale", + "serviceaccounts", + "services", + "services/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "bindings", + "events", + "limitranges", + "namespaces/status", + "pods/log", + "pods/status", + "replicationcontrollers/status", + "resourcequotas", + "resourcequotas/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "discovery.k8s.io" + ], + "resources": [ + "endpointslices" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "controllerrevisions", + "daemonsets", + "daemonsets/status", + "deployments", + "deployments/scale", + "deployments/status", + "replicasets", + "replicasets/scale", + "replicasets/status", + "statefulsets", + "statefulsets/scale", + "statefulsets/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers", + "horizontalpodautoscalers/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "batch" + ], + "resources": [ + "cronjobs", + "cronjobs/status", + "jobs", + "jobs/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "extensions" + ], + "resources": [ + "daemonsets", + "daemonsets/status", + "deployments", + "deployments/scale", + "deployments/status", + "ingresses", + "ingresses/status", + "networkpolicies", + "replicasets", + "replicasets/scale", + "replicasets/status", + "replicationcontrollers/scale" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets", + "poddisruptionbudgets/status" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses", + "ingresses/status", + "networkpolicies" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:basic-user", + "resourceVersion": "112", + "uid": "a14ff149-adb1-4507-8962-e13f00a58d00" + }, + "rules": [ + { + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "selfsubjectaccessreviews", + "selfsubjectrulesreviews" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "selfsubjectreviews" + ], + "verbs": [ + "create" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:persistent-volume-binder", + "resourceVersion": "156", + "uid": "d4d42ee8-2af3-4a95-816c-a1a348132d94" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumes" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumes/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ], + "verbs": [ + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "endpoints" + ], + "verbs": [ + "create", + "delete", + "get", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "services" + ], + "verbs": [ + "create", + "delete", + "get" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "get", + "list" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-certificates", + "resourceVersion": "593", + "uid": "8f14327a-9850-4108-81bd-f4b77f93b80c" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates", + "certificates/status", + "certificaterequests", + "certificaterequests/status" + ], + "verbs": [ + "update", + "patch" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates", + "certificaterequests", + "clusterissuers", + "issuers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "certificates/finalizers", + "certificaterequests/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "orders" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get", + "list", + "watch", + "create", + "update", + "delete", + "patch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:horizontal-pod-autoscaler", + "resourceVersion": "152", + "uid": "4ba85837-e685-478c-b566-0e892a75d3e1" + }, + "rules": [ + { + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "autoscaling" + ], + "resources": [ + "horizontalpodautoscalers/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "*" + ], + "resources": [ + "*/scale" + ], + "verbs": [ + "get", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "list" + ] + }, + { + "apiGroups": [ + "metrics.k8s.io" + ], + "resources": [ + "pods" + ], + "verbs": [ + "list" + ] + }, + { + "apiGroups": [ + "custom.metrics.k8s.io" + ], + "resources": [ + "*" + ], + "verbs": [ + "get", + "list" + ] + }, + { + "apiGroups": [ + "external.metrics.k8s.io" + ], + "resources": [ + "*" + ], + "verbs": [ + "get", + "list" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-orders", + "resourceVersion": "597", + "uid": "7d26c4d8-9442-4056-93b8-eb7f4dbb9535" + }, + "rules": [ + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "orders", + "orders/status" + ], + "verbs": [ + "update", + "patch" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "orders", + "challenges" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "clusterissuers", + "issuers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "challenges" + ], + "verbs": [ + "create", + "delete" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "orders/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:clusterrole-aggregation-controller", + "resourceVersion": "141", + "uid": "0d6df463-717b-4065-9073-734e8ee780b9" + }, + "rules": [ + { + "apiGroups": [ + "rbac.authorization.k8s.io" + ], + "resources": [ + "clusterroles" + ], + "verbs": [ + "escalate", + "get", + "list", + "patch", + "update", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "ingress-nginx", + "meta.helm.sh/release-namespace": "ingress-nginx" + }, + "creationTimestamp": "2025-08-09T06:31:23Z", + "labels": { + "app.kubernetes.io/instance": "ingress-nginx", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "ingress-nginx", + "app.kubernetes.io/part-of": "ingress-nginx", + "app.kubernetes.io/version": "1.12.3", + "helm.sh/chart": "ingress-nginx-4.12.3" + }, + "name": "ingress-nginx", + "resourceVersion": "1194", + "uid": "6cd55240-506f-40fe-bebe-c452853742eb" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps", + "endpoints", + "nodes", + "pods", + "secrets", + "namespaces" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "get" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "services" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingressclasses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "discovery.k8s.io" + ], + "resources": [ + "endpointslices" + ], + "verbs": [ + "list", + "watch", + "get" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:kube-scheduler", + "resourceVersion": "139", + "uid": "f97e70e6-8c05-406e-9763-fd557dc114bc" + }, + "rules": [ + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leases" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resourceNames": [ + "kube-scheduler" + ], + "resources": [ + "leases" + ], + "verbs": [ + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "coordination.k8s.io" + ], + "resources": [ + "leasecandidates" + ], + "verbs": [ + "create", + "delete", + "deletecollection", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "delete", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "bindings", + "pods/binding" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/status" + ], + "verbs": [ + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "replicationcontrollers", + "services" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "replicasets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "statefulsets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "policy" + ], + "resources": [ + "poddisruptionbudgets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims", + "persistentvolumes" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "authentication.k8s.io" + ], + "resources": [ + "tokenreviews" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "subjectaccessreviews" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "csinodes" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "namespaces" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "csidrivers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "csistoragecapacities" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:pv-protection-controller", + "resourceVersion": "168", + "uid": "03ed1e20-f61f-41ac-a4b5-18d6f3b84a6b" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumes" + ], + "verbs": [ + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "kubeadm:get-nodes", + "resourceVersion": "247", + "uid": "d6b76c09-6aea-454f-9b93-11f8e9499e9d" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "get" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:volume-scheduler", + "resourceVersion": "132", + "uid": "d61ef472-a5a4-4686-8f9a-6d5bc5466aab" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumes" + ], + "verbs": [ + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ], + "verbs": [ + "get", + "list", + "patch", + "update", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-issuers", + "resourceVersion": "589", + "uid": "e957b2e6-f760-4f23-88f7-ae841a9ea43e" + }, + "rules": [ + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "issuers", + "issuers/status" + ], + "verbs": [ + "update", + "patch" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "issuers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get", + "list", + "watch", + "create", + "update", + "delete" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:daemon-set-controller", + "resourceVersion": "143", + "uid": "6a4e200c-094c-44b6-a4b4-81d5649533e8" + }, + "rules": [ + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "daemonsets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "daemonsets/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "daemonsets/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "create", + "delete", + "list", + "patch", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/binding" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "apps" + ], + "resources": [ + "controllerrevisions" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:service-controller", + "resourceVersion": "163", + "uid": "d71b1daf-4aea-4d77-b842-4b80c6447512" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "services" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "services/status" + ], + "verbs": [ + "patch", + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "list", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:generic-garbage-collector", + "resourceVersion": "151", + "uid": "eb8df5c3-a89f-4dcd-a7af-465232f772eb" + }, + "rules": [ + { + "apiGroups": [ + "*" + ], + "resources": [ + "*" + ], + "verbs": [ + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:ttl-controller", + "resourceVersion": "165", + "uid": "4fca7ebe-fd4e-4ca2-83c5-c0586561b8cf" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes" + ], + "verbs": [ + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:discovery", + "resourceVersion": "110", + "uid": "ed36029a-be42-40f3-8669-85d462c02897" + }, + "rules": [ + { + "nonResourceURLs": [ + "/api", + "/api/*", + "/apis", + "/apis/*", + "/healthz", + "/livez", + "/openapi", + "/openapi/*", + "/readyz", + "/version", + "/version/" + ], + "verbs": [ + "get" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "samplewebhook", + "meta.helm.sh/release-namespace": "samplewebhook" + }, + "creationTimestamp": "2025-08-09T06:30:45Z", + "labels": { + "app": "example-webhook", + "app.kubernetes.io/managed-by": "Helm", + "chart": "example-webhook-0.1.0", + "heritage": "Helm", + "release": "samplewebhook" + }, + "name": "samplewebhook-example-webhook:domain-solver", + "resourceVersion": "899", + "uid": "ff915b09-c8f8-4420-bd24-1667e523af48" + }, + "rules": [ + { + "apiGroups": [ + "acme.testing.cert-manager.io" + ], + "resources": [ + "*" + ], + "verbs": [ + "create" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:ephemeral-volume-controller", + "resourceVersion": "150", + "uid": "3000a5a9-43b1-4ff8-b771-066ada94ddfa" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumeclaims" + ], + "verbs": [ + "create", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "cluster-admin", + "resourceVersion": "109", + "uid": "ff61c7c7-aa4a-4382-a3ae-21e5d744614e" + }, + "rules": [ + { + "apiGroups": [ + "*" + ], + "resources": [ + "*" + ], + "verbs": [ + "*" + ] + }, + { + "nonResourceURLs": [ + "*" + ], + "verbs": [ + "*" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:replicaset-controller", + "resourceVersion": "158", + "uid": "61798f94-82ac-4c42-8697-57f21d650701" + }, + "rules": [ + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "replicasets" + ], + "verbs": [ + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "replicasets/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "replicasets/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "create", + "delete", + "list", + "patch", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "webhook", + "app.kubernetes.io/component": "webhook", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "webhook", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-webhook:subjectaccessreviews", + "resourceVersion": "592", + "uid": "1ca5215f-1b4b-4911-af27-d46b2bc4f5fe" + }, + "rules": [ + { + "apiGroups": [ + "authorization.k8s.io" + ], + "resources": [ + "subjectaccessreviews" + ], + "verbs": [ + "create" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:root-ca-cert-publisher", + "resourceVersion": "170", + "uid": "be33575f-62dc-451f-8f80-abccae412771" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "configmaps" + ], + "verbs": [ + "create", + "update" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-challenges", + "resourceVersion": "587", + "uid": "b8e5bd37-0a32-49da-a9df-6d768b1af0b7" + }, + "rules": [ + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "challenges", + "challenges/status" + ], + "verbs": [ + "update", + "patch" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "challenges" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "cert-manager.io" + ], + "resources": [ + "issuers", + "clusterissuers" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods", + "services" + ], + "verbs": [ + "get", + "list", + "watch", + "create", + "delete" + ] + }, + { + "apiGroups": [ + "networking.k8s.io" + ], + "resources": [ + "ingresses" + ], + "verbs": [ + "get", + "list", + "watch", + "create", + "delete", + "update" + ] + }, + { + "apiGroups": [ + "gateway.networking.k8s.io" + ], + "resources": [ + "httproutes" + ], + "verbs": [ + "get", + "list", + "watch", + "create", + "delete", + "update" + ] + }, + { + "apiGroups": [ + "route.openshift.io" + ], + "resources": [ + "routes/custom-host" + ], + "verbs": [ + "create" + ] + }, + { + "apiGroups": [ + "acme.cert-manager.io" + ], + "resources": [ + "challenges/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "secrets" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:deployment-controller", + "resourceVersion": "144", + "uid": "9165c9d4-0dfc-4a04-b7bf-0155a4f863a0" + }, + "rules": [ + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "deployments" + ], + "verbs": [ + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "deployments/status" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "deployments/finalizers" + ], + "verbs": [ + "update" + ] + }, + { + "apiGroups": [ + "apps", + "extensions" + ], + "resources": [ + "replicasets" + ], + "verbs": [ + "create", + "delete", + "get", + "list", + "patch", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "pods" + ], + "verbs": [ + "get", + "list", + "update", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:58Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:certificates.k8s.io:kube-apiserver-client-approver", + "resourceVersion": "135", + "uid": "e04371c2-d6e0-4f16-96bb-6ef10a2ea711" + }, + "rules": [ + { + "apiGroups": [ + "certificates.k8s.io" + ], + "resourceNames": [ + "kubernetes.io/kube-apiserver-client" + ], + "resources": [ + "signers" + ], + "verbs": [ + "approve" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:ttl-after-finished-controller", + "resourceVersion": "169", + "uid": "353d8dc9-f732-418d-8c0f-0316550bbc0f" + }, + "rules": [ + { + "apiGroups": [ + "batch" + ], + "resources": [ + "jobs" + ], + "verbs": [ + "delete", + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "", + "events.k8s.io" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch", + "update" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:29:03Z", + "name": "local-path-provisioner-role", + "resourceVersion": "324", + "uid": "76f794b4-a981-4120-b24c-d48b9b4b2326" + }, + "rules": [ + { + "apiGroups": [ + "" + ], + "resources": [ + "nodes", + "persistentvolumeclaims", + "configmaps", + "pods", + "pods/log" + ], + "verbs": [ + "get", + "list", + "watch" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "persistentvolumes" + ], + "verbs": [ + "get", + "list", + "watch", + "create", + "patch", + "update", + "delete" + ] + }, + { + "apiGroups": [ + "" + ], + "resources": [ + "events" + ], + "verbs": [ + "create", + "patch" + ] + }, + { + "apiGroups": [ + "storage.k8s.io" + ], + "resources": [ + "storageclasses" + ], + "verbs": [ + "get", + "list", + "watch" + ] + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRole", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:30:39Z", + "labels": { + "app.kubernetes.io/component": "kube-rbac-proxy", + "app.kubernetes.io/created-by": "sample-external-issuer", + "app.kubernetes.io/instance": "metrics-reader", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "clusterrole", + "app.kubernetes.io/part-of": "sample-external-issuer" + }, + "name": "sample-external-issuer-metrics-reader", + "resourceVersion": "845", + "uid": "222bd5fb-16b4-45df-82fe-fcde5a7d12ef" + }, + "rules": [ + { + "nonResourceURLs": [ + "/metrics" + ], + "verbs": [ + "get" + ] + } + ] + } + ], + "role_bindings": [ + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system::leader-locking-kube-scheduler", + "namespace": "kube-system", + "resourceVersion": "227", + "uid": "8bbb36aa-fcb7-4b82-ae97-84268211a5b2" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "system::leader-locking-kube-scheduler" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "User", + "name": "system:kube-scheduler" + }, + { + "kind": "ServiceAccount", + "name": "kube-scheduler", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:01Z", + "name": "kube-proxy", + "namespace": "kube-system", + "resourceVersion": "291", + "uid": "34fa3319-024e-4c1d-a219-0ebf57090837" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "kube-proxy" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:bootstrappers:kubeadm:default-node-token" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "samplewebhook", + "meta.helm.sh/release-namespace": "samplewebhook" + }, + "creationTimestamp": "2025-08-09T06:30:45Z", + "labels": { + "app": "example-webhook", + "app.kubernetes.io/managed-by": "Helm", + "chart": "example-webhook-0.1.0", + "heritage": "Helm", + "release": "samplewebhook" + }, + "name": "samplewebhook-example-webhook:webhook-authentication-reader", + "namespace": "kube-system", + "resourceVersion": "903", + "uid": "abb94dcb-1ab4-48d1-9c4c-1ade9f90247e" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "samplewebhook-example-webhook:webhook-authentication-reader" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "samplewebhook-example-webhook", + "namespace": "samplewebhook" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "kubeadm:kubelet-config", + "namespace": "kube-system", + "resourceVersion": "243", + "uid": "4ddfc123-eef3-4e72-a7e7-934c9af5e5f6" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "kubeadm:kubelet-config" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:nodes" + }, + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:bootstrappers:kubeadm:default-node-token" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cainjector", + "app.kubernetes.io/component": "cainjector", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cainjector", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-cainjector:leaderelection", + "namespace": "kube-system", + "resourceVersion": "619", + "uid": "97c0ac25-5dae-4584-85b3-4afa2a3bc4bc" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "cert-manager-cainjector:leaderelection" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager-cainjector", + "namespace": "cert-manager" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system::leader-locking-kube-controller-manager", + "namespace": "kube-system", + "resourceVersion": "226", + "uid": "3902fafd-36ae-44cd-9d29-2c6181302306" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "system::leader-locking-kube-controller-manager" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "User", + "name": "system:kube-controller-manager" + }, + { + "kind": "ServiceAccount", + "name": "kube-controller-manager", + "namespace": "kube-system" + }, + { + "kind": "ServiceAccount", + "name": "leader-election-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:token-cleaner", + "namespace": "kube-system", + "resourceVersion": "230", + "uid": "c2c8109f-6723-4e22-886e-961824943636" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "system:controller:token-cleaner" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "token-cleaner", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "ingress-nginx", + "meta.helm.sh/release-namespace": "ingress-nginx" + }, + "creationTimestamp": "2025-08-09T06:31:23Z", + "labels": { + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "ingress-nginx", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "ingress-nginx", + "app.kubernetes.io/part-of": "ingress-nginx", + "app.kubernetes.io/version": "1.12.3", + "helm.sh/chart": "ingress-nginx-4.12.3" + }, + "name": "ingress-nginx", + "namespace": "ingress-nginx", + "resourceVersion": "1197", + "uid": "cb338012-14ca-44d6-8ddc-893af9c8d757" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "ingress-nginx" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "ingress-nginx", + "namespace": "ingress-nginx" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:cloud-provider", + "namespace": "kube-system", + "resourceVersion": "229", + "uid": "3f4bd4d9-a3a4-448d-af17-affef7e89451" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "system:controller:cloud-provider" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cloud-provider", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:bootstrap-signer", + "namespace": "kube-public", + "resourceVersion": "231", + "uid": "34e79bed-6f95-4658-8b18-72200b5e70c0" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "system:controller:bootstrap-signer" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "bootstrap-signer", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:bootstrap-signer", + "namespace": "kube-system", + "resourceVersion": "228", + "uid": "1ac2aab9-0b3e-4684-b998-e595097c0091" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "system:controller:bootstrap-signer" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "bootstrap-signer", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "kubeadm:bootstrap-signer-clusterinfo", + "namespace": "kube-public", + "resourceVersion": "254", + "uid": "c7b1fc57-ff87-4b2d-8ea0-8a31f9f5a536" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "kubeadm:bootstrap-signer-clusterinfo" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "User", + "name": "system:anonymous" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:29:03Z", + "name": "local-path-provisioner-bind", + "namespace": "local-path-storage", + "resourceVersion": "325", + "uid": "76a121ce-6a6b-4efd-afa0-a74d754148df" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "local-path-provisioner-role" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "local-path-provisioner-service-account", + "namespace": "local-path-storage" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:30:39Z", + "labels": { + "app.kubernetes.io/component": "rbac", + "app.kubernetes.io/created-by": "sample-external-issuer", + "app.kubernetes.io/instance": "leader-election-rolebinding", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "rolebinding", + "app.kubernetes.io/part-of": "sample-external-issuer" + }, + "name": "sample-external-issuer-leader-election-rolebinding", + "namespace": "sample-external-issuer-system", + "resourceVersion": "847", + "uid": "6c65d429-9003-417f-bf6b-e2c017f00ddd" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "sample-external-issuer-leader-election-role" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "sample-external-issuer-controller-manager", + "namespace": "sample-external-issuer-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager:leaderelection", + "namespace": "kube-system", + "resourceVersion": "621", + "uid": "909cc32e-5be0-4a0f-af52-e3be82754850" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "cert-manager:leaderelection" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager", + "namespace": "cert-manager" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system::extension-apiserver-authentication-reader", + "namespace": "kube-system", + "resourceVersion": "225", + "uid": "8289c4c4-acd4-4cad-a66b-cbb61ee74c11" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "extension-apiserver-authentication-reader" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "User", + "name": "system:kube-controller-manager" + }, + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "User", + "name": "system:kube-scheduler" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-cert-manager-tokenrequest", + "namespace": "cert-manager", + "resourceVersion": "617", + "uid": "03d85ac9-7a41-4532-8441-d8e044270803" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "cert-manager-tokenrequest" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager", + "namespace": "cert-manager" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "projectcontour", + "meta.helm.sh/release-namespace": "projectcontour" + }, + "creationTimestamp": "2025-08-09T06:32:04Z", + "labels": { + "app.kubernetes.io/instance": "projectcontour", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "contour", + "app.kubernetes.io/version": "1.29.1", + "helm.sh/chart": "contour-18.2.4" + }, + "name": "projectcontour-contour-role", + "namespace": "projectcontour", + "resourceVersion": "1419", + "uid": "8dd91576-3e4e-454c-8909-688be31b2a03" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "projectcontour-contour" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "projectcontour-contour", + "namespace": "projectcontour" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "creationTimestamp": "2025-08-09T06:28:59Z", + "name": "kubeadm:nodes-kubeadm-config", + "namespace": "kube-system", + "resourceVersion": "240", + "uid": "ad02e9c2-89b1-470d-9dfe-0a6dd1999854" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "kubeadm:nodes-kubeadm-config" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:bootstrappers:kubeadm:default-node-token" + }, + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:nodes" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "webhook", + "app.kubernetes.io/component": "webhook", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "webhook", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-webhook:dynamic-serving", + "namespace": "cert-manager", + "resourceVersion": "618", + "uid": "ceb24b6d-a933-4eff-a089-b7d6a2306c92" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "cert-manager-webhook:dynamic-serving" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager-webhook", + "namespace": "cert-manager" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:pod-garbage-collector", + "resourceVersion": "202", + "uid": "fe5028a6-8195-470f-841e-5d2a8db6a786" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:pod-garbage-collector" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "pod-garbage-collector", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "creationTimestamp": "2025-08-09T06:28:59Z", + "name": "kubeadm:cluster-admins", + "resourceVersion": "237", + "uid": "85cc78c6-654f-4b0c-babe-377a3db8fcfa" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "cluster-admin" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "kubeadm:cluster-admins" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:attachdetach-controller", + "resourceVersion": "185", + "uid": "b6ca9cf8-4996-47b3-b9d7-3cebcbd58f70" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:attachdetach-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "attachdetach-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:node-controller", + "resourceVersion": "200", + "uid": "a0922559-5c6d-4e8b-82a7-678603176409" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:node-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "node-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-clusterissuers", + "resourceVersion": "609", + "uid": "1bc56c34-5f3f-4a3e-83fa-5525f9f40fec" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "cert-manager-controller-clusterissuers" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager", + "namespace": "cert-manager" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:node-proxier", + "resourceVersion": "178", + "uid": "fbad939a-acbd-417b-a31f-5cb6ecc4f131" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:node-proxier" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "User", + "name": "system:kube-proxy" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cainjector", + "app.kubernetes.io/component": "cainjector", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cainjector", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-cainjector", + "resourceVersion": "601", + "uid": "7c420237-2b76-475d-96a2-b153be3496ff" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "cert-manager-cainjector" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager-cainjector", + "namespace": "cert-manager" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-orders", + "resourceVersion": "603", + "uid": "95d567e9-796f-4c86-be47-dd7a73f6a63d" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "cert-manager-controller-orders" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager", + "namespace": "cert-manager" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "kubeadm:get-nodes", + "resourceVersion": "248", + "uid": "fd7b89a8-7bb0-4375-a07e-b43736a1d939" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "kubeadm:get-nodes" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:bootstrappers:kubeadm:default-node-token" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:cronjob-controller", + "resourceVersion": "187", + "uid": "79548780-1935-425d-a749-5da64c892aed" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:cronjob-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cronjob-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:node", + "resourceVersion": "183", + "uid": "718931df-e190-4859-ad58-edf1efbd043b" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:node" + } + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:ttl-controller", + "resourceVersion": "210", + "uid": "0169888d-3e73-4ff6-9a86-2ac14ab58f2a" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:ttl-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "ttl-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:generic-garbage-collector", + "resourceVersion": "196", + "uid": "37819522-7231-4c86-85dc-9c5600b6aa25" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:generic-garbage-collector" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "generic-garbage-collector", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:legacy-service-account-token-cleaner", + "resourceVersion": "217", + "uid": "0e02ba77-077f-4e9a-b2fc-ab11dc2ff9e1" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:legacy-service-account-token-cleaner" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "legacy-service-account-token-cleaner", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:kube-controller-manager", + "resourceVersion": "179", + "uid": "152ea945-8dfc-4d24-aa6b-90cce9a254c2" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:kube-controller-manager" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "User", + "name": "system:kube-controller-manager" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "samplewebhook", + "meta.helm.sh/release-namespace": "samplewebhook" + }, + "creationTimestamp": "2025-08-09T06:30:45Z", + "labels": { + "app": "example-webhook", + "app.kubernetes.io/managed-by": "Helm", + "chart": "example-webhook-0.1.0", + "heritage": "Helm", + "release": "samplewebhook" + }, + "name": "samplewebhook-example-webhook:auth-delegator", + "resourceVersion": "901", + "uid": "903bb45e-bbc8-4f98-9d6f-5c587e943241" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:auth-delegator" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "samplewebhook-example-webhook", + "namespace": "samplewebhook" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "system:coredns", + "resourceVersion": "257", + "uid": "3530acfa-ca74-459c-b2c4-8c0f47de3bae" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:coredns" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "coredns", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:statefulset-controller", + "resourceVersion": "209", + "uid": "09def9da-cbb5-46bf-acc6-59f67f2c0a98" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:statefulset-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "statefulset-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:persistent-volume-binder", + "resourceVersion": "201", + "uid": "b68a746a-6224-4354-8704-7b3b868182cd" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:persistent-volume-binder" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "persistent-volume-binder", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-issuers", + "resourceVersion": "605", + "uid": "ee388fbe-180c-4365-a9e4-94a8e2a1deb9" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "cert-manager-controller-issuers" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager", + "namespace": "cert-manager" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "kubeadm:node-autoapprove-certificate-rotation", + "resourceVersion": "251", + "uid": "703634e9-2423-4475-bdff-ed3ca668dab4" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:certificates.k8s.io:certificatesigningrequests:selfnodeclient" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:nodes" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:service-controller", + "resourceVersion": "208", + "uid": "7ff2b5a1-2f4c-4f58-84cf-6ee6155f1d2c" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:service-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "service-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-ingress-shim", + "resourceVersion": "607", + "uid": "a4b43b76-3a0a-4e96-a808-d642863e8261" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "cert-manager-controller-ingress-shim" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager", + "namespace": "cert-manager" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:endpointslice-controller", + "resourceVersion": "192", + "uid": "78a0d9cb-ada8-46e1-a182-91b633f81c06" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:endpointslice-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "endpointslice-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:root-ca-cert-publisher", + "resourceVersion": "215", + "uid": "a80475af-9ad3-4996-84b2-4130fe15a7b9" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:root-ca-cert-publisher" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "root-ca-cert-publisher", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:service-account-controller", + "resourceVersion": "207", + "uid": "acb4e887-6559-4c18-ba1a-d2edf9a77c46" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:service-account-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "service-account-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-certificates", + "resourceVersion": "600", + "uid": "4a7fdc44-8350-4b66-a9a1-6d2ca322012f" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "cert-manager-controller-certificates" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager", + "namespace": "cert-manager" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:discovery", + "resourceVersion": "175", + "uid": "d687789e-ffab-42db-b31e-39eca5600011" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:discovery" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:authenticated" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "ingress-nginx", + "meta.helm.sh/release-namespace": "ingress-nginx" + }, + "creationTimestamp": "2025-08-09T06:31:23Z", + "labels": { + "app.kubernetes.io/instance": "ingress-nginx", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "ingress-nginx", + "app.kubernetes.io/part-of": "ingress-nginx", + "app.kubernetes.io/version": "1.12.3", + "helm.sh/chart": "ingress-nginx-4.12.3" + }, + "name": "ingress-nginx", + "resourceVersion": "1195", + "uid": "0dc0ee83-1071-4700-be25-055eecd36e99" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "ingress-nginx" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "ingress-nginx", + "namespace": "ingress-nginx" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:29:03Z", + "name": "local-path-provisioner-bind", + "resourceVersion": "326", + "uid": "f5870f7d-06c0-480b-98b0-b1b212c8524d" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "local-path-provisioner-role" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "local-path-provisioner-service-account", + "namespace": "local-path-storage" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:certificate-controller", + "resourceVersion": "211", + "uid": "ba3f2c33-d369-4b0e-aef2-5c379b15e6fb" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:certificate-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "certificate-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:replication-controller", + "resourceVersion": "204", + "uid": "5fd097c9-124a-470f-89e9-a5d707fc337f" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:replication-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "replication-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "cert-manager", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-approve:cert-manager-io", + "resourceVersion": "606", + "uid": "d3a2056d-a17d-4419-a360-f4cbbf76ce08" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "cert-manager-controller-approve:cert-manager-io" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager", + "namespace": "cert-manager" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:30:39Z", + "labels": { + "app.kubernetes.io/component": "kube-rbac-proxy", + "app.kubernetes.io/created-by": "sample-external-issuer", + "app.kubernetes.io/instance": "proxy-rolebinding", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "clusterrolebinding", + "app.kubernetes.io/part-of": "sample-external-issuer" + }, + "name": "sample-external-issuer-proxy-rolebinding", + "resourceVersion": "850", + "uid": "6575a038-682c-4237-80b4-5b96d9a49532" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "sample-external-issuer-proxy-role" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "sample-external-issuer-controller-manager", + "namespace": "sample-external-issuer-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:deployment-controller", + "resourceVersion": "189", + "uid": "333d5023-dd21-438c-942d-aee22af7256c" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:deployment-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "deployment-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:ephemeral-volume-controller", + "resourceVersion": "195", + "uid": "298d3beb-9e45-4021-9ce2-8da870217d0b" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:ephemeral-volume-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "ephemeral-volume-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:kube-scheduler", + "resourceVersion": "181", + "uid": "62a896c9-d576-4aed-a904-09b2012ea212" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:kube-scheduler" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "User", + "name": "system:kube-scheduler" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:namespace-controller", + "resourceVersion": "199", + "uid": "3f487cba-c981-4ec8-9d67-2e06dc992d57" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:namespace-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "namespace-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:pvc-protection-controller", + "resourceVersion": "212", + "uid": "94c476bf-8690-4321-9f3b-ba50002d3f99" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:pvc-protection-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "pvc-protection-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "kubeadm:node-proxier", + "resourceVersion": "280", + "uid": "9701a35a-3367-41ee-8ee9-5b70cc0d075d" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:node-proxier" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "kube-proxy", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "samplewebhook", + "meta.helm.sh/release-namespace": "samplewebhook" + }, + "creationTimestamp": "2025-08-09T06:30:45Z", + "labels": { + "app": "example-webhook", + "app.kubernetes.io/managed-by": "Helm", + "chart": "example-webhook-0.1.0", + "heritage": "Helm", + "release": "samplewebhook" + }, + "name": "samplewebhook-example-webhook:domain-solver", + "resourceVersion": "900", + "uid": "895b6a10-1b86-4e14-adf8-f38f96151730" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "samplewebhook-example-webhook:domain-solver" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager", + "namespace": "cert-manager" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:expand-controller", + "resourceVersion": "194", + "uid": "6e82c9d9-26da-4b70-bb61-a2c19327a380" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:expand-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "expand-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:endpointslicemirroring-controller", + "resourceVersion": "193", + "uid": "9742bf80-5aaa-49ff-9917-75a617dd353c" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:endpointslicemirroring-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "endpointslicemirroring-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:validatingadmissionpolicy-status-controller", + "resourceVersion": "216", + "uid": "819af031-1956-45e1-8bdd-6fdae0fc2cec" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:validatingadmissionpolicy-status-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "validatingadmissionpolicy-status-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "kubeadm:node-autoapprove-bootstrap", + "resourceVersion": "250", + "uid": "414eef29-5a00-4ef8-bc19-c3ccce011655" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:certificates.k8s.io:certificatesigningrequests:nodeclient" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:bootstrappers:kubeadm:default-node-token" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:monitoring", + "resourceVersion": "174", + "uid": "fb77040c-f491-4c01-bc72-6bbd9e97cc32" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:monitoring" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:monitoring" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:30:39Z", + "name": "sample-external-issuer-cert-manager-controller-approve:sample-issuer-example-com", + "resourceVersion": "848", + "uid": "a736f227-77aa-4a22-99bc-43cdeb3f0ada" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "sample-external-issuer-cert-manager-controller-approve:sample-issuer-example-com" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager", + "namespace": "cert-manager" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:service-account-issuer-discovery", + "resourceVersion": "184", + "uid": "e2b4a504-b797-49ce-90d8-a3cff9b00585" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:service-account-issuer-discovery" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:serviceaccounts" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:resourcequota-controller", + "resourceVersion": "205", + "uid": "998212be-b1d1-49f3-8a36-aaae13c94934" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:resourcequota-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "resourcequota-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "projectcontour", + "meta.helm.sh/release-namespace": "projectcontour" + }, + "creationTimestamp": "2025-08-09T06:32:04Z", + "labels": { + "app.kubernetes.io/instance": "projectcontour", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "contour", + "app.kubernetes.io/version": "1.29.1", + "helm.sh/chart": "contour-18.2.4" + }, + "name": "projectcontour-contour", + "resourceVersion": "1417", + "uid": "c430e2d8-71be-4b53-b91b-6286e079576e" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "projectcontour-contour" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "projectcontour-contour", + "namespace": "projectcontour" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:route-controller", + "resourceVersion": "206", + "uid": "5b9397a9-572d-40a8-aeda-979018d28c1d" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:route-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "route-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:02Z", + "name": "kindnet", + "resourceVersion": "311", + "uid": "38f6c5dd-1458-4f85-9261-412baa0ccc40" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "kindnet" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "kindnet", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-challenges", + "resourceVersion": "604", + "uid": "2ecbe264-1b1b-4900-b5da-804dd4cd2d35" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "cert-manager-controller-challenges" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager", + "namespace": "cert-manager" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:public-info-viewer", + "resourceVersion": "177", + "uid": "63243e7f-a1c3-48c2-9943-fa389f2b718f" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:public-info-viewer" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:authenticated" + }, + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:unauthenticated" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:basic-user", + "resourceVersion": "176", + "uid": "a1225cc6-6931-44be-a252-cb3a3ded35dd" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:basic-user" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:authenticated" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:volume-scheduler", + "resourceVersion": "182", + "uid": "b72383fa-468d-4e0d-9652-c869c11ebafc" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:volume-scheduler" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "User", + "name": "system:kube-scheduler" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "cert-manager", + "app.kubernetes.io/component": "cert-manager", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "cert-manager", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-controller-certificatesigningrequests", + "resourceVersion": "608", + "uid": "d2bdbbf6-50b2-4a83-bcfd-2957143866ad" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "cert-manager-controller-certificatesigningrequests" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager", + "namespace": "cert-manager" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:disruption-controller", + "resourceVersion": "190", + "uid": "6624e33d-6c16-4627-b623-dd6d5dc96b45" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:disruption-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "disruption-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:ttl-after-finished-controller", + "resourceVersion": "214", + "uid": "d443ec01-2890-43d3-88be-e6f9b433c07b" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:ttl-after-finished-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "ttl-after-finished-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:endpoint-controller", + "resourceVersion": "191", + "uid": "674385fd-f987-435a-bdd4-5fc5c33ef047" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:endpoint-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "endpoint-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:horizontal-pod-autoscaler", + "resourceVersion": "197", + "uid": "8d12fdb5-2916-4b58-bf9d-6595272230c7" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:horizontal-pod-autoscaler" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "horizontal-pod-autoscaler", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "cluster-admin", + "resourceVersion": "173", + "uid": "d175ef3b-24a9-4464-ab3d-16cf3e9249f9" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "cluster-admin" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:masters" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:clusterrole-aggregation-controller", + "resourceVersion": "186", + "uid": "38c0a55e-0ea0-46f6-af33-0e6e2e9d84b0" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:clusterrole-aggregation-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "clusterrole-aggregation-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": {}, + "creationTimestamp": "2025-08-09T06:30:39Z", + "labels": { + "app.kubernetes.io/component": "rbac", + "app.kubernetes.io/created-by": "sample-external-issuer", + "app.kubernetes.io/instance": "manager-rolebinding", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "clusterrolebinding", + "app.kubernetes.io/part-of": "sample-external-issuer" + }, + "name": "sample-external-issuer-manager-rolebinding", + "resourceVersion": "849", + "uid": "573c4046-2b0a-4947-b5d0-cef4e359385d" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "sample-external-issuer-manager-role" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "sample-external-issuer-controller-manager", + "namespace": "sample-external-issuer-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:job-controller", + "resourceVersion": "198", + "uid": "1dabc533-8490-4cfb-9469-81898a97cb10" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:job-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "job-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:daemon-set-controller", + "resourceVersion": "188", + "uid": "097399db-c24c-4c5f-924e-b99f9e21e275" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:daemon-set-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "daemon-set-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:pv-protection-controller", + "resourceVersion": "213", + "uid": "635eb2c7-1d98-4af2-9e25-8e1d2cf32f34" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:pv-protection-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "pv-protection-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:controller:replicaset-controller", + "resourceVersion": "203", + "uid": "a69f176d-2177-4dd1-bb49-14f62211b08c" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:controller:replicaset-controller" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "replicaset-controller", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "meta.helm.sh/release-name": "cert-manager", + "meta.helm.sh/release-namespace": "cert-manager" + }, + "creationTimestamp": "2025-08-09T06:29:53Z", + "labels": { + "app": "webhook", + "app.kubernetes.io/component": "webhook", + "app.kubernetes.io/instance": "cert-manager", + "app.kubernetes.io/managed-by": "Helm", + "app.kubernetes.io/name": "webhook", + "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", + "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" + }, + "name": "cert-manager-webhook:subjectaccessreviews", + "resourceVersion": "599", + "uid": "b095bc8b-7caa-4fb0-9196-4bd1438fb0dd" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "cert-manager-webhook:subjectaccessreviews" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "cert-manager-webhook", + "namespace": "cert-manager" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "annotations": { + "rbac.authorization.kubernetes.io/autoupdate": "true" + }, + "creationTimestamp": "2025-08-09T06:28:59Z", + "labels": { + "kubernetes.io/bootstrapping": "rbac-defaults" + }, + "name": "system:kube-dns", + "resourceVersion": "180", + "uid": "e189e6e7-0b32-4527-a489-02159604af13" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:kube-dns" + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "kube-dns", + "namespace": "kube-system" + } + ] + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "ClusterRoleBinding", + "metadata": { + "creationTimestamp": "2025-08-09T06:29:00Z", + "name": "kubeadm:kubelet-bootstrap", + "resourceVersion": "249", + "uid": "5d5042a5-d9db-4c81-a6ba-09f3dda3ba68" + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "ClusterRole", + "name": "system:node-bootstrapper" + }, + "subjects": [ + { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Group", + "name": "system:bootstrappers:kubeadm:default-node-token" + } + ] + } + ] +} \ No newline at end of file From 65ca6d0de4d6d1ecf2811bf5ac39a8608e1a0059 Mon Sep 17 00:00:00 2001 From: Richard Wall Date: Sat, 9 Aug 2025 13:14:35 +0100 Subject: [PATCH 16/20] Fix Kubernetes version extraction in the conversion function Signed-off-by: Richard Wall --- .../cyberark/dataupload/dataupload.go | 20 +++++-------------- .../testdata/example-1/snapshot.json | 2 +- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/pkg/internal/cyberark/dataupload/dataupload.go b/pkg/internal/cyberark/dataupload/dataupload.go index 4067c726..ca58674a 100644 --- a/pkg/internal/cyberark/dataupload/dataupload.go +++ b/pkg/internal/cyberark/dataupload/dataupload.go @@ -67,25 +67,15 @@ func extractResourceListFromReading(reading *api.DataReading) ([]interface{}, er return resources, nil } -// TODO(wallj): Use k8s version.Info struct here func extractServerVersionFromReading(reading *api.DataReading) (string, error) { - data, ok := reading.Data.(map[string]interface{}) + data, ok := reading.Data.(*k8s.DiscoveryData) if !ok { return "", fmt.Errorf("failed to convert data: %s", reading.DataGatherer) } - serverVersion, ok := data["server_version"] - if !ok { - return "", fmt.Errorf("server_version key not found in data: %v", data) - } - serverVersionBytes, err := json.Marshal(serverVersion) - if err != nil { - return "", fmt.Errorf("while marshalling server_version: %s", err) - } - var serverVersionInfo map[string]string - if err := json.Unmarshal(serverVersionBytes, &serverVersionInfo); err != nil { - return "", fmt.Errorf("while un-marshalling server_version bytes: %s", err) + if data.ServerVersion == nil { + return "unknown", nil } - return serverVersionInfo["gitVersion"], nil + return data.ServerVersion.GitVersion, nil } // ConvertDataReadingsToCyberarkSnapshot converts jetstack-secure DataReadings into Cyberark Snapshot format. @@ -95,7 +85,7 @@ func ConvertDataReadingsToCyberarkSnapshot( k8sVersion := "" resourceData := ResourceData{} for _, reading := range input.DataReadings { - if reading.DataGatherer == "k8s/discovery" { + if reading.DataGatherer == "k8s-discovery" { k8sVersion, err = extractServerVersionFromReading(reading) if err != nil { return nil, fmt.Errorf("while extracting server version from data-reading: %s", err) diff --git a/pkg/internal/cyberark/dataupload/testdata/example-1/snapshot.json b/pkg/internal/cyberark/dataupload/testdata/example-1/snapshot.json index 6f908f7d..b11511f7 100644 --- a/pkg/internal/cyberark/dataupload/testdata/example-1/snapshot.json +++ b/pkg/internal/cyberark/dataupload/testdata/example-1/snapshot.json @@ -1,7 +1,7 @@ { "agent_version": "test-version", "cluster_id": "test-cluster-id", - "k8s_version": "", + "k8s_version": "v1.31.9", "secrets": [ { "apiVersion": "v1", From a361867a38e6e18b3d53a92d77195afff9a20b5e Mon Sep 17 00:00:00 2001 From: Richard Wall Date: Sat, 9 Aug 2025 14:12:12 +0100 Subject: [PATCH 17/20] Compress the testdata Signed-off-by: Richard Wall --- .../cyberark/dataupload/dataupload_test.go | 54 +- .../dataupload/testdata/example-1/README.md | 1 + .../testdata/example-1/datareadings.json | 13012 ---------------- .../testdata/example-1/datareadings.json.gz | Bin 0 -> 28818 bytes .../testdata/example-1/snapshot.json | 12420 --------------- .../testdata/example-1/snapshot.json.gz | Bin 0 -> 26642 bytes 6 files changed, 40 insertions(+), 25447 deletions(-) delete mode 100644 pkg/internal/cyberark/dataupload/testdata/example-1/datareadings.json create mode 100644 pkg/internal/cyberark/dataupload/testdata/example-1/datareadings.json.gz delete mode 100644 pkg/internal/cyberark/dataupload/testdata/example-1/snapshot.json create mode 100644 pkg/internal/cyberark/dataupload/testdata/example-1/snapshot.json.gz diff --git a/pkg/internal/cyberark/dataupload/dataupload_test.go b/pkg/internal/cyberark/dataupload/dataupload_test.go index 1301c08d..95f9c3fc 100644 --- a/pkg/internal/cyberark/dataupload/dataupload_test.go +++ b/pkg/internal/cyberark/dataupload/dataupload_test.go @@ -2,13 +2,16 @@ package dataupload_test import ( "bytes" + "compress/gzip" "crypto/x509" "encoding/json" "encoding/pem" "errors" "fmt" + "io" "net/http" "os" + "path/filepath" "testing" "time" @@ -191,7 +194,7 @@ func TestCyberArkClient_PostDataReadingsWithOptions_RealAPI(t *testing.T) { cyberArkClient, err := dataupload.NewCyberArkClient(nil, serviceURL, identityClient.AuthenticateRequest) require.NoError(t, err) - dataReadings := loadDataReadings(t, "testdata/example-1/datareadings.json") + dataReadings := parseDataReadings(t, readGZIP(t, "testdata/example-1/datareadings.json.gz")) err = cyberArkClient.PostDataReadingsWithOptions( ctx, api.DataReadingsPost{ @@ -207,15 +210,13 @@ func TestCyberArkClient_PostDataReadingsWithOptions_RealAPI(t *testing.T) { require.NoError(t, err) } -func loadDataReadings(t *testing.T, path string) []*api.DataReading { +func parseDataReadings(t *testing.T, data []byte) []*api.DataReading { var dataReadings []*api.DataReading - { - f, err := os.Open(path) - require.NoError(t, err) - err = json.NewDecoder(f).Decode(&dataReadings) - require.NoError(t, f.Close()) - require.NoError(t, err) - } + + decoder := json.NewDecoder(bytes.NewReader(data)) + decoder.DisallowUnknownFields() + err := decoder.Decode(&dataReadings) + require.NoError(t, err) for _, reading := range dataReadings { dataBytes, err := json.Marshal(reading.Data) @@ -244,8 +245,33 @@ func loadDataReadings(t *testing.T, path string) []*api.DataReading { return dataReadings } +func readGZIP(t *testing.T, path string) []byte { + f, err := os.Open(path) + require.NoError(t, err) + defer func() { require.NoError(t, f.Close()) }() + gzr, err := gzip.NewReader(f) + require.NoError(t, err) + defer func() { require.NoError(t, gzr.Close()) }() + bytes, err := io.ReadAll(gzr) + require.NoError(t, err) + return bytes +} + +func writeGZIP(t *testing.T, path string, data []byte) { + tmp, err := os.CreateTemp(filepath.Dir(path), filepath.Base(path)+".*") + require.NoError(t, err) + gzw := gzip.NewWriter(tmp) + _, err = io.Copy(gzw, bytes.NewReader(data)) + require.NoError(t, gzw.Flush()) + require.NoError(t, gzw.Close()) + require.NoError(t, tmp.Close()) + require.NoError(t, err) + err = os.Rename(tmp.Name(), path) + require.NoError(t, err) +} + func TestConvertDataReadingsToCyberarkSnapshot(t *testing.T) { - dataReadings := loadDataReadings(t, "testdata/example-1/datareadings.json") + dataReadings := parseDataReadings(t, readGZIP(t, "testdata/example-1/datareadings.json.gz")) snapshot, err := dataupload.ConvertDataReadingsToCyberarkSnapshot(api.DataReadingsPost{ AgentMetadata: &api.AgentMetadata{ Version: "test-version", @@ -258,13 +284,11 @@ func TestConvertDataReadingsToCyberarkSnapshot(t *testing.T) { actualSnapshotBytes, err := json.MarshalIndent(snapshot, "", " ") require.NoError(t, err) - goldenFilePath := "testdata/example-1/snapshot.json" + goldenFilePath := "testdata/example-1/snapshot.json.gz" if _, update := os.LookupEnv("UPDATE_GOLDEN_FILES"); update { - err := os.WriteFile(goldenFilePath, actualSnapshotBytes, 0o0644) - require.NoError(t, err) + writeGZIP(t, goldenFilePath, actualSnapshotBytes) } else { - expectedSnapshotBytes, err := os.ReadFile(goldenFilePath) - require.NoError(t, err) + expectedSnapshotBytes := readGZIP(t, goldenFilePath) assert.JSONEq(t, string(expectedSnapshotBytes), string(actualSnapshotBytes)) } } diff --git a/pkg/internal/cyberark/dataupload/testdata/example-1/README.md b/pkg/internal/cyberark/dataupload/testdata/example-1/README.md index b9259219..b3e53157 100644 --- a/pkg/internal/cyberark/dataupload/testdata/example-1/README.md +++ b/pkg/internal/cyberark/dataupload/testdata/example-1/README.md @@ -16,6 +16,7 @@ go run . agent \ --one-shot \ --agent-config pkg/internal/cyberark/dataupload/testdata/example-1/agent.yaml \ --output-path pkg/internal/cyberark/dataupload/testdata/example-1/datareadings.json +gzip pkg/internal/cyberark/dataupload/testdata/example-1/datareadings.json ``` diff --git a/pkg/internal/cyberark/dataupload/testdata/example-1/datareadings.json b/pkg/internal/cyberark/dataupload/testdata/example-1/datareadings.json deleted file mode 100644 index ae65e24f..00000000 --- a/pkg/internal/cyberark/dataupload/testdata/example-1/datareadings.json +++ /dev/null @@ -1,13012 +0,0 @@ -[ - { - "cluster_id": "example-cluster-id", - "data-gatherer": "k8s/rolebindings", - "timestamp": "2025-08-09T12:35:09+01:00", - "data": { - "items": [ - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system::leader-locking-kube-scheduler", - "namespace": "kube-system", - "resourceVersion": "227", - "uid": "8bbb36aa-fcb7-4b82-ae97-84268211a5b2" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "system::leader-locking-kube-scheduler" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "User", - "name": "system:kube-scheduler" - }, - { - "kind": "ServiceAccount", - "name": "kube-scheduler", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:01Z", - "name": "kube-proxy", - "namespace": "kube-system", - "resourceVersion": "291", - "uid": "34fa3319-024e-4c1d-a219-0ebf57090837" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "kube-proxy" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:bootstrappers:kubeadm:default-node-token" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "samplewebhook", - "meta.helm.sh/release-namespace": "samplewebhook" - }, - "creationTimestamp": "2025-08-09T06:30:45Z", - "labels": { - "app": "example-webhook", - "app.kubernetes.io/managed-by": "Helm", - "chart": "example-webhook-0.1.0", - "heritage": "Helm", - "release": "samplewebhook" - }, - "name": "samplewebhook-example-webhook:webhook-authentication-reader", - "namespace": "kube-system", - "resourceVersion": "903", - "uid": "abb94dcb-1ab4-48d1-9c4c-1ade9f90247e" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "samplewebhook-example-webhook:webhook-authentication-reader" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "samplewebhook-example-webhook", - "namespace": "samplewebhook" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "kubeadm:kubelet-config", - "namespace": "kube-system", - "resourceVersion": "243", - "uid": "4ddfc123-eef3-4e72-a7e7-934c9af5e5f6" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "kubeadm:kubelet-config" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:nodes" - }, - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:bootstrappers:kubeadm:default-node-token" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cainjector", - "app.kubernetes.io/component": "cainjector", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cainjector", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-cainjector:leaderelection", - "namespace": "kube-system", - "resourceVersion": "619", - "uid": "97c0ac25-5dae-4584-85b3-4afa2a3bc4bc" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "cert-manager-cainjector:leaderelection" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager-cainjector", - "namespace": "cert-manager" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system::leader-locking-kube-controller-manager", - "namespace": "kube-system", - "resourceVersion": "226", - "uid": "3902fafd-36ae-44cd-9d29-2c6181302306" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "system::leader-locking-kube-controller-manager" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "User", - "name": "system:kube-controller-manager" - }, - { - "kind": "ServiceAccount", - "name": "kube-controller-manager", - "namespace": "kube-system" - }, - { - "kind": "ServiceAccount", - "name": "leader-election-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:token-cleaner", - "namespace": "kube-system", - "resourceVersion": "230", - "uid": "c2c8109f-6723-4e22-886e-961824943636" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "system:controller:token-cleaner" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "token-cleaner", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "ingress-nginx", - "meta.helm.sh/release-namespace": "ingress-nginx" - }, - "creationTimestamp": "2025-08-09T06:31:23Z", - "labels": { - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "ingress-nginx", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "ingress-nginx", - "app.kubernetes.io/part-of": "ingress-nginx", - "app.kubernetes.io/version": "1.12.3", - "helm.sh/chart": "ingress-nginx-4.12.3" - }, - "name": "ingress-nginx", - "namespace": "ingress-nginx", - "resourceVersion": "1197", - "uid": "cb338012-14ca-44d6-8ddc-893af9c8d757" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "ingress-nginx" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "ingress-nginx", - "namespace": "ingress-nginx" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:cloud-provider", - "namespace": "kube-system", - "resourceVersion": "229", - "uid": "3f4bd4d9-a3a4-448d-af17-affef7e89451" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "system:controller:cloud-provider" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cloud-provider", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:bootstrap-signer", - "namespace": "kube-public", - "resourceVersion": "231", - "uid": "34e79bed-6f95-4658-8b18-72200b5e70c0" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "system:controller:bootstrap-signer" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "bootstrap-signer", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:bootstrap-signer", - "namespace": "kube-system", - "resourceVersion": "228", - "uid": "1ac2aab9-0b3e-4684-b998-e595097c0091" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "system:controller:bootstrap-signer" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "bootstrap-signer", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "kubeadm:bootstrap-signer-clusterinfo", - "namespace": "kube-public", - "resourceVersion": "254", - "uid": "c7b1fc57-ff87-4b2d-8ea0-8a31f9f5a536" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "kubeadm:bootstrap-signer-clusterinfo" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "User", - "name": "system:anonymous" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:29:03Z", - "name": "local-path-provisioner-bind", - "namespace": "local-path-storage", - "resourceVersion": "325", - "uid": "76a121ce-6a6b-4efd-afa0-a74d754148df" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "local-path-provisioner-role" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "local-path-provisioner-service-account", - "namespace": "local-path-storage" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:30:39Z", - "labels": { - "app.kubernetes.io/component": "rbac", - "app.kubernetes.io/created-by": "sample-external-issuer", - "app.kubernetes.io/instance": "leader-election-rolebinding", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "rolebinding", - "app.kubernetes.io/part-of": "sample-external-issuer" - }, - "name": "sample-external-issuer-leader-election-rolebinding", - "namespace": "sample-external-issuer-system", - "resourceVersion": "847", - "uid": "6c65d429-9003-417f-bf6b-e2c017f00ddd" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "sample-external-issuer-leader-election-role" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "sample-external-issuer-controller-manager", - "namespace": "sample-external-issuer-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager:leaderelection", - "namespace": "kube-system", - "resourceVersion": "621", - "uid": "909cc32e-5be0-4a0f-af52-e3be82754850" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "cert-manager:leaderelection" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager", - "namespace": "cert-manager" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system::extension-apiserver-authentication-reader", - "namespace": "kube-system", - "resourceVersion": "225", - "uid": "8289c4c4-acd4-4cad-a66b-cbb61ee74c11" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "extension-apiserver-authentication-reader" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "User", - "name": "system:kube-controller-manager" - }, - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "User", - "name": "system:kube-scheduler" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-cert-manager-tokenrequest", - "namespace": "cert-manager", - "resourceVersion": "617", - "uid": "03d85ac9-7a41-4532-8441-d8e044270803" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "cert-manager-tokenrequest" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager", - "namespace": "cert-manager" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "projectcontour", - "meta.helm.sh/release-namespace": "projectcontour" - }, - "creationTimestamp": "2025-08-09T06:32:04Z", - "labels": { - "app.kubernetes.io/instance": "projectcontour", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "contour", - "app.kubernetes.io/version": "1.29.1", - "helm.sh/chart": "contour-18.2.4" - }, - "name": "projectcontour-contour-role", - "namespace": "projectcontour", - "resourceVersion": "1419", - "uid": "8dd91576-3e4e-454c-8909-688be31b2a03" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "projectcontour-contour" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "projectcontour-contour", - "namespace": "projectcontour" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "creationTimestamp": "2025-08-09T06:28:59Z", - "name": "kubeadm:nodes-kubeadm-config", - "namespace": "kube-system", - "resourceVersion": "240", - "uid": "ad02e9c2-89b1-470d-9dfe-0a6dd1999854" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "kubeadm:nodes-kubeadm-config" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:bootstrappers:kubeadm:default-node-token" - }, - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:nodes" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "webhook", - "app.kubernetes.io/component": "webhook", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "webhook", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-webhook:dynamic-serving", - "namespace": "cert-manager", - "resourceVersion": "618", - "uid": "ceb24b6d-a933-4eff-a089-b7d6a2306c92" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "cert-manager-webhook:dynamic-serving" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager-webhook", - "namespace": "cert-manager" - } - ] - } - } - ] - }, - "schema_version": "v2.0.0" - }, - { - "cluster_id": "example-cluster-id", - "data-gatherer": "k8s/clusterrolebindings", - "timestamp": "2025-08-09T12:35:09+01:00", - "data": { - "items": [ - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:pod-garbage-collector", - "resourceVersion": "202", - "uid": "fe5028a6-8195-470f-841e-5d2a8db6a786" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:pod-garbage-collector" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "pod-garbage-collector", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "creationTimestamp": "2025-08-09T06:28:59Z", - "name": "kubeadm:cluster-admins", - "resourceVersion": "237", - "uid": "85cc78c6-654f-4b0c-babe-377a3db8fcfa" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "cluster-admin" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "kubeadm:cluster-admins" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:attachdetach-controller", - "resourceVersion": "185", - "uid": "b6ca9cf8-4996-47b3-b9d7-3cebcbd58f70" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:attachdetach-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "attachdetach-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:node-controller", - "resourceVersion": "200", - "uid": "a0922559-5c6d-4e8b-82a7-678603176409" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:node-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "node-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-clusterissuers", - "resourceVersion": "609", - "uid": "1bc56c34-5f3f-4a3e-83fa-5525f9f40fec" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "cert-manager-controller-clusterissuers" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager", - "namespace": "cert-manager" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:node-proxier", - "resourceVersion": "178", - "uid": "fbad939a-acbd-417b-a31f-5cb6ecc4f131" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:node-proxier" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "User", - "name": "system:kube-proxy" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cainjector", - "app.kubernetes.io/component": "cainjector", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cainjector", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-cainjector", - "resourceVersion": "601", - "uid": "7c420237-2b76-475d-96a2-b153be3496ff" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "cert-manager-cainjector" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager-cainjector", - "namespace": "cert-manager" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-orders", - "resourceVersion": "603", - "uid": "95d567e9-796f-4c86-be47-dd7a73f6a63d" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "cert-manager-controller-orders" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager", - "namespace": "cert-manager" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "kubeadm:get-nodes", - "resourceVersion": "248", - "uid": "fd7b89a8-7bb0-4375-a07e-b43736a1d939" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "kubeadm:get-nodes" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:bootstrappers:kubeadm:default-node-token" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:cronjob-controller", - "resourceVersion": "187", - "uid": "79548780-1935-425d-a749-5da64c892aed" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:cronjob-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cronjob-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:node", - "resourceVersion": "183", - "uid": "718931df-e190-4859-ad58-edf1efbd043b" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:node" - } - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:ttl-controller", - "resourceVersion": "210", - "uid": "0169888d-3e73-4ff6-9a86-2ac14ab58f2a" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:ttl-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "ttl-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:generic-garbage-collector", - "resourceVersion": "196", - "uid": "37819522-7231-4c86-85dc-9c5600b6aa25" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:generic-garbage-collector" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "generic-garbage-collector", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:legacy-service-account-token-cleaner", - "resourceVersion": "217", - "uid": "0e02ba77-077f-4e9a-b2fc-ab11dc2ff9e1" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:legacy-service-account-token-cleaner" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "legacy-service-account-token-cleaner", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:kube-controller-manager", - "resourceVersion": "179", - "uid": "152ea945-8dfc-4d24-aa6b-90cce9a254c2" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:kube-controller-manager" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "User", - "name": "system:kube-controller-manager" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "samplewebhook", - "meta.helm.sh/release-namespace": "samplewebhook" - }, - "creationTimestamp": "2025-08-09T06:30:45Z", - "labels": { - "app": "example-webhook", - "app.kubernetes.io/managed-by": "Helm", - "chart": "example-webhook-0.1.0", - "heritage": "Helm", - "release": "samplewebhook" - }, - "name": "samplewebhook-example-webhook:auth-delegator", - "resourceVersion": "901", - "uid": "903bb45e-bbc8-4f98-9d6f-5c587e943241" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:auth-delegator" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "samplewebhook-example-webhook", - "namespace": "samplewebhook" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "system:coredns", - "resourceVersion": "257", - "uid": "3530acfa-ca74-459c-b2c4-8c0f47de3bae" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:coredns" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "coredns", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:statefulset-controller", - "resourceVersion": "209", - "uid": "09def9da-cbb5-46bf-acc6-59f67f2c0a98" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:statefulset-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "statefulset-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:persistent-volume-binder", - "resourceVersion": "201", - "uid": "b68a746a-6224-4354-8704-7b3b868182cd" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:persistent-volume-binder" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "persistent-volume-binder", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-issuers", - "resourceVersion": "605", - "uid": "ee388fbe-180c-4365-a9e4-94a8e2a1deb9" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "cert-manager-controller-issuers" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager", - "namespace": "cert-manager" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "kubeadm:node-autoapprove-certificate-rotation", - "resourceVersion": "251", - "uid": "703634e9-2423-4475-bdff-ed3ca668dab4" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:certificates.k8s.io:certificatesigningrequests:selfnodeclient" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:nodes" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:service-controller", - "resourceVersion": "208", - "uid": "7ff2b5a1-2f4c-4f58-84cf-6ee6155f1d2c" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:service-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "service-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-ingress-shim", - "resourceVersion": "607", - "uid": "a4b43b76-3a0a-4e96-a808-d642863e8261" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "cert-manager-controller-ingress-shim" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager", - "namespace": "cert-manager" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:endpointslice-controller", - "resourceVersion": "192", - "uid": "78a0d9cb-ada8-46e1-a182-91b633f81c06" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:endpointslice-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "endpointslice-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:root-ca-cert-publisher", - "resourceVersion": "215", - "uid": "a80475af-9ad3-4996-84b2-4130fe15a7b9" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:root-ca-cert-publisher" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "root-ca-cert-publisher", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:service-account-controller", - "resourceVersion": "207", - "uid": "acb4e887-6559-4c18-ba1a-d2edf9a77c46" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:service-account-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "service-account-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-certificates", - "resourceVersion": "600", - "uid": "4a7fdc44-8350-4b66-a9a1-6d2ca322012f" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "cert-manager-controller-certificates" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager", - "namespace": "cert-manager" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:discovery", - "resourceVersion": "175", - "uid": "d687789e-ffab-42db-b31e-39eca5600011" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:discovery" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:authenticated" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "ingress-nginx", - "meta.helm.sh/release-namespace": "ingress-nginx" - }, - "creationTimestamp": "2025-08-09T06:31:23Z", - "labels": { - "app.kubernetes.io/instance": "ingress-nginx", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "ingress-nginx", - "app.kubernetes.io/part-of": "ingress-nginx", - "app.kubernetes.io/version": "1.12.3", - "helm.sh/chart": "ingress-nginx-4.12.3" - }, - "name": "ingress-nginx", - "resourceVersion": "1195", - "uid": "0dc0ee83-1071-4700-be25-055eecd36e99" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "ingress-nginx" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "ingress-nginx", - "namespace": "ingress-nginx" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:29:03Z", - "name": "local-path-provisioner-bind", - "resourceVersion": "326", - "uid": "f5870f7d-06c0-480b-98b0-b1b212c8524d" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "local-path-provisioner-role" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "local-path-provisioner-service-account", - "namespace": "local-path-storage" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:certificate-controller", - "resourceVersion": "211", - "uid": "ba3f2c33-d369-4b0e-aef2-5c379b15e6fb" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:certificate-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "certificate-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:replication-controller", - "resourceVersion": "204", - "uid": "5fd097c9-124a-470f-89e9-a5d707fc337f" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:replication-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "replication-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "cert-manager", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-approve:cert-manager-io", - "resourceVersion": "606", - "uid": "d3a2056d-a17d-4419-a360-f4cbbf76ce08" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "cert-manager-controller-approve:cert-manager-io" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager", - "namespace": "cert-manager" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:30:39Z", - "labels": { - "app.kubernetes.io/component": "kube-rbac-proxy", - "app.kubernetes.io/created-by": "sample-external-issuer", - "app.kubernetes.io/instance": "proxy-rolebinding", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "clusterrolebinding", - "app.kubernetes.io/part-of": "sample-external-issuer" - }, - "name": "sample-external-issuer-proxy-rolebinding", - "resourceVersion": "850", - "uid": "6575a038-682c-4237-80b4-5b96d9a49532" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "sample-external-issuer-proxy-role" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "sample-external-issuer-controller-manager", - "namespace": "sample-external-issuer-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:deployment-controller", - "resourceVersion": "189", - "uid": "333d5023-dd21-438c-942d-aee22af7256c" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:deployment-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "deployment-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:ephemeral-volume-controller", - "resourceVersion": "195", - "uid": "298d3beb-9e45-4021-9ce2-8da870217d0b" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:ephemeral-volume-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "ephemeral-volume-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:kube-scheduler", - "resourceVersion": "181", - "uid": "62a896c9-d576-4aed-a904-09b2012ea212" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:kube-scheduler" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "User", - "name": "system:kube-scheduler" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:namespace-controller", - "resourceVersion": "199", - "uid": "3f487cba-c981-4ec8-9d67-2e06dc992d57" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:namespace-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "namespace-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:pvc-protection-controller", - "resourceVersion": "212", - "uid": "94c476bf-8690-4321-9f3b-ba50002d3f99" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:pvc-protection-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "pvc-protection-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "kubeadm:node-proxier", - "resourceVersion": "280", - "uid": "9701a35a-3367-41ee-8ee9-5b70cc0d075d" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:node-proxier" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "kube-proxy", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "samplewebhook", - "meta.helm.sh/release-namespace": "samplewebhook" - }, - "creationTimestamp": "2025-08-09T06:30:45Z", - "labels": { - "app": "example-webhook", - "app.kubernetes.io/managed-by": "Helm", - "chart": "example-webhook-0.1.0", - "heritage": "Helm", - "release": "samplewebhook" - }, - "name": "samplewebhook-example-webhook:domain-solver", - "resourceVersion": "900", - "uid": "895b6a10-1b86-4e14-adf8-f38f96151730" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "samplewebhook-example-webhook:domain-solver" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager", - "namespace": "cert-manager" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:expand-controller", - "resourceVersion": "194", - "uid": "6e82c9d9-26da-4b70-bb61-a2c19327a380" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:expand-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "expand-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:endpointslicemirroring-controller", - "resourceVersion": "193", - "uid": "9742bf80-5aaa-49ff-9917-75a617dd353c" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:endpointslicemirroring-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "endpointslicemirroring-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:validatingadmissionpolicy-status-controller", - "resourceVersion": "216", - "uid": "819af031-1956-45e1-8bdd-6fdae0fc2cec" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:validatingadmissionpolicy-status-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "validatingadmissionpolicy-status-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "kubeadm:node-autoapprove-bootstrap", - "resourceVersion": "250", - "uid": "414eef29-5a00-4ef8-bc19-c3ccce011655" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:certificates.k8s.io:certificatesigningrequests:nodeclient" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:bootstrappers:kubeadm:default-node-token" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:monitoring", - "resourceVersion": "174", - "uid": "fb77040c-f491-4c01-bc72-6bbd9e97cc32" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:monitoring" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:monitoring" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:30:39Z", - "name": "sample-external-issuer-cert-manager-controller-approve:sample-issuer-example-com", - "resourceVersion": "848", - "uid": "a736f227-77aa-4a22-99bc-43cdeb3f0ada" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "sample-external-issuer-cert-manager-controller-approve:sample-issuer-example-com" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager", - "namespace": "cert-manager" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:service-account-issuer-discovery", - "resourceVersion": "184", - "uid": "e2b4a504-b797-49ce-90d8-a3cff9b00585" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:service-account-issuer-discovery" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:serviceaccounts" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:resourcequota-controller", - "resourceVersion": "205", - "uid": "998212be-b1d1-49f3-8a36-aaae13c94934" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:resourcequota-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "resourcequota-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "projectcontour", - "meta.helm.sh/release-namespace": "projectcontour" - }, - "creationTimestamp": "2025-08-09T06:32:04Z", - "labels": { - "app.kubernetes.io/instance": "projectcontour", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "contour", - "app.kubernetes.io/version": "1.29.1", - "helm.sh/chart": "contour-18.2.4" - }, - "name": "projectcontour-contour", - "resourceVersion": "1417", - "uid": "c430e2d8-71be-4b53-b91b-6286e079576e" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "projectcontour-contour" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "projectcontour-contour", - "namespace": "projectcontour" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:route-controller", - "resourceVersion": "206", - "uid": "5b9397a9-572d-40a8-aeda-979018d28c1d" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:route-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "route-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:02Z", - "name": "kindnet", - "resourceVersion": "311", - "uid": "38f6c5dd-1458-4f85-9261-412baa0ccc40" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "kindnet" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "kindnet", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-challenges", - "resourceVersion": "604", - "uid": "2ecbe264-1b1b-4900-b5da-804dd4cd2d35" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "cert-manager-controller-challenges" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager", - "namespace": "cert-manager" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:public-info-viewer", - "resourceVersion": "177", - "uid": "63243e7f-a1c3-48c2-9943-fa389f2b718f" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:public-info-viewer" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:authenticated" - }, - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:unauthenticated" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:basic-user", - "resourceVersion": "176", - "uid": "a1225cc6-6931-44be-a252-cb3a3ded35dd" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:basic-user" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:authenticated" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:volume-scheduler", - "resourceVersion": "182", - "uid": "b72383fa-468d-4e0d-9652-c869c11ebafc" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:volume-scheduler" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "User", - "name": "system:kube-scheduler" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "cert-manager", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-certificatesigningrequests", - "resourceVersion": "608", - "uid": "d2bdbbf6-50b2-4a83-bcfd-2957143866ad" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "cert-manager-controller-certificatesigningrequests" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager", - "namespace": "cert-manager" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:disruption-controller", - "resourceVersion": "190", - "uid": "6624e33d-6c16-4627-b623-dd6d5dc96b45" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:disruption-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "disruption-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:ttl-after-finished-controller", - "resourceVersion": "214", - "uid": "d443ec01-2890-43d3-88be-e6f9b433c07b" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:ttl-after-finished-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "ttl-after-finished-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:endpoint-controller", - "resourceVersion": "191", - "uid": "674385fd-f987-435a-bdd4-5fc5c33ef047" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:endpoint-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "endpoint-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:horizontal-pod-autoscaler", - "resourceVersion": "197", - "uid": "8d12fdb5-2916-4b58-bf9d-6595272230c7" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:horizontal-pod-autoscaler" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "horizontal-pod-autoscaler", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "cluster-admin", - "resourceVersion": "173", - "uid": "d175ef3b-24a9-4464-ab3d-16cf3e9249f9" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "cluster-admin" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:masters" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:clusterrole-aggregation-controller", - "resourceVersion": "186", - "uid": "38c0a55e-0ea0-46f6-af33-0e6e2e9d84b0" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:clusterrole-aggregation-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "clusterrole-aggregation-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:30:39Z", - "labels": { - "app.kubernetes.io/component": "rbac", - "app.kubernetes.io/created-by": "sample-external-issuer", - "app.kubernetes.io/instance": "manager-rolebinding", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "clusterrolebinding", - "app.kubernetes.io/part-of": "sample-external-issuer" - }, - "name": "sample-external-issuer-manager-rolebinding", - "resourceVersion": "849", - "uid": "573c4046-2b0a-4947-b5d0-cef4e359385d" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "sample-external-issuer-manager-role" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "sample-external-issuer-controller-manager", - "namespace": "sample-external-issuer-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:job-controller", - "resourceVersion": "198", - "uid": "1dabc533-8490-4cfb-9469-81898a97cb10" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:job-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "job-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:daemon-set-controller", - "resourceVersion": "188", - "uid": "097399db-c24c-4c5f-924e-b99f9e21e275" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:daemon-set-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "daemon-set-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:pv-protection-controller", - "resourceVersion": "213", - "uid": "635eb2c7-1d98-4af2-9e25-8e1d2cf32f34" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:pv-protection-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "pv-protection-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:replicaset-controller", - "resourceVersion": "203", - "uid": "a69f176d-2177-4dd1-bb49-14f62211b08c" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:replicaset-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "replicaset-controller", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "webhook", - "app.kubernetes.io/component": "webhook", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "webhook", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-webhook:subjectaccessreviews", - "resourceVersion": "599", - "uid": "b095bc8b-7caa-4fb0-9196-4bd1438fb0dd" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "cert-manager-webhook:subjectaccessreviews" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager-webhook", - "namespace": "cert-manager" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:kube-dns", - "resourceVersion": "180", - "uid": "e189e6e7-0b32-4527-a489-02159604af13" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:kube-dns" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "kube-dns", - "namespace": "kube-system" - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "kubeadm:kubelet-bootstrap", - "resourceVersion": "249", - "uid": "5d5042a5-d9db-4c81-a6ba-09f3dda3ba68" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:node-bootstrapper" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:bootstrappers:kubeadm:default-node-token" - } - ] - } - } - ] - }, - "schema_version": "v2.0.0" - }, - { - "cluster_id": "example-cluster-id", - "data-gatherer": "k8s-discovery", - "timestamp": "2025-08-09T12:35:09+01:00", - "data": { - "server_version": { - "major": "1", - "minor": "31", - "gitVersion": "v1.31.9", - "gitCommit": "8f3800390d488f54f74111f22973059e133f9cba", - "gitTreeState": "clean", - "buildDate": "2025-05-15T09:10:43Z", - "goVersion": "go1.23.8", - "compiler": "gc", - "platform": "linux/amd64" - } - }, - "schema_version": "v2.0.0" - }, - { - "cluster_id": "example-cluster-id", - "data-gatherer": "k8s/serviceaccounts", - "timestamp": "2025-08-09T12:35:09+01:00", - "data": { - "items": [ - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:30:45Z", - "name": "default", - "namespace": "samplewebhook", - "resourceVersion": "895", - "uid": "f3f52ab5-ebca-474f-8d13-42a691d58830" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:05Z", - "name": "bootstrap-signer", - "namespace": "kube-system", - "resourceVersion": "344", - "uid": "5eddda6c-d979-4c55-86a2-0e6ccfab5d16" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:30:51Z", - "name": "default", - "namespace": "pebble", - "resourceVersion": "1050", - "uid": "dd3e0d42-e159-4ae7-8905-13b5dde1e893" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:30:34Z", - "name": "default", - "namespace": "bind", - "resourceVersion": "798", - "uid": "c70cbda3-4e6e-4065-9d3d-b78924b95358" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "automountServiceAccountToken": false, - "kind": "ServiceAccount", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "projectcontour", - "meta.helm.sh/release-namespace": "projectcontour" - }, - "creationTimestamp": "2025-08-09T06:32:04Z", - "labels": { - "app.kubernetes.io/component": "contour", - "app.kubernetes.io/instance": "projectcontour", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "contour", - "app.kubernetes.io/version": "1.29.1", - "helm.sh/chart": "contour-18.2.4" - }, - "name": "projectcontour-contour", - "namespace": "projectcontour", - "resourceVersion": "1402", - "uid": "9dff13bf-bf6a-4cff-bb54-d590e3b2018b" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:02Z", - "name": "resourcequota-controller", - "namespace": "kube-system", - "resourceVersion": "309", - "uid": "14d70c78-8dc0-450f-a503-c19c093eec2c" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:01Z", - "name": "generic-garbage-collector", - "namespace": "kube-system", - "resourceVersion": "284", - "uid": "e68f545e-f4a1-4cc7-b887-bfd8ddcbe6f5" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "automountServiceAccountToken": true, - "kind": "ServiceAccount", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cainjector", - "app.kubernetes.io/component": "cainjector", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cainjector", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-cainjector", - "namespace": "cert-manager", - "resourceVersion": "571", - "uid": "13803d0b-f976-4523-9328-7a23679768eb" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:06Z", - "name": "default", - "namespace": "kube-system", - "resourceVersion": "429", - "uid": "cbe61cec-26dc-4618-948f-6dc24ecab633" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:05Z", - "name": "validatingadmissionpolicy-status-controller", - "namespace": "kube-system", - "resourceVersion": "343", - "uid": "5c243cdd-8d23-4b4c-812e-d4225134118d" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:03Z", - "name": "ttl-controller", - "namespace": "kube-system", - "resourceVersion": "330", - "uid": "83af6096-4f72-485a-b375-d31e59ac3118" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "deployment-controller", - "namespace": "kube-system", - "resourceVersion": "281", - "uid": "f82fd4cd-891d-49e4-8a74-a195b23ee305" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "legacy-service-account-token-cleaner", - "namespace": "kube-system", - "resourceVersion": "273", - "uid": "643e15c0-e5b6-4b7a-b766-06bc5f76ad4f" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:03Z", - "name": "pv-protection-controller", - "namespace": "kube-system", - "resourceVersion": "331", - "uid": "d93e4d86-bf3a-4c78-b903-0f3de281c1e0" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:02Z", - "name": "endpointslice-controller", - "namespace": "kube-system", - "resourceVersion": "318", - "uid": "2987f241-576a-4137-963c-9d9a7b0dfc8c" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:06Z", - "name": "default", - "namespace": "local-path-storage", - "resourceVersion": "430", - "uid": "bfe20292-eab6-4d2a-a31c-acab9c16da54" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:02Z", - "name": "expand-controller", - "namespace": "kube-system", - "resourceVersion": "315", - "uid": "e3853327-e93d-467b-b9ad-5053b7b7c099" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:05Z", - "name": "clusterrole-aggregation-controller", - "namespace": "kube-system", - "resourceVersion": "342", - "uid": "8dac47dd-61de-494b-832d-8fa28d91e85c" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:02Z", - "name": "kindnet", - "namespace": "kube-system", - "resourceVersion": "313", - "uid": "fbb24dcc-8e8f-4ca1-8f92-13f6d450793e" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "automountServiceAccountToken": true, - "kind": "ServiceAccount", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "webhook", - "app.kubernetes.io/component": "webhook", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "webhook", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-webhook", - "namespace": "cert-manager", - "resourceVersion": "573", - "uid": "f0c11a80-0271-4dfe-bbb1-b91a071c97a1" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:52Z", - "name": "default", - "namespace": "cert-manager", - "resourceVersion": "568", - "uid": "863f6141-bf29-4daf-90fc-e01b240d7e13" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:01Z", - "name": "replicaset-controller", - "namespace": "kube-system", - "resourceVersion": "290", - "uid": "ffb004e7-734f-4743-a025-598f9abe1e9f" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:31:52Z", - "name": "default", - "namespace": "projectcontour", - "resourceVersion": "1340", - "uid": "0337f4b3-e5fb-49dd-83b6-97fb593c9afa" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:04Z", - "name": "attachdetach-controller", - "namespace": "kube-system", - "resourceVersion": "340", - "uid": "42df16de-153a-4984-b887-2cf916e76ed2" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:01Z", - "name": "disruption-controller", - "namespace": "kube-system", - "resourceVersion": "282", - "uid": "d6f1c4dc-5e74-4014-8e01-3d2c0dd4fb98" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:06Z", - "name": "default", - "namespace": "kube-node-lease", - "resourceVersion": "426", - "uid": "0af020f3-7331-4070-a5aa-3a31593375e0" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:29:03Z", - "name": "local-path-provisioner-service-account", - "namespace": "local-path-storage", - "resourceVersion": "322", - "uid": "03e97934-c0c8-459c-829c-e9db7f7c7cb5" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "pvc-protection-controller", - "namespace": "kube-system", - "resourceVersion": "272", - "uid": "83c24d1d-0b03-4326-8605-eaca5c8a0356" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:04Z", - "name": "persistent-volume-binder", - "namespace": "kube-system", - "resourceVersion": "339", - "uid": "b5e3fa27-5f96-4f50-aa0b-c10dc5f75d78" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:01Z", - "name": "endpointslicemirroring-controller", - "namespace": "kube-system", - "resourceVersion": "293", - "uid": "3f524350-a195-4eb1-8b0f-6d61bd7975c0" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:30:39Z", - "labels": { - "app.kubernetes.io/component": "rbac", - "app.kubernetes.io/created-by": "sample-external-issuer", - "app.kubernetes.io/instance": "controller-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "serviceaccount", - "app.kubernetes.io/part-of": "sample-external-issuer" - }, - "name": "sample-external-issuer-controller-manager", - "namespace": "sample-external-issuer-system", - "resourceVersion": "841", - "uid": "7553ab23-9dc0-4d72-bfe6-e6273d9e9688" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:03Z", - "name": "ttl-after-finished-controller", - "namespace": "kube-system", - "resourceVersion": "333", - "uid": "a7f7041d-8ab3-47ee-a8eb-6abae01f48f2" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "kube-proxy", - "namespace": "kube-system", - "resourceVersion": "276", - "uid": "78b0fee0-87a9-49f2-b265-6f8f94062372" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:06Z", - "name": "default", - "namespace": "kube-public", - "resourceVersion": "428", - "uid": "60052ee7-0d64-4dbb-8b02-47d27186553f" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:01Z", - "name": "job-controller", - "namespace": "kube-system", - "resourceVersion": "298", - "uid": "5e1508e8-fddc-4c99-b13c-15f1c03183a7" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:30:39Z", - "name": "default", - "namespace": "sample-external-issuer-system", - "resourceVersion": "832", - "uid": "3af37a4a-5b78-480b-9c1d-f229bd3d7319" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "samplewebhook", - "meta.helm.sh/release-namespace": "samplewebhook" - }, - "creationTimestamp": "2025-08-09T06:30:45Z", - "labels": { - "app": "example-webhook", - "app.kubernetes.io/managed-by": "Helm", - "chart": "example-webhook-0.1.0", - "heritage": "Helm", - "release": "samplewebhook" - }, - "name": "samplewebhook-example-webhook", - "namespace": "samplewebhook", - "resourceVersion": "898", - "uid": "c7d99aed-268a-4f3b-970d-cfdd9da754e2" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:02Z", - "name": "ephemeral-volume-controller", - "namespace": "kube-system", - "resourceVersion": "316", - "uid": "be13ce1b-4705-453f-8abd-a49c3084ecbd" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:31:12Z", - "name": "default", - "namespace": "ingress-nginx", - "resourceVersion": "1130", - "uid": "f8970a65-f4f6-457c-8f2b-0f1700012951" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:03Z", - "name": "horizontal-pod-autoscaler", - "namespace": "kube-system", - "resourceVersion": "320", - "uid": "31952f15-3d52-43c4-8c84-cfff5c3b6c74" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:01Z", - "name": "replication-controller", - "namespace": "kube-system", - "resourceVersion": "299", - "uid": "7e31dc8c-f32c-4221-b645-07dcd2f60544" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "statefulset-controller", - "namespace": "kube-system", - "resourceVersion": "269", - "uid": "0174ec59-2feb-4bdf-afca-cef89619b3ca" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "service-account-controller", - "namespace": "kube-system", - "resourceVersion": "274", - "uid": "0279b6b6-b5e0-4d51-9ffd-9f9079959ff3" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:01Z", - "name": "root-ca-cert-publisher", - "namespace": "kube-system", - "resourceVersion": "292", - "uid": "27285643-c7e9-43ea-93d7-b5d87ef336f8" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:04Z", - "name": "namespace-controller", - "namespace": "kube-system", - "resourceVersion": "336", - "uid": "28f16864-e98e-4b3b-be20-aba0b616bf0e" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "automountServiceAccountToken": true, - "kind": "ServiceAccount", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "ingress-nginx", - "meta.helm.sh/release-namespace": "ingress-nginx" - }, - "creationTimestamp": "2025-08-09T06:31:23Z", - "labels": { - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "ingress-nginx", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "ingress-nginx", - "app.kubernetes.io/part-of": "ingress-nginx", - "app.kubernetes.io/version": "1.12.3", - "helm.sh/chart": "ingress-nginx-4.12.3" - }, - "name": "ingress-nginx", - "namespace": "ingress-nginx", - "resourceVersion": "1192", - "uid": "da97c824-64d3-402a-a1a2-5329f765d9a6" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:04Z", - "name": "certificate-controller", - "namespace": "kube-system", - "resourceVersion": "337", - "uid": "0b0ee3e9-220e-4142-b117-3da0c1e7ae1b" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "coredns", - "namespace": "kube-system", - "resourceVersion": "258", - "uid": "8169cda4-9543-4934-84ee-ed411b1be588" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:01Z", - "name": "cronjob-controller", - "namespace": "kube-system", - "resourceVersion": "283", - "uid": "d1d98865-35fc-4b0f-9dda-4d1e7c6ce737" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:02Z", - "name": "pod-garbage-collector", - "namespace": "kube-system", - "resourceVersion": "308", - "uid": "c219d0ee-aead-4199-a4da-5955ca507132" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:02Z", - "name": "token-cleaner", - "namespace": "kube-system", - "resourceVersion": "312", - "uid": "7116900a-b8e8-4988-9a9e-ac8cc7f6f2db" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "automountServiceAccountToken": false, - "kind": "ServiceAccount", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "projectcontour", - "meta.helm.sh/release-namespace": "projectcontour" - }, - "creationTimestamp": "2025-08-09T06:32:04Z", - "labels": { - "app.kubernetes.io/component": "envoy", - "app.kubernetes.io/instance": "projectcontour", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "contour", - "app.kubernetes.io/version": "1.29.5", - "helm.sh/chart": "contour-18.2.4" - }, - "name": "projectcontour-envoy", - "namespace": "projectcontour", - "resourceVersion": "1401", - "uid": "1895c3cd-3de8-4c24-b6ca-428d4725b711" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:04Z", - "name": "daemon-set-controller", - "namespace": "kube-system", - "resourceVersion": "338", - "uid": "9d56ff89-148d-4d1e-ad13-b1cc221e5d07" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "node-controller", - "namespace": "kube-system", - "resourceVersion": "270", - "uid": "cc041650-1a6e-43db-83f4-13209d658b9e" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "automountServiceAccountToken": true, - "kind": "ServiceAccount", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager", - "namespace": "cert-manager", - "resourceVersion": "572", - "uid": "1404108d-0edc-4b7e-a59c-4652f64b2dd7" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:06Z", - "name": "default", - "namespace": "default", - "resourceVersion": "424", - "uid": "e3f6384b-0b7a-45d6-ac0b-3ffb94c20b39" - } - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:03Z", - "name": "endpoint-controller", - "namespace": "kube-system", - "resourceVersion": "319", - "uid": "59209742-0502-40c1-b464-f17708f9cdab" - } - } - } - ] - }, - "schema_version": "v2.0.0" - }, - { - "cluster_id": "example-cluster-id", - "data-gatherer": "k8s/secrets", - "timestamp": "2025-08-09T12:35:09+01:00", - "data": { - "items": [ - { - "resource": { - "apiVersion": "v1", - "data": { - "ca.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURIRENDQWdTZ0F3SUJBZ0lFT2FLaTZUQU5CZ2txaGtpRzl3MEJBUXNGQURBdU1SZ3dGZ1lEVlFRREV3OVEKY205cVpXTjBJRU52Ym5SdmRYSXhFakFRQmdOVkJBVVRDVGsyTmprMU9UZzBPVEFlRncweU5UQTRNRGd3TmpNeApOVGhhRncweU5qQTRNRGt3TmpNeE5UWmFNQzR4R0RBV0JnTlZCQU1URDFCeWIycGxZM1FnUTI5dWRHOTFjakVTCk1CQUdBMVVFQlJNSk9UWTJPVFU1T0RRNU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0MKQVFFQXZVRmY2QUJLN3REWVkrWmlScHpLQjdtcWdWa21pUlVmVEx3aTRrV01ETk1KWnk1VXBsaTBaTGRFTE11eApJeWdkYTEyL0RHOGxhcmNnTDNlZlI1VDdRWmszSGJBNTlKN2ljV0p5M3hWNTNadXEvS0IwODZpV2ZtY21UaTMzCk5xNUtnNWlvZ25iL3hUQ2F4MHpBSUsvNXhnZHJjRmhnRGdqMWZLSlYzQlFLUjAzSkUybGdRZ2ZvRGZxbGczVXkKK3BveG14eFdzOUt2bDhFcW5jakMxOXFKam5GbHpZK1E1OWxHb1c0R21oaVI0MnNFSDNFeXBIRG9hYWQ0Z3dCZAppZWN6eWlFN1BwR21xZGNKQ09WdStSVEZhY0crZW5ySHdyT1l3bmNvTDV1TXUwMDdOSmFlOSttV0JsQmdaMk9TCjhjdk1LelFoc3N4N2IzdE5rcGNrVDd2SE13SURBUUFCbzBJd1FEQU9CZ05WSFE4QkFmOEVCQU1DQXFRd0R3WUQKVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVU2YVNhYlQ5cnYzUlhGY0U4ZjEvd0NIb215bDh3RFFZSgpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFDM2xwNG0yL0VGakZoa0JsUzVsSkhIQVBHaWo3cnNLcmtONk90ZzJhbFlHCkpSVmFFK0tZQ3M1R3dJWUVQUFZSWVU5OWg3bGhZdDhZRzZ0N2UvUmJyL05vSDR6cFpObEU5SUx6S1NndndlWFEKVXNYV05JMkQrbU9PWVMwQmtzUWRIejFuV2hrV2pnQWpNdFpQaVovQkJsZEg0MmxyaDVLbGlubXYrOXJ2MXJRMwpCTEdkVm5zdGdyZlpHOFFOTlNLRmY3TWdnTUZ2bmRtd2UyOUNjTllOd243R1RVb2ZhL2Z0N0ROZGh3TVQwZHlnCnNDdVJTdlI5aHlFd1RTaGFYQXBuRWs0ZjA3Ni9yNTZZdU1rNzVqbUluTWxIbWxVM21XY0Z0UEFUZUtXejFLWUMKYkwzNFZtRmpaWVNrSGRWVmlSYlNXL0w1QkNxMEVIc1c1ZUk2Z0krejVDRT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", - "tls.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURlakNDQW1LZ0F3SUJBZ0lFSWtCTkZEQU5CZ2txaGtpRzl3MEJBUXNGQURBdU1SZ3dGZ1lEVlFRREV3OVEKY205cVpXTjBJRU52Ym5SdmRYSXhFakFRQmdOVkJBVVRDVGsyTmprMU9UZzBPVEFlRncweU5UQTRNRGd3TmpNeQpNREJhRncweU5qQTRNRGt3TmpNeE5UWmFNQkF4RGpBTUJnTlZCQU1UQldWdWRtOTVNSUlCSWpBTkJna3Foa2lHCjl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFtWVQ0enJKNFhkTU9jTDc4Sm4yWUNVMjl4Z1VscHlrZWFTWUYKaElaZ2VzWTJnZW0yQ0FJQklRVHhWc0lQUW94d3BrWFdrMGRwYmJnb2ZRR3NkRjkyclA3V0pTN0JtMjMrK2lsTQpjUWVCNFVkQVNrZU9iMWQycmlDQzRJT2tkYm0zbmxUdEJ0RWRpMnRmMGZqbTV5ZGxNcUFabXBpRHVNRGxTeXJQCjBBYzZ3UkhpM0RtMFZhWHBrZnRnTTZwL24yMkJyV1l0cHBibUhXQkZEaG1pUjVISnZ3VjgxcUxEaHMxRENuMGYKYnBvZ3lzalVUUDRhcXJ1QnRvUGwrN2I1WVl2UVBBVkI2ajhvOUxpbnl4d3lBTEE1THlVaWtHT1dNbUNjR2JOUQo1QnhlQW1MeFNNcVk4M085RzdBaEJFbmxLbmVQc3Y1dUk5MWREY2tjeFlFUm1HZzNNd0lEQVFBQm80RzlNSUc2Ck1BNEdBMVVkRHdFQi93UUVBd0lFOERBZEJnTlZIUTRFRmdRVTloQ1grK243cFdNeEJoM29HLzJmMS9zY0REUXcKSHdZRFZSMGpCQmd3Rm9BVTZhU2FiVDlydjNSWEZjRThmMS93Q0hvbXlsOHdhQVlEVlIwUkJHRXdYNElGWlc1MgpiM21DRkdWdWRtOTVMbkJ5YjJwbFkzUmpiMjUwYjNWeWdoaGxiblp2ZVM1d2NtOXFaV04wWTI5dWRHOTFjaTV6CmRtT0NKbVZ1ZG05NUxuQnliMnBsWTNSamIyNTBiM1Z5TG5OMll5NWpiSFZ6ZEdWeUxteHZZMkZzTUEwR0NTcUcKU0liM0RRRUJDd1VBQTRJQkFRQUgrVXB2VWtBRWJQQlVKNHNReFVuZUdyaHc2RmsxR3hkamg1UzgxcCtqdTNUNApvRUxOQ0h3U0FtWThNL1J5ejFLUmJ3UlQ5ZjZyWk1xRnk0NDBIMmxvb3NSTVZvSU5kbHZGdjJyb1BTN2tDQ3cxCklyR2wzRVowOENFSWhWektDN3MrQk1qOEVMTHorZlA2VldOa1ltaGxQSFZmR0IxUzc4VUUvVVZmQnFwMCtDZ24KRkRxWkpJWThPeWtIeGRJa284RklYWjkzQWRsczZUMnNybWV4TWd2M0JuVVMzY1BoUFY4OUx0VEJ1MEIycVUxUgorZ2F5MU9oQ0dkZmpBK3d5Y3djWmkwTWR1azR4WCtGdFM0SU85RXJvVy9WY2hWUmpqRzJNeEdpY3RqL3BxZXpWCnhxZWZnZ2NzZzk1THc4cUtobVI1RERrOG9BTUpqRzJQdlA1WUxwK1AKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" - }, - "kind": "Secret", - "metadata": { - "creationTimestamp": "2025-08-09T06:32:00Z", - "labels": { - "app": "contour" - }, - "name": "envoycert", - "namespace": "projectcontour", - "resourceVersion": "1377", - "uid": "55e2564a-98d3-4cff-917c-096264fc784f" - }, - "type": "kubernetes.io/tls" - } - }, - { - "resource": { - "apiVersion": "v1", - "data": { - "ca.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURKRENDQWd5Z0F3SUJBZ0lVU1hFVGhlanIrbjVFTk1oR0t3d28zOEN1SENVd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0tqRW9NQ1lHQTFVRUF4TWZZMkV1WlhoaGJYQnNaUzEzWldKb2IyOXJMbU5sY25RdGJXRnVZV2RsY2pBZQpGdzB5TlRBNE1Ea3dOak13TkRaYUZ3MHpNREE0TURnd05qTXdORFphTUNveEtEQW1CZ05WQkFNVEgyTmhMbVY0CllXMXdiR1V0ZDJWaWFHOXZheTVqWlhKMExXMWhibUZuWlhJd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUIKRHdBd2dnRUtBb0lCQVFEei9QMEJieE12WVAvVEExd1dUYzhmOWtBQ2pxZzdycW9raDh6d0pJcGt6NkF5c1d6OQpkcU0rb3BqcW9mMGZpZUJmMG1LdGxTNWNHWkFISW9ibHBoc2VGaVQxcWVtd2hHRVpxUFFvbE1TUkRXanoyVERyCkZVU3hlR0dpV1BOcG13cXJMcjhOcVA2ZHBJNWxRSWxzblpYT1ViejR3TnlpS29sTXEwU3BIa25GUGh5RVkzUTAKV25URXlMNUFIOFZLUW4rbzByakJhYURPU2kwWjBJY1JaMXA2ampZcU96VGxNZnB6RHpUN09PTjFyOS9jQzNqegppUURyVG5sNkZiTlJGV3ozYS9RZEkrZUVlQThaT1JETjFSWFE0SUhJc0JveHdMTjVSenNkNnIwcS9NVHlBWThtCjdJVU93QkZtbUVtWE9ONk5LUzQ3TnNSY2tNSVJZZms1VWJ0MUFnTUJBQUdqUWpCQU1BNEdBMVVkRHdFQi93UUUKQXdJQ3BEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCU3E2UTdNM1VrOU5zd3d4cHl0V2E4SQpsaXE5ckRBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXhtZVQzKzdIMGMyTUd5SnNtUkFoczh2ZWxxR1lPd3pGCjdOWnVTNHk2cEk5bjVnbnh2Q1lMejZHZlRkcU8zcllTdm1vd2ZCWU9ZS1ZpSjlEUldKU0VTYmI3azl6N2xheVUKMjZMZno1RHJnb1FKMkhLZ1IvS04rRFVwcDRFOHluM2pJQlBacVJ5clFzT2hMNDVFWFFvWmZHa05INmJERkdnNgpnSDQ1YmF6ajlLcnVqN2x5KytMeUxyU05IMXBNWmN5aFlxYjdNMHpNUVJheWptRnBxK0tXQnIwQkxFNVlWNGFECnpUemxPcDZGSlpIdnZONjNENnlkVmluNnNQM0RwbCtFcXlHYU1KZmZoMk9Yd0JlYnpIRE1yd0toK05laVZ6MUoKdFNjNXFwNHZaQ2YzNnZMRkFwVFNDWHl5V2d2cGVGZ1ZNck1nUnNxaGozdy9rZjZGeHdmcGxnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", - "tls.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURKRENDQWd5Z0F3SUJBZ0lVU1hFVGhlanIrbjVFTk1oR0t3d28zOEN1SENVd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0tqRW9NQ1lHQTFVRUF4TWZZMkV1WlhoaGJYQnNaUzEzWldKb2IyOXJMbU5sY25RdGJXRnVZV2RsY2pBZQpGdzB5TlRBNE1Ea3dOak13TkRaYUZ3MHpNREE0TURnd05qTXdORFphTUNveEtEQW1CZ05WQkFNVEgyTmhMbVY0CllXMXdiR1V0ZDJWaWFHOXZheTVqWlhKMExXMWhibUZuWlhJd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUIKRHdBd2dnRUtBb0lCQVFEei9QMEJieE12WVAvVEExd1dUYzhmOWtBQ2pxZzdycW9raDh6d0pJcGt6NkF5c1d6OQpkcU0rb3BqcW9mMGZpZUJmMG1LdGxTNWNHWkFISW9ibHBoc2VGaVQxcWVtd2hHRVpxUFFvbE1TUkRXanoyVERyCkZVU3hlR0dpV1BOcG13cXJMcjhOcVA2ZHBJNWxRSWxzblpYT1ViejR3TnlpS29sTXEwU3BIa25GUGh5RVkzUTAKV25URXlMNUFIOFZLUW4rbzByakJhYURPU2kwWjBJY1JaMXA2ampZcU96VGxNZnB6RHpUN09PTjFyOS9jQzNqegppUURyVG5sNkZiTlJGV3ozYS9RZEkrZUVlQThaT1JETjFSWFE0SUhJc0JveHdMTjVSenNkNnIwcS9NVHlBWThtCjdJVU93QkZtbUVtWE9ONk5LUzQ3TnNSY2tNSVJZZms1VWJ0MUFnTUJBQUdqUWpCQU1BNEdBMVVkRHdFQi93UUUKQXdJQ3BEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCU3E2UTdNM1VrOU5zd3d4cHl0V2E4SQpsaXE5ckRBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXhtZVQzKzdIMGMyTUd5SnNtUkFoczh2ZWxxR1lPd3pGCjdOWnVTNHk2cEk5bjVnbnh2Q1lMejZHZlRkcU8zcllTdm1vd2ZCWU9ZS1ZpSjlEUldKU0VTYmI3azl6N2xheVUKMjZMZno1RHJnb1FKMkhLZ1IvS04rRFVwcDRFOHluM2pJQlBacVJ5clFzT2hMNDVFWFFvWmZHa05INmJERkdnNgpnSDQ1YmF6ajlLcnVqN2x5KytMeUxyU05IMXBNWmN5aFlxYjdNMHpNUVJheWptRnBxK0tXQnIwQkxFNVlWNGFECnpUemxPcDZGSlpIdnZONjNENnlkVmluNnNQM0RwbCtFcXlHYU1KZmZoMk9Yd0JlYnpIRE1yd0toK05laVZ6MUoKdFNjNXFwNHZaQ2YzNnZMRkFwVFNDWHl5V2d2cGVGZ1ZNck1nUnNxaGozdy9rZjZGeHdmcGxnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" - }, - "kind": "Secret", - "metadata": { - "annotations": { - "cert-manager.io/alt-names": "", - "cert-manager.io/certificate-name": "samplewebhook-example-webhook-ca", - "cert-manager.io/common-name": "ca.example-webhook.cert-manager", - "cert-manager.io/ip-sans": "", - "cert-manager.io/issuer-group": "", - "cert-manager.io/issuer-kind": "", - "cert-manager.io/issuer-name": "samplewebhook-example-webhook-self-sign", - "cert-manager.io/uri-sans": "" - }, - "creationTimestamp": "2025-08-09T06:30:46Z", - "labels": { - "controller.cert-manager.io/fao": "true" - }, - "name": "samplewebhook-example-webhook-ca", - "namespace": "samplewebhook", - "resourceVersion": "956", - "uid": "7b6f80a9-7c5c-414c-90bd-df96ffd8da4f" - }, - "type": "kubernetes.io/tls" - } - }, - { - "resource": { - "apiVersion": "v1", - "data": { - "ca.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURKRENDQWd5Z0F3SUJBZ0lVU1hFVGhlanIrbjVFTk1oR0t3d28zOEN1SENVd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0tqRW9NQ1lHQTFVRUF4TWZZMkV1WlhoaGJYQnNaUzEzWldKb2IyOXJMbU5sY25RdGJXRnVZV2RsY2pBZQpGdzB5TlRBNE1Ea3dOak13TkRaYUZ3MHpNREE0TURnd05qTXdORFphTUNveEtEQW1CZ05WQkFNVEgyTmhMbVY0CllXMXdiR1V0ZDJWaWFHOXZheTVqWlhKMExXMWhibUZuWlhJd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUIKRHdBd2dnRUtBb0lCQVFEei9QMEJieE12WVAvVEExd1dUYzhmOWtBQ2pxZzdycW9raDh6d0pJcGt6NkF5c1d6OQpkcU0rb3BqcW9mMGZpZUJmMG1LdGxTNWNHWkFISW9ibHBoc2VGaVQxcWVtd2hHRVpxUFFvbE1TUkRXanoyVERyCkZVU3hlR0dpV1BOcG13cXJMcjhOcVA2ZHBJNWxRSWxzblpYT1ViejR3TnlpS29sTXEwU3BIa25GUGh5RVkzUTAKV25URXlMNUFIOFZLUW4rbzByakJhYURPU2kwWjBJY1JaMXA2ampZcU96VGxNZnB6RHpUN09PTjFyOS9jQzNqegppUURyVG5sNkZiTlJGV3ozYS9RZEkrZUVlQThaT1JETjFSWFE0SUhJc0JveHdMTjVSenNkNnIwcS9NVHlBWThtCjdJVU93QkZtbUVtWE9ONk5LUzQ3TnNSY2tNSVJZZms1VWJ0MUFnTUJBQUdqUWpCQU1BNEdBMVVkRHdFQi93UUUKQXdJQ3BEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCU3E2UTdNM1VrOU5zd3d4cHl0V2E4SQpsaXE5ckRBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXhtZVQzKzdIMGMyTUd5SnNtUkFoczh2ZWxxR1lPd3pGCjdOWnVTNHk2cEk5bjVnbnh2Q1lMejZHZlRkcU8zcllTdm1vd2ZCWU9ZS1ZpSjlEUldKU0VTYmI3azl6N2xheVUKMjZMZno1RHJnb1FKMkhLZ1IvS04rRFVwcDRFOHluM2pJQlBacVJ5clFzT2hMNDVFWFFvWmZHa05INmJERkdnNgpnSDQ1YmF6ajlLcnVqN2x5KytMeUxyU05IMXBNWmN5aFlxYjdNMHpNUVJheWptRnBxK0tXQnIwQkxFNVlWNGFECnpUemxPcDZGSlpIdnZONjNENnlkVmluNnNQM0RwbCtFcXlHYU1KZmZoMk9Yd0JlYnpIRE1yd0toK05laVZ6MUoKdFNjNXFwNHZaQ2YzNnZMRkFwVFNDWHl5V2d2cGVGZ1ZNck1nUnNxaGozdy9rZjZGeHdmcGxnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", - "tls.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURoekNDQW0rZ0F3SUJBZ0lVUXI5VVoyR2c2U2JrS044S0ZhdHNENEdoQmxrd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0tqRW9NQ1lHQTFVRUF4TWZZMkV1WlhoaGJYQnNaUzEzWldKb2IyOXJMbU5sY25RdGJXRnVZV2RsY2pBZQpGdzB5TlRBNE1Ea3dOak13TkRaYUZ3MHlOakE0TURrd05qTXdORFphTUFBd2dnRWlNQTBHQ1NxR1NJYjNEUUVCCkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDbzJZVmFvL1AzNkFWbWxWS1dmRGxMOGlTbHMxQ0p1QjNjU3hJakVUUGUKUUZwVytrQm9pQm1CV1lSd1MvYlg1eWlkMkVTNGJJdVVGZVNYTy9OT2IzWlhmcStZTkFSbndnYUxyaFRxblhuVQpUSXlMdlV4cHNvT0ZuMUU5U3lFeXZ3bXIxZUJBWmlwa1EydnVrL1VLY0VuQldWU1E4ZU9jWlBJc08xUzlldnMvCmtoM3FRZXkwVnN2ZXp0bXVCTWUvb1lqWDUvZ2t2Qm9kejY5UjROdFBQNGRNUXRCZWZhelZ4V2JjU3NEbUI0dE4KcDNLMFovOXpFWFdDdTFLdUMza2tOVzRERmpBWlh6eVB2QWJma3hIOThjR3luMGR2YkhwWkFkQnZ4OExFSFFaZwp4ZTk3VTUvUUI5RVk3eHNFT1BYWC81azh2TXk3VU1BRm94VmFJZytoVkh0bEFnTUJBQUdqZ2M0d2djc3dEZ1lEClZSMFBBUUgvQkFRREFnV2dNQXdHQTFVZEV3RUIvd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVVxdWtPek4xSlBUYk0KTU1hY3JWbXZDSllxdmF3d2dZa0dBMVVkRVFFQi93Ui9NSDJDSFhOaGJYQnNaWGRsWW1odmIyc3RaWGhoYlhCcwpaUzEzWldKb2IyOXJnaXR6WVcxd2JHVjNaV0pvYjI5ckxXVjRZVzF3YkdVdGQyVmlhRzl2YXk1ellXMXdiR1YzClpXSm9iMjlyZ2k5ellXMXdiR1YzWldKb2IyOXJMV1Y0WVcxd2JHVXRkMlZpYUc5dmF5NXpZVzF3YkdWM1pXSm8KYjI5ckxuTjJZekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBTHlybzBNSUZlWVdFUVYwb2NsbGMxTFVZa05rKwpuR0t6eTRkSXgvSFoxTGJJVGNLaWdkWUdRWGprakw3b0V4MHE3djFtS0tzSEJQUEcrZjBrQjhBcFlaMCtsWmlxCkZINUFxalQvK2ZGMDFsbFZWRVRhYW5aNE5yMTBPSlcrRDMrT0dHWmUzRWh2dVViczc5TS9lNlQvOVo5WW5tZDQKN2NFQ1hYT1Q1OVh5L0hORktHNjYzbWw1azR6OUQ3dFZIajQ3TGpqSGwwazhrNGo1UzBwbVJnU3hRZnN0elRGZgpGNExGUGNkRllDTlhTMU1EOTNrNFRHUisyeTVKc2tlZHVFQ2hpZnpGYlRoUjJwQmJYTDludzhRRm40UTR2c0R3CmZ3UGdab3BMNG9mdHA4ZklUcVRIcFEyTVlvSm92ME4wY0dVeVBjaEFKMkJRTVJOV2pnNm1PWTdQcHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" - }, - "kind": "Secret", - "metadata": { - "annotations": { - "cert-manager.io/alt-names": "samplewebhook-example-webhook,samplewebhook-example-webhook.samplewebhook,samplewebhook-example-webhook.samplewebhook.svc", - "cert-manager.io/certificate-name": "samplewebhook-example-webhook-webhook-tls", - "cert-manager.io/common-name": "", - "cert-manager.io/ip-sans": "", - "cert-manager.io/issuer-group": "", - "cert-manager.io/issuer-kind": "", - "cert-manager.io/issuer-name": "samplewebhook-example-webhook-ca", - "cert-manager.io/uri-sans": "" - }, - "creationTimestamp": "2025-08-09T06:30:46Z", - "labels": { - "controller.cert-manager.io/fao": "true" - }, - "name": "samplewebhook-example-webhook-webhook-tls", - "namespace": "samplewebhook", - "resourceVersion": "979", - "uid": "c304cf49-750c-4800-accd-86ace29382dd" - }, - "type": "kubernetes.io/tls" - } - }, - { - "resource": { - "apiVersion": "v1", - "data": { - "ca.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJ4VENDQVV1Z0F3SUJBZ0lVWlRsamdmMXhMYzZXcjlOcHZUWEw0NmpQanpBd0NnWUlLb1pJemowRUF3TXcKSWpFZ01CNEdBMVVFQXhNWFkyVnlkQzF0WVc1aFoyVnlMWGRsWW1odmIyc3RZMkV3SGhjTk1qVXdPREE1TURZeQpPVFUyV2hjTk1qWXdPREE1TURZeU9UVTJXakFpTVNBd0hnWURWUVFERXhkalpYSjBMVzFoYm1GblpYSXRkMlZpCmFHOXZheTFqWVRCMk1CQUdCeXFHU000OUFnRUdCU3VCQkFBaUEySUFCRHBFZ1BPbUltYkRrMkQ2dFVKa0pNZlYKbHZUOGQrUlpBMVVHd3lwb2JHQlVJUXE2RFNydHZjTG5HRVFQM3NiZjMxM2tBb3pUNWhvSDNYQzRHWU50WjlkZgpnTWJlU0ZFS21IZ3dReExXZ1R1NXJCdnlIb0NGRWgvSWVPZUdNZDc5TTZOQ01FQXdEZ1lEVlIwUEFRSC9CQVFECkFnS2tNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGREJ6dGlqaG9pT2tIcVlEMkJ6UVgwd2QKdDRrMU1Bb0dDQ3FHU000OUJBTURBMmdBTUdVQ01RRDlNRGFHRm5uWXIxdHRrREgrNW5ab3IwT1cxUE9yeDN0SAo1QzhJL21pd25VWkVPQ3oxSUZjeUpsSDcybm4ybURZQ01BbGdBMEdZbEdqa3VkeXJyTno4WlRkOFFySzQ0NTFRCjNXS3BzbGtoRDVKb3QyOFZQZTJ0RjY0bmViVWRKYmlWNHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", - "tls.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJ4VENDQVV1Z0F3SUJBZ0lVWlRsamdmMXhMYzZXcjlOcHZUWEw0NmpQanpBd0NnWUlLb1pJemowRUF3TXcKSWpFZ01CNEdBMVVFQXhNWFkyVnlkQzF0WVc1aFoyVnlMWGRsWW1odmIyc3RZMkV3SGhjTk1qVXdPREE1TURZeQpPVFUyV2hjTk1qWXdPREE1TURZeU9UVTJXakFpTVNBd0hnWURWUVFERXhkalpYSjBMVzFoYm1GblpYSXRkMlZpCmFHOXZheTFqWVRCMk1CQUdCeXFHU000OUFnRUdCU3VCQkFBaUEySUFCRHBFZ1BPbUltYkRrMkQ2dFVKa0pNZlYKbHZUOGQrUlpBMVVHd3lwb2JHQlVJUXE2RFNydHZjTG5HRVFQM3NiZjMxM2tBb3pUNWhvSDNYQzRHWU50WjlkZgpnTWJlU0ZFS21IZ3dReExXZ1R1NXJCdnlIb0NGRWgvSWVPZUdNZDc5TTZOQ01FQXdEZ1lEVlIwUEFRSC9CQVFECkFnS2tNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGREJ6dGlqaG9pT2tIcVlEMkJ6UVgwd2QKdDRrMU1Bb0dDQ3FHU000OUJBTURBMmdBTUdVQ01RRDlNRGFHRm5uWXIxdHRrREgrNW5ab3IwT1cxUE9yeDN0SAo1QzhJL21pd25VWkVPQ3oxSUZjeUpsSDcybm4ybURZQ01BbGdBMEdZbEdqa3VkeXJyTno4WlRkOFFySzQ0NTFRCjNXS3BzbGtoRDVKb3QyOFZQZTJ0RjY0bmViVWRKYmlWNHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" - }, - "kind": "Secret", - "metadata": { - "annotations": { - "cert-manager.io/allow-direct-injection": "true" - }, - "creationTimestamp": "2025-08-09T06:29:56Z", - "labels": { - "app.kubernetes.io/managed-by": "cert-manager-webhook" - }, - "name": "cert-manager-webhook-ca", - "namespace": "cert-manager", - "resourceVersion": "702", - "uid": "444264e6-777e-4957-a821-3baae2647476" - }, - "type": "Opaque" - } - }, - { - "resource": { - "apiVersion": "v1", - "kind": "Secret", - "metadata": { - "creationTimestamp": "2025-08-09T06:31:19Z", - "name": "ingress-nginx-admission", - "namespace": "ingress-nginx", - "resourceVersion": "1167", - "uid": "861de112-5d03-4f9c-8ba5-b642ad01eb3d" - }, - "type": "Opaque" - } - }, - { - "resource": { - "apiVersion": "v1", - "data": { - "ca.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURIRENDQWdTZ0F3SUJBZ0lFT2FLaTZUQU5CZ2txaGtpRzl3MEJBUXNGQURBdU1SZ3dGZ1lEVlFRREV3OVEKY205cVpXTjBJRU52Ym5SdmRYSXhFakFRQmdOVkJBVVRDVGsyTmprMU9UZzBPVEFlRncweU5UQTRNRGd3TmpNeApOVGhhRncweU5qQTRNRGt3TmpNeE5UWmFNQzR4R0RBV0JnTlZCQU1URDFCeWIycGxZM1FnUTI5dWRHOTFjakVTCk1CQUdBMVVFQlJNSk9UWTJPVFU1T0RRNU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0MKQVFFQXZVRmY2QUJLN3REWVkrWmlScHpLQjdtcWdWa21pUlVmVEx3aTRrV01ETk1KWnk1VXBsaTBaTGRFTE11eApJeWdkYTEyL0RHOGxhcmNnTDNlZlI1VDdRWmszSGJBNTlKN2ljV0p5M3hWNTNadXEvS0IwODZpV2ZtY21UaTMzCk5xNUtnNWlvZ25iL3hUQ2F4MHpBSUsvNXhnZHJjRmhnRGdqMWZLSlYzQlFLUjAzSkUybGdRZ2ZvRGZxbGczVXkKK3BveG14eFdzOUt2bDhFcW5jakMxOXFKam5GbHpZK1E1OWxHb1c0R21oaVI0MnNFSDNFeXBIRG9hYWQ0Z3dCZAppZWN6eWlFN1BwR21xZGNKQ09WdStSVEZhY0crZW5ySHdyT1l3bmNvTDV1TXUwMDdOSmFlOSttV0JsQmdaMk9TCjhjdk1LelFoc3N4N2IzdE5rcGNrVDd2SE13SURBUUFCbzBJd1FEQU9CZ05WSFE4QkFmOEVCQU1DQXFRd0R3WUQKVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVU2YVNhYlQ5cnYzUlhGY0U4ZjEvd0NIb215bDh3RFFZSgpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFDM2xwNG0yL0VGakZoa0JsUzVsSkhIQVBHaWo3cnNLcmtONk90ZzJhbFlHCkpSVmFFK0tZQ3M1R3dJWUVQUFZSWVU5OWg3bGhZdDhZRzZ0N2UvUmJyL05vSDR6cFpObEU5SUx6S1NndndlWFEKVXNYV05JMkQrbU9PWVMwQmtzUWRIejFuV2hrV2pnQWpNdFpQaVovQkJsZEg0MmxyaDVLbGlubXYrOXJ2MXJRMwpCTEdkVm5zdGdyZlpHOFFOTlNLRmY3TWdnTUZ2bmRtd2UyOUNjTllOd243R1RVb2ZhL2Z0N0ROZGh3TVQwZHlnCnNDdVJTdlI5aHlFd1RTaGFYQXBuRWs0ZjA3Ni9yNTZZdU1rNzVqbUluTWxIbWxVM21XY0Z0UEFUZUtXejFLWUMKYkwzNFZtRmpaWVNrSGRWVmlSYlNXL0w1QkNxMEVIc1c1ZUk2Z0krejVDRT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", - "tls.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURoRENDQW15Z0F3SUJBZ0lFRmNGRk5UQU5CZ2txaGtpRzl3MEJBUXNGQURBdU1SZ3dGZ1lEVlFRREV3OVEKY205cVpXTjBJRU52Ym5SdmRYSXhFakFRQmdOVkJBVVRDVGsyTmprMU9UZzBPVEFlRncweU5UQTRNRGd3TmpNeApOVGxhRncweU5qQTRNRGt3TmpNeE5UWmFNQkl4RURBT0JnTlZCQU1UQjJOdmJuUnZkWEl3Z2dFaU1BMEdDU3FHClNJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURhejB1OXRlV0lRYkNhRzFZNE42TVh2TFVMQmFMKzgxc2wKQkZOanNIRkJBMCt3QmU0ZE14TzliM081ZkhmUVF4RmQvcFZ5dXFyUnhDRFE3aGhGQ3hKR1Rab2dBRmhPc1h6bgpZQ20rVk43RVdJdW5oTy9XeTdGRzN1RU1OYjZRR2NZUllBQWZiSEFzWktvYzdBUVJxaVQ5RDZjZFpzSjJ6RlQzCnpoTWtmTUlrQ0pOVXc3NnM2S2VDa2hNZzNJT2RtWUVDVlJkT3dWV01qcmMwNDZQK1FzemZPRmN4dHJBYms1UGEKeC8yd0dHSSs5Y1ozRWNIOWxiUjZpTVlUeVV6bjQ1RVJJWjJZc0dhTk9QdThUT01ieHBXa2FjZlk1ZWdjdUJqZQowR0xmaTB3TmZZTXNxRnhxNDdBZVF0dHIzdXFjL0xNWjVpSmdvSFlXUG9zYXRFVEpKTktqQWdNQkFBR2pnY1V3CmdjSXdEZ1lEVlIwUEFRSC9CQVFEQWdUd01CMEdBMVVkRGdRV0JCUk9VZzlpMEJld3NIeXpRdXF5RnZsUFdsVloKT3pBZkJnTlZIU01FR0RBV2dCVHBwSnB0UDJ1L2RGY1Z3VHgvWC9BSWVpYktYekJ3QmdOVkhSRUVhVEJuZ2dkagpiMjUwYjNWeWdoWmpiMjUwYjNWeUxuQnliMnBsWTNSamIyNTBiM1Z5Z2hwamIyNTBiM1Z5TG5CeWIycGxZM1JqCmIyNTBiM1Z5TG5OMlk0SW9ZMjl1ZEc5MWNpNXdjbTlxWldOMFkyOXVkRzkxY2k1emRtTXVZMngxYzNSbGNpNXMKYjJOaGJEQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFlYThKWk5jUTNiN3NURGEyckdkTzBGM0l3YmNybjFCMApKanNOeHI0aDM0YXp5UVFQT1kyT0lZRkdWbXFIMXlLbFNBRG0wcmVZTEQrZzJoTGxnSC9xd0UzZUZodjRvdWMvCnRIN1U3Vmd3WXVsL0g1cGlTbkgyYTdVZGMzRDI3K3ZoL1ZJNytVNFN0V3NMcVFaeFFYS2ZTYUhWTzV3MWhzWFoKYjBpTTI4MUZzRTVGMnFsR1U0ZysrMUJ2WDJWVVZ6R0pwT0Y5aGV3cnArQm1JZFRKU3haZXVlSjhvWnd5MXJ6YgoweGt1bGdYS2ZMRzNZNm9GL3dQcWxIMi9vRXRON2lHc0RIc05nUER0dDU3eWxMWHV0OWVZbFcyV3pORVVaTHV1Cjk4N1hqaFBXUUJjYW8yMTZZZis0VHE5OUwxaHp5TTQ3ekdGZGdSaUNUSzZFS0UyVkZDVy9Tdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" - }, - "kind": "Secret", - "metadata": { - "creationTimestamp": "2025-08-09T06:32:00Z", - "labels": { - "app": "contour" - }, - "name": "contourcert", - "namespace": "projectcontour", - "resourceVersion": "1376", - "uid": "03893c04-4332-4be0-9f51-c7e842abce97" - }, - "type": "kubernetes.io/tls" - } - } - ] - }, - "schema_version": "v2.0.0" - }, - { - "cluster_id": "example-cluster-id", - "data-gatherer": "k8s/roles", - "timestamp": "2025-08-09T12:35:09+01:00", - "data": { - "items": [ - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system::leader-locking-kube-scheduler", - "namespace": "kube-system", - "resourceVersion": "223", - "uid": "d5050601-60c7-439a-a225-456deefc9670" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resourceNames": [ - "kube-scheduler" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "get", - "update" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "create", - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leasecandidates" - ], - "verbs": [ - "create", - "get", - "list", - "update", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-tokenrequest", - "namespace": "cert-manager", - "resourceVersion": "615", - "uid": "3e6c2c2f-9155-4f2e-9418-5be771b24ba8" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resourceNames": [ - "cert-manager" - ], - "resources": [ - "serviceaccounts/token" - ], - "verbs": [ - "create" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "creationTimestamp": "2025-08-09T06:28:59Z", - "name": "kubeadm:nodes-kubeadm-config", - "namespace": "kube-system", - "resourceVersion": "239", - "uid": "47539ae7-9b5b-4023-87c4-4cb96d312e61" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resourceNames": [ - "kubeadm-config" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "get" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:token-cleaner", - "namespace": "kube-system", - "resourceVersion": "221", - "uid": "78dde366-cd8d-423f-83f0-85a6046ca70c" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "delete", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "kubeadm:bootstrap-signer-clusterinfo", - "namespace": "kube-public", - "resourceVersion": "253", - "uid": "cc0c9cf2-8286-4809-a120-76aa1ced326b" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resourceNames": [ - "cluster-info" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "get" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:cloud-provider", - "namespace": "kube-system", - "resourceVersion": "220", - "uid": "63b800c0-bc06-4782-9a0a-ba525b6f5136" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "create", - "get", - "list", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "webhook", - "app.kubernetes.io/component": "webhook", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "webhook", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-webhook:dynamic-serving", - "namespace": "cert-manager", - "resourceVersion": "612", - "uid": "93320e51-80c5-4ce6-a849-a608cf312eb5" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resourceNames": [ - "cert-manager-webhook-ca" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get", - "list", - "watch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "create" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "kubeadm:kubelet-config", - "namespace": "kube-system", - "resourceVersion": "242", - "uid": "a9be9dd2-02d4-47ce-b3da-9d0b678b4e35" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resourceNames": [ - "kubelet-config" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "get" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:bootstrap-signer", - "namespace": "kube-public", - "resourceVersion": "224", - "uid": "ff4c70f9-4aef-4b3c-a0fc-2939cc68e433" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resourceNames": [ - "cluster-info" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system::leader-locking-kube-controller-manager", - "namespace": "kube-system", - "resourceVersion": "222", - "uid": "a6966a70-1bac-47cd-8b0a-0b842dda051b" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resourceNames": [ - "kube-controller-manager" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "get", - "update" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "create", - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leasecandidates" - ], - "verbs": [ - "create", - "get", - "list", - "update", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "projectcontour", - "meta.helm.sh/release-namespace": "projectcontour" - }, - "creationTimestamp": "2025-08-09T06:32:04Z", - "labels": { - "app.kubernetes.io/instance": "projectcontour", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "contour", - "app.kubernetes.io/version": "1.29.1", - "helm.sh/chart": "contour-18.2.4" - }, - "name": "projectcontour-contour", - "namespace": "projectcontour", - "resourceVersion": "1418", - "uid": "37735b80-b7d7-40c5-a35d-06f3dda902d8" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "get", - "update" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "create", - "get", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "ingress-nginx", - "meta.helm.sh/release-namespace": "ingress-nginx" - }, - "creationTimestamp": "2025-08-09T06:31:23Z", - "labels": { - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "ingress-nginx", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "ingress-nginx", - "app.kubernetes.io/part-of": "ingress-nginx", - "app.kubernetes.io/version": "1.12.3", - "helm.sh/chart": "ingress-nginx-4.12.3" - }, - "name": "ingress-nginx", - "namespace": "ingress-nginx", - "resourceVersion": "1196", - "uid": "776fbcc5-431b-4169-a0bf-23599c3b7b6d" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ], - "verbs": [ - "get" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps", - "pods", - "secrets", - "endpoints" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "services" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingressclasses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resourceNames": [ - "ingress-nginx-leader" - ], - "resources": [ - "leases" - ], - "verbs": [ - "get", - "update" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch" - ] - }, - { - "apiGroups": [ - "discovery.k8s.io" - ], - "resources": [ - "endpointslices" - ], - "verbs": [ - "list", - "watch", - "get" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager:leaderelection", - "namespace": "kube-system", - "resourceVersion": "614", - "uid": "6c51c28d-8cee-419b-9a75-696e1c00d90b" - }, - "rules": [ - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resourceNames": [ - "cert-manager-controller" - ], - "resources": [ - "leases" - ], - "verbs": [ - "get", - "update", - "patch" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "create" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:29:03Z", - "name": "local-path-provisioner-role", - "namespace": "local-path-storage", - "resourceVersion": "323", - "uid": "11500ffc-4ba1-45f4-b258-9e59b9ff729b" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "get", - "list", - "watch", - "create", - "patch", - "update", - "delete" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:01Z", - "name": "kube-proxy", - "namespace": "kube-system", - "resourceVersion": "289", - "uid": "3e0e7e48-8cb7-46e8-921e-c55a15e6e839" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resourceNames": [ - "kube-proxy" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "get" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "samplewebhook", - "meta.helm.sh/release-namespace": "samplewebhook" - }, - "creationTimestamp": "2025-08-09T06:30:45Z", - "labels": { - "app.kubernetes.io/managed-by": "Helm" - }, - "name": "samplewebhook-example-webhook:webhook-authentication-reader", - "namespace": "kube-system", - "resourceVersion": "902", - "uid": "62950c4e-158a-4d87-8aa2-c59bdb85ca72" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resourceNames": [ - "extension-apiserver-authentication" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cainjector", - "app.kubernetes.io/component": "cainjector", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cainjector", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-cainjector:leaderelection", - "namespace": "kube-system", - "resourceVersion": "613", - "uid": "6223066f-0a7b-4047-bf70-ee55a3963b2d" - }, - "rules": [ - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resourceNames": [ - "cert-manager-cainjector-leader-election", - "cert-manager-cainjector-leader-election-core" - ], - "resources": [ - "leases" - ], - "verbs": [ - "get", - "update", - "patch" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "create" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:bootstrap-signer", - "namespace": "kube-system", - "resourceVersion": "219", - "uid": "c20f18bc-b401-40f7-9874-cddd690f6575" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:30:39Z", - "labels": { - "app.kubernetes.io/component": "rbac", - "app.kubernetes.io/created-by": "sample-external-issuer", - "app.kubernetes.io/instance": "leader-election-role", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "role", - "app.kubernetes.io/part-of": "sample-external-issuer" - }, - "name": "sample-external-issuer-leader-election-role", - "namespace": "sample-external-issuer-system", - "resourceVersion": "842", - "uid": "fb894d57-0d77-4619-99f1-e41c4704ea20" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "get", - "list", - "watch", - "create", - "update", - "patch", - "delete" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "get", - "list", - "watch", - "create", - "update", - "patch", - "delete" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "extension-apiserver-authentication-reader", - "namespace": "kube-system", - "resourceVersion": "218", - "uid": "6ccfa415-3634-44de-964e-344763ada77b" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resourceNames": [ - "extension-apiserver-authentication" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - } - } - ] - }, - "schema_version": "v2.0.0" - }, - { - "cluster_id": "example-cluster-id", - "data-gatherer": "k8s/clusterroles", - "timestamp": "2025-08-09T12:35:09+01:00", - "data": { - "items": [ - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974", - "rbac.authorization.k8s.io/aggregate-to-cluster-reader": "true" - }, - "name": "cert-manager-cluster-view", - "resourceVersion": "595", - "uid": "6c0848e6-134c-4a92-8fb9-0cc437909e71" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "clusterissuers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:heapster", - "resourceVersion": "120", - "uid": "33dbe304-7fd9-411e-bcf9-b92b53015e69" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "events", - "namespaces", - "nodes", - "pods" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:pod-garbage-collector", - "resourceVersion": "157", - "uid": "f7ac53f8-4788-4c83-8543-d4065d235770" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "delete", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "get", - "list" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ], - "verbs": [ - "patch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults", - "rbac.authorization.k8s.io/aggregate-to-admin": "true" - }, - "name": "system:aggregate-to-admin", - "resourceVersion": "117", - "uid": "1d6b826f-2dc0-4a83-9ae6-37f6cfc70a3b" - }, - "rules": [ - { - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "localsubjectaccessreviews" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "rolebindings", - "roles" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:kube-controller-manager", - "resourceVersion": "127", - "uid": "85ffa7c4-9494-432b-a5cb-55435a5d353a" - }, - "rules": [ - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resourceNames": [ - "kube-controller-manager" - ], - "resources": [ - "leases" - ], - "verbs": [ - "get", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets", - "serviceaccounts" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "delete" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps", - "namespaces", - "secrets", - "serviceaccounts" - ], - "verbs": [ - "get" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets", - "serviceaccounts" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "tokenreviews" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "subjectaccessreviews" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "*" - ], - "resources": [ - "*" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts/token" - ], - "verbs": [ - "create" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:expand-controller", - "resourceVersion": "149", - "uid": "a10f839d-0f17-435c-90f9-69e1937bdf3a" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumes" - ], - "verbs": [ - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims/status" - ], - "verbs": [ - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "endpoints", - "services" - ], - "verbs": [ - "get" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:monitoring", - "resourceVersion": "111", - "uid": "43b5dc6d-6c21-412a-ac20-7fce5bb4c47b" - }, - "rules": [ - { - "nonResourceURLs": [ - "/healthz", - "/healthz/*", - "/livez", - "/livez/*", - "/metrics", - "/metrics/slis", - "/readyz", - "/readyz/*" - ], - "verbs": [ - "get" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:kubelet-api-admin", - "resourceVersion": "123", - "uid": "8b405732-25ed-4919-99ae-afa9156c636f" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "proxy" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes/log", - "nodes/metrics", - "nodes/proxy", - "nodes/stats" - ], - "verbs": [ - "*" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-clusterissuers", - "resourceVersion": "591", - "uid": "5eb46cae-c947-4c23-9e2b-58efbc57b6db" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "clusterissuers", - "clusterissuers/status" - ], - "verbs": [ - "update", - "patch" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "clusterissuers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get", - "list", - "watch", - "create", - "update", - "delete" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:certificates.k8s.io:kube-apiserver-client-kubelet-approver", - "resourceVersion": "136", - "uid": "6757dd77-13c8-4a3f-8340-93bf3f9bf6f5" - }, - "rules": [ - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resourceNames": [ - "kubernetes.io/kube-apiserver-client-kubelet" - ], - "resources": [ - "signers" - ], - "verbs": [ - "approve" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults", - "rbac.authorization.k8s.io/aggregate-to-view": "true" - }, - "name": "system:aggregate-to-view", - "resourceVersion": "119", - "uid": "e58aec58-bb5b-4d6e-be30-c286838d51d1" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps", - "endpoints", - "persistentvolumeclaims", - "persistentvolumeclaims/status", - "pods", - "replicationcontrollers", - "replicationcontrollers/scale", - "serviceaccounts", - "services", - "services/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "bindings", - "events", - "limitranges", - "namespaces/status", - "pods/log", - "pods/status", - "replicationcontrollers/status", - "resourcequotas", - "resourcequotas/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "discovery.k8s.io" - ], - "resources": [ - "endpointslices" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "controllerrevisions", - "daemonsets", - "daemonsets/status", - "deployments", - "deployments/scale", - "deployments/status", - "replicasets", - "replicasets/scale", - "replicasets/status", - "statefulsets", - "statefulsets/scale", - "statefulsets/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers", - "horizontalpodautoscalers/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs", - "cronjobs/status", - "jobs", - "jobs/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets", - "daemonsets/status", - "deployments", - "deployments/scale", - "deployments/status", - "ingresses", - "ingresses/status", - "networkpolicies", - "replicasets", - "replicasets/scale", - "replicasets/status", - "replicationcontrollers/scale" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets", - "poddisruptionbudgets/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses", - "ingresses/status", - "networkpolicies" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:endpointslicemirroring-controller", - "resourceVersion": "148", - "uid": "e1cc1711-ae42-4658-97a5-24f84df6d899" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "endpoints", - "services" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "services/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "endpoints/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "discovery.k8s.io" - ], - "resources": [ - "endpointslices" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "update" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:30:39Z", - "labels": { - "app.kubernetes.io/component": "kube-rbac-proxy", - "app.kubernetes.io/created-by": "sample-external-issuer", - "app.kubernetes.io/instance": "proxy-role", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "clusterrole", - "app.kubernetes.io/part-of": "sample-external-issuer" - }, - "name": "sample-external-issuer-proxy-role", - "resourceVersion": "846", - "uid": "6a8fb9fa-ee15-4e91-b351-b131d644ead4" - }, - "rules": [ - { - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "tokenreviews" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "subjectaccessreviews" - ], - "verbs": [ - "create" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:auth-delegator", - "resourceVersion": "125", - "uid": "a9e38ef0-42ed-4fb7-b53e-a50eb85b2ab2" - }, - "rules": [ - { - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "tokenreviews" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "subjectaccessreviews" - ], - "verbs": [ - "create" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "system:coredns", - "resourceVersion": "256", - "uid": "814cc257-97bf-4f6e-a773-3e0552761dbb" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "endpoints", - "services", - "pods", - "namespaces" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "discovery.k8s.io" - ], - "resources": [ - "endpointslices" - ], - "verbs": [ - "list", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "projectcontour", - "meta.helm.sh/release-namespace": "projectcontour" - }, - "creationTimestamp": "2025-08-09T06:32:04Z", - "labels": { - "app.kubernetes.io/instance": "projectcontour", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "contour", - "app.kubernetes.io/version": "1.29.1", - "helm.sh/chart": "contour-18.2.4" - }, - "name": "projectcontour-contour", - "resourceVersion": "1415", - "uid": "f38d6b18-b3fb-4094-b8cf-2cdef860e09b" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "create", - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "services" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingressclasses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses/status" - ], - "verbs": [ - "create", - "get", - "update" - ] - }, - { - "apiGroups": [ - "networking.x-k8s.io", - "gateway.networking.k8s.io" - ], - "resources": [ - "gatewayclasses", - "gateways", - "grpcroutes", - "httproutes", - "tcproutes", - "tlsroutes", - "udproutes", - "referencepolicies", - "referencegrants", - "backendtlspolicies" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.x-k8s.io", - "gateway.networking.k8s.io" - ], - "resources": [ - "gatewayclasses/status", - "gateways/status", - "grpcroutes/status", - "httproutes/status", - "tcproutes/status", - "tlsroutes/status", - "udproutes/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "projectcontour.io" - ], - "resources": [ - "contourconfigurations" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "projectcontour.io" - ], - "resources": [ - "contourconfigurations/status" - ], - "verbs": [ - "create", - "get", - "update" - ] - }, - { - "apiGroups": [ - "projectcontour.io" - ], - "resources": [ - "extensionservices" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "projectcontour.io" - ], - "resources": [ - "extensionservices/status" - ], - "verbs": [ - "create", - "get", - "update" - ] - }, - { - "apiGroups": [ - "projectcontour.io" - ], - "resources": [ - "httpproxies", - "tlscertificatedelegations" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "projectcontour.io" - ], - "resources": [ - "httpproxies/status" - ], - "verbs": [ - "create", - "get", - "update" - ] - }, - { - "apiGroups": [ - "discovery.k8s.io" - ], - "resources": [ - "endpointslices" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:certificates.k8s.io:certificatesigningrequests:selfnodeclient", - "resourceVersion": "131", - "uid": "23a0dae6-eb0f-4ed8-9175-f1bfc5002f4d" - }, - "rules": [ - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resources": [ - "certificatesigningrequests/selfnodeclient" - ], - "verbs": [ - "create" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults", - "rbac.authorization.k8s.io/aggregate-to-edit": "true" - }, - "name": "system:aggregate-to-edit", - "resourceVersion": "118", - "uid": "238b229b-360a-4b8b-bd63-5007a8bc0f8f" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/attach", - "pods/exec", - "pods/portforward", - "pods/proxy", - "secrets", - "services/proxy" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ], - "verbs": [ - "impersonate" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods", - "pods/attach", - "pods/exec", - "pods/portforward", - "pods/proxy" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/eviction" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps", - "events", - "persistentvolumeclaims", - "replicationcontrollers", - "replicationcontrollers/scale", - "secrets", - "serviceaccounts", - "services", - "services/proxy" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts/token" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets", - "deployments", - "deployments/rollback", - "deployments/scale", - "replicasets", - "replicasets/scale", - "statefulsets", - "statefulsets/scale" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs", - "jobs" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets", - "deployments", - "deployments/rollback", - "deployments/scale", - "ingresses", - "networkpolicies", - "replicasets", - "replicasets/scale", - "replicationcontrollers/scale" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses", - "networkpolicies" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:30:39Z", - "name": "sample-external-issuer-manager-role", - "resourceVersion": "844", - "uid": "67788166-6629-47b9-9a6e-b628d5564f04" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificaterequests" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificaterequests/status" - ], - "verbs": [ - "get", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "sample-issuer.example.com" - ], - "resources": [ - "clusterissuers", - "issuers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "sample-issuer.example.com" - ], - "resources": [ - "clusterissuers/status", - "issuers/status" - ], - "verbs": [ - "get", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:kube-aggregator", - "resourceVersion": "126", - "uid": "b63836e0-153d-46ed-9a0d-50035bd52599" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "endpoints", - "services" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:job-controller", - "resourceVersion": "153", - "uid": "a463c2b7-7c63-4dee-90cf-0723472b3bb3" - }, - "rules": [ - { - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ], - "verbs": [ - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "create", - "delete", - "list", - "patch", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:resourcequota-controller", - "resourceVersion": "160", - "uid": "b4e1a20b-314c-4b45-a685-0cc8c5f520fb" - }, - "rules": [ - { - "apiGroups": [ - "*" - ], - "resources": [ - "*" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:kube-dns", - "resourceVersion": "128", - "uid": "ecb79ae7-1cfb-4bc9-a116-d500fc7f4863" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "endpoints", - "services" - ], - "verbs": [ - "list", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:certificates.k8s.io:kubelet-serving-approver", - "resourceVersion": "134", - "uid": "9ffe0b54-75d3-4d19-b0e9-dc8602156645" - }, - "rules": [ - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resourceNames": [ - "kubernetes.io/kubelet-serving" - ], - "resources": [ - "signers" - ], - "verbs": [ - "approve" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:disruption-controller", - "resourceVersion": "145", - "uid": "2aee33b4-4216-45bd-afca-59c21f9a8d41" - }, - "rules": [ - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "deployments" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "replicasets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ], - "verbs": [ - "patch", - "update" - ] - }, - { - "apiGroups": [ - "*" - ], - "resources": [ - "*/scale" - ], - "verbs": [ - "get" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:legacy-service-account-token-cleaner", - "resourceVersion": "172", - "uid": "f912e505-d431-4ab3-a02e-422df71ca1ca" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resourceNames": [ - "kube-apiserver-legacy-service-account-token-tracking" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "get" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "delete", - "patch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:service-account-issuer-discovery", - "resourceVersion": "137", - "uid": "c362b375-2991-44f8-9d8d-b2b5995a6d7e" - }, - "rules": [ - { - "nonResourceURLs": [ - "/.well-known/openid-configuration", - "/.well-known/openid-configuration/", - "/openid/v1/jwks", - "/openid/v1/jwks/" - ], - "verbs": [ - "get" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:node-controller", - "resourceVersion": "155", - "uid": "f25dc654-fece-4f19-97fe-728c671cf62c" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "delete", - "get", - "list", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes/status" - ], - "verbs": [ - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ], - "verbs": [ - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "delete", - "get", - "list" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:namespace-controller", - "resourceVersion": "154", - "uid": "67982a4f-51c6-476d-826b-b529bc6b2f01" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ], - "verbs": [ - "delete", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "namespaces/finalize", - "namespaces/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "*" - ], - "resources": [ - "*" - ], - "verbs": [ - "delete", - "deletecollection", - "get", - "list" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:route-controller", - "resourceVersion": "161", - "uid": "45149ebf-f182-42d8-98e5-1d00b1138bb9" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes/status" - ], - "verbs": [ - "patch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:pvc-protection-controller", - "resourceVersion": "167", - "uid": "92d10ef9-5709-4606-ac81-d18aaba6ec50" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ], - "verbs": [ - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:node-proxier", - "resourceVersion": "138", - "uid": "6e8fd0a8-6dcd-4fb9-aec7-fe85b6dc0ccf" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "endpoints", - "services" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "discovery.k8s.io" - ], - "resources": [ - "endpointslices" - ], - "verbs": [ - "list", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:replication-controller", - "resourceVersion": "159", - "uid": "b12d8578-8556-4907-a62d-63f34aeac155" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ], - "verbs": [ - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "create", - "delete", - "list", - "patch", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974", - "rbac.authorization.k8s.io/aggregate-to-admin": "true", - "rbac.authorization.k8s.io/aggregate-to-edit": "true" - }, - "name": "cert-manager-edit", - "resourceVersion": "588", - "uid": "2395e9fe-81d2-426b-a958-4cf67b0df1ee" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates", - "certificaterequests", - "issuers" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "challenges", - "orders" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:node", - "resourceVersion": "121", - "uid": "bafa03fc-8f24-4bc1-82ba-3bb6cda49310" - }, - "rules": [ - { - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "tokenreviews" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "localsubjectaccessreviews", - "subjectaccessreviews" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "services" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "create", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes/status" - ], - "verbs": [ - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "create", - "delete" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ], - "verbs": [ - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/eviction" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps", - "secrets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims", - "persistentvolumes" - ], - "verbs": [ - "get" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ], - "verbs": [ - "get" - ] - }, - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resources": [ - "certificatesigningrequests" - ], - "verbs": [ - "create", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "create", - "delete", - "get", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "volumeattachments" - ], - "verbs": [ - "get" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts/token" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims/status" - ], - "verbs": [ - "get", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "csidrivers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "csinodes" - ], - "verbs": [ - "create", - "delete", - "get", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "node.k8s.io" - ], - "resources": [ - "runtimeclasses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:endpointslice-controller", - "resourceVersion": "147", - "uid": "ea97532b-380c-4f38-b24e-630d21124e00" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes", - "pods", - "services" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "services/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "discovery.k8s.io" - ], - "resources": [ - "endpointslices" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "update" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:service-account-controller", - "resourceVersion": "162", - "uid": "de1aa90c-29c5-4093-b52d-d08c15c3f63b" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:node-problem-detector", - "resourceVersion": "122", - "uid": "e48051bc-9113-40d0-8fce-5b3c2919e9f0" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "get" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes/status" - ], - "verbs": [ - "patch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:02Z", - "name": "kindnet", - "resourceVersion": "310", - "uid": "5f70ede2-9170-4a90-8385-555766ccb87e" - }, - "rules": [ - { - "apiGroups": [ - "policy" - ], - "resourceNames": [ - "kindnet" - ], - "resources": [ - "podsecuritypolicies" - ], - "verbs": [ - "use" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes", - "pods", - "namespaces" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ], - "verbs": [ - "list", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:validatingadmissionpolicy-status-controller", - "resourceVersion": "171", - "uid": "89541ad1-519b-4b87-a7f7-e359b555c72a" - }, - "rules": [ - { - "apiGroups": [ - "admissionregistration.k8s.io" - ], - "resources": [ - "validatingadmissionpolicies" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "admissionregistration.k8s.io" - ], - "resources": [ - "validatingadmissionpolicies/status" - ], - "verbs": [ - "get", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:attachdetach-controller", - "resourceVersion": "140", - "uid": "45d49d9a-8530-467e-aec7-53d2b9936926" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims", - "persistentvolumes" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes/status" - ], - "verbs": [ - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "volumeattachments" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "csidrivers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "csinodes" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "cert-manager", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-certificatesigningrequests", - "resourceVersion": "590", - "uid": "5141674e-1834-4ea1-9332-ddc6a407203f" - }, - "rules": [ - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resources": [ - "certificatesigningrequests" - ], - "verbs": [ - "get", - "list", - "watch", - "update" - ] - }, - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resources": [ - "certificatesigningrequests/status" - ], - "verbs": [ - "update", - "patch" - ] - }, - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resourceNames": [ - "issuers.cert-manager.io/*", - "clusterissuers.cert-manager.io/*" - ], - "resources": [ - "signers" - ], - "verbs": [ - "sign" - ] - }, - { - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "subjectaccessreviews" - ], - "verbs": [ - "create" - ] - } - ] - } - }, - { - "resource": { - "aggregationRule": { - "clusterRoleSelectors": [ - { - "matchLabels": { - "rbac.authorization.k8s.io/aggregate-to-admin": "true" - } - } - ] - }, - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "admin", - "resourceVersion": "616", - "uid": "c2b73b58-8df2-478f-8038-9401025e391e" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates", - "certificaterequests", - "issuers" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "challenges", - "orders" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates", - "certificaterequests", - "issuers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "challenges", - "orders" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/attach", - "pods/exec", - "pods/portforward", - "pods/proxy", - "secrets", - "services/proxy" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ], - "verbs": [ - "impersonate" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods", - "pods/attach", - "pods/exec", - "pods/portforward", - "pods/proxy" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/eviction" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps", - "events", - "persistentvolumeclaims", - "replicationcontrollers", - "replicationcontrollers/scale", - "secrets", - "serviceaccounts", - "services", - "services/proxy" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts/token" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets", - "deployments", - "deployments/rollback", - "deployments/scale", - "replicasets", - "replicasets/scale", - "statefulsets", - "statefulsets/scale" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs", - "jobs" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets", - "deployments", - "deployments/rollback", - "deployments/scale", - "ingresses", - "networkpolicies", - "replicasets", - "replicasets/scale", - "replicationcontrollers/scale" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses", - "networkpolicies" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps", - "endpoints", - "persistentvolumeclaims", - "persistentvolumeclaims/status", - "pods", - "replicationcontrollers", - "replicationcontrollers/scale", - "serviceaccounts", - "services", - "services/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "bindings", - "events", - "limitranges", - "namespaces/status", - "pods/log", - "pods/status", - "replicationcontrollers/status", - "resourcequotas", - "resourcequotas/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "discovery.k8s.io" - ], - "resources": [ - "endpointslices" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "controllerrevisions", - "daemonsets", - "daemonsets/status", - "deployments", - "deployments/scale", - "deployments/status", - "replicasets", - "replicasets/scale", - "replicasets/status", - "statefulsets", - "statefulsets/scale", - "statefulsets/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers", - "horizontalpodautoscalers/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs", - "cronjobs/status", - "jobs", - "jobs/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets", - "daemonsets/status", - "deployments", - "deployments/scale", - "deployments/status", - "ingresses", - "ingresses/status", - "networkpolicies", - "replicasets", - "replicasets/scale", - "replicasets/status", - "replicationcontrollers/scale" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets", - "poddisruptionbudgets/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses", - "ingresses/status", - "networkpolicies" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "localsubjectaccessreviews" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "rolebindings", - "roles" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:cronjob-controller", - "resourceVersion": "142", - "uid": "4b376b8e-d9b1-4d5e-89f8-5af2ada5159a" - }, - "rules": [ - { - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ], - "verbs": [ - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "delete", - "list" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "cert-manager", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-approve:cert-manager-io", - "resourceVersion": "598", - "uid": "9a189eb0-0d74-4cea-aab2-f873ab7b5ec2" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resourceNames": [ - "issuers.cert-manager.io/*", - "clusterissuers.cert-manager.io/*" - ], - "resources": [ - "signers" - ], - "verbs": [ - "approve" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:node-bootstrapper", - "resourceVersion": "124", - "uid": "ac540e82-9a48-4546-9def-04851fc8c05b" - }, - "rules": [ - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resources": [ - "certificatesigningrequests" - ], - "verbs": [ - "create", - "get", - "list", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:endpoint-controller", - "resourceVersion": "146", - "uid": "ff9e722f-92e8-42c4-a4db-77937925d5a7" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "pods", - "services" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "endpoints/restricted" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cainjector", - "app.kubernetes.io/component": "cainjector", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cainjector", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-cainjector", - "resourceVersion": "596", - "uid": "f2064832-1d75-4544-9332-9ed32647b029" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "get", - "create", - "update", - "patch" - ] - }, - { - "apiGroups": [ - "admissionregistration.k8s.io" - ], - "resources": [ - "validatingwebhookconfigurations", - "mutatingwebhookconfigurations" - ], - "verbs": [ - "get", - "list", - "watch", - "update", - "patch" - ] - }, - { - "apiGroups": [ - "apiregistration.k8s.io" - ], - "resources": [ - "apiservices" - ], - "verbs": [ - "get", - "list", - "watch", - "update", - "patch" - ] - }, - { - "apiGroups": [ - "apiextensions.k8s.io" - ], - "resources": [ - "customresourcedefinitions" - ], - "verbs": [ - "get", - "list", - "watch", - "update", - "patch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:30:39Z", - "name": "sample-external-issuer-cert-manager-controller-approve:sample-issuer-example-com", - "resourceVersion": "843", - "uid": "c3fde9b8-4bb8-4920-99db-fdb9efc98596" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resourceNames": [ - "issuers.sample-issuer.example.com/*", - "clusterissuers.sample-issuer.example.com/*" - ], - "resources": [ - "signers" - ], - "verbs": [ - "approve" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-ingress-shim", - "resourceVersion": "586", - "uid": "83aee888-fba3-4d21-b590-b7027688c215" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates", - "certificaterequests" - ], - "verbs": [ - "create", - "update", - "delete" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates", - "certificaterequests", - "issuers", - "clusterissuers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "gateway.networking.k8s.io" - ], - "resources": [ - "gateways", - "httproutes" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "gateway.networking.k8s.io" - ], - "resources": [ - "gateways/finalizers", - "httproutes/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:certificate-controller", - "resourceVersion": "166", - "uid": "b6b9e887-c27e-4dfb-894b-df57e0a26f47" - }, - "rules": [ - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resources": [ - "certificatesigningrequests" - ], - "verbs": [ - "delete", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resources": [ - "certificatesigningrequests/approval", - "certificatesigningrequests/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resourceNames": [ - "kubernetes.io/kube-apiserver-client-kubelet" - ], - "resources": [ - "signers" - ], - "verbs": [ - "approve" - ] - }, - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resourceNames": [ - "kubernetes.io/kube-apiserver-client", - "kubernetes.io/kube-apiserver-client-kubelet", - "kubernetes.io/kubelet-serving", - "kubernetes.io/legacy-unknown" - ], - "resources": [ - "signers" - ], - "verbs": [ - "sign" - ] - }, - { - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "subjectaccessreviews" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:certificates.k8s.io:certificatesigningrequests:nodeclient", - "resourceVersion": "130", - "uid": "88045c5f-c71c-4282-a05e-35f30cd500ef" - }, - "rules": [ - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resources": [ - "certificatesigningrequests/nodeclient" - ], - "verbs": [ - "create" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:certificates.k8s.io:legacy-unknown-approver", - "resourceVersion": "133", - "uid": "80ebb3a0-98e6-4f98-80f9-5066c7ae3ea2" - }, - "rules": [ - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resourceNames": [ - "kubernetes.io/legacy-unknown" - ], - "resources": [ - "signers" - ], - "verbs": [ - "approve" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:public-info-viewer", - "resourceVersion": "113", - "uid": "16e4f281-de96-476f-8fbe-c729ddf5567f" - }, - "rules": [ - { - "nonResourceURLs": [ - "/healthz", - "/livez", - "/readyz", - "/version", - "/version/" - ], - "verbs": [ - "get" - ] - } - ] - } - }, - { - "resource": { - "aggregationRule": { - "clusterRoleSelectors": [ - { - "matchLabels": { - "rbac.authorization.k8s.io/aggregate-to-view": "true" - } - } - ] - }, - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults", - "rbac.authorization.k8s.io/aggregate-to-edit": "true" - }, - "name": "view", - "resourceVersion": "610", - "uid": "73da5e97-b87d-4acf-aae6-27ffbaecb312" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates", - "certificaterequests", - "issuers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "challenges", - "orders" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps", - "endpoints", - "persistentvolumeclaims", - "persistentvolumeclaims/status", - "pods", - "replicationcontrollers", - "replicationcontrollers/scale", - "serviceaccounts", - "services", - "services/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "bindings", - "events", - "limitranges", - "namespaces/status", - "pods/log", - "pods/status", - "replicationcontrollers/status", - "resourcequotas", - "resourcequotas/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "discovery.k8s.io" - ], - "resources": [ - "endpointslices" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "controllerrevisions", - "daemonsets", - "daemonsets/status", - "deployments", - "deployments/scale", - "deployments/status", - "replicasets", - "replicasets/scale", - "replicasets/status", - "statefulsets", - "statefulsets/scale", - "statefulsets/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers", - "horizontalpodautoscalers/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs", - "cronjobs/status", - "jobs", - "jobs/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets", - "daemonsets/status", - "deployments", - "deployments/scale", - "deployments/status", - "ingresses", - "ingresses/status", - "networkpolicies", - "replicasets", - "replicasets/scale", - "replicasets/status", - "replicationcontrollers/scale" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets", - "poddisruptionbudgets/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses", - "ingresses/status", - "networkpolicies" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974", - "rbac.authorization.k8s.io/aggregate-to-admin": "true", - "rbac.authorization.k8s.io/aggregate-to-cluster-reader": "true", - "rbac.authorization.k8s.io/aggregate-to-edit": "true", - "rbac.authorization.k8s.io/aggregate-to-view": "true" - }, - "name": "cert-manager-view", - "resourceVersion": "594", - "uid": "6da502e4-445b-4700-8efe-f523c918440a" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates", - "certificaterequests", - "issuers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "challenges", - "orders" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:statefulset-controller", - "resourceVersion": "164", - "uid": "6d120614-a05f-4d00-8dc6-b88db6543dfa" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "create", - "delete", - "get", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "controllerrevisions" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ], - "verbs": [ - "create", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ], - "verbs": [ - "delete", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/finalizers" - ], - "verbs": [ - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:persistent-volume-provisioner", - "resourceVersion": "129", - "uid": "8ccf78da-6e95-4a9c-8c09-3d0d030ca282" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumes" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ], - "verbs": [ - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "aggregationRule": { - "clusterRoleSelectors": [ - { - "matchLabels": { - "rbac.authorization.k8s.io/aggregate-to-edit": "true" - } - } - ] - }, - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults", - "rbac.authorization.k8s.io/aggregate-to-admin": "true" - }, - "name": "edit", - "resourceVersion": "620", - "uid": "be24d67c-e79d-4e7d-a8cb-042f43358e7b" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates", - "certificaterequests", - "issuers" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "challenges", - "orders" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates", - "certificaterequests", - "issuers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "challenges", - "orders" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/attach", - "pods/exec", - "pods/portforward", - "pods/proxy", - "secrets", - "services/proxy" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ], - "verbs": [ - "impersonate" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods", - "pods/attach", - "pods/exec", - "pods/portforward", - "pods/proxy" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/eviction" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps", - "events", - "persistentvolumeclaims", - "replicationcontrollers", - "replicationcontrollers/scale", - "secrets", - "serviceaccounts", - "services", - "services/proxy" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts/token" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets", - "deployments", - "deployments/rollback", - "deployments/scale", - "replicasets", - "replicasets/scale", - "statefulsets", - "statefulsets/scale" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs", - "jobs" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets", - "deployments", - "deployments/rollback", - "deployments/scale", - "ingresses", - "networkpolicies", - "replicasets", - "replicasets/scale", - "replicationcontrollers/scale" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses", - "networkpolicies" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps", - "endpoints", - "persistentvolumeclaims", - "persistentvolumeclaims/status", - "pods", - "replicationcontrollers", - "replicationcontrollers/scale", - "serviceaccounts", - "services", - "services/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "bindings", - "events", - "limitranges", - "namespaces/status", - "pods/log", - "pods/status", - "replicationcontrollers/status", - "resourcequotas", - "resourcequotas/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "discovery.k8s.io" - ], - "resources": [ - "endpointslices" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "controllerrevisions", - "daemonsets", - "daemonsets/status", - "deployments", - "deployments/scale", - "deployments/status", - "replicasets", - "replicasets/scale", - "replicasets/status", - "statefulsets", - "statefulsets/scale", - "statefulsets/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers", - "horizontalpodautoscalers/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs", - "cronjobs/status", - "jobs", - "jobs/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets", - "daemonsets/status", - "deployments", - "deployments/scale", - "deployments/status", - "ingresses", - "ingresses/status", - "networkpolicies", - "replicasets", - "replicasets/scale", - "replicasets/status", - "replicationcontrollers/scale" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets", - "poddisruptionbudgets/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses", - "ingresses/status", - "networkpolicies" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:basic-user", - "resourceVersion": "112", - "uid": "a14ff149-adb1-4507-8962-e13f00a58d00" - }, - "rules": [ - { - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews", - "selfsubjectrulesreviews" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "selfsubjectreviews" - ], - "verbs": [ - "create" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:persistent-volume-binder", - "resourceVersion": "156", - "uid": "d4d42ee8-2af3-4a95-816c-a1a348132d94" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumes" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumes/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ], - "verbs": [ - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ], - "verbs": [ - "create", - "delete", - "get", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "services" - ], - "verbs": [ - "create", - "delete", - "get" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "get", - "list" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-certificates", - "resourceVersion": "593", - "uid": "8f14327a-9850-4108-81bd-f4b77f93b80c" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates", - "certificates/status", - "certificaterequests", - "certificaterequests/status" - ], - "verbs": [ - "update", - "patch" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates", - "certificaterequests", - "clusterissuers", - "issuers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates/finalizers", - "certificaterequests/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "orders" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get", - "list", - "watch", - "create", - "update", - "delete", - "patch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:horizontal-pod-autoscaler", - "resourceVersion": "152", - "uid": "4ba85837-e685-478c-b566-0e892a75d3e1" - }, - "rules": [ - { - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "*" - ], - "resources": [ - "*/scale" - ], - "verbs": [ - "get", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "list" - ] - }, - { - "apiGroups": [ - "metrics.k8s.io" - ], - "resources": [ - "pods" - ], - "verbs": [ - "list" - ] - }, - { - "apiGroups": [ - "custom.metrics.k8s.io" - ], - "resources": [ - "*" - ], - "verbs": [ - "get", - "list" - ] - }, - { - "apiGroups": [ - "external.metrics.k8s.io" - ], - "resources": [ - "*" - ], - "verbs": [ - "get", - "list" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-orders", - "resourceVersion": "597", - "uid": "7d26c4d8-9442-4056-93b8-eb7f4dbb9535" - }, - "rules": [ - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "orders", - "orders/status" - ], - "verbs": [ - "update", - "patch" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "orders", - "challenges" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "clusterissuers", - "issuers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "challenges" - ], - "verbs": [ - "create", - "delete" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "orders/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:clusterrole-aggregation-controller", - "resourceVersion": "141", - "uid": "0d6df463-717b-4065-9073-734e8ee780b9" - }, - "rules": [ - { - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ], - "verbs": [ - "escalate", - "get", - "list", - "patch", - "update", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "ingress-nginx", - "meta.helm.sh/release-namespace": "ingress-nginx" - }, - "creationTimestamp": "2025-08-09T06:31:23Z", - "labels": { - "app.kubernetes.io/instance": "ingress-nginx", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "ingress-nginx", - "app.kubernetes.io/part-of": "ingress-nginx", - "app.kubernetes.io/version": "1.12.3", - "helm.sh/chart": "ingress-nginx-4.12.3" - }, - "name": "ingress-nginx", - "resourceVersion": "1194", - "uid": "6cd55240-506f-40fe-bebe-c452853742eb" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps", - "endpoints", - "nodes", - "pods", - "secrets", - "namespaces" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "get" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "services" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingressclasses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "discovery.k8s.io" - ], - "resources": [ - "endpointslices" - ], - "verbs": [ - "list", - "watch", - "get" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:kube-scheduler", - "resourceVersion": "139", - "uid": "f97e70e6-8c05-406e-9763-fd557dc114bc" - }, - "rules": [ - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resourceNames": [ - "kube-scheduler" - ], - "resources": [ - "leases" - ], - "verbs": [ - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leasecandidates" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "delete", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "bindings", - "pods/binding" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ], - "verbs": [ - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers", - "services" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "replicasets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims", - "persistentvolumes" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "tokenreviews" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "subjectaccessreviews" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "csinodes" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "csidrivers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "csistoragecapacities" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:pv-protection-controller", - "resourceVersion": "168", - "uid": "03ed1e20-f61f-41ac-a4b5-18d6f3b84a6b" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumes" - ], - "verbs": [ - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "kubeadm:get-nodes", - "resourceVersion": "247", - "uid": "d6b76c09-6aea-454f-9b93-11f8e9499e9d" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "get" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:volume-scheduler", - "resourceVersion": "132", - "uid": "d61ef472-a5a4-4686-8f9a-6d5bc5466aab" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumes" - ], - "verbs": [ - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ], - "verbs": [ - "get", - "list", - "patch", - "update", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-issuers", - "resourceVersion": "589", - "uid": "e957b2e6-f760-4f23-88f7-ae841a9ea43e" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "issuers", - "issuers/status" - ], - "verbs": [ - "update", - "patch" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "issuers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get", - "list", - "watch", - "create", - "update", - "delete" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:daemon-set-controller", - "resourceVersion": "143", - "uid": "6a4e200c-094c-44b6-a4b4-81d5649533e8" - }, - "rules": [ - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "daemonsets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "daemonsets/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "daemonsets/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "create", - "delete", - "list", - "patch", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/binding" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "controllerrevisions" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:service-controller", - "resourceVersion": "163", - "uid": "d71b1daf-4aea-4d77-b842-4b80c6447512" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "services" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "services/status" - ], - "verbs": [ - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:generic-garbage-collector", - "resourceVersion": "151", - "uid": "eb8df5c3-a89f-4dcd-a7af-465232f772eb" - }, - "rules": [ - { - "apiGroups": [ - "*" - ], - "resources": [ - "*" - ], - "verbs": [ - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:ttl-controller", - "resourceVersion": "165", - "uid": "4fca7ebe-fd4e-4ca2-83c5-c0586561b8cf" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:discovery", - "resourceVersion": "110", - "uid": "ed36029a-be42-40f3-8669-85d462c02897" - }, - "rules": [ - { - "nonResourceURLs": [ - "/api", - "/api/*", - "/apis", - "/apis/*", - "/healthz", - "/livez", - "/openapi", - "/openapi/*", - "/readyz", - "/version", - "/version/" - ], - "verbs": [ - "get" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "samplewebhook", - "meta.helm.sh/release-namespace": "samplewebhook" - }, - "creationTimestamp": "2025-08-09T06:30:45Z", - "labels": { - "app": "example-webhook", - "app.kubernetes.io/managed-by": "Helm", - "chart": "example-webhook-0.1.0", - "heritage": "Helm", - "release": "samplewebhook" - }, - "name": "samplewebhook-example-webhook:domain-solver", - "resourceVersion": "899", - "uid": "ff915b09-c8f8-4420-bd24-1667e523af48" - }, - "rules": [ - { - "apiGroups": [ - "acme.testing.cert-manager.io" - ], - "resources": [ - "*" - ], - "verbs": [ - "create" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:ephemeral-volume-controller", - "resourceVersion": "150", - "uid": "3000a5a9-43b1-4ff8-b771-066ada94ddfa" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ], - "verbs": [ - "create", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "cluster-admin", - "resourceVersion": "109", - "uid": "ff61c7c7-aa4a-4382-a3ae-21e5d744614e" - }, - "rules": [ - { - "apiGroups": [ - "*" - ], - "resources": [ - "*" - ], - "verbs": [ - "*" - ] - }, - { - "nonResourceURLs": [ - "*" - ], - "verbs": [ - "*" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:replicaset-controller", - "resourceVersion": "158", - "uid": "61798f94-82ac-4c42-8697-57f21d650701" - }, - "rules": [ - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "replicasets" - ], - "verbs": [ - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "replicasets/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "replicasets/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "create", - "delete", - "list", - "patch", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "webhook", - "app.kubernetes.io/component": "webhook", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "webhook", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-webhook:subjectaccessreviews", - "resourceVersion": "592", - "uid": "1ca5215f-1b4b-4911-af27-d46b2bc4f5fe" - }, - "rules": [ - { - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "subjectaccessreviews" - ], - "verbs": [ - "create" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:root-ca-cert-publisher", - "resourceVersion": "170", - "uid": "be33575f-62dc-451f-8f80-abccae412771" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "create", - "update" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-challenges", - "resourceVersion": "587", - "uid": "b8e5bd37-0a32-49da-a9df-6d768b1af0b7" - }, - "rules": [ - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "challenges", - "challenges/status" - ], - "verbs": [ - "update", - "patch" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "challenges" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "issuers", - "clusterissuers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods", - "services" - ], - "verbs": [ - "get", - "list", - "watch", - "create", - "delete" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses" - ], - "verbs": [ - "get", - "list", - "watch", - "create", - "delete", - "update" - ] - }, - { - "apiGroups": [ - "gateway.networking.k8s.io" - ], - "resources": [ - "httproutes" - ], - "verbs": [ - "get", - "list", - "watch", - "create", - "delete", - "update" - ] - }, - { - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/custom-host" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "challenges/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:deployment-controller", - "resourceVersion": "144", - "uid": "9165c9d4-0dfc-4a04-b7bf-0155a4f863a0" - }, - "rules": [ - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "deployments" - ], - "verbs": [ - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "deployments/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "deployments/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "replicasets" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:certificates.k8s.io:kube-apiserver-client-approver", - "resourceVersion": "135", - "uid": "e04371c2-d6e0-4f16-96bb-6ef10a2ea711" - }, - "rules": [ - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resourceNames": [ - "kubernetes.io/kube-apiserver-client" - ], - "resources": [ - "signers" - ], - "verbs": [ - "approve" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:ttl-after-finished-controller", - "resourceVersion": "169", - "uid": "353d8dc9-f732-418d-8c0f-0316550bbc0f" - }, - "rules": [ - { - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ], - "verbs": [ - "delete", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:29:03Z", - "name": "local-path-provisioner-role", - "resourceVersion": "324", - "uid": "76f794b4-a981-4120-b24c-d48b9b4b2326" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes", - "persistentvolumeclaims", - "configmaps", - "pods", - "pods/log" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumes" - ], - "verbs": [ - "get", - "list", - "watch", - "create", - "patch", - "update", - "delete" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - } - }, - { - "resource": { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:30:39Z", - "labels": { - "app.kubernetes.io/component": "kube-rbac-proxy", - "app.kubernetes.io/created-by": "sample-external-issuer", - "app.kubernetes.io/instance": "metrics-reader", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "clusterrole", - "app.kubernetes.io/part-of": "sample-external-issuer" - }, - "name": "sample-external-issuer-metrics-reader", - "resourceVersion": "845", - "uid": "222bd5fb-16b4-45df-82fe-fcde5a7d12ef" - }, - "rules": [ - { - "nonResourceURLs": [ - "/metrics" - ], - "verbs": [ - "get" - ] - } - ] - } - } - ] - }, - "schema_version": "v2.0.0" - } -] \ No newline at end of file diff --git a/pkg/internal/cyberark/dataupload/testdata/example-1/datareadings.json.gz b/pkg/internal/cyberark/dataupload/testdata/example-1/datareadings.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..fcd6d6d3840f31d69dabdf87d9cedf65c2bdaed4 GIT binary patch literal 28818 zcmV)AK*YZviwFp9GM8uo17u-zVRB_*WNB_^b1rIgZ*BnWU0ZV-J92*CU*Ym=wsmm7 z=q<@Z^1RvPAzNEpxJq18q?V){`=s*U1CW$Nk%PI=v}S1GR2|zAIhaNR{o(6Iqw$wN zeERgi>HklkKD+tTdJ|TEoB7YTpFW3g=HYQ3VEKC>C zZMB>SJ6rhK;%@!?#m(#?tT(Bd{3U`22c!V$KVx!B`7P4_gzzmwhs~xh?u1D{&o<#< zoqq9`{VzVfe6;;|71qnAl?w-t>_0J&v;PXK^=!Gw?_F8rZp_o>ez}_cZZ_$+H%Z=` z+48rqc>n5`C%>c);3ZIW!`M*CNztye6wy8fCw2j0qQMX+G_ve#G=f;M4LDsi|+2wMx z-mJ{yW7f%Dt>8m6PxH;XTgZiZ*mi0CJx!*E+uM0CK256m(j}eWL4Fym-F@&+^E9U# zA74M3?P!1AeRjq~Ag_HU~+o~_gHRJ6lc*sO~Fnrsz){bc_h+~%#3?fz?+5a;#gpg;e) zZW!9r9<}wLVQMu^-Te#yBdos8T=-|_mQRaK+p9a~U)u~kmha8afBi$#CkK6)I;8ah z7k!Ix1Gv1=?c-|s?fa$eS|9iJ)vhUvhEl8n5f*?s?7@)yW3Z7+q>-X>ns$Alt|=Ms z?&)speO)NhKy7W=_=ns5LII1V53pH&35#FcZaS$ze)#4-%pY#n_rI+|Lh*Hg7hP_t z*Z%~2zg&K4QhM>}7h`(c#3e`sMYoI(BoS#E9CFE)9;I&{aiIsZFn7U&{hpin_te>@ z=iI$nZ5rMI=my`QrY90@oo!OfZLRKAdWIq!hY*g0yM6wBo{V9!nYpdSl*|88m%tKh&z?k>ZVL~B{vsi3)fAW-n4L$z>B`+^gPbw%xsa3Y1!D9Q@Z4q50A@5 zTI|kwc(zC#STrc%f=uo7xtD<(DDBtR$@vxEV0DAQ=CMV9DT6x{q9<5-?v0kLnF8)6 z!3%jj>@)Oevo{TV)9`CQ_feZP2VI^)7haGA*2M)$ONWe0b2RlNImTQuP~4`a$wWg8 zwT@Xg%>}8aDn})E1sOYOT`TZ>FpRH3^0v@!qG6k4f%EkH5=Q@Mv|N;R^LI2km zSBNeNd1Q32)8}^UpMgsgY;k!^rl*n2XH0g)DU5UkAxVxf5CTex06IZ3VVY4vr;W)) z9gfQ6+K01Z!+9=xdRgkz8Wwl6#kcc(^tVl10#zu!C1*J4t^RlGveNEe zSv6Ady4Y0uU!^92Fuu2epDk1&N;w5`$QTDuM(y zju>M#AWK663B|x_tsrpCQQqW3`f6B21&Idvrw9@k%*Z;{^7A>P*&;T~tRGuz`Dqfs zi)St^j*d%+QRVX=#DfY3fie_F9l7CCjh^;W=Yw64!9?j-{=NIK}rWumY>2=uH!ISIFa+TAi`>kR|MSkJG-S#RFGF z<t-v8j=I}&g#{IQ(jb(wfnrO{RDrTthvTAT zL8dOe>@eY93o(Dd1wYPL*cM}f{ZBuuAW!+YobiYR?Gm-nHjxa8@)71302$#u)>s@_qkS}|DHac zxn0&w=Z5|n9&b5`*9A+M6&{SH`RsO#V35*ar57d_({OsC)u(%Dax%_u@A8U2>;(Ve z@Y8*lKj%Q{gZbN`p^zJNv)z^3erMO=A1lDW|JpBAhyP!9eX6@v?{}o(ap}|4O3mHn zJ&F0exqek6>qevqbTM#5lo6nCKGGyn1jTRw?uk*}3M18MY1RjmtR-Kmr=rI7WP6QW zn|F03Jod+M;eyWWGd8DxC&t##OlZq(6x=zfoB+XD1ZI%~n=k>Wl!kh%qKjtIX7WZK z*X5KJhV(;NL|rM1LY5Z*v)LGT??e8xt&Uh@cvqFPG^}t&yQqL^Ez(+PDOl|#(Bv&R z>$!?@w0y2J*UFNrMqMrYj^Br0FDp6}g)C3`ZTNB^DiG8Xw?>)}&NXl+Jg}fFC}Jdt z#GDbuQZS^i3>A)5G%6Z&jaNm18U(IcP``FW_#g-K`4IK?j7~qtPN4FRJ+_VumjvaJ zCdbau0E$KfoD&{(WGIHws;>8Q?E2|xR0#j&)14}fdsWHLq;Xp=kgwpI^>ycDd51VUb@^gV%{><~Xpjk>fjK3T)J%f+(nuPG5p=ZDCqLv-@AWeo?5==) zRsuoKGKhC!m+9OycYw9{nO<6@jRI*c0!AeVgJb}k{z-+w*$JJrL7b{&N?ztiy~(x4 zoL*J(UN;l0mW#hH?eLs}a$=FxoGGc&lCCKSMv{wTB-8m4P?6S7O-z{fYS~Lm4vF&L!j^oVn4C`wsz&UIk09 zC@ZW-?bVNo2(5_+yZa1UDl2qn9=vVh5?DgfE#v2<9z54u7*zbEUkbp>Zu`+Y0Nvo5 z)5yf9yidQHZSqAtEv@cVdWIq!hY*g0yUlYkfoNWB`+8QoCCy4BYAxddtaS=l)C#m0 zIT4mC88oAWT?JJ-Qp>1JsC584DNy^Y`6VIm0$cYljCmD&-!uQb>_JdYk#W(0Gm-)0 z+9eOdF;EUgCVimRbXcHvES%bXsFOo60)WGQy#JO%f$x1F6U1V zVSA}+Z*VBHWGhtS0m6VFB+&uN6BCe#fwa^rp|B$E+A?*Dx*8Q8dXHcQhCa28_Fe=SMFBnmR21UfQ_kw$Asd`9P4BnN?owAg$@Q=&cVzZu~ z!RW9q-wz>`L0&rxX}lCL5il662xx2trBPvruI+w^qOL|oh2A4r*flT+zku+xqrxW|xuAu=+lGE_H!Ztc zjPljkUmh+pwda`s;%>J1b{docT5nziZ1-Sq7;P7`5ks*qgDCP2g`g;4ByqlKIn%y8GdK^yc`AaQcC4($ z7T%j9b7$|j4!mSEx(Cv4iMEeguXQjJ`rrCG3}_)(`#9W=AvELZtN{6{pb>VCYo z)>0DqATxPzfykC4S%ya9D223m>U=AEn!X_t;EqadF%KeMMH$s@O^qIq=rMXVtX!d? zBxK8WYj~XJsg-&#eCO#j;`$5?JbI+1(|`#xnQTW;I%qK5OC)0g4LR*NWp7Q53JpC+ zuR=rJak|)!)8NPJp3}SUIqi?6-M;y}2@@N)pUQ5br-mRdJeVXbFoqMNQ-L5dXKj?i z1vKpn9YYm1I`OMJQ9m`tLeVW9O3gX|a=W;0`PuGL-F^_8MSVfJUHvf#-;#0`$<5!L zEFO-wTLHE)58J5TLKANx_e&b1<-_dvQ>$vn-QCy@e)&P1x}b*sY`5`w=+;UTEGk~! zl^0xcgQxvrf9lT{${TKi7^Q{N;JFmQO!Co;MlAK-=FHz<2%fl~(WsUS zTK>CUk5K4AHT#cl_6IB8%Sthv8MOEfktyk{0jE{+8-m;37$AWJB)rp_Bz(9A9O%;1 zsFa}B$W<;-L7^mMOX1(I+u-mfP2Y3&-Ep~Igl3M(TsU2ce6umlK0~AytltkC%y;N*J4E0j6rc1^A^1;j&uwKr;_JlUwa!y!jZiT@JuvH>? z2$+HKQ9-0CYJoYH6ipl21}JM($g4>j)jzoSuEMuRv+% zwE}}74r@xJp=#oI&_hY1;z0M9RR&bCpd@6^a)}SK)hg*`aW@n@iX9~(%VzM^%x9^?safM6X6rn9kIOXY zzC*qP@M%3f@>os{S6G{fCGqBj9WM_jlz6d9tvQSszQ#`(h|%g?+L z=*6`AnO94SF~cl`NOW4H5lRky^5t!!?%=3%E+C8r=T~7~!|nmP@;iWDp*@ZA?ejF* zLpyAz%Vzl{EIx*%)it~*?aQOPwTK}q}%V(S+@oYi$Kq~na={;~bHpF_)T+3)ri#me_@8A(MXB)QHq zd(wuG} zB`}@drIA-)sEbisgt)p2cHgO}Yh1ebo!a-QUg^0Py@EqSiJ0AR{^Kd>Zg@GJ@=+kI z6~V*?u-M}qqNkt?6<~}Bn7aRG@7lW3O1Aa;`4v6#dd5uG{gStBqIR3aY!NW=WskZl z5zwt9on(yj-_I;H-HNQmLL?~iVuA=P=3MpFH!t-~D=dE+Q-B-TYN?c=u?L@h+HAgd zCghF9kHx_F{qEP#H1-}30WO@qBH}^Cfv11b1xVh^@?p1>eVKiE_w>PJ_4wD z$zIMNSaaJPP<5pf`IDg4lWv0GBr#-6n&LVXUUKl3dQi-$M6{J!P0=t|GC)=sW~pG< z&{^Y9IAvWvPc&T9rAedSzT88Qv__svddsbL7Nlko1aTNarRczFOQ?y=1o|Wzy6bGT zTzWLkW6z!zHLNDGx@sbRDz3gptAW?Z^Kz3_kTC)k(tyZDf@KQB2aF_~BOwIwxO@J7 z8e*xpe3dtz{hhwn)ckEd#ck#optsP5eamO%^Y3Z-U<<{Ax^@NsnK51;;{p~X^4f9LY zUC5F7=zUfoiDw|3;ow7#z^v3%aHEua-2CkxHhVynU+0_dm}1T9{xQj~8aU9qIRA2X zA9+A(YX+4lCKBfnRGf;&G>*n;L4Vc+kvukAdZ`7jSF{g z_tB^iE~C*Q_lCU-j1gu(#9v*SibC*IjtDYyDIXd+7=yQEQrUXJc_8|!jU1>q*ivy~ zHeassVvQG77dc%CXLc4*GloE86d^I9$ku2?3F*McC_v^Q1Lr9d@zmtUCz)xf*wDmp zYeZNhLe)i9-|CmPz=y66XQ%N}uH+)P=D1K@+cuH19K8f)OLXC-0iP`f8`4Uq8RH~8 zHC(7R)>6@-xewPEvBrq1iyRx(3Pn6>*sy$DEhiYMmZ{7fV8U4tLJ4r5N1!TXo-7kK zKkg9(x6Sc@>-^V=jkxj!)+d#(Fa6ms@Vookjp@wbj*iaLk-Jx}(NwpQa1)4=G66}B zfKXXsu**3rZogqU1UwC zf=dG=;}>c6VvMOq0%A3{HsbxtL_j2v87vbCytUaTMibLduBBt5p_U2=&3w1Ug*7fz zU1Z&W)47JhR%c=rm&voBfktaUxXb_%L4rv%vXD8;Pfj(i(pF1FhsGXU1H>92sxGol zD)Fq}3+^7ofstx-aLQ(?RRl)01`#6#?}Y^_vSN%ONEAJzFXtM`uNY^ z$A4xTiF+$)Jku+ed+2ATOMR;6eSVIsy#^T2tMgD*Qb2e%M2$@9-)W&{{F$WqsNrCXjoIeWkfdF9_ea^V>VUqa=bk39%$W zMKBbc@(!;n^B5iXPMN2$2rh@g-JBQqBs+)}|%<;3O;6K;U`Ey3mb*~@(_WJ$GB7h?|I!@>4gL3Pdi#wBEUW_W10%fnbd`0a4 z5{e7r=6l|_yMi5v}1qp z`gAbpU6NjtxgmsG5`{5YimU~tG&5#3C(ZGrj(m;g4=Mz`Qu?yHP$p zACzbMz2TQ{zq>(He>3y{`{g&q@8fe}9^}^O;VQblsPDB&RBr{f8{)j%07s9@nr+}3 z2qyo*SdT>&)t=a0W2 ze7Nb zc|VC>Oo}B)&4A$;dBTl>LBikxgu}4H*aGDo{SXsP#*POQE9MM7Y4Xc#&L|y$ja;E? zdV7K4>7bTci;h3sNn|XJgKYycv8}uJrfe|GX3sr6q}bMyMGV zVpt_Ko;D(*`Jlb|$P1~?J5Ui3r?o*c83+hTGB`;%1Zo4ZJf*>=6XH99YQ4v;GOQBG12#>@=wpx`E3Zfs_)Zk?x<;2%onVBTP~zmkC;fodBs;bjGdP4`Re*T zeEZ(;sGM%UC|7%S+V6$$fNwbZaIMj7?Dfi0uo*XFq9>Tf-#8@L8%#U zWmq+*P1?wA>Vz%MFT6S@WVp+Ul%A5T83;TomJze^$*~bs*RL6vUixSG}GhhV3F6 zg#jWjNf!+6y~U88WF8YP#6Z)kSBmPAEpn7zZ_D-8DqP=Y&^k86;P*Eiwm=(}0-k zybV-EC&y13t(sqISI)OHH>?-xopZ@lm%kG?l5?gZS&k$@X^)`hB1j^+*Iox=$K|+I z%{6ra(S3xF=8S`?v;HQ!AT-87ipErgKs*@Ekl$s;Otdr^x$5wCuff=JE}m-6mc3^p z1`J1&$;b#CMPDGyQJz&4l4xWM>kRU(7eA8>^7@d@sw9pp`^@Ie8rQ%I36wfRfG|yw zF69K?dx{$~bwtx(wWF(z^Rf=-o6*?WJ))`u3!@OxDFzlkGm9Q^87#>G5}~*Qkf_t0 zqZBLVk=kl*!xPB!mJ7u%^kba_)rFhgdN8=~3aL z+9`x{orUL+WG-{;Oa7i?_-A$Y((+(kb}Q_ZvS#W!2Hj}n!f{OH=OV+2Y6l4xGsfNt zs4V#`Ys6Lm0}I(wm9$Ect+<0~`)iwx*qSqaUmfj5m1)4}0%Xzx1fc@M3_^iN7D$XD zd%Nn@l?SRFU!E(v3>X^LkE>OSiOYnM%yFkF!>@@Z;G}cF9j6FtT+64M1AYjp+i7Y1 z8_7l7Z@%`*_bK|Aw~H`~$xw1uz1Rp(7Nd0mfdm6WT8!x#{zx`@opsQ`Kj&K6+1Kz( z$}ddUWWRV|BGL%N6Apqi1x67G$pt5aafHiNJ`OUCPm~jtJv8)i1lL2Z%V~oJ6v%2M zCuHK;F%2?bHU&roM@KvaN@A&D%BWX;$EqU~w+du~-ue0Id2e{M$cU*r#ZV5t30@pT ztpt%g1>;HSgHqH-ZM6)~dLLUs$@XSy)(cW>zkL|C*=rZC*51G*v&eflS(HXpHyCJ% zftW8nqL*g|qGsT8QjiqWJlbTHS#|uJ*5@|EY|}Znxf*3WB!omD5i!mq5zz^Gt4SV| z^9}>FEKFYYxOtkEMlZJtEb;eu~B3UZpLs1FDGVcq)V7Oc&)6^)0x>ZiePUC{p^#120e${@FiArLU zfgDQ%e6SWgd2dv5X*KV9ZPI%fa-s`ingQk)eyP(@h}JqZBvYmcWO7_)njoh{WVF#~DblJ_ zhT5jYv*R>K=ZJ3C>7)g=Csy-1pKxo5(JWl!nz|kVFM>dq~KTi=nto_==_!4 z-tY*&=LHOpdc$wc3cIwXn>QO=Cl1MV7P%a1)B!N!@jx=wgb>QCT=Djl+Awv70owB| z8&>TiWC)UFDuG9doSO#$CK!R(ma`1pt1#XVwQ??M(66%KT1JgHvre4GU;<>$kcBfw z!7G8^K*tbSRz!+b_fK64p&T|%`AdJX4MnQjKZI)BTBHS*lP{9l8C(voj9fHUQR{hF z_1=|Q|BRiPTVOq~TE2rYZN2geyi6rqDk<2UBmS^NTPyLwv+l_|Jw?ZqTlRc(mDIU7 zUI4~bhp|jEBbDF~bh5YyB?lIR*D|}*=#)8EdDXMob@kf6?Y_t)b~UkPCR1gUfMiWV zgv02^Cq}?|N4%oSXRbij7Zj;BB9EL=mc1av`Cb8LnBgx6a}T8`XpDrzF)^!!};lOv2`(1 zUDS_d2&PdIxXc)lmtH6vqr%rU05Eq!Hr4my)u;6$IAVk{B={=&Uk}OWI=ATGWqN zi#iRzp5E;ani@kqIVI}5vKx~EfCo~do@~^I(4nr;w=`A;9wKtevi<`G174Le8q7qY zne+${D-O%GQvn){g`YP9sNOYglqzRahW46xNoBy5*(RQbz!*(3l2s=)brHbjxv&N1 zuB+>FArL{8BtTu6;lN{2a>)Xa#Sj~nG~TYWZ?|9kOoT&bSMhkT6x|ZUr)U1eC#oVc z1zPT*9#YN8al;mrAl{QyIy}8b&@bm1g_0~Q;aQBU4*K)ALRbFP#5U-f83Q~kZiEL? z1U-d}3S%SUf#>Wk@+IQ=lkMevfL@uON8%RQTvjt1)Z%Wd1p^{WXF3TKyifu%)tZ=G za&^t3*X#fN`pJ{OUnKOxqaQ9BJl=9ATdlo8{Lnqw+30p#Z@SwT-`j(;^YbXtXIT&p1?)_+q7HMsC$P=KcWbY|v%7y{I|uEZe|NV!v`t#A z-A=L5&JJGp2fXg{aBzI?Izh%C8?X1eTU)J@t&KL>-RQKBH`<;4&fdxHaG$(?Tb|qd zc-U+EC$LLw7-yL)}zj4=Yop%Y{Y@g7# z2g4KE{kU=A+8eID-P&qzQi?X%NeA)dQ+xCKJA&U~``d9C><-&+cKe6@KWX<(Y#j_P ze(Z1WZ0xrCZ+BV$bC;aS_x$)^x4rA)$IY+%SSR`E9o| z8txwSzaBE#d&iGEdu&U*|Kn_9zjN_*_v7*K@QP%-;S+AcKEfmefZ69hacUKCvV^Kjjw5&inJAfeCUjre{;MQ4kX(B{kIPv zx8Aye-1dL`KYQ2LKGqgl5p%mJ&py>YIYC^_)I(4k)MX5>tHli!!d}9h zwKQyzVsDjnxQ{)4%ehUGW2y{l36|`*-d-T5X}WeGU$~Xz3MWs_T_Wh0dkxCuz&JAt zPMSg|c0Cje(~VykY$aRotPHZPOk_j+EQ+yAAIE)##;^=zn?XHMHm{*yo;0ED4sRlJ zz7XGl9N~W1$zuuQWD9>uyJnkkHz>u?st2;K`za=!W5^|JDy)NbH>SMDcxOy9u_8n* z6$-`^29Fe+*|B)ED!-9x(@45VgP82h`VgLDpVJM!tMM3D9}@d@VP8U-|mA z%8OH+hh~(AG`fuI%u^lj?M3l<9RU;CvSj zrG<~B2?fx89uwm*Cj1fNLt_uWU7MI{e>G($l3h`2xf;NMT%|9Uux#dC-X3&6&;S{yeX=mz}EE!uS_?lqeC6G{(IZu&Du63_BK!jmtPF>L(OV!Uz zd7(iC9ixHvkuRUCjN8(mNzHIse%Wg`OjBnLWV znY`@H)ivtED@WR>1NW(7O`bq*ls*ty%eUzuE#5xPHJiOMh-MHMuaRHuiorcgOE0D7 zjBRLB=OIc4dS?FR1YnB<*Cykx%e$>vw#_+a^H>cU;-cNm^H3IOUWzHmkRlZnGd07Q zB}ZtZ(U7mv0TWX5ZWS5#HeHlkdLf3f@2j3CwN)U+Iy(~7E6k}qV2xRi0=W>P4DA6~ zyGegm{$2H`=MSI8PnQWMepZG>!RZCLg$(Cl#?LI3p znsb%wmpD*O!f$o8y|69}Xs!wZARu&&qQ~(GKxad{-*P*uy3j7#@KWJ!VLhC0*`;WS z0P%1v{rRcVqbYfWlu0Ha;*uMyi}+R;W&CapzzM=;S8<7?Z`g#*ugRdFqQQL;8A;22 z3n1t|MM&D2Z^x0=HWA}fisha3lsK??Is{Tiom?{JU8q5_n$O3lkc`SB8aAV@?b4&AgNR&+`_^bCX_Wx??z^@GW^ic6#?h;ITh=&7-t z*;20{+s~ZKJ{j;OT2C8ku6DGev*^YU`uXu7rtQI}VQJp4Xr~L&b_^WJi2nU7*UG_w?PkS1B=(m@^8 ztC~&6if-gIu!PhlIP!|93W8eOlFRJ{dMtAqw=-S_C8_rOJ!C2~Y*q*AEL%yOTH6}}$ z_Y2fKN7u}Z~7$D$;>6r?LBuEEIhB@d1sMj0raU^sDcpDbUKuWfFi_mIU zncFLf*r;OmOJUkn`C(26F1bnJcywhl`d}{YOjF<>9AcRbr&aN zS2N>OS?)7jbJHxNWWc39+AGj0M36vqc$*66sS4am+N+422%tmx9rP`Dnu02+xN=MOn+!!$3MRY%g`{5FTh3_-0zSD&!2bMJK0< z@kw|Nm_U2amITI0QqV^v<)M`Q3*sU)B8I_8g>J&sGZW)YNB=+@u^kxOFtJ?FQtoGC z82Y3PZknMsB=pPK{B5zNnIun^-J-UUA6+x1>~tU#>%h=2jVZ+pIjlb_YxE%ou^4zp zg3heH&W5@ls-ZEVhND9(1F0$G-~Cc+ov9w3l_}SPIWk3ZOk3?SsAFdEtmwB^x#&A$ z&dq_dUDV1*4o5@-(C-NEqORFXv^}TB>O?WW)EkQ9K)*)j7$({+YaZIQ#!F^45!rAo zAZJA{gVM0Kqz^sNbOU)Dhjf#mqQ`e-tM~Q5pW%7-?m9)Fv91iRjdGWWp4cVUbJ0R9 z0V5a>n}Zl9I=C|!`aFR=NV*w7K?~wzZ#|6c(9a+1jr3DJZq*=T0`*M>4W?SZl7S?k z(=OF|!ga2Lf}x%4^OO=Z?T2cIZO-JyXE1pMR?(7-u?M)M(e``Vv}kN?ZY_njQx$>E(G-pS#e z9R5F%!@tO2{?iRM-)=y-S*B7?f7>E+d)|+>QG9>Hw?B6IsZYIpsLP*f_t@Wd(0%>4 z@?XAd=a+xBhvfSfpT-X_5nXf-_%g=@G<)A-(czJppex~Ku z)6>@h{}r2?Zr?ll(FTh@T8jAkdjFU2`}e6lzU^Q?y&iskiQ-SE*8lWFLXQ0h-yW>) zKHVFo^WoRpu5Z7ysy{eJr9P-n&fTX^>Ry%a>lW|Q^j(_1OVf90`YuiXuS(OuXx-v? zcza=QoPI|R`PSzAc%^1-GBZ5EM6OapHY$KXdFq(-^XcD<95fuik;CctqlX1RT2x{dDN;T4=P34dRt3?V7$Ztr(gMJSWycxw*^V)J z;n(Su^v;;{Xw8vM6^hP^r9|FU4g9o6d|w#+^|o<= zA#Wv_(+ceZSl-WU(OM1BdEHOP$ih_S-GvXtl=)~>IbUajohziD#fF`wIhin)?$8!C zYiX>on-HH8meaKqK&D!*xEVqWh*z<#p}f_u-jIESkLNfap}^HfWq7Yxw3Ox)^M!h} zA6*#l-GRGiBEr73nr)mlKsx{wJ~fN3xd7R9$skv;H{%rJQeMUt1jphTJ2SSu5s`HW z2+ojOi1j@x0r0XM&I4G}-dVxih4MNbdDj?~_Z85k85uCwZEY#OE5_P)_qO@pp_xd3FosC)5k-%np5qvqBC|G zsI0;YMU~40tLPM0esTqnYv`iQBJa@QH*r)f zYdz*^?>t4VzDl#RzdiSDjdD~Nzdb9bU8Ln$+;%kf*e3b-rm>t#V^*Lss(! z&eHO_0_Wu(T~f(zX^FwFZ@Q`EdD7G`n^%Tl=qBF^HZoDu?MlC3w`s-Gn$hnp18)349WLA_&_lUugzTGl{> zj?JY#wD85i$4-?I4niA7RU5F{zoH)}4t1?ds#g}ao80kzA~Y)EtOJ?L`L|ChnbNOY zwp(vznRvzk{q}5T(i+u%o9RkvId0Rs*rJQB|L;V7Ejta{|J`}?$CIP4IrqopZsTN< z_d9tWerBfZ>%BeS#GP}PC+r*gadz#VcRO^H?R6m(Ly<tN}aBIvp~g%KUMH zhE;(*Z#w*y9XfT<%^W(eiymWkFR?h)*`U$xHabhcP5Vic)_ljS%%CwCnPfQPxWyQH zPI8ag!$CUZxE$MAVxc$EeQu<#4cyGAG(0_CxZEf*mwKk}5z*7^_r^0^l3{w>s&+a4 zM>lSp{kF1XOULprA%zJ#y(Hz&Vw@IvzY}d%})bJipxq8KFcVm)_I;}o` zm8G6`2B?}jC0c8&aWQys;OIA=Yh5%}6&M#`Tdz3~!X`J|ISsji?Ot#!S0YYj(QFyPQBg0QRR{^J0vuci=WR%gM#&E)MN4;hy{6n-Wf~6Y^ zmf1N~sm5`e*}z86?>FWRf!hmsuzhY9m{iUQ&LX>uuR_uV+j!uUMJW zg=6Ocva*RE=vgoEZ&qpy82`y!{$7?v6k-)vU2qxgHxFBL$d057D_( z(H3FZfUSR1WG=h)UjiC2L2|v={cYlO&i8gdbVid_nJ$8XxCr>Z;P);CRlWx+%nvH; zhF~`i+x3M#OhvxGb98IKEsj_^F=a5{ zQ!|~27Jo1Mkuos*^(GtCZ=InZdzA!d3`4l}!mWq0!>yN#WK(`ky}~#xvU6KdzsqRi zI9508mr%29B`!>?PHc3orS2OQQLx>vzzwX1InWzdSzV_vyE0?HNruLy#n;)mm|}Cl z?YjyR?PXR!svb}I<`obA@%a&fjq}r{TxO>GnEeQlx;zIa0MO`_# z9{HvK$8O9ww9D$ulTv%3wL_a#t)+o12Q@o=-?9Y5cao%JdVa4}(U)F4z3VJl$#Ls* z;+m3G_WQm*TDJOi*-Fgi#c-6`-gLl~+1P}f&TTFZhYg`6xMd=A4S#9WZNZvy!BBRS zdTe9naiw)b2aTCg_RTA#FT;WVo9`Ks)#|0rV1k@#*OMa@MTZy?))Nkag`?Gnw6WY>0Yct<)xh-uIIj`5x;tr+(v`>CA%j z0audz+xx!VHs;o_JLfE1@?D)jjSKO%-v0&XhSzsTtpU4h=}FtEYRgXB(%s7F%8sWu z9Q#$8ZG_mIT%VflPB4OCL4BI1%KU=bf{>0JQ#7)vG z8;?qUyso$A*7`kI5!i)WE6rNN5_HOS^h>a+9pq!Tc75kvXeBOrN1b@u3FA6m@k+O4 zId0dj)NlEojLG%WnrQEFjr5K>XJ6>fp4B}+0!sCpix)M~F>HC7-{>dEuTZJs86%_3 z`hlIyy@WLzdc0`1IX#x~yd%UY%xbRNuHP75&pS(_6;!kHxgg{`NUHT6{TEif3M@xY zI(GNUi>1C}8$AOXj#aHJXv|`JS*kW*f;$6a5%l$o#=oO0&R@;2b_q$j0XyxH#QDjz zQM|BW;%D{bL0i9Uw3A@hgjcof;Y;Y-O*>1Hl)F&3=GGQ^{vac?9<+|s(zHGtK%!VC_ zR9&vH{~enHRQGl3%E4XYx80=G@7{SsCUJ!*cdpY}Se+sc#Ik2LxD4=(fmZ#6nMt{F zYV@=_t8FzoD6DaqbxEN#bSf6iBwy&w8(z(YP0#fMoi1EFYFe&K?3#-%`mt!B?hVmP zZO5tiJD$2|aOLOsCeW=_q^2{QliEnKZ4-wvm;Y7PB97s-mOhu4&ccoTvb)f1wuIV6 zZ>4Lv9;jSa4Bbhrx)mp7)3x-Kj)GU;q>g%h!O<$Iw`U|ntZJA-5r`NIKny|%v`9kP zBqo(xy#Woi=Pdx=8Ngcq>k~SljngDNt^Q}@fY2Z0c6vVu@_s}9;4gaLy>hF6#^S5U z)p5A#C7yiCtkLW3h~GcV*L$e`ls5T0+*Y$?i5A+1Jl%$js`x>ko2=blDZjaFOSJ*LOLV^;MAp$a_3g=9X03rz4P+OUWVMH}q zfxDS`e z)_qUsJP36!;GPTO^|7r)OnQ^ukZZjcA>3=hlb3k&Mx4LH7<=HIjOhs*{LBWSOu+g# zu!5d>TSj<$zOAT8+!_iMpaoKp4HCsbRj3F=8fY@ZNC@TUQ-scgd!AABL@k4F!!d=^ zWa~>lbDI3cH$RU#T2K(Sj}}u@#zHL1fU<0Mm4KscL=pt5L}Vz+lqis%s!-UW`&Q!` z-p{yu^AC7^R0uq0w!S^j=oAZ64XY-DyiHq#BI`pbDy-l>%viAOQkJCIr!tVL^UABIabI z&~9M=5M9aWSpbvAk1l}8SpXB7q_+%=#_3&;9RZnaAKobAK!uP(5Kzcvf}#pQBiRgO zA_-C;M-sw&a=}j!ndHj6Is0%6Kka{CT>MS^wA)I0_q%9cb>-*!XJ7TI=jxhWFY+f_ z@WVX{?%jaHeQu^Vcxks6@n{$eFq9BbA(engLm3cNud+2sOq800ky;+jw#VmBvJ)N8W2es0WrW75ExM)Xjr3E zRznfvQ>1BBlNBx#yNoeFl^-Qrf=;ir5({ z*;978>+)@-n|UCRtVUIQcLT1+A&vbDJwnp?YaaF}sDXY6+K-oMVgKC}xL7>`AoYjv z;}vmrH6N-*l04bo>FuB{?CJHzj-)Ib6>#{w7rbMYoonSDtA}z&f#kZ@$$K zlYA2xWVAisPNou~g35qO!w`r_3xGxx3CNlpA_^hX;0Go!92a9f`IL`1;l$9xKA83C zn)NFou&=2i->Q}1Cav@!u#%LL1n`a4U6q<<>*I_xe)+1;1=gc0C)0Gy`R^dPg?F?N zMM#1$iYO2Rf`BMRA_xRY1zIR+ffhxIpq*dh)xBf!hyvtIQ1g9RoEwj=J9c~Z>wk>uJlm7Ye|Jj%2c40QfoG%EBS5C)# z#f!FMlAtVT5~N}XkfahIGF1U8Ap#dKTEGHTqC^qSQoMxoX*kR%0Qgh0AQp#7Plhkdga@msS^tPUFWg=QQPf0Sr9Ok5AoO0Kd_bhuelh|biB#ZDm+|;hwE$U-l9q}pF;lE z_zuu^-vJe1gw%k7K!k`3@<;)is)&Fx#$*jfvZS1BgO5}0|MOiL{;ifcel2hAfv(xo z4@A8868Zslu1s=}nTF#bNkDHhxqV9%_PKuF=zc!{2FJIPX*%dF54`w6#vJ~*M_J@s z)_%BP+j#v8sB=IhV#}RgA@kH7O^u>J)kG#K05T=>mm&>lT7*C-A}T6S42kf~=bC+7 zXktHJOphow*rH>N>5O&o5%9KV#L=wO<7J(?T z5NNU(0xXJ(jQQ7Al#`9)7cqeU=4_Vy=kd|?hyIw^$?Ma;#t7w$)nbb9Mv-T`^SX1+ zv)v>rx3UVkz8;61Mg>PaBvwFkW$ax^tP zu+2W&F&_nE7K9jzK#7R&`1M;CIk|OSq|OFCeZD(UN>^qqs9T7k7wgGx7e$n zocy|99OU6a_+u6vxYoU2gN36cT?}$^C=|l<(J5yuOi#nz@G>09S)3bQ{C3w_Z_Omx zoKv$=$V$p~ue(C1gd;VZKgIu|Dh8?~V!%WwOH9C$qMV=CJtt|nYc}R-2*kWP*4!(W zV++8uB1yJ|^6Ob~=I-RLDCUofncr?-6E^4#UvE~g)y0Ne9i$-8b_Ic$9H@dE0fAA- z&1$Y7G{UWHtVA-6r~(Q8Kp*oa0_GL<%j)bVw?UQ)NGLyXG7dAx#M$+<*t*klB2?z) z4Y*|BJAaEcvT_9HMz&p{%N@toAZcq7=o{er8%y>Il>fcN|7*qe!J`;9dQi5@ZdHmR zqEHcNq9y_n3jrV!4S>WEzC)Dq8!RY%#{IqiniyEM5Sd{)WCk)3iU zBpaU-oF=3<$URK;W$eby04WsXSMXg zhh5<1B50N2#!Vym%}(8(6NXEiBXvWnFT~R{d$h|Yb)FQ(+x>7?JhTS$N#f;Ez6DL$addf(d&*#i^PKj>I-JkaThf)%e%nS zr7Br;%W}DDBJRImkdmy235t?IiWD(1(a~*y5Sak-ohNsrv%fs!i}_FEd$t<$KIu;9 zYOXx;VmCT_aZ=JVr7X?(?fdP`;4FmOVbn;Qkv;Sf(_WZ$S-^QoCQ<`xHIpQvIYxk} z(Li_w5Frc*D|kvXmEp{e&W7$M_3~b{=}^@2p%)MR(`Sp~qqIF3Zj>FHDfKYe2NOzf zLI@hyiI|BChgbr9I4za{j}YZ_pZRi9i`quIQ|`9`sF5U7PMj-Fav%y};08&c%vh;t z*$KGMUOIi0@76Nm<2k|GW;VD1`Voh*FnT~r#Q-1~>o38TP*-D2UW#~D(OTa$l7QpDIA8Ypdm z(>9a|qbLI@sRW`k10}KuD8w>`nWm}k5gMqcq~|k{XHRm(1#@?{N&O>b34ZO!$~-T& z*|vLY@}jx37bR+el>hvgjoch{ZyXJ0driZbXs!uu0=`+ypXQDYEg!weH}47jXAhm< zMS57$f6-}cd}KqEe_ox8Xf-FEs-s!w{oec9jk_nAp1-J4r~Vx{m1HLg76DU@224h$ z&x8Vq+Vg?3PGJK*RquHa=E)6ut7P`$jr`;gkm}roCNX$4?L5o#zxTm}rr$f7*6@4f zn6a-5{|_F{XcY8E^CrSmOG~1pNvW=fIpCEd?+&?GIPth!-m8!KW>01Vr02J;;w`IU z`Mr?7IKXza@jCe*KYaA=cO^V7;5fOtV+-!nUVK{g`*7nTOS66}RzIE#$I$1#rTUf| zjfUXepYLifLUr4AoZIP{tJmj}nDSLWdiSty=45!v_8Pc56IL1Tl>;S`@=8?qt75vBA$DYvJxs)wxP5>7a>hl{QhS zCca$u-ulT_FVJ@v*@JFd?H=sDnQQ|c>f69JqyvevYmXIROiFP5bf~-L;Whhluh~oOdD=GZ$k6~wee6-RZmfa)?Z^Z-m>HV@L1nd~l{rX? z4G5YT$*4p^qR7W;mWzBW^0AM6tX;KQlGJdN4{oWI(KTWG+UC2|uc)w;D1~SaJeSs8 z@XX!qJjZ}dLMh6#RLj9O-~F`5$rmp;55W5Q8!!x))L6U^(SLvZ)t@WUb%svK)Jw;; z`>;Cm>wKB+$r>S)DU7}(l4H)B31I>emu2W;&B8b2hG(KoU+sGGzfNr^m7^F$o`^5DD5;y~$;Fy@&MX z;v=}c{ye3p5d)f1KJooj36G3kQ;ExVoFp?Du+i?5jUov@OTuuOZ&#@_y@qxVi1`b) z$!71WoVY8(lps_pNK+)8E$X=ce(sY93y^G!4J%#-~@tnw4=T z*ST!l?X<_0@cL$)3H`&VgYJdKkrsHz=d>|*b9Y>uC%vEA#%cS*+c@q03^&i(9p%PZ z? zBCSj(@+w14OdWvqYyV^^_T7;%p^iw0?rZvL^26dXBZqK z$OV%sv21*O9V)OXv0e*bO-VJu{4%Ox__lj)`&f))Ys{LTV9U4qzD-mWt0dVXd*1f;VQ+T!7z zpAif>X&Se&N8G)*CDmF3LgK4N;(Z&Ezl!YWmnB+)eDRF;yJ!B*%P^@Kmewm?# zyu$W}8g1mSBExtg@I&VDeg4z0^|fAgDSOQvt$l-tbYC|bm71w2HAj7oFII1|#Ba(F zlM0kbz$sBcB%vTO=BT0+Q`AzF*d9Ug{t9%pTdp$#=+i(1>8dYwY=RO+!@-mHEEg17f}%>rL8NI0nkI==xg{*?(Yzgc>S#!WfJt0fL<1Csb+>Rtcb7 zq11B0G)eno4pjkCy`mpH-Tfe){qr|@;7J2L()BRm{_g1-mS(4gr*}`jG1LPLoP+^O zHjfG$@1Ag-pS`jA*@96dAO(h!=@`sK9jtJyyk$KdjOc(pCF>u)(P))T#VRX7QPpqQ zdKF=d{{R*I1E_@&%eF>Zj=V;i+2@fsYFx|Y_R{=aPuE#V%nQ(>#u|QLm0m(BB3}q4|MO>;(BAfIWnGYplLpFsDtjvrs zaJ(nydu>(yw;fCzXIN@T#Q|NzSw)$1G9k*GnxdexH|XWXK>l7qgrHT|Z?l!D`ZU2# z2RQ6vQA1Y$!&MHzhZTY-Nc;=M7b-|j7i#l0ZrX{Gr;4ZNV(AWU^|)W>N*G2P7K$TWg>n4I^WQds^daEnTL+3 z^G&$Jv3&F$_F|={a)c+QV#OfNK@g{%y9oL7$E2_#!BzpYh?HQWDKI1jU@0@D1>rdD zF;$@4R;M3sZSSxqQ&o??GC$|$Eg)a$iILV^y+CAH6iO^!UgdYkri5}6Uv@OA4}8_l z92qr(RpXDLz0!aP7AiQ{B$6jY$yn9b@j1IQvW&)OI3Su$Br|SM#A;!2jgBmlS2q#I zsgWBSd76sk0jO2I&OMcm>D^|E*UPJuxs${d+b27Y>El1$lc3eg^T*|U`S|WI?^e7G z{C=vUSn2t)3ok?&>%67Aw$mo&A!z@yE>_~vgeCii=ZW=NsBa-b^+(11wtk!~oZZW; zauiNf6{#1U;k4IjUNiMF*Q@!@NpuJ3ihzAM4@WH^N&!U*RMkM1A7 z(HI1sN<#fnnaAbbmi*<^M(~_sBmuKT0kN2YM8rUb6OGc;{cAG5a_S8~t>G)BhDQkOHo#E!G5*`q^FZu`wB6sylylK`>6=~QxN)#(Np|=JG4oK;7-yb zt|*X%;}X45gHD)AslqnHa&+SU#K|!__eNxbkqO4M&qM4ExiC*|l@dOxXvy@DpXnLG z5}HZ{JWa7X=@czwTpt)aHrN205meCqSIi2MjX`l+rxQl#(o9qoGcEn>P1p+mb2Fbt%0< zM!l})>)+Lz&V#Vl*O!q+$gc961qDzahJ(x4L1I$)N8sljR;VgJWv-?nkdA;0Ofq#0-@PBY8Nj5k~Uj$0LyBr9hHrPe?6tY#1@kCFNAZLHof4JHRRsU0A_P5;BFluADQeVM>?ttKKjqKKqinoO$cGUXn z_2w^>x#boC$ealcAstGuOu`_-Jy`&|ROT(i{wefZnyUyiAID(Z%-@W$-U z&E~gJhq5&DszVCN981c8X^Vj5%mPa=15T3EeYn9qjY!w~i4p1gXsrQkXhga`oe+_( zcmEs75grUr8n`?29`4M*NgOb`HrvEF{F$#a^UJ7);pbwtw#DjAtaQ_?Rq^Y$ulRfe zgXbCC7Fur>h&x-&xL~1H`f132NN3a@!D;OeO>q$I-IdxDc;6vtu`@)qNG^quMBe# zE3d8N&|=|4>2CSxlz3n3?3PH6<#3fGUlq&mh4kE;Y9ww;wbt2fF~6Kr^HN1E?v-O# zVeJauv3B^h8naWb->C1!Gh40INfmjMWu)gXtJml9yXC8X4AX{S8avTdh4h72Hf~q7 z)|A2R+ik=Z9?$c8cQ208v;L9y78;*+ku+nldwqwu@wbF?sdQh6d{>@(IbS+%^>~H5 zZZUtFuUEn!9owUooIP~2Me*1$+Vr^Zv^74mA<93m#agtQ6HnFAtn*cdA%SWJPO`B8 z8xNd}0UerqK2YYLZVc~wh31?c{XX8vPcAaI8^qwzwDT-4l%ag~`>t}MwwN~&p4y|M zwDwzlvnR6w{kcVVqm9?8*{eF4UFqK|I!tbU#t-v8+_=as9IR(4*|8&b;OD!0530{# z`Y>}cJmp5d((CT%-S0++Rc4FAF_BxBnuVZ|w|XiNp&ZjS%|4!TM)WH0$0C-*;7aR; z3VOFy_bCYF=>>h?fHmu z;FK^Cd*`sT;(pDxP670hA?|pGP?RKwA>e{AAe3al-RnU@7)`BWDxp2Lk{u~JVUyYy zA!iS!jFt-w)lIld<+|KY=ttPHJbsItDUVYoo^&hKz2UsSEBYxpBmN`Mtj1c?&1bg%97@ zg>&KCj@E(W|IT_xO@n5Il8i8nAk{f7jV-c)g6BqKl#yH}h>yfk)5_3_D%ECI3*49u zDo~_XHLE{K?MzB{?RoH67B?BVMe{hrl=URf*k{hcyE7ja_XsWG3 zibs@u*i!PrQL<%lvFZ6hDq;*XMnA=1(oOu)h9PIjOkd(U*$P<)jj471Tk%)tKj*EJpU(+Dr^X&LqOLH3@=|?vn63J^P?s`(R z5Z3qaW$C_FF_Q4JBph+Jdf5%`P5gf7ibmV@eV7yLwbNf;C*fZ1i_(XO@eI*Nd~S#4 zd_Es$jwag4gqQx2wlp`1K$#^yrh$z# zGc<4xQ=hWuCVi_nzA3RdYYlYW@OmUPZgg%QGobRnU>gT2T?LD|6Jt>R)g93hJ1OsC zAL`HhB^%gs0XG$@NZ`_gihBIW!aNG~8(x<`mc?7kPByWx`SFv3?`s}Jx2`=*G0U@V zG^*xzU8GebOuqOvm#U`ABLr$ycAWU#^eiD%Q41Gnk2^Fx5_>{ zpk|L8G+y<1)pu9@SY_JfYP7V+u|Fk)B}Pgt65z~aKrCm#63c-mS*CJfun|31dH1C; z4_pb2`4o{&oUC@jCZ1pAVyfgS>T{cGJ=qyk)=vKG* z(djUc)ye+qHm2^rsr@zmw^>vbDfM6SaROPsFBmAC`(u z>kdX^)4GwJs@Syd=x47A`^2Voe_k(SW7E3Wv~DmbJ2tKRI5Kt|dXH%uo7U}?icRZc z)4JHSE;g;ZuPUaHcXZIZ@rQ5pK0~*$6#j5pEQP;iDg5=JsS+S-`5v3Pew}UP70M{J zqub{fJc^lJzf4mcwk2Xf>o^?ceh~Rg3z{H9fDkHyycf8>rHG{YM(;YM0O+7&e>5AqO**#z%z5uz|{Ui!a|N)Hwtf<_oBbpQYDT}yA{ zI1;}1uW0PCfl8AUU+Uj5n8N^jTrBuZJe^p9?S2ig|9vUh={T|E$c`kF7W>i&NK;ag ztap9YTeED=P#?{alkT!o?FhA87;vJrK%KClq|tyV@w6zIbYkM3=rajtpR0*($4u=* zG@DMOfLJ^m<8NrH!Hg?N7sy9=`_!x9Ns(I-*KlVdC-IODR<+rvt{dD;a6g?nGW=Mr zHojW@P%C?E)~fpXtE1v<*J-w6a91?GT_EplGpk4U-k0V2@2A`1p>{h}%Os-+M-Jwc z$3M&RX01utn+x}#`QpKdpA-$=L^C-8A8`tl$=K*4Z;OaQph@yQ-COHI!s_#;`s$Lq zuLEWuy;&uDO8IMjyRO5}agdhfaOPaMJf;DJH^0qW< zMTl!KImdpZ9QqPq1Y>~=%;U_Ck5!O&qFF0e1cTwR3Ffg~rm9wUu^gdEQiCE8|3>8U zfsFQ=(OzFXI^qMF(O&z^$*1bYtc>=$HzA|F#^%t>Xs;RVwHb)yWM{P3!;y^k+A%Vl zUCC&#+j$x7b^Gty&UZ$8-Hv3m*OxDs(Oz@?QM?uDTCEobzO8#V=p={pc11)AQ|~b? zL0OG~G9*BjoPfiHM@TVg5t^=usO_K)mQZx>*WdKt&TNzk^VYT5>3(#2Du2&zzVB)B z``N*?2}psSLATk-_t6M?0qSJdH+xXZLtKv9Pu`a>zA(Ewz+5CxIwm)Q}tuB<2Pb zRt1%~Ahx6#lH=p~G0KE7CC1u~L~9{4dP(zI$&q&E$1PIS%sA}x44V_rNqtT=iSW3l zc=dlLs9ctwiP3CZX*JBHP3qH^m7RcFB}I~qvTx;WNb1w(q~R5qDjO~^s#!=UqXo;EyI7M?S;dq$nRGjXU^lF34V;{tb+NNsg&a%A5US>GgIbs{9}Jwj(;Q_|JeD)`b9oO zr^zKO;f7iXC8Y!?VjSvl2RJP}wOW^~U=x~Lqx%wD8RmBE`XUn-BIjN^g0WSHiyO8h zg%fhbW^ckIjWfp8)^;xG(KZ^9A7 zr!|;CU+?C#W{oVjp7H_&7CLCwoI#01__Lr+IwvI3<#d{L=YbqnW2p%`#5H%d7rXPK z#|PaxGnR7Hld?mZfaUFC`SUzi%F88&U`7T0LeB7|9Px9!`I*BzI?j0HqY7$Z<Bx}V7W&^3CUHg1O6+quo^#bIskoc-3@FIJSD z2AMB~6UcFp2C>>N=Aab303Yl$VGYJqPgrZ0vx4SoJWYy1_-=aqSsU10tG~LTkr6s! z0IHFXu~AFAuuX;MxNISJ%Sy&|5wQ*&R}y-z+dSSAtLaF!o06Ki9Pp$KXSc_qTMa~< zQ(EQC$3@w+cWSo@hVBEh-{xW-bRC9nFWNj^J>gPla2z=aha%oPnwrjl%3}iUZ>q0u znQ#Mwu^KwGHFHReJflGEn)M>vWP7u6Bh87PwHS#~9F6li zhaRt+rS>cFN2rClJ+YjcktzG|B^+~T&)RL{EQEF!d|R#sH>d=zoC31QJ`FMkiJyFEz^ck&Xvki z{^NO4K7r_S?lKhbsl8r1;9HPy5p{>QmCFPhE&Gt*}qBI|pB z3l4(?R=J0232V1G9cHGxbro0C5rj-205w3V=5?fig2a|_TC$>Waym&qVfx&bobyNm zy9ikmt$4i*t!9siHb7gFz#3cSfi`&xRtV6thN!Q5@p4K9!z8)b=zQv^1}0dp z;+u!souzA*u35UilCHOI=~fE^w<;`oTT9sntD)-KaI+hu+G%M$GX*GF21#p;1tn^k z%NZ$%7h+Oy)WLcn#)mGDEt`WiGw;p3H-6r`+1#IQ)v!*6OTAH|hM)G9I-o`okcDAj z5R;s7tfleESvBM9pqYIhteM$oW}lJf$^XVm?Z+-L>ef$f!4WAHXxDTn^aV)HOOVV` zP7ETl6oawLWwrck_j>>S>yOS`^EsTr_KQ)EeE!ru))AI$hB|+D=hXe??w^j)`^9(H zHC8>kW%s-8MmwJy&Yk_$we(Xa<v<{7FP9jCMHT1^ zW#{EIyPwV5z>zOHH@EnA8t<*ITwzRLU}r6`cU1uFzn%`#w#BulXVE^ zK<@zY%otNPAP)^l_ju(s<_nh+R`sQ1)SQXsotMTXalS=GX`$ zKq;z%$dv?Cp&StGm=%Ycu#650m(}NOn8DVXGkD?l_fhDN4$EzBEV9v zi8j2=`QnT;&&L_ZP|?mY-i{(nvjsun`cbXE z)(OgkT3BJhFz3RM{pXVY@}}@@c+?N|>t?L&x!Y_W!wYQk{+zcz4ef5~qNDZQ!f%G# znC+%~HbJ4N9^kH8w-pSH=7vp1jm_cgB$THQU8C3OzRGU>7MN)FcwhZ`2%78ZFwuvO zohOG#i8(W+rGTtAKoz2(h4z3jV~Tpo3x%#S=j@rBIp^#GG|xF_rw}V$A)Ra%X@GJNNRdC*3xfwhJFPcD?*|JHFHpgc|q6t-jZhzxze4?}jI?s=lZO zxafx2a)=fJ8v>TQy1g0ZP;#w-JCBhfP6<3=4oeFGPP_Ym)-n06)nD#iD`AJSpcl8x zVN{ddMrWq+nlRZQZinDgzOLg8>T#XpW=}`t>#pi7SYf3#C3sP13SenL8WarUB3R4} zX&wHUj#cOm73G}k`gf&=xT^yz!C48*O4#!+hvlc|rlg^^l(Z*?bYB^D4}tb~Pz$Z5 zuS(!WtHW1qXFdh#_R0zFMOk-iQ>Da#`PAr3ga)=rr7ktqq#!)GT-z-iX!{9n2kK}K zYdxpzwy)J0#BM-Q?yDhM0maVXhS{;#+mcp{^Gvr&ZfP1pLd$wnt<xHf0IXkadv z&Zo%o_|=4dSdqo4rpOz)-;Gh+*dsxL|2%}HZC|0eB2OvYTTDi%o!P5p&IfO z2kNaBW(_sG>UqiJUz<#a#XoJg_gF^xc1K&)mewCWs?`Q6f8^u)+jOnJhc{@^3S~*V zoj!yRZJF1AdC;gRvmPYz4!p6BDPb{j!&!2D!Gd?+I1m#WhM#=cAKlU5Uu$#c9@KyL Z%LvE~x@m&K|NHQt{{zrOW&b@j1_0Pbj1&L> literal 0 HcmV?d00001 diff --git a/pkg/internal/cyberark/dataupload/testdata/example-1/snapshot.json b/pkg/internal/cyberark/dataupload/testdata/example-1/snapshot.json deleted file mode 100644 index b11511f7..00000000 --- a/pkg/internal/cyberark/dataupload/testdata/example-1/snapshot.json +++ /dev/null @@ -1,12420 +0,0 @@ -{ - "agent_version": "test-version", - "cluster_id": "test-cluster-id", - "k8s_version": "v1.31.9", - "secrets": [ - { - "apiVersion": "v1", - "data": { - "ca.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURIRENDQWdTZ0F3SUJBZ0lFT2FLaTZUQU5CZ2txaGtpRzl3MEJBUXNGQURBdU1SZ3dGZ1lEVlFRREV3OVEKY205cVpXTjBJRU52Ym5SdmRYSXhFakFRQmdOVkJBVVRDVGsyTmprMU9UZzBPVEFlRncweU5UQTRNRGd3TmpNeApOVGhhRncweU5qQTRNRGt3TmpNeE5UWmFNQzR4R0RBV0JnTlZCQU1URDFCeWIycGxZM1FnUTI5dWRHOTFjakVTCk1CQUdBMVVFQlJNSk9UWTJPVFU1T0RRNU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0MKQVFFQXZVRmY2QUJLN3REWVkrWmlScHpLQjdtcWdWa21pUlVmVEx3aTRrV01ETk1KWnk1VXBsaTBaTGRFTE11eApJeWdkYTEyL0RHOGxhcmNnTDNlZlI1VDdRWmszSGJBNTlKN2ljV0p5M3hWNTNadXEvS0IwODZpV2ZtY21UaTMzCk5xNUtnNWlvZ25iL3hUQ2F4MHpBSUsvNXhnZHJjRmhnRGdqMWZLSlYzQlFLUjAzSkUybGdRZ2ZvRGZxbGczVXkKK3BveG14eFdzOUt2bDhFcW5jakMxOXFKam5GbHpZK1E1OWxHb1c0R21oaVI0MnNFSDNFeXBIRG9hYWQ0Z3dCZAppZWN6eWlFN1BwR21xZGNKQ09WdStSVEZhY0crZW5ySHdyT1l3bmNvTDV1TXUwMDdOSmFlOSttV0JsQmdaMk9TCjhjdk1LelFoc3N4N2IzdE5rcGNrVDd2SE13SURBUUFCbzBJd1FEQU9CZ05WSFE4QkFmOEVCQU1DQXFRd0R3WUQKVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVU2YVNhYlQ5cnYzUlhGY0U4ZjEvd0NIb215bDh3RFFZSgpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFDM2xwNG0yL0VGakZoa0JsUzVsSkhIQVBHaWo3cnNLcmtONk90ZzJhbFlHCkpSVmFFK0tZQ3M1R3dJWUVQUFZSWVU5OWg3bGhZdDhZRzZ0N2UvUmJyL05vSDR6cFpObEU5SUx6S1NndndlWFEKVXNYV05JMkQrbU9PWVMwQmtzUWRIejFuV2hrV2pnQWpNdFpQaVovQkJsZEg0MmxyaDVLbGlubXYrOXJ2MXJRMwpCTEdkVm5zdGdyZlpHOFFOTlNLRmY3TWdnTUZ2bmRtd2UyOUNjTllOd243R1RVb2ZhL2Z0N0ROZGh3TVQwZHlnCnNDdVJTdlI5aHlFd1RTaGFYQXBuRWs0ZjA3Ni9yNTZZdU1rNzVqbUluTWxIbWxVM21XY0Z0UEFUZUtXejFLWUMKYkwzNFZtRmpaWVNrSGRWVmlSYlNXL0w1QkNxMEVIc1c1ZUk2Z0krejVDRT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", - "tls.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURlakNDQW1LZ0F3SUJBZ0lFSWtCTkZEQU5CZ2txaGtpRzl3MEJBUXNGQURBdU1SZ3dGZ1lEVlFRREV3OVEKY205cVpXTjBJRU52Ym5SdmRYSXhFakFRQmdOVkJBVVRDVGsyTmprMU9UZzBPVEFlRncweU5UQTRNRGd3TmpNeQpNREJhRncweU5qQTRNRGt3TmpNeE5UWmFNQkF4RGpBTUJnTlZCQU1UQldWdWRtOTVNSUlCSWpBTkJna3Foa2lHCjl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFtWVQ0enJKNFhkTU9jTDc4Sm4yWUNVMjl4Z1VscHlrZWFTWUYKaElaZ2VzWTJnZW0yQ0FJQklRVHhWc0lQUW94d3BrWFdrMGRwYmJnb2ZRR3NkRjkyclA3V0pTN0JtMjMrK2lsTQpjUWVCNFVkQVNrZU9iMWQycmlDQzRJT2tkYm0zbmxUdEJ0RWRpMnRmMGZqbTV5ZGxNcUFabXBpRHVNRGxTeXJQCjBBYzZ3UkhpM0RtMFZhWHBrZnRnTTZwL24yMkJyV1l0cHBibUhXQkZEaG1pUjVISnZ3VjgxcUxEaHMxRENuMGYKYnBvZ3lzalVUUDRhcXJ1QnRvUGwrN2I1WVl2UVBBVkI2ajhvOUxpbnl4d3lBTEE1THlVaWtHT1dNbUNjR2JOUQo1QnhlQW1MeFNNcVk4M085RzdBaEJFbmxLbmVQc3Y1dUk5MWREY2tjeFlFUm1HZzNNd0lEQVFBQm80RzlNSUc2Ck1BNEdBMVVkRHdFQi93UUVBd0lFOERBZEJnTlZIUTRFRmdRVTloQ1grK243cFdNeEJoM29HLzJmMS9zY0REUXcKSHdZRFZSMGpCQmd3Rm9BVTZhU2FiVDlydjNSWEZjRThmMS93Q0hvbXlsOHdhQVlEVlIwUkJHRXdYNElGWlc1MgpiM21DRkdWdWRtOTVMbkJ5YjJwbFkzUmpiMjUwYjNWeWdoaGxiblp2ZVM1d2NtOXFaV04wWTI5dWRHOTFjaTV6CmRtT0NKbVZ1ZG05NUxuQnliMnBsWTNSamIyNTBiM1Z5TG5OMll5NWpiSFZ6ZEdWeUxteHZZMkZzTUEwR0NTcUcKU0liM0RRRUJDd1VBQTRJQkFRQUgrVXB2VWtBRWJQQlVKNHNReFVuZUdyaHc2RmsxR3hkamg1UzgxcCtqdTNUNApvRUxOQ0h3U0FtWThNL1J5ejFLUmJ3UlQ5ZjZyWk1xRnk0NDBIMmxvb3NSTVZvSU5kbHZGdjJyb1BTN2tDQ3cxCklyR2wzRVowOENFSWhWektDN3MrQk1qOEVMTHorZlA2VldOa1ltaGxQSFZmR0IxUzc4VUUvVVZmQnFwMCtDZ24KRkRxWkpJWThPeWtIeGRJa284RklYWjkzQWRsczZUMnNybWV4TWd2M0JuVVMzY1BoUFY4OUx0VEJ1MEIycVUxUgorZ2F5MU9oQ0dkZmpBK3d5Y3djWmkwTWR1azR4WCtGdFM0SU85RXJvVy9WY2hWUmpqRzJNeEdpY3RqL3BxZXpWCnhxZWZnZ2NzZzk1THc4cUtobVI1RERrOG9BTUpqRzJQdlA1WUxwK1AKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" - }, - "kind": "Secret", - "metadata": { - "creationTimestamp": "2025-08-09T06:32:00Z", - "labels": { - "app": "contour" - }, - "name": "envoycert", - "namespace": "projectcontour", - "resourceVersion": "1377", - "uid": "55e2564a-98d3-4cff-917c-096264fc784f" - }, - "type": "kubernetes.io/tls" - }, - { - "apiVersion": "v1", - "data": { - "ca.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURKRENDQWd5Z0F3SUJBZ0lVU1hFVGhlanIrbjVFTk1oR0t3d28zOEN1SENVd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0tqRW9NQ1lHQTFVRUF4TWZZMkV1WlhoaGJYQnNaUzEzWldKb2IyOXJMbU5sY25RdGJXRnVZV2RsY2pBZQpGdzB5TlRBNE1Ea3dOak13TkRaYUZ3MHpNREE0TURnd05qTXdORFphTUNveEtEQW1CZ05WQkFNVEgyTmhMbVY0CllXMXdiR1V0ZDJWaWFHOXZheTVqWlhKMExXMWhibUZuWlhJd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUIKRHdBd2dnRUtBb0lCQVFEei9QMEJieE12WVAvVEExd1dUYzhmOWtBQ2pxZzdycW9raDh6d0pJcGt6NkF5c1d6OQpkcU0rb3BqcW9mMGZpZUJmMG1LdGxTNWNHWkFISW9ibHBoc2VGaVQxcWVtd2hHRVpxUFFvbE1TUkRXanoyVERyCkZVU3hlR0dpV1BOcG13cXJMcjhOcVA2ZHBJNWxRSWxzblpYT1ViejR3TnlpS29sTXEwU3BIa25GUGh5RVkzUTAKV25URXlMNUFIOFZLUW4rbzByakJhYURPU2kwWjBJY1JaMXA2ampZcU96VGxNZnB6RHpUN09PTjFyOS9jQzNqegppUURyVG5sNkZiTlJGV3ozYS9RZEkrZUVlQThaT1JETjFSWFE0SUhJc0JveHdMTjVSenNkNnIwcS9NVHlBWThtCjdJVU93QkZtbUVtWE9ONk5LUzQ3TnNSY2tNSVJZZms1VWJ0MUFnTUJBQUdqUWpCQU1BNEdBMVVkRHdFQi93UUUKQXdJQ3BEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCU3E2UTdNM1VrOU5zd3d4cHl0V2E4SQpsaXE5ckRBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXhtZVQzKzdIMGMyTUd5SnNtUkFoczh2ZWxxR1lPd3pGCjdOWnVTNHk2cEk5bjVnbnh2Q1lMejZHZlRkcU8zcllTdm1vd2ZCWU9ZS1ZpSjlEUldKU0VTYmI3azl6N2xheVUKMjZMZno1RHJnb1FKMkhLZ1IvS04rRFVwcDRFOHluM2pJQlBacVJ5clFzT2hMNDVFWFFvWmZHa05INmJERkdnNgpnSDQ1YmF6ajlLcnVqN2x5KytMeUxyU05IMXBNWmN5aFlxYjdNMHpNUVJheWptRnBxK0tXQnIwQkxFNVlWNGFECnpUemxPcDZGSlpIdnZONjNENnlkVmluNnNQM0RwbCtFcXlHYU1KZmZoMk9Yd0JlYnpIRE1yd0toK05laVZ6MUoKdFNjNXFwNHZaQ2YzNnZMRkFwVFNDWHl5V2d2cGVGZ1ZNck1nUnNxaGozdy9rZjZGeHdmcGxnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", - "tls.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURKRENDQWd5Z0F3SUJBZ0lVU1hFVGhlanIrbjVFTk1oR0t3d28zOEN1SENVd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0tqRW9NQ1lHQTFVRUF4TWZZMkV1WlhoaGJYQnNaUzEzWldKb2IyOXJMbU5sY25RdGJXRnVZV2RsY2pBZQpGdzB5TlRBNE1Ea3dOak13TkRaYUZ3MHpNREE0TURnd05qTXdORFphTUNveEtEQW1CZ05WQkFNVEgyTmhMbVY0CllXMXdiR1V0ZDJWaWFHOXZheTVqWlhKMExXMWhibUZuWlhJd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUIKRHdBd2dnRUtBb0lCQVFEei9QMEJieE12WVAvVEExd1dUYzhmOWtBQ2pxZzdycW9raDh6d0pJcGt6NkF5c1d6OQpkcU0rb3BqcW9mMGZpZUJmMG1LdGxTNWNHWkFISW9ibHBoc2VGaVQxcWVtd2hHRVpxUFFvbE1TUkRXanoyVERyCkZVU3hlR0dpV1BOcG13cXJMcjhOcVA2ZHBJNWxRSWxzblpYT1ViejR3TnlpS29sTXEwU3BIa25GUGh5RVkzUTAKV25URXlMNUFIOFZLUW4rbzByakJhYURPU2kwWjBJY1JaMXA2ampZcU96VGxNZnB6RHpUN09PTjFyOS9jQzNqegppUURyVG5sNkZiTlJGV3ozYS9RZEkrZUVlQThaT1JETjFSWFE0SUhJc0JveHdMTjVSenNkNnIwcS9NVHlBWThtCjdJVU93QkZtbUVtWE9ONk5LUzQ3TnNSY2tNSVJZZms1VWJ0MUFnTUJBQUdqUWpCQU1BNEdBMVVkRHdFQi93UUUKQXdJQ3BEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCU3E2UTdNM1VrOU5zd3d4cHl0V2E4SQpsaXE5ckRBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXhtZVQzKzdIMGMyTUd5SnNtUkFoczh2ZWxxR1lPd3pGCjdOWnVTNHk2cEk5bjVnbnh2Q1lMejZHZlRkcU8zcllTdm1vd2ZCWU9ZS1ZpSjlEUldKU0VTYmI3azl6N2xheVUKMjZMZno1RHJnb1FKMkhLZ1IvS04rRFVwcDRFOHluM2pJQlBacVJ5clFzT2hMNDVFWFFvWmZHa05INmJERkdnNgpnSDQ1YmF6ajlLcnVqN2x5KytMeUxyU05IMXBNWmN5aFlxYjdNMHpNUVJheWptRnBxK0tXQnIwQkxFNVlWNGFECnpUemxPcDZGSlpIdnZONjNENnlkVmluNnNQM0RwbCtFcXlHYU1KZmZoMk9Yd0JlYnpIRE1yd0toK05laVZ6MUoKdFNjNXFwNHZaQ2YzNnZMRkFwVFNDWHl5V2d2cGVGZ1ZNck1nUnNxaGozdy9rZjZGeHdmcGxnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" - }, - "kind": "Secret", - "metadata": { - "annotations": { - "cert-manager.io/alt-names": "", - "cert-manager.io/certificate-name": "samplewebhook-example-webhook-ca", - "cert-manager.io/common-name": "ca.example-webhook.cert-manager", - "cert-manager.io/ip-sans": "", - "cert-manager.io/issuer-group": "", - "cert-manager.io/issuer-kind": "", - "cert-manager.io/issuer-name": "samplewebhook-example-webhook-self-sign", - "cert-manager.io/uri-sans": "" - }, - "creationTimestamp": "2025-08-09T06:30:46Z", - "labels": { - "controller.cert-manager.io/fao": "true" - }, - "name": "samplewebhook-example-webhook-ca", - "namespace": "samplewebhook", - "resourceVersion": "956", - "uid": "7b6f80a9-7c5c-414c-90bd-df96ffd8da4f" - }, - "type": "kubernetes.io/tls" - }, - { - "apiVersion": "v1", - "data": { - "ca.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURKRENDQWd5Z0F3SUJBZ0lVU1hFVGhlanIrbjVFTk1oR0t3d28zOEN1SENVd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0tqRW9NQ1lHQTFVRUF4TWZZMkV1WlhoaGJYQnNaUzEzWldKb2IyOXJMbU5sY25RdGJXRnVZV2RsY2pBZQpGdzB5TlRBNE1Ea3dOak13TkRaYUZ3MHpNREE0TURnd05qTXdORFphTUNveEtEQW1CZ05WQkFNVEgyTmhMbVY0CllXMXdiR1V0ZDJWaWFHOXZheTVqWlhKMExXMWhibUZuWlhJd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUIKRHdBd2dnRUtBb0lCQVFEei9QMEJieE12WVAvVEExd1dUYzhmOWtBQ2pxZzdycW9raDh6d0pJcGt6NkF5c1d6OQpkcU0rb3BqcW9mMGZpZUJmMG1LdGxTNWNHWkFISW9ibHBoc2VGaVQxcWVtd2hHRVpxUFFvbE1TUkRXanoyVERyCkZVU3hlR0dpV1BOcG13cXJMcjhOcVA2ZHBJNWxRSWxzblpYT1ViejR3TnlpS29sTXEwU3BIa25GUGh5RVkzUTAKV25URXlMNUFIOFZLUW4rbzByakJhYURPU2kwWjBJY1JaMXA2ampZcU96VGxNZnB6RHpUN09PTjFyOS9jQzNqegppUURyVG5sNkZiTlJGV3ozYS9RZEkrZUVlQThaT1JETjFSWFE0SUhJc0JveHdMTjVSenNkNnIwcS9NVHlBWThtCjdJVU93QkZtbUVtWE9ONk5LUzQ3TnNSY2tNSVJZZms1VWJ0MUFnTUJBQUdqUWpCQU1BNEdBMVVkRHdFQi93UUUKQXdJQ3BEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCU3E2UTdNM1VrOU5zd3d4cHl0V2E4SQpsaXE5ckRBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXhtZVQzKzdIMGMyTUd5SnNtUkFoczh2ZWxxR1lPd3pGCjdOWnVTNHk2cEk5bjVnbnh2Q1lMejZHZlRkcU8zcllTdm1vd2ZCWU9ZS1ZpSjlEUldKU0VTYmI3azl6N2xheVUKMjZMZno1RHJnb1FKMkhLZ1IvS04rRFVwcDRFOHluM2pJQlBacVJ5clFzT2hMNDVFWFFvWmZHa05INmJERkdnNgpnSDQ1YmF6ajlLcnVqN2x5KytMeUxyU05IMXBNWmN5aFlxYjdNMHpNUVJheWptRnBxK0tXQnIwQkxFNVlWNGFECnpUemxPcDZGSlpIdnZONjNENnlkVmluNnNQM0RwbCtFcXlHYU1KZmZoMk9Yd0JlYnpIRE1yd0toK05laVZ6MUoKdFNjNXFwNHZaQ2YzNnZMRkFwVFNDWHl5V2d2cGVGZ1ZNck1nUnNxaGozdy9rZjZGeHdmcGxnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", - "tls.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURoekNDQW0rZ0F3SUJBZ0lVUXI5VVoyR2c2U2JrS044S0ZhdHNENEdoQmxrd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0tqRW9NQ1lHQTFVRUF4TWZZMkV1WlhoaGJYQnNaUzEzWldKb2IyOXJMbU5sY25RdGJXRnVZV2RsY2pBZQpGdzB5TlRBNE1Ea3dOak13TkRaYUZ3MHlOakE0TURrd05qTXdORFphTUFBd2dnRWlNQTBHQ1NxR1NJYjNEUUVCCkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDbzJZVmFvL1AzNkFWbWxWS1dmRGxMOGlTbHMxQ0p1QjNjU3hJakVUUGUKUUZwVytrQm9pQm1CV1lSd1MvYlg1eWlkMkVTNGJJdVVGZVNYTy9OT2IzWlhmcStZTkFSbndnYUxyaFRxblhuVQpUSXlMdlV4cHNvT0ZuMUU5U3lFeXZ3bXIxZUJBWmlwa1EydnVrL1VLY0VuQldWU1E4ZU9jWlBJc08xUzlldnMvCmtoM3FRZXkwVnN2ZXp0bXVCTWUvb1lqWDUvZ2t2Qm9kejY5UjROdFBQNGRNUXRCZWZhelZ4V2JjU3NEbUI0dE4KcDNLMFovOXpFWFdDdTFLdUMza2tOVzRERmpBWlh6eVB2QWJma3hIOThjR3luMGR2YkhwWkFkQnZ4OExFSFFaZwp4ZTk3VTUvUUI5RVk3eHNFT1BYWC81azh2TXk3VU1BRm94VmFJZytoVkh0bEFnTUJBQUdqZ2M0d2djc3dEZ1lEClZSMFBBUUgvQkFRREFnV2dNQXdHQTFVZEV3RUIvd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVVxdWtPek4xSlBUYk0KTU1hY3JWbXZDSllxdmF3d2dZa0dBMVVkRVFFQi93Ui9NSDJDSFhOaGJYQnNaWGRsWW1odmIyc3RaWGhoYlhCcwpaUzEzWldKb2IyOXJnaXR6WVcxd2JHVjNaV0pvYjI5ckxXVjRZVzF3YkdVdGQyVmlhRzl2YXk1ellXMXdiR1YzClpXSm9iMjlyZ2k5ellXMXdiR1YzWldKb2IyOXJMV1Y0WVcxd2JHVXRkMlZpYUc5dmF5NXpZVzF3YkdWM1pXSm8KYjI5ckxuTjJZekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBTHlybzBNSUZlWVdFUVYwb2NsbGMxTFVZa05rKwpuR0t6eTRkSXgvSFoxTGJJVGNLaWdkWUdRWGprakw3b0V4MHE3djFtS0tzSEJQUEcrZjBrQjhBcFlaMCtsWmlxCkZINUFxalQvK2ZGMDFsbFZWRVRhYW5aNE5yMTBPSlcrRDMrT0dHWmUzRWh2dVViczc5TS9lNlQvOVo5WW5tZDQKN2NFQ1hYT1Q1OVh5L0hORktHNjYzbWw1azR6OUQ3dFZIajQ3TGpqSGwwazhrNGo1UzBwbVJnU3hRZnN0elRGZgpGNExGUGNkRllDTlhTMU1EOTNrNFRHUisyeTVKc2tlZHVFQ2hpZnpGYlRoUjJwQmJYTDludzhRRm40UTR2c0R3CmZ3UGdab3BMNG9mdHA4ZklUcVRIcFEyTVlvSm92ME4wY0dVeVBjaEFKMkJRTVJOV2pnNm1PWTdQcHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" - }, - "kind": "Secret", - "metadata": { - "annotations": { - "cert-manager.io/alt-names": "samplewebhook-example-webhook,samplewebhook-example-webhook.samplewebhook,samplewebhook-example-webhook.samplewebhook.svc", - "cert-manager.io/certificate-name": "samplewebhook-example-webhook-webhook-tls", - "cert-manager.io/common-name": "", - "cert-manager.io/ip-sans": "", - "cert-manager.io/issuer-group": "", - "cert-manager.io/issuer-kind": "", - "cert-manager.io/issuer-name": "samplewebhook-example-webhook-ca", - "cert-manager.io/uri-sans": "" - }, - "creationTimestamp": "2025-08-09T06:30:46Z", - "labels": { - "controller.cert-manager.io/fao": "true" - }, - "name": "samplewebhook-example-webhook-webhook-tls", - "namespace": "samplewebhook", - "resourceVersion": "979", - "uid": "c304cf49-750c-4800-accd-86ace29382dd" - }, - "type": "kubernetes.io/tls" - }, - { - "apiVersion": "v1", - "data": { - "ca.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJ4VENDQVV1Z0F3SUJBZ0lVWlRsamdmMXhMYzZXcjlOcHZUWEw0NmpQanpBd0NnWUlLb1pJemowRUF3TXcKSWpFZ01CNEdBMVVFQXhNWFkyVnlkQzF0WVc1aFoyVnlMWGRsWW1odmIyc3RZMkV3SGhjTk1qVXdPREE1TURZeQpPVFUyV2hjTk1qWXdPREE1TURZeU9UVTJXakFpTVNBd0hnWURWUVFERXhkalpYSjBMVzFoYm1GblpYSXRkMlZpCmFHOXZheTFqWVRCMk1CQUdCeXFHU000OUFnRUdCU3VCQkFBaUEySUFCRHBFZ1BPbUltYkRrMkQ2dFVKa0pNZlYKbHZUOGQrUlpBMVVHd3lwb2JHQlVJUXE2RFNydHZjTG5HRVFQM3NiZjMxM2tBb3pUNWhvSDNYQzRHWU50WjlkZgpnTWJlU0ZFS21IZ3dReExXZ1R1NXJCdnlIb0NGRWgvSWVPZUdNZDc5TTZOQ01FQXdEZ1lEVlIwUEFRSC9CQVFECkFnS2tNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGREJ6dGlqaG9pT2tIcVlEMkJ6UVgwd2QKdDRrMU1Bb0dDQ3FHU000OUJBTURBMmdBTUdVQ01RRDlNRGFHRm5uWXIxdHRrREgrNW5ab3IwT1cxUE9yeDN0SAo1QzhJL21pd25VWkVPQ3oxSUZjeUpsSDcybm4ybURZQ01BbGdBMEdZbEdqa3VkeXJyTno4WlRkOFFySzQ0NTFRCjNXS3BzbGtoRDVKb3QyOFZQZTJ0RjY0bmViVWRKYmlWNHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", - "tls.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJ4VENDQVV1Z0F3SUJBZ0lVWlRsamdmMXhMYzZXcjlOcHZUWEw0NmpQanpBd0NnWUlLb1pJemowRUF3TXcKSWpFZ01CNEdBMVVFQXhNWFkyVnlkQzF0WVc1aFoyVnlMWGRsWW1odmIyc3RZMkV3SGhjTk1qVXdPREE1TURZeQpPVFUyV2hjTk1qWXdPREE1TURZeU9UVTJXakFpTVNBd0hnWURWUVFERXhkalpYSjBMVzFoYm1GblpYSXRkMlZpCmFHOXZheTFqWVRCMk1CQUdCeXFHU000OUFnRUdCU3VCQkFBaUEySUFCRHBFZ1BPbUltYkRrMkQ2dFVKa0pNZlYKbHZUOGQrUlpBMVVHd3lwb2JHQlVJUXE2RFNydHZjTG5HRVFQM3NiZjMxM2tBb3pUNWhvSDNYQzRHWU50WjlkZgpnTWJlU0ZFS21IZ3dReExXZ1R1NXJCdnlIb0NGRWgvSWVPZUdNZDc5TTZOQ01FQXdEZ1lEVlIwUEFRSC9CQVFECkFnS2tNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGREJ6dGlqaG9pT2tIcVlEMkJ6UVgwd2QKdDRrMU1Bb0dDQ3FHU000OUJBTURBMmdBTUdVQ01RRDlNRGFHRm5uWXIxdHRrREgrNW5ab3IwT1cxUE9yeDN0SAo1QzhJL21pd25VWkVPQ3oxSUZjeUpsSDcybm4ybURZQ01BbGdBMEdZbEdqa3VkeXJyTno4WlRkOFFySzQ0NTFRCjNXS3BzbGtoRDVKb3QyOFZQZTJ0RjY0bmViVWRKYmlWNHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" - }, - "kind": "Secret", - "metadata": { - "annotations": { - "cert-manager.io/allow-direct-injection": "true" - }, - "creationTimestamp": "2025-08-09T06:29:56Z", - "labels": { - "app.kubernetes.io/managed-by": "cert-manager-webhook" - }, - "name": "cert-manager-webhook-ca", - "namespace": "cert-manager", - "resourceVersion": "702", - "uid": "444264e6-777e-4957-a821-3baae2647476" - }, - "type": "Opaque" - }, - { - "apiVersion": "v1", - "kind": "Secret", - "metadata": { - "creationTimestamp": "2025-08-09T06:31:19Z", - "name": "ingress-nginx-admission", - "namespace": "ingress-nginx", - "resourceVersion": "1167", - "uid": "861de112-5d03-4f9c-8ba5-b642ad01eb3d" - }, - "type": "Opaque" - }, - { - "apiVersion": "v1", - "data": { - "ca.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURIRENDQWdTZ0F3SUJBZ0lFT2FLaTZUQU5CZ2txaGtpRzl3MEJBUXNGQURBdU1SZ3dGZ1lEVlFRREV3OVEKY205cVpXTjBJRU52Ym5SdmRYSXhFakFRQmdOVkJBVVRDVGsyTmprMU9UZzBPVEFlRncweU5UQTRNRGd3TmpNeApOVGhhRncweU5qQTRNRGt3TmpNeE5UWmFNQzR4R0RBV0JnTlZCQU1URDFCeWIycGxZM1FnUTI5dWRHOTFjakVTCk1CQUdBMVVFQlJNSk9UWTJPVFU1T0RRNU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0MKQVFFQXZVRmY2QUJLN3REWVkrWmlScHpLQjdtcWdWa21pUlVmVEx3aTRrV01ETk1KWnk1VXBsaTBaTGRFTE11eApJeWdkYTEyL0RHOGxhcmNnTDNlZlI1VDdRWmszSGJBNTlKN2ljV0p5M3hWNTNadXEvS0IwODZpV2ZtY21UaTMzCk5xNUtnNWlvZ25iL3hUQ2F4MHpBSUsvNXhnZHJjRmhnRGdqMWZLSlYzQlFLUjAzSkUybGdRZ2ZvRGZxbGczVXkKK3BveG14eFdzOUt2bDhFcW5jakMxOXFKam5GbHpZK1E1OWxHb1c0R21oaVI0MnNFSDNFeXBIRG9hYWQ0Z3dCZAppZWN6eWlFN1BwR21xZGNKQ09WdStSVEZhY0crZW5ySHdyT1l3bmNvTDV1TXUwMDdOSmFlOSttV0JsQmdaMk9TCjhjdk1LelFoc3N4N2IzdE5rcGNrVDd2SE13SURBUUFCbzBJd1FEQU9CZ05WSFE4QkFmOEVCQU1DQXFRd0R3WUQKVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVU2YVNhYlQ5cnYzUlhGY0U4ZjEvd0NIb215bDh3RFFZSgpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFDM2xwNG0yL0VGakZoa0JsUzVsSkhIQVBHaWo3cnNLcmtONk90ZzJhbFlHCkpSVmFFK0tZQ3M1R3dJWUVQUFZSWVU5OWg3bGhZdDhZRzZ0N2UvUmJyL05vSDR6cFpObEU5SUx6S1NndndlWFEKVXNYV05JMkQrbU9PWVMwQmtzUWRIejFuV2hrV2pnQWpNdFpQaVovQkJsZEg0MmxyaDVLbGlubXYrOXJ2MXJRMwpCTEdkVm5zdGdyZlpHOFFOTlNLRmY3TWdnTUZ2bmRtd2UyOUNjTllOd243R1RVb2ZhL2Z0N0ROZGh3TVQwZHlnCnNDdVJTdlI5aHlFd1RTaGFYQXBuRWs0ZjA3Ni9yNTZZdU1rNzVqbUluTWxIbWxVM21XY0Z0UEFUZUtXejFLWUMKYkwzNFZtRmpaWVNrSGRWVmlSYlNXL0w1QkNxMEVIc1c1ZUk2Z0krejVDRT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", - "tls.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURoRENDQW15Z0F3SUJBZ0lFRmNGRk5UQU5CZ2txaGtpRzl3MEJBUXNGQURBdU1SZ3dGZ1lEVlFRREV3OVEKY205cVpXTjBJRU52Ym5SdmRYSXhFakFRQmdOVkJBVVRDVGsyTmprMU9UZzBPVEFlRncweU5UQTRNRGd3TmpNeApOVGxhRncweU5qQTRNRGt3TmpNeE5UWmFNQkl4RURBT0JnTlZCQU1UQjJOdmJuUnZkWEl3Z2dFaU1BMEdDU3FHClNJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURhejB1OXRlV0lRYkNhRzFZNE42TVh2TFVMQmFMKzgxc2wKQkZOanNIRkJBMCt3QmU0ZE14TzliM081ZkhmUVF4RmQvcFZ5dXFyUnhDRFE3aGhGQ3hKR1Rab2dBRmhPc1h6bgpZQ20rVk43RVdJdW5oTy9XeTdGRzN1RU1OYjZRR2NZUllBQWZiSEFzWktvYzdBUVJxaVQ5RDZjZFpzSjJ6RlQzCnpoTWtmTUlrQ0pOVXc3NnM2S2VDa2hNZzNJT2RtWUVDVlJkT3dWV01qcmMwNDZQK1FzemZPRmN4dHJBYms1UGEKeC8yd0dHSSs5Y1ozRWNIOWxiUjZpTVlUeVV6bjQ1RVJJWjJZc0dhTk9QdThUT01ieHBXa2FjZlk1ZWdjdUJqZQowR0xmaTB3TmZZTXNxRnhxNDdBZVF0dHIzdXFjL0xNWjVpSmdvSFlXUG9zYXRFVEpKTktqQWdNQkFBR2pnY1V3CmdjSXdEZ1lEVlIwUEFRSC9CQVFEQWdUd01CMEdBMVVkRGdRV0JCUk9VZzlpMEJld3NIeXpRdXF5RnZsUFdsVloKT3pBZkJnTlZIU01FR0RBV2dCVHBwSnB0UDJ1L2RGY1Z3VHgvWC9BSWVpYktYekJ3QmdOVkhSRUVhVEJuZ2dkagpiMjUwYjNWeWdoWmpiMjUwYjNWeUxuQnliMnBsWTNSamIyNTBiM1Z5Z2hwamIyNTBiM1Z5TG5CeWIycGxZM1JqCmIyNTBiM1Z5TG5OMlk0SW9ZMjl1ZEc5MWNpNXdjbTlxWldOMFkyOXVkRzkxY2k1emRtTXVZMngxYzNSbGNpNXMKYjJOaGJEQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFlYThKWk5jUTNiN3NURGEyckdkTzBGM0l3YmNybjFCMApKanNOeHI0aDM0YXp5UVFQT1kyT0lZRkdWbXFIMXlLbFNBRG0wcmVZTEQrZzJoTGxnSC9xd0UzZUZodjRvdWMvCnRIN1U3Vmd3WXVsL0g1cGlTbkgyYTdVZGMzRDI3K3ZoL1ZJNytVNFN0V3NMcVFaeFFYS2ZTYUhWTzV3MWhzWFoKYjBpTTI4MUZzRTVGMnFsR1U0ZysrMUJ2WDJWVVZ6R0pwT0Y5aGV3cnArQm1JZFRKU3haZXVlSjhvWnd5MXJ6YgoweGt1bGdYS2ZMRzNZNm9GL3dQcWxIMi9vRXRON2lHc0RIc05nUER0dDU3eWxMWHV0OWVZbFcyV3pORVVaTHV1Cjk4N1hqaFBXUUJjYW8yMTZZZis0VHE5OUwxaHp5TTQ3ekdGZGdSaUNUSzZFS0UyVkZDVy9Tdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" - }, - "kind": "Secret", - "metadata": { - "creationTimestamp": "2025-08-09T06:32:00Z", - "labels": { - "app": "contour" - }, - "name": "contourcert", - "namespace": "projectcontour", - "resourceVersion": "1376", - "uid": "03893c04-4332-4be0-9f51-c7e842abce97" - }, - "type": "kubernetes.io/tls" - } - ], - "service_accounts": [ - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:30:45Z", - "name": "default", - "namespace": "samplewebhook", - "resourceVersion": "895", - "uid": "f3f52ab5-ebca-474f-8d13-42a691d58830" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:05Z", - "name": "bootstrap-signer", - "namespace": "kube-system", - "resourceVersion": "344", - "uid": "5eddda6c-d979-4c55-86a2-0e6ccfab5d16" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:30:51Z", - "name": "default", - "namespace": "pebble", - "resourceVersion": "1050", - "uid": "dd3e0d42-e159-4ae7-8905-13b5dde1e893" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:30:34Z", - "name": "default", - "namespace": "bind", - "resourceVersion": "798", - "uid": "c70cbda3-4e6e-4065-9d3d-b78924b95358" - } - }, - { - "apiVersion": "v1", - "automountServiceAccountToken": false, - "kind": "ServiceAccount", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "projectcontour", - "meta.helm.sh/release-namespace": "projectcontour" - }, - "creationTimestamp": "2025-08-09T06:32:04Z", - "labels": { - "app.kubernetes.io/component": "contour", - "app.kubernetes.io/instance": "projectcontour", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "contour", - "app.kubernetes.io/version": "1.29.1", - "helm.sh/chart": "contour-18.2.4" - }, - "name": "projectcontour-contour", - "namespace": "projectcontour", - "resourceVersion": "1402", - "uid": "9dff13bf-bf6a-4cff-bb54-d590e3b2018b" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:02Z", - "name": "resourcequota-controller", - "namespace": "kube-system", - "resourceVersion": "309", - "uid": "14d70c78-8dc0-450f-a503-c19c093eec2c" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:01Z", - "name": "generic-garbage-collector", - "namespace": "kube-system", - "resourceVersion": "284", - "uid": "e68f545e-f4a1-4cc7-b887-bfd8ddcbe6f5" - } - }, - { - "apiVersion": "v1", - "automountServiceAccountToken": true, - "kind": "ServiceAccount", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cainjector", - "app.kubernetes.io/component": "cainjector", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cainjector", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-cainjector", - "namespace": "cert-manager", - "resourceVersion": "571", - "uid": "13803d0b-f976-4523-9328-7a23679768eb" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:06Z", - "name": "default", - "namespace": "kube-system", - "resourceVersion": "429", - "uid": "cbe61cec-26dc-4618-948f-6dc24ecab633" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:05Z", - "name": "validatingadmissionpolicy-status-controller", - "namespace": "kube-system", - "resourceVersion": "343", - "uid": "5c243cdd-8d23-4b4c-812e-d4225134118d" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:03Z", - "name": "ttl-controller", - "namespace": "kube-system", - "resourceVersion": "330", - "uid": "83af6096-4f72-485a-b375-d31e59ac3118" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "deployment-controller", - "namespace": "kube-system", - "resourceVersion": "281", - "uid": "f82fd4cd-891d-49e4-8a74-a195b23ee305" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "legacy-service-account-token-cleaner", - "namespace": "kube-system", - "resourceVersion": "273", - "uid": "643e15c0-e5b6-4b7a-b766-06bc5f76ad4f" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:03Z", - "name": "pv-protection-controller", - "namespace": "kube-system", - "resourceVersion": "331", - "uid": "d93e4d86-bf3a-4c78-b903-0f3de281c1e0" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:02Z", - "name": "endpointslice-controller", - "namespace": "kube-system", - "resourceVersion": "318", - "uid": "2987f241-576a-4137-963c-9d9a7b0dfc8c" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:06Z", - "name": "default", - "namespace": "local-path-storage", - "resourceVersion": "430", - "uid": "bfe20292-eab6-4d2a-a31c-acab9c16da54" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:02Z", - "name": "expand-controller", - "namespace": "kube-system", - "resourceVersion": "315", - "uid": "e3853327-e93d-467b-b9ad-5053b7b7c099" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:05Z", - "name": "clusterrole-aggregation-controller", - "namespace": "kube-system", - "resourceVersion": "342", - "uid": "8dac47dd-61de-494b-832d-8fa28d91e85c" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:02Z", - "name": "kindnet", - "namespace": "kube-system", - "resourceVersion": "313", - "uid": "fbb24dcc-8e8f-4ca1-8f92-13f6d450793e" - } - }, - { - "apiVersion": "v1", - "automountServiceAccountToken": true, - "kind": "ServiceAccount", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "webhook", - "app.kubernetes.io/component": "webhook", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "webhook", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-webhook", - "namespace": "cert-manager", - "resourceVersion": "573", - "uid": "f0c11a80-0271-4dfe-bbb1-b91a071c97a1" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:52Z", - "name": "default", - "namespace": "cert-manager", - "resourceVersion": "568", - "uid": "863f6141-bf29-4daf-90fc-e01b240d7e13" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:01Z", - "name": "replicaset-controller", - "namespace": "kube-system", - "resourceVersion": "290", - "uid": "ffb004e7-734f-4743-a025-598f9abe1e9f" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:31:52Z", - "name": "default", - "namespace": "projectcontour", - "resourceVersion": "1340", - "uid": "0337f4b3-e5fb-49dd-83b6-97fb593c9afa" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:04Z", - "name": "attachdetach-controller", - "namespace": "kube-system", - "resourceVersion": "340", - "uid": "42df16de-153a-4984-b887-2cf916e76ed2" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:01Z", - "name": "disruption-controller", - "namespace": "kube-system", - "resourceVersion": "282", - "uid": "d6f1c4dc-5e74-4014-8e01-3d2c0dd4fb98" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:06Z", - "name": "default", - "namespace": "kube-node-lease", - "resourceVersion": "426", - "uid": "0af020f3-7331-4070-a5aa-3a31593375e0" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:29:03Z", - "name": "local-path-provisioner-service-account", - "namespace": "local-path-storage", - "resourceVersion": "322", - "uid": "03e97934-c0c8-459c-829c-e9db7f7c7cb5" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "pvc-protection-controller", - "namespace": "kube-system", - "resourceVersion": "272", - "uid": "83c24d1d-0b03-4326-8605-eaca5c8a0356" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:04Z", - "name": "persistent-volume-binder", - "namespace": "kube-system", - "resourceVersion": "339", - "uid": "b5e3fa27-5f96-4f50-aa0b-c10dc5f75d78" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:01Z", - "name": "endpointslicemirroring-controller", - "namespace": "kube-system", - "resourceVersion": "293", - "uid": "3f524350-a195-4eb1-8b0f-6d61bd7975c0" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:30:39Z", - "labels": { - "app.kubernetes.io/component": "rbac", - "app.kubernetes.io/created-by": "sample-external-issuer", - "app.kubernetes.io/instance": "controller-manager", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "serviceaccount", - "app.kubernetes.io/part-of": "sample-external-issuer" - }, - "name": "sample-external-issuer-controller-manager", - "namespace": "sample-external-issuer-system", - "resourceVersion": "841", - "uid": "7553ab23-9dc0-4d72-bfe6-e6273d9e9688" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:03Z", - "name": "ttl-after-finished-controller", - "namespace": "kube-system", - "resourceVersion": "333", - "uid": "a7f7041d-8ab3-47ee-a8eb-6abae01f48f2" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "kube-proxy", - "namespace": "kube-system", - "resourceVersion": "276", - "uid": "78b0fee0-87a9-49f2-b265-6f8f94062372" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:06Z", - "name": "default", - "namespace": "kube-public", - "resourceVersion": "428", - "uid": "60052ee7-0d64-4dbb-8b02-47d27186553f" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:01Z", - "name": "job-controller", - "namespace": "kube-system", - "resourceVersion": "298", - "uid": "5e1508e8-fddc-4c99-b13c-15f1c03183a7" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:30:39Z", - "name": "default", - "namespace": "sample-external-issuer-system", - "resourceVersion": "832", - "uid": "3af37a4a-5b78-480b-9c1d-f229bd3d7319" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "samplewebhook", - "meta.helm.sh/release-namespace": "samplewebhook" - }, - "creationTimestamp": "2025-08-09T06:30:45Z", - "labels": { - "app": "example-webhook", - "app.kubernetes.io/managed-by": "Helm", - "chart": "example-webhook-0.1.0", - "heritage": "Helm", - "release": "samplewebhook" - }, - "name": "samplewebhook-example-webhook", - "namespace": "samplewebhook", - "resourceVersion": "898", - "uid": "c7d99aed-268a-4f3b-970d-cfdd9da754e2" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:02Z", - "name": "ephemeral-volume-controller", - "namespace": "kube-system", - "resourceVersion": "316", - "uid": "be13ce1b-4705-453f-8abd-a49c3084ecbd" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:31:12Z", - "name": "default", - "namespace": "ingress-nginx", - "resourceVersion": "1130", - "uid": "f8970a65-f4f6-457c-8f2b-0f1700012951" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:03Z", - "name": "horizontal-pod-autoscaler", - "namespace": "kube-system", - "resourceVersion": "320", - "uid": "31952f15-3d52-43c4-8c84-cfff5c3b6c74" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:01Z", - "name": "replication-controller", - "namespace": "kube-system", - "resourceVersion": "299", - "uid": "7e31dc8c-f32c-4221-b645-07dcd2f60544" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "statefulset-controller", - "namespace": "kube-system", - "resourceVersion": "269", - "uid": "0174ec59-2feb-4bdf-afca-cef89619b3ca" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "service-account-controller", - "namespace": "kube-system", - "resourceVersion": "274", - "uid": "0279b6b6-b5e0-4d51-9ffd-9f9079959ff3" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:01Z", - "name": "root-ca-cert-publisher", - "namespace": "kube-system", - "resourceVersion": "292", - "uid": "27285643-c7e9-43ea-93d7-b5d87ef336f8" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:04Z", - "name": "namespace-controller", - "namespace": "kube-system", - "resourceVersion": "336", - "uid": "28f16864-e98e-4b3b-be20-aba0b616bf0e" - } - }, - { - "apiVersion": "v1", - "automountServiceAccountToken": true, - "kind": "ServiceAccount", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "ingress-nginx", - "meta.helm.sh/release-namespace": "ingress-nginx" - }, - "creationTimestamp": "2025-08-09T06:31:23Z", - "labels": { - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "ingress-nginx", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "ingress-nginx", - "app.kubernetes.io/part-of": "ingress-nginx", - "app.kubernetes.io/version": "1.12.3", - "helm.sh/chart": "ingress-nginx-4.12.3" - }, - "name": "ingress-nginx", - "namespace": "ingress-nginx", - "resourceVersion": "1192", - "uid": "da97c824-64d3-402a-a1a2-5329f765d9a6" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:04Z", - "name": "certificate-controller", - "namespace": "kube-system", - "resourceVersion": "337", - "uid": "0b0ee3e9-220e-4142-b117-3da0c1e7ae1b" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "coredns", - "namespace": "kube-system", - "resourceVersion": "258", - "uid": "8169cda4-9543-4934-84ee-ed411b1be588" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:01Z", - "name": "cronjob-controller", - "namespace": "kube-system", - "resourceVersion": "283", - "uid": "d1d98865-35fc-4b0f-9dda-4d1e7c6ce737" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:02Z", - "name": "pod-garbage-collector", - "namespace": "kube-system", - "resourceVersion": "308", - "uid": "c219d0ee-aead-4199-a4da-5955ca507132" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:02Z", - "name": "token-cleaner", - "namespace": "kube-system", - "resourceVersion": "312", - "uid": "7116900a-b8e8-4988-9a9e-ac8cc7f6f2db" - } - }, - { - "apiVersion": "v1", - "automountServiceAccountToken": false, - "kind": "ServiceAccount", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "projectcontour", - "meta.helm.sh/release-namespace": "projectcontour" - }, - "creationTimestamp": "2025-08-09T06:32:04Z", - "labels": { - "app.kubernetes.io/component": "envoy", - "app.kubernetes.io/instance": "projectcontour", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "contour", - "app.kubernetes.io/version": "1.29.5", - "helm.sh/chart": "contour-18.2.4" - }, - "name": "projectcontour-envoy", - "namespace": "projectcontour", - "resourceVersion": "1401", - "uid": "1895c3cd-3de8-4c24-b6ca-428d4725b711" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:04Z", - "name": "daemon-set-controller", - "namespace": "kube-system", - "resourceVersion": "338", - "uid": "9d56ff89-148d-4d1e-ad13-b1cc221e5d07" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "node-controller", - "namespace": "kube-system", - "resourceVersion": "270", - "uid": "cc041650-1a6e-43db-83f4-13209d658b9e" - } - }, - { - "apiVersion": "v1", - "automountServiceAccountToken": true, - "kind": "ServiceAccount", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager", - "namespace": "cert-manager", - "resourceVersion": "572", - "uid": "1404108d-0edc-4b7e-a59c-4652f64b2dd7" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:06Z", - "name": "default", - "namespace": "default", - "resourceVersion": "424", - "uid": "e3f6384b-0b7a-45d6-ac0b-3ffb94c20b39" - } - }, - { - "apiVersion": "v1", - "kind": "ServiceAccount", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:03Z", - "name": "endpoint-controller", - "namespace": "kube-system", - "resourceVersion": "319", - "uid": "59209742-0502-40c1-b464-f17708f9cdab" - } - } - ], - "roles": [ - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system::leader-locking-kube-scheduler", - "namespace": "kube-system", - "resourceVersion": "223", - "uid": "d5050601-60c7-439a-a225-456deefc9670" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resourceNames": [ - "kube-scheduler" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "get", - "update" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "create", - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leasecandidates" - ], - "verbs": [ - "create", - "get", - "list", - "update", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-tokenrequest", - "namespace": "cert-manager", - "resourceVersion": "615", - "uid": "3e6c2c2f-9155-4f2e-9418-5be771b24ba8" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resourceNames": [ - "cert-manager" - ], - "resources": [ - "serviceaccounts/token" - ], - "verbs": [ - "create" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "creationTimestamp": "2025-08-09T06:28:59Z", - "name": "kubeadm:nodes-kubeadm-config", - "namespace": "kube-system", - "resourceVersion": "239", - "uid": "47539ae7-9b5b-4023-87c4-4cb96d312e61" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resourceNames": [ - "kubeadm-config" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "get" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:token-cleaner", - "namespace": "kube-system", - "resourceVersion": "221", - "uid": "78dde366-cd8d-423f-83f0-85a6046ca70c" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "delete", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "kubeadm:bootstrap-signer-clusterinfo", - "namespace": "kube-public", - "resourceVersion": "253", - "uid": "cc0c9cf2-8286-4809-a120-76aa1ced326b" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resourceNames": [ - "cluster-info" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "get" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:cloud-provider", - "namespace": "kube-system", - "resourceVersion": "220", - "uid": "63b800c0-bc06-4782-9a0a-ba525b6f5136" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "create", - "get", - "list", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "webhook", - "app.kubernetes.io/component": "webhook", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "webhook", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-webhook:dynamic-serving", - "namespace": "cert-manager", - "resourceVersion": "612", - "uid": "93320e51-80c5-4ce6-a849-a608cf312eb5" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resourceNames": [ - "cert-manager-webhook-ca" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get", - "list", - "watch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "create" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "kubeadm:kubelet-config", - "namespace": "kube-system", - "resourceVersion": "242", - "uid": "a9be9dd2-02d4-47ce-b3da-9d0b678b4e35" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resourceNames": [ - "kubelet-config" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "get" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:bootstrap-signer", - "namespace": "kube-public", - "resourceVersion": "224", - "uid": "ff4c70f9-4aef-4b3c-a0fc-2939cc68e433" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resourceNames": [ - "cluster-info" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system::leader-locking-kube-controller-manager", - "namespace": "kube-system", - "resourceVersion": "222", - "uid": "a6966a70-1bac-47cd-8b0a-0b842dda051b" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resourceNames": [ - "kube-controller-manager" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "get", - "update" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "create", - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leasecandidates" - ], - "verbs": [ - "create", - "get", - "list", - "update", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "projectcontour", - "meta.helm.sh/release-namespace": "projectcontour" - }, - "creationTimestamp": "2025-08-09T06:32:04Z", - "labels": { - "app.kubernetes.io/instance": "projectcontour", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "contour", - "app.kubernetes.io/version": "1.29.1", - "helm.sh/chart": "contour-18.2.4" - }, - "name": "projectcontour-contour", - "namespace": "projectcontour", - "resourceVersion": "1418", - "uid": "37735b80-b7d7-40c5-a35d-06f3dda902d8" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "get", - "update" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "create", - "get", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "ingress-nginx", - "meta.helm.sh/release-namespace": "ingress-nginx" - }, - "creationTimestamp": "2025-08-09T06:31:23Z", - "labels": { - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "ingress-nginx", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "ingress-nginx", - "app.kubernetes.io/part-of": "ingress-nginx", - "app.kubernetes.io/version": "1.12.3", - "helm.sh/chart": "ingress-nginx-4.12.3" - }, - "name": "ingress-nginx", - "namespace": "ingress-nginx", - "resourceVersion": "1196", - "uid": "776fbcc5-431b-4169-a0bf-23599c3b7b6d" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ], - "verbs": [ - "get" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps", - "pods", - "secrets", - "endpoints" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "services" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingressclasses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resourceNames": [ - "ingress-nginx-leader" - ], - "resources": [ - "leases" - ], - "verbs": [ - "get", - "update" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch" - ] - }, - { - "apiGroups": [ - "discovery.k8s.io" - ], - "resources": [ - "endpointslices" - ], - "verbs": [ - "list", - "watch", - "get" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager:leaderelection", - "namespace": "kube-system", - "resourceVersion": "614", - "uid": "6c51c28d-8cee-419b-9a75-696e1c00d90b" - }, - "rules": [ - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resourceNames": [ - "cert-manager-controller" - ], - "resources": [ - "leases" - ], - "verbs": [ - "get", - "update", - "patch" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "create" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:29:03Z", - "name": "local-path-provisioner-role", - "namespace": "local-path-storage", - "resourceVersion": "323", - "uid": "11500ffc-4ba1-45f4-b258-9e59b9ff729b" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "get", - "list", - "watch", - "create", - "patch", - "update", - "delete" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:01Z", - "name": "kube-proxy", - "namespace": "kube-system", - "resourceVersion": "289", - "uid": "3e0e7e48-8cb7-46e8-921e-c55a15e6e839" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resourceNames": [ - "kube-proxy" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "get" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "samplewebhook", - "meta.helm.sh/release-namespace": "samplewebhook" - }, - "creationTimestamp": "2025-08-09T06:30:45Z", - "labels": { - "app.kubernetes.io/managed-by": "Helm" - }, - "name": "samplewebhook-example-webhook:webhook-authentication-reader", - "namespace": "kube-system", - "resourceVersion": "902", - "uid": "62950c4e-158a-4d87-8aa2-c59bdb85ca72" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resourceNames": [ - "extension-apiserver-authentication" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cainjector", - "app.kubernetes.io/component": "cainjector", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cainjector", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-cainjector:leaderelection", - "namespace": "kube-system", - "resourceVersion": "613", - "uid": "6223066f-0a7b-4047-bf70-ee55a3963b2d" - }, - "rules": [ - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resourceNames": [ - "cert-manager-cainjector-leader-election", - "cert-manager-cainjector-leader-election-core" - ], - "resources": [ - "leases" - ], - "verbs": [ - "get", - "update", - "patch" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "create" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:bootstrap-signer", - "namespace": "kube-system", - "resourceVersion": "219", - "uid": "c20f18bc-b401-40f7-9874-cddd690f6575" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:30:39Z", - "labels": { - "app.kubernetes.io/component": "rbac", - "app.kubernetes.io/created-by": "sample-external-issuer", - "app.kubernetes.io/instance": "leader-election-role", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "role", - "app.kubernetes.io/part-of": "sample-external-issuer" - }, - "name": "sample-external-issuer-leader-election-role", - "namespace": "sample-external-issuer-system", - "resourceVersion": "842", - "uid": "fb894d57-0d77-4619-99f1-e41c4704ea20" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "get", - "list", - "watch", - "create", - "update", - "patch", - "delete" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "get", - "list", - "watch", - "create", - "update", - "patch", - "delete" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "Role", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "extension-apiserver-authentication-reader", - "namespace": "kube-system", - "resourceVersion": "218", - "uid": "6ccfa415-3634-44de-964e-344763ada77b" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resourceNames": [ - "extension-apiserver-authentication" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974", - "rbac.authorization.k8s.io/aggregate-to-cluster-reader": "true" - }, - "name": "cert-manager-cluster-view", - "resourceVersion": "595", - "uid": "6c0848e6-134c-4a92-8fb9-0cc437909e71" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "clusterissuers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:heapster", - "resourceVersion": "120", - "uid": "33dbe304-7fd9-411e-bcf9-b92b53015e69" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "events", - "namespaces", - "nodes", - "pods" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "extensions" - ], - "resources": [ - "deployments" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:pod-garbage-collector", - "resourceVersion": "157", - "uid": "f7ac53f8-4788-4c83-8543-d4065d235770" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "delete", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "get", - "list" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ], - "verbs": [ - "patch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults", - "rbac.authorization.k8s.io/aggregate-to-admin": "true" - }, - "name": "system:aggregate-to-admin", - "resourceVersion": "117", - "uid": "1d6b826f-2dc0-4a83-9ae6-37f6cfc70a3b" - }, - "rules": [ - { - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "localsubjectaccessreviews" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "rolebindings", - "roles" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:kube-controller-manager", - "resourceVersion": "127", - "uid": "85ffa7c4-9494-432b-a5cb-55435a5d353a" - }, - "rules": [ - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resourceNames": [ - "kube-controller-manager" - ], - "resources": [ - "leases" - ], - "verbs": [ - "get", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets", - "serviceaccounts" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "delete" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps", - "namespaces", - "secrets", - "serviceaccounts" - ], - "verbs": [ - "get" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets", - "serviceaccounts" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "tokenreviews" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "subjectaccessreviews" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "*" - ], - "resources": [ - "*" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts/token" - ], - "verbs": [ - "create" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:expand-controller", - "resourceVersion": "149", - "uid": "a10f839d-0f17-435c-90f9-69e1937bdf3a" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumes" - ], - "verbs": [ - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims/status" - ], - "verbs": [ - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "endpoints", - "services" - ], - "verbs": [ - "get" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:monitoring", - "resourceVersion": "111", - "uid": "43b5dc6d-6c21-412a-ac20-7fce5bb4c47b" - }, - "rules": [ - { - "nonResourceURLs": [ - "/healthz", - "/healthz/*", - "/livez", - "/livez/*", - "/metrics", - "/metrics/slis", - "/readyz", - "/readyz/*" - ], - "verbs": [ - "get" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:kubelet-api-admin", - "resourceVersion": "123", - "uid": "8b405732-25ed-4919-99ae-afa9156c636f" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "proxy" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes/log", - "nodes/metrics", - "nodes/proxy", - "nodes/stats" - ], - "verbs": [ - "*" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-clusterissuers", - "resourceVersion": "591", - "uid": "5eb46cae-c947-4c23-9e2b-58efbc57b6db" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "clusterissuers", - "clusterissuers/status" - ], - "verbs": [ - "update", - "patch" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "clusterissuers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get", - "list", - "watch", - "create", - "update", - "delete" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:certificates.k8s.io:kube-apiserver-client-kubelet-approver", - "resourceVersion": "136", - "uid": "6757dd77-13c8-4a3f-8340-93bf3f9bf6f5" - }, - "rules": [ - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resourceNames": [ - "kubernetes.io/kube-apiserver-client-kubelet" - ], - "resources": [ - "signers" - ], - "verbs": [ - "approve" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults", - "rbac.authorization.k8s.io/aggregate-to-view": "true" - }, - "name": "system:aggregate-to-view", - "resourceVersion": "119", - "uid": "e58aec58-bb5b-4d6e-be30-c286838d51d1" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps", - "endpoints", - "persistentvolumeclaims", - "persistentvolumeclaims/status", - "pods", - "replicationcontrollers", - "replicationcontrollers/scale", - "serviceaccounts", - "services", - "services/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "bindings", - "events", - "limitranges", - "namespaces/status", - "pods/log", - "pods/status", - "replicationcontrollers/status", - "resourcequotas", - "resourcequotas/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "discovery.k8s.io" - ], - "resources": [ - "endpointslices" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "controllerrevisions", - "daemonsets", - "daemonsets/status", - "deployments", - "deployments/scale", - "deployments/status", - "replicasets", - "replicasets/scale", - "replicasets/status", - "statefulsets", - "statefulsets/scale", - "statefulsets/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers", - "horizontalpodautoscalers/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs", - "cronjobs/status", - "jobs", - "jobs/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets", - "daemonsets/status", - "deployments", - "deployments/scale", - "deployments/status", - "ingresses", - "ingresses/status", - "networkpolicies", - "replicasets", - "replicasets/scale", - "replicasets/status", - "replicationcontrollers/scale" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets", - "poddisruptionbudgets/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses", - "ingresses/status", - "networkpolicies" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:endpointslicemirroring-controller", - "resourceVersion": "148", - "uid": "e1cc1711-ae42-4658-97a5-24f84df6d899" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "endpoints", - "services" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "services/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "endpoints/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "discovery.k8s.io" - ], - "resources": [ - "endpointslices" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "update" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:30:39Z", - "labels": { - "app.kubernetes.io/component": "kube-rbac-proxy", - "app.kubernetes.io/created-by": "sample-external-issuer", - "app.kubernetes.io/instance": "proxy-role", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "clusterrole", - "app.kubernetes.io/part-of": "sample-external-issuer" - }, - "name": "sample-external-issuer-proxy-role", - "resourceVersion": "846", - "uid": "6a8fb9fa-ee15-4e91-b351-b131d644ead4" - }, - "rules": [ - { - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "tokenreviews" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "subjectaccessreviews" - ], - "verbs": [ - "create" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:auth-delegator", - "resourceVersion": "125", - "uid": "a9e38ef0-42ed-4fb7-b53e-a50eb85b2ab2" - }, - "rules": [ - { - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "tokenreviews" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "subjectaccessreviews" - ], - "verbs": [ - "create" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "system:coredns", - "resourceVersion": "256", - "uid": "814cc257-97bf-4f6e-a773-3e0552761dbb" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "endpoints", - "services", - "pods", - "namespaces" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "discovery.k8s.io" - ], - "resources": [ - "endpointslices" - ], - "verbs": [ - "list", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "projectcontour", - "meta.helm.sh/release-namespace": "projectcontour" - }, - "creationTimestamp": "2025-08-09T06:32:04Z", - "labels": { - "app.kubernetes.io/instance": "projectcontour", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "contour", - "app.kubernetes.io/version": "1.29.1", - "helm.sh/chart": "contour-18.2.4" - }, - "name": "projectcontour-contour", - "resourceVersion": "1415", - "uid": "f38d6b18-b3fb-4094-b8cf-2cdef860e09b" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "create", - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "services" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingressclasses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses/status" - ], - "verbs": [ - "create", - "get", - "update" - ] - }, - { - "apiGroups": [ - "networking.x-k8s.io", - "gateway.networking.k8s.io" - ], - "resources": [ - "gatewayclasses", - "gateways", - "grpcroutes", - "httproutes", - "tcproutes", - "tlsroutes", - "udproutes", - "referencepolicies", - "referencegrants", - "backendtlspolicies" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.x-k8s.io", - "gateway.networking.k8s.io" - ], - "resources": [ - "gatewayclasses/status", - "gateways/status", - "grpcroutes/status", - "httproutes/status", - "tcproutes/status", - "tlsroutes/status", - "udproutes/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "projectcontour.io" - ], - "resources": [ - "contourconfigurations" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "projectcontour.io" - ], - "resources": [ - "contourconfigurations/status" - ], - "verbs": [ - "create", - "get", - "update" - ] - }, - { - "apiGroups": [ - "projectcontour.io" - ], - "resources": [ - "extensionservices" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "projectcontour.io" - ], - "resources": [ - "extensionservices/status" - ], - "verbs": [ - "create", - "get", - "update" - ] - }, - { - "apiGroups": [ - "projectcontour.io" - ], - "resources": [ - "httpproxies", - "tlscertificatedelegations" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "projectcontour.io" - ], - "resources": [ - "httpproxies/status" - ], - "verbs": [ - "create", - "get", - "update" - ] - }, - { - "apiGroups": [ - "discovery.k8s.io" - ], - "resources": [ - "endpointslices" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:certificates.k8s.io:certificatesigningrequests:selfnodeclient", - "resourceVersion": "131", - "uid": "23a0dae6-eb0f-4ed8-9175-f1bfc5002f4d" - }, - "rules": [ - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resources": [ - "certificatesigningrequests/selfnodeclient" - ], - "verbs": [ - "create" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults", - "rbac.authorization.k8s.io/aggregate-to-edit": "true" - }, - "name": "system:aggregate-to-edit", - "resourceVersion": "118", - "uid": "238b229b-360a-4b8b-bd63-5007a8bc0f8f" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/attach", - "pods/exec", - "pods/portforward", - "pods/proxy", - "secrets", - "services/proxy" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ], - "verbs": [ - "impersonate" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods", - "pods/attach", - "pods/exec", - "pods/portforward", - "pods/proxy" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/eviction" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps", - "events", - "persistentvolumeclaims", - "replicationcontrollers", - "replicationcontrollers/scale", - "secrets", - "serviceaccounts", - "services", - "services/proxy" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts/token" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets", - "deployments", - "deployments/rollback", - "deployments/scale", - "replicasets", - "replicasets/scale", - "statefulsets", - "statefulsets/scale" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs", - "jobs" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets", - "deployments", - "deployments/rollback", - "deployments/scale", - "ingresses", - "networkpolicies", - "replicasets", - "replicasets/scale", - "replicationcontrollers/scale" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses", - "networkpolicies" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:30:39Z", - "name": "sample-external-issuer-manager-role", - "resourceVersion": "844", - "uid": "67788166-6629-47b9-9a6e-b628d5564f04" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificaterequests" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificaterequests/status" - ], - "verbs": [ - "get", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "sample-issuer.example.com" - ], - "resources": [ - "clusterissuers", - "issuers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "sample-issuer.example.com" - ], - "resources": [ - "clusterissuers/status", - "issuers/status" - ], - "verbs": [ - "get", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:kube-aggregator", - "resourceVersion": "126", - "uid": "b63836e0-153d-46ed-9a0d-50035bd52599" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "endpoints", - "services" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:job-controller", - "resourceVersion": "153", - "uid": "a463c2b7-7c63-4dee-90cf-0723472b3bb3" - }, - "rules": [ - { - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ], - "verbs": [ - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "create", - "delete", - "list", - "patch", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:resourcequota-controller", - "resourceVersion": "160", - "uid": "b4e1a20b-314c-4b45-a685-0cc8c5f520fb" - }, - "rules": [ - { - "apiGroups": [ - "*" - ], - "resources": [ - "*" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "resourcequotas/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:kube-dns", - "resourceVersion": "128", - "uid": "ecb79ae7-1cfb-4bc9-a116-d500fc7f4863" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "endpoints", - "services" - ], - "verbs": [ - "list", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:certificates.k8s.io:kubelet-serving-approver", - "resourceVersion": "134", - "uid": "9ffe0b54-75d3-4d19-b0e9-dc8602156645" - }, - "rules": [ - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resourceNames": [ - "kubernetes.io/kubelet-serving" - ], - "resources": [ - "signers" - ], - "verbs": [ - "approve" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:disruption-controller", - "resourceVersion": "145", - "uid": "2aee33b4-4216-45bd-afca-59c21f9a8d41" - }, - "rules": [ - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "deployments" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "replicasets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ], - "verbs": [ - "patch", - "update" - ] - }, - { - "apiGroups": [ - "*" - ], - "resources": [ - "*/scale" - ], - "verbs": [ - "get" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:legacy-service-account-token-cleaner", - "resourceVersion": "172", - "uid": "f912e505-d431-4ab3-a02e-422df71ca1ca" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resourceNames": [ - "kube-apiserver-legacy-service-account-token-tracking" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "get" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "delete", - "patch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:service-account-issuer-discovery", - "resourceVersion": "137", - "uid": "c362b375-2991-44f8-9d8d-b2b5995a6d7e" - }, - "rules": [ - { - "nonResourceURLs": [ - "/.well-known/openid-configuration", - "/.well-known/openid-configuration/", - "/openid/v1/jwks", - "/openid/v1/jwks/" - ], - "verbs": [ - "get" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:node-controller", - "resourceVersion": "155", - "uid": "f25dc654-fece-4f19-97fe-728c671cf62c" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "delete", - "get", - "list", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes/status" - ], - "verbs": [ - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ], - "verbs": [ - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "delete", - "get", - "list" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:namespace-controller", - "resourceVersion": "154", - "uid": "67982a4f-51c6-476d-826b-b529bc6b2f01" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ], - "verbs": [ - "delete", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "namespaces/finalize", - "namespaces/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "*" - ], - "resources": [ - "*" - ], - "verbs": [ - "delete", - "deletecollection", - "get", - "list" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:route-controller", - "resourceVersion": "161", - "uid": "45149ebf-f182-42d8-98e5-1d00b1138bb9" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes/status" - ], - "verbs": [ - "patch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:pvc-protection-controller", - "resourceVersion": "167", - "uid": "92d10ef9-5709-4606-ac81-d18aaba6ec50" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ], - "verbs": [ - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:node-proxier", - "resourceVersion": "138", - "uid": "6e8fd0a8-6dcd-4fb9-aec7-fe85b6dc0ccf" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "endpoints", - "services" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "discovery.k8s.io" - ], - "resources": [ - "endpointslices" - ], - "verbs": [ - "list", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:replication-controller", - "resourceVersion": "159", - "uid": "b12d8578-8556-4907-a62d-63f34aeac155" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers" - ], - "verbs": [ - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "create", - "delete", - "list", - "patch", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974", - "rbac.authorization.k8s.io/aggregate-to-admin": "true", - "rbac.authorization.k8s.io/aggregate-to-edit": "true" - }, - "name": "cert-manager-edit", - "resourceVersion": "588", - "uid": "2395e9fe-81d2-426b-a958-4cf67b0df1ee" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates", - "certificaterequests", - "issuers" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "challenges", - "orders" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:node", - "resourceVersion": "121", - "uid": "bafa03fc-8f24-4bc1-82ba-3bb6cda49310" - }, - "rules": [ - { - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "tokenreviews" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "localsubjectaccessreviews", - "subjectaccessreviews" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "services" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "create", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes/status" - ], - "verbs": [ - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "create", - "delete" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ], - "verbs": [ - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/eviction" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps", - "secrets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims", - "persistentvolumes" - ], - "verbs": [ - "get" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ], - "verbs": [ - "get" - ] - }, - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resources": [ - "certificatesigningrequests" - ], - "verbs": [ - "create", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "create", - "delete", - "get", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "volumeattachments" - ], - "verbs": [ - "get" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts/token" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims/status" - ], - "verbs": [ - "get", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "csidrivers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "csinodes" - ], - "verbs": [ - "create", - "delete", - "get", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "node.k8s.io" - ], - "resources": [ - "runtimeclasses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:endpointslice-controller", - "resourceVersion": "147", - "uid": "ea97532b-380c-4f38-b24e-630d21124e00" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes", - "pods", - "services" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "services/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "discovery.k8s.io" - ], - "resources": [ - "endpointslices" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "update" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:service-account-controller", - "resourceVersion": "162", - "uid": "de1aa90c-29c5-4093-b52d-d08c15c3f63b" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:node-problem-detector", - "resourceVersion": "122", - "uid": "e48051bc-9113-40d0-8fce-5b3c2919e9f0" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "get" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes/status" - ], - "verbs": [ - "patch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:02Z", - "name": "kindnet", - "resourceVersion": "310", - "uid": "5f70ede2-9170-4a90-8385-555766ccb87e" - }, - "rules": [ - { - "apiGroups": [ - "policy" - ], - "resourceNames": [ - "kindnet" - ], - "resources": [ - "podsecuritypolicies" - ], - "verbs": [ - "use" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes", - "pods", - "namespaces" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "networkpolicies" - ], - "verbs": [ - "list", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:validatingadmissionpolicy-status-controller", - "resourceVersion": "171", - "uid": "89541ad1-519b-4b87-a7f7-e359b555c72a" - }, - "rules": [ - { - "apiGroups": [ - "admissionregistration.k8s.io" - ], - "resources": [ - "validatingadmissionpolicies" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "admissionregistration.k8s.io" - ], - "resources": [ - "validatingadmissionpolicies/status" - ], - "verbs": [ - "get", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:attachdetach-controller", - "resourceVersion": "140", - "uid": "45d49d9a-8530-467e-aec7-53d2b9936926" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims", - "persistentvolumes" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes/status" - ], - "verbs": [ - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "volumeattachments" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "csidrivers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "csinodes" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "cert-manager", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-certificatesigningrequests", - "resourceVersion": "590", - "uid": "5141674e-1834-4ea1-9332-ddc6a407203f" - }, - "rules": [ - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resources": [ - "certificatesigningrequests" - ], - "verbs": [ - "get", - "list", - "watch", - "update" - ] - }, - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resources": [ - "certificatesigningrequests/status" - ], - "verbs": [ - "update", - "patch" - ] - }, - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resourceNames": [ - "issuers.cert-manager.io/*", - "clusterissuers.cert-manager.io/*" - ], - "resources": [ - "signers" - ], - "verbs": [ - "sign" - ] - }, - { - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "subjectaccessreviews" - ], - "verbs": [ - "create" - ] - } - ] - }, - { - "aggregationRule": { - "clusterRoleSelectors": [ - { - "matchLabels": { - "rbac.authorization.k8s.io/aggregate-to-admin": "true" - } - } - ] - }, - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "admin", - "resourceVersion": "616", - "uid": "c2b73b58-8df2-478f-8038-9401025e391e" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates", - "certificaterequests", - "issuers" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "challenges", - "orders" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates", - "certificaterequests", - "issuers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "challenges", - "orders" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/attach", - "pods/exec", - "pods/portforward", - "pods/proxy", - "secrets", - "services/proxy" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ], - "verbs": [ - "impersonate" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods", - "pods/attach", - "pods/exec", - "pods/portforward", - "pods/proxy" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/eviction" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps", - "events", - "persistentvolumeclaims", - "replicationcontrollers", - "replicationcontrollers/scale", - "secrets", - "serviceaccounts", - "services", - "services/proxy" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts/token" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets", - "deployments", - "deployments/rollback", - "deployments/scale", - "replicasets", - "replicasets/scale", - "statefulsets", - "statefulsets/scale" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs", - "jobs" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets", - "deployments", - "deployments/rollback", - "deployments/scale", - "ingresses", - "networkpolicies", - "replicasets", - "replicasets/scale", - "replicationcontrollers/scale" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses", - "networkpolicies" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps", - "endpoints", - "persistentvolumeclaims", - "persistentvolumeclaims/status", - "pods", - "replicationcontrollers", - "replicationcontrollers/scale", - "serviceaccounts", - "services", - "services/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "bindings", - "events", - "limitranges", - "namespaces/status", - "pods/log", - "pods/status", - "replicationcontrollers/status", - "resourcequotas", - "resourcequotas/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "discovery.k8s.io" - ], - "resources": [ - "endpointslices" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "controllerrevisions", - "daemonsets", - "daemonsets/status", - "deployments", - "deployments/scale", - "deployments/status", - "replicasets", - "replicasets/scale", - "replicasets/status", - "statefulsets", - "statefulsets/scale", - "statefulsets/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers", - "horizontalpodautoscalers/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs", - "cronjobs/status", - "jobs", - "jobs/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets", - "daemonsets/status", - "deployments", - "deployments/scale", - "deployments/status", - "ingresses", - "ingresses/status", - "networkpolicies", - "replicasets", - "replicasets/scale", - "replicasets/status", - "replicationcontrollers/scale" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets", - "poddisruptionbudgets/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses", - "ingresses/status", - "networkpolicies" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "localsubjectaccessreviews" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "rolebindings", - "roles" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:cronjob-controller", - "resourceVersion": "142", - "uid": "4b376b8e-d9b1-4d5e-89f8-5af2ada5159a" - }, - "rules": [ - { - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs" - ], - "verbs": [ - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "delete", - "list" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "cert-manager", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-approve:cert-manager-io", - "resourceVersion": "598", - "uid": "9a189eb0-0d74-4cea-aab2-f873ab7b5ec2" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resourceNames": [ - "issuers.cert-manager.io/*", - "clusterissuers.cert-manager.io/*" - ], - "resources": [ - "signers" - ], - "verbs": [ - "approve" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:node-bootstrapper", - "resourceVersion": "124", - "uid": "ac540e82-9a48-4546-9def-04851fc8c05b" - }, - "rules": [ - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resources": [ - "certificatesigningrequests" - ], - "verbs": [ - "create", - "get", - "list", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:endpoint-controller", - "resourceVersion": "146", - "uid": "ff9e722f-92e8-42c4-a4db-77937925d5a7" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "pods", - "services" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "endpoints/restricted" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cainjector", - "app.kubernetes.io/component": "cainjector", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cainjector", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-cainjector", - "resourceVersion": "596", - "uid": "f2064832-1d75-4544-9332-9ed32647b029" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "get", - "create", - "update", - "patch" - ] - }, - { - "apiGroups": [ - "admissionregistration.k8s.io" - ], - "resources": [ - "validatingwebhookconfigurations", - "mutatingwebhookconfigurations" - ], - "verbs": [ - "get", - "list", - "watch", - "update", - "patch" - ] - }, - { - "apiGroups": [ - "apiregistration.k8s.io" - ], - "resources": [ - "apiservices" - ], - "verbs": [ - "get", - "list", - "watch", - "update", - "patch" - ] - }, - { - "apiGroups": [ - "apiextensions.k8s.io" - ], - "resources": [ - "customresourcedefinitions" - ], - "verbs": [ - "get", - "list", - "watch", - "update", - "patch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:30:39Z", - "name": "sample-external-issuer-cert-manager-controller-approve:sample-issuer-example-com", - "resourceVersion": "843", - "uid": "c3fde9b8-4bb8-4920-99db-fdb9efc98596" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resourceNames": [ - "issuers.sample-issuer.example.com/*", - "clusterissuers.sample-issuer.example.com/*" - ], - "resources": [ - "signers" - ], - "verbs": [ - "approve" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-ingress-shim", - "resourceVersion": "586", - "uid": "83aee888-fba3-4d21-b590-b7027688c215" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates", - "certificaterequests" - ], - "verbs": [ - "create", - "update", - "delete" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates", - "certificaterequests", - "issuers", - "clusterissuers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "gateway.networking.k8s.io" - ], - "resources": [ - "gateways", - "httproutes" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "gateway.networking.k8s.io" - ], - "resources": [ - "gateways/finalizers", - "httproutes/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:certificate-controller", - "resourceVersion": "166", - "uid": "b6b9e887-c27e-4dfb-894b-df57e0a26f47" - }, - "rules": [ - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resources": [ - "certificatesigningrequests" - ], - "verbs": [ - "delete", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resources": [ - "certificatesigningrequests/approval", - "certificatesigningrequests/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resourceNames": [ - "kubernetes.io/kube-apiserver-client-kubelet" - ], - "resources": [ - "signers" - ], - "verbs": [ - "approve" - ] - }, - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resourceNames": [ - "kubernetes.io/kube-apiserver-client", - "kubernetes.io/kube-apiserver-client-kubelet", - "kubernetes.io/kubelet-serving", - "kubernetes.io/legacy-unknown" - ], - "resources": [ - "signers" - ], - "verbs": [ - "sign" - ] - }, - { - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "subjectaccessreviews" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:certificates.k8s.io:certificatesigningrequests:nodeclient", - "resourceVersion": "130", - "uid": "88045c5f-c71c-4282-a05e-35f30cd500ef" - }, - "rules": [ - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resources": [ - "certificatesigningrequests/nodeclient" - ], - "verbs": [ - "create" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:certificates.k8s.io:legacy-unknown-approver", - "resourceVersion": "133", - "uid": "80ebb3a0-98e6-4f98-80f9-5066c7ae3ea2" - }, - "rules": [ - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resourceNames": [ - "kubernetes.io/legacy-unknown" - ], - "resources": [ - "signers" - ], - "verbs": [ - "approve" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:public-info-viewer", - "resourceVersion": "113", - "uid": "16e4f281-de96-476f-8fbe-c729ddf5567f" - }, - "rules": [ - { - "nonResourceURLs": [ - "/healthz", - "/livez", - "/readyz", - "/version", - "/version/" - ], - "verbs": [ - "get" - ] - } - ] - }, - { - "aggregationRule": { - "clusterRoleSelectors": [ - { - "matchLabels": { - "rbac.authorization.k8s.io/aggregate-to-view": "true" - } - } - ] - }, - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults", - "rbac.authorization.k8s.io/aggregate-to-edit": "true" - }, - "name": "view", - "resourceVersion": "610", - "uid": "73da5e97-b87d-4acf-aae6-27ffbaecb312" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates", - "certificaterequests", - "issuers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "challenges", - "orders" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps", - "endpoints", - "persistentvolumeclaims", - "persistentvolumeclaims/status", - "pods", - "replicationcontrollers", - "replicationcontrollers/scale", - "serviceaccounts", - "services", - "services/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "bindings", - "events", - "limitranges", - "namespaces/status", - "pods/log", - "pods/status", - "replicationcontrollers/status", - "resourcequotas", - "resourcequotas/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "discovery.k8s.io" - ], - "resources": [ - "endpointslices" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "controllerrevisions", - "daemonsets", - "daemonsets/status", - "deployments", - "deployments/scale", - "deployments/status", - "replicasets", - "replicasets/scale", - "replicasets/status", - "statefulsets", - "statefulsets/scale", - "statefulsets/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers", - "horizontalpodautoscalers/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs", - "cronjobs/status", - "jobs", - "jobs/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets", - "daemonsets/status", - "deployments", - "deployments/scale", - "deployments/status", - "ingresses", - "ingresses/status", - "networkpolicies", - "replicasets", - "replicasets/scale", - "replicasets/status", - "replicationcontrollers/scale" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets", - "poddisruptionbudgets/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses", - "ingresses/status", - "networkpolicies" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974", - "rbac.authorization.k8s.io/aggregate-to-admin": "true", - "rbac.authorization.k8s.io/aggregate-to-cluster-reader": "true", - "rbac.authorization.k8s.io/aggregate-to-edit": "true", - "rbac.authorization.k8s.io/aggregate-to-view": "true" - }, - "name": "cert-manager-view", - "resourceVersion": "594", - "uid": "6da502e4-445b-4700-8efe-f523c918440a" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates", - "certificaterequests", - "issuers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "challenges", - "orders" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:statefulset-controller", - "resourceVersion": "164", - "uid": "6d120614-a05f-4d00-8dc6-b88db6543dfa" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "create", - "delete", - "get", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "controllerrevisions" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ], - "verbs": [ - "create", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ], - "verbs": [ - "delete", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/finalizers" - ], - "verbs": [ - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:persistent-volume-provisioner", - "resourceVersion": "129", - "uid": "8ccf78da-6e95-4a9c-8c09-3d0d030ca282" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumes" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ], - "verbs": [ - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "aggregationRule": { - "clusterRoleSelectors": [ - { - "matchLabels": { - "rbac.authorization.k8s.io/aggregate-to-edit": "true" - } - } - ] - }, - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults", - "rbac.authorization.k8s.io/aggregate-to-admin": "true" - }, - "name": "edit", - "resourceVersion": "620", - "uid": "be24d67c-e79d-4e7d-a8cb-042f43358e7b" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates", - "certificaterequests", - "issuers" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "challenges", - "orders" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates", - "certificaterequests", - "issuers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "challenges", - "orders" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/attach", - "pods/exec", - "pods/portforward", - "pods/proxy", - "secrets", - "services/proxy" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts" - ], - "verbs": [ - "impersonate" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods", - "pods/attach", - "pods/exec", - "pods/portforward", - "pods/proxy" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/eviction" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps", - "events", - "persistentvolumeclaims", - "replicationcontrollers", - "replicationcontrollers/scale", - "secrets", - "serviceaccounts", - "services", - "services/proxy" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "serviceaccounts/token" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "daemonsets", - "deployments", - "deployments/rollback", - "deployments/scale", - "replicasets", - "replicasets/scale", - "statefulsets", - "statefulsets/scale" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs", - "jobs" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets", - "deployments", - "deployments/rollback", - "deployments/scale", - "ingresses", - "networkpolicies", - "replicasets", - "replicasets/scale", - "replicationcontrollers/scale" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses", - "networkpolicies" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps", - "endpoints", - "persistentvolumeclaims", - "persistentvolumeclaims/status", - "pods", - "replicationcontrollers", - "replicationcontrollers/scale", - "serviceaccounts", - "services", - "services/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "bindings", - "events", - "limitranges", - "namespaces/status", - "pods/log", - "pods/status", - "replicationcontrollers/status", - "resourcequotas", - "resourcequotas/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "discovery.k8s.io" - ], - "resources": [ - "endpointslices" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "controllerrevisions", - "daemonsets", - "daemonsets/status", - "deployments", - "deployments/scale", - "deployments/status", - "replicasets", - "replicasets/scale", - "replicasets/status", - "statefulsets", - "statefulsets/scale", - "statefulsets/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers", - "horizontalpodautoscalers/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "batch" - ], - "resources": [ - "cronjobs", - "cronjobs/status", - "jobs", - "jobs/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "extensions" - ], - "resources": [ - "daemonsets", - "daemonsets/status", - "deployments", - "deployments/scale", - "deployments/status", - "ingresses", - "ingresses/status", - "networkpolicies", - "replicasets", - "replicasets/scale", - "replicasets/status", - "replicationcontrollers/scale" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets", - "poddisruptionbudgets/status" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses", - "ingresses/status", - "networkpolicies" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:basic-user", - "resourceVersion": "112", - "uid": "a14ff149-adb1-4507-8962-e13f00a58d00" - }, - "rules": [ - { - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "selfsubjectaccessreviews", - "selfsubjectrulesreviews" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "selfsubjectreviews" - ], - "verbs": [ - "create" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:persistent-volume-binder", - "resourceVersion": "156", - "uid": "d4d42ee8-2af3-4a95-816c-a1a348132d94" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumes" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumes/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ], - "verbs": [ - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "endpoints" - ], - "verbs": [ - "create", - "delete", - "get", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "services" - ], - "verbs": [ - "create", - "delete", - "get" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "get", - "list" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-certificates", - "resourceVersion": "593", - "uid": "8f14327a-9850-4108-81bd-f4b77f93b80c" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates", - "certificates/status", - "certificaterequests", - "certificaterequests/status" - ], - "verbs": [ - "update", - "patch" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates", - "certificaterequests", - "clusterissuers", - "issuers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "certificates/finalizers", - "certificaterequests/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "orders" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get", - "list", - "watch", - "create", - "update", - "delete", - "patch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:horizontal-pod-autoscaler", - "resourceVersion": "152", - "uid": "4ba85837-e685-478c-b566-0e892a75d3e1" - }, - "rules": [ - { - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "autoscaling" - ], - "resources": [ - "horizontalpodautoscalers/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "*" - ], - "resources": [ - "*/scale" - ], - "verbs": [ - "get", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "list" - ] - }, - { - "apiGroups": [ - "metrics.k8s.io" - ], - "resources": [ - "pods" - ], - "verbs": [ - "list" - ] - }, - { - "apiGroups": [ - "custom.metrics.k8s.io" - ], - "resources": [ - "*" - ], - "verbs": [ - "get", - "list" - ] - }, - { - "apiGroups": [ - "external.metrics.k8s.io" - ], - "resources": [ - "*" - ], - "verbs": [ - "get", - "list" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-orders", - "resourceVersion": "597", - "uid": "7d26c4d8-9442-4056-93b8-eb7f4dbb9535" - }, - "rules": [ - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "orders", - "orders/status" - ], - "verbs": [ - "update", - "patch" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "orders", - "challenges" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "clusterissuers", - "issuers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "challenges" - ], - "verbs": [ - "create", - "delete" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "orders/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:clusterrole-aggregation-controller", - "resourceVersion": "141", - "uid": "0d6df463-717b-4065-9073-734e8ee780b9" - }, - "rules": [ - { - "apiGroups": [ - "rbac.authorization.k8s.io" - ], - "resources": [ - "clusterroles" - ], - "verbs": [ - "escalate", - "get", - "list", - "patch", - "update", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "ingress-nginx", - "meta.helm.sh/release-namespace": "ingress-nginx" - }, - "creationTimestamp": "2025-08-09T06:31:23Z", - "labels": { - "app.kubernetes.io/instance": "ingress-nginx", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "ingress-nginx", - "app.kubernetes.io/part-of": "ingress-nginx", - "app.kubernetes.io/version": "1.12.3", - "helm.sh/chart": "ingress-nginx-4.12.3" - }, - "name": "ingress-nginx", - "resourceVersion": "1194", - "uid": "6cd55240-506f-40fe-bebe-c452853742eb" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps", - "endpoints", - "nodes", - "pods", - "secrets", - "namespaces" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "get" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "services" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingressclasses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "discovery.k8s.io" - ], - "resources": [ - "endpointslices" - ], - "verbs": [ - "list", - "watch", - "get" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:kube-scheduler", - "resourceVersion": "139", - "uid": "f97e70e6-8c05-406e-9763-fd557dc114bc" - }, - "rules": [ - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leases" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resourceNames": [ - "kube-scheduler" - ], - "resources": [ - "leases" - ], - "verbs": [ - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "coordination.k8s.io" - ], - "resources": [ - "leasecandidates" - ], - "verbs": [ - "create", - "delete", - "deletecollection", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "delete", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "bindings", - "pods/binding" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/status" - ], - "verbs": [ - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "replicationcontrollers", - "services" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "replicasets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "statefulsets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "policy" - ], - "resources": [ - "poddisruptionbudgets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims", - "persistentvolumes" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "authentication.k8s.io" - ], - "resources": [ - "tokenreviews" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "subjectaccessreviews" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "csinodes" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "namespaces" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "csidrivers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "csistoragecapacities" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:pv-protection-controller", - "resourceVersion": "168", - "uid": "03ed1e20-f61f-41ac-a4b5-18d6f3b84a6b" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumes" - ], - "verbs": [ - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "kubeadm:get-nodes", - "resourceVersion": "247", - "uid": "d6b76c09-6aea-454f-9b93-11f8e9499e9d" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "get" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:volume-scheduler", - "resourceVersion": "132", - "uid": "d61ef472-a5a4-4686-8f9a-6d5bc5466aab" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumes" - ], - "verbs": [ - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ], - "verbs": [ - "get", - "list", - "patch", - "update", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-issuers", - "resourceVersion": "589", - "uid": "e957b2e6-f760-4f23-88f7-ae841a9ea43e" - }, - "rules": [ - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "issuers", - "issuers/status" - ], - "verbs": [ - "update", - "patch" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "issuers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get", - "list", - "watch", - "create", - "update", - "delete" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:daemon-set-controller", - "resourceVersion": "143", - "uid": "6a4e200c-094c-44b6-a4b4-81d5649533e8" - }, - "rules": [ - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "daemonsets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "daemonsets/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "daemonsets/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "create", - "delete", - "list", - "patch", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/binding" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "apps" - ], - "resources": [ - "controllerrevisions" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:service-controller", - "resourceVersion": "163", - "uid": "d71b1daf-4aea-4d77-b842-4b80c6447512" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "services" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "services/status" - ], - "verbs": [ - "patch", - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "list", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:generic-garbage-collector", - "resourceVersion": "151", - "uid": "eb8df5c3-a89f-4dcd-a7af-465232f772eb" - }, - "rules": [ - { - "apiGroups": [ - "*" - ], - "resources": [ - "*" - ], - "verbs": [ - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:ttl-controller", - "resourceVersion": "165", - "uid": "4fca7ebe-fd4e-4ca2-83c5-c0586561b8cf" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes" - ], - "verbs": [ - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:discovery", - "resourceVersion": "110", - "uid": "ed36029a-be42-40f3-8669-85d462c02897" - }, - "rules": [ - { - "nonResourceURLs": [ - "/api", - "/api/*", - "/apis", - "/apis/*", - "/healthz", - "/livez", - "/openapi", - "/openapi/*", - "/readyz", - "/version", - "/version/" - ], - "verbs": [ - "get" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "samplewebhook", - "meta.helm.sh/release-namespace": "samplewebhook" - }, - "creationTimestamp": "2025-08-09T06:30:45Z", - "labels": { - "app": "example-webhook", - "app.kubernetes.io/managed-by": "Helm", - "chart": "example-webhook-0.1.0", - "heritage": "Helm", - "release": "samplewebhook" - }, - "name": "samplewebhook-example-webhook:domain-solver", - "resourceVersion": "899", - "uid": "ff915b09-c8f8-4420-bd24-1667e523af48" - }, - "rules": [ - { - "apiGroups": [ - "acme.testing.cert-manager.io" - ], - "resources": [ - "*" - ], - "verbs": [ - "create" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:ephemeral-volume-controller", - "resourceVersion": "150", - "uid": "3000a5a9-43b1-4ff8-b771-066ada94ddfa" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumeclaims" - ], - "verbs": [ - "create", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "cluster-admin", - "resourceVersion": "109", - "uid": "ff61c7c7-aa4a-4382-a3ae-21e5d744614e" - }, - "rules": [ - { - "apiGroups": [ - "*" - ], - "resources": [ - "*" - ], - "verbs": [ - "*" - ] - }, - { - "nonResourceURLs": [ - "*" - ], - "verbs": [ - "*" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:replicaset-controller", - "resourceVersion": "158", - "uid": "61798f94-82ac-4c42-8697-57f21d650701" - }, - "rules": [ - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "replicasets" - ], - "verbs": [ - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "replicasets/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "replicasets/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "create", - "delete", - "list", - "patch", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "webhook", - "app.kubernetes.io/component": "webhook", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "webhook", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-webhook:subjectaccessreviews", - "resourceVersion": "592", - "uid": "1ca5215f-1b4b-4911-af27-d46b2bc4f5fe" - }, - "rules": [ - { - "apiGroups": [ - "authorization.k8s.io" - ], - "resources": [ - "subjectaccessreviews" - ], - "verbs": [ - "create" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:root-ca-cert-publisher", - "resourceVersion": "170", - "uid": "be33575f-62dc-451f-8f80-abccae412771" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "configmaps" - ], - "verbs": [ - "create", - "update" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-challenges", - "resourceVersion": "587", - "uid": "b8e5bd37-0a32-49da-a9df-6d768b1af0b7" - }, - "rules": [ - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "challenges", - "challenges/status" - ], - "verbs": [ - "update", - "patch" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "challenges" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "cert-manager.io" - ], - "resources": [ - "issuers", - "clusterissuers" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods", - "services" - ], - "verbs": [ - "get", - "list", - "watch", - "create", - "delete" - ] - }, - { - "apiGroups": [ - "networking.k8s.io" - ], - "resources": [ - "ingresses" - ], - "verbs": [ - "get", - "list", - "watch", - "create", - "delete", - "update" - ] - }, - { - "apiGroups": [ - "gateway.networking.k8s.io" - ], - "resources": [ - "httproutes" - ], - "verbs": [ - "get", - "list", - "watch", - "create", - "delete", - "update" - ] - }, - { - "apiGroups": [ - "route.openshift.io" - ], - "resources": [ - "routes/custom-host" - ], - "verbs": [ - "create" - ] - }, - { - "apiGroups": [ - "acme.cert-manager.io" - ], - "resources": [ - "challenges/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "secrets" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:deployment-controller", - "resourceVersion": "144", - "uid": "9165c9d4-0dfc-4a04-b7bf-0155a4f863a0" - }, - "rules": [ - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "deployments" - ], - "verbs": [ - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "deployments/status" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "deployments/finalizers" - ], - "verbs": [ - "update" - ] - }, - { - "apiGroups": [ - "apps", - "extensions" - ], - "resources": [ - "replicasets" - ], - "verbs": [ - "create", - "delete", - "get", - "list", - "patch", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "pods" - ], - "verbs": [ - "get", - "list", - "update", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:58Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:certificates.k8s.io:kube-apiserver-client-approver", - "resourceVersion": "135", - "uid": "e04371c2-d6e0-4f16-96bb-6ef10a2ea711" - }, - "rules": [ - { - "apiGroups": [ - "certificates.k8s.io" - ], - "resourceNames": [ - "kubernetes.io/kube-apiserver-client" - ], - "resources": [ - "signers" - ], - "verbs": [ - "approve" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:ttl-after-finished-controller", - "resourceVersion": "169", - "uid": "353d8dc9-f732-418d-8c0f-0316550bbc0f" - }, - "rules": [ - { - "apiGroups": [ - "batch" - ], - "resources": [ - "jobs" - ], - "verbs": [ - "delete", - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "", - "events.k8s.io" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch", - "update" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:29:03Z", - "name": "local-path-provisioner-role", - "resourceVersion": "324", - "uid": "76f794b4-a981-4120-b24c-d48b9b4b2326" - }, - "rules": [ - { - "apiGroups": [ - "" - ], - "resources": [ - "nodes", - "persistentvolumeclaims", - "configmaps", - "pods", - "pods/log" - ], - "verbs": [ - "get", - "list", - "watch" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "persistentvolumes" - ], - "verbs": [ - "get", - "list", - "watch", - "create", - "patch", - "update", - "delete" - ] - }, - { - "apiGroups": [ - "" - ], - "resources": [ - "events" - ], - "verbs": [ - "create", - "patch" - ] - }, - { - "apiGroups": [ - "storage.k8s.io" - ], - "resources": [ - "storageclasses" - ], - "verbs": [ - "get", - "list", - "watch" - ] - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRole", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:30:39Z", - "labels": { - "app.kubernetes.io/component": "kube-rbac-proxy", - "app.kubernetes.io/created-by": "sample-external-issuer", - "app.kubernetes.io/instance": "metrics-reader", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "clusterrole", - "app.kubernetes.io/part-of": "sample-external-issuer" - }, - "name": "sample-external-issuer-metrics-reader", - "resourceVersion": "845", - "uid": "222bd5fb-16b4-45df-82fe-fcde5a7d12ef" - }, - "rules": [ - { - "nonResourceURLs": [ - "/metrics" - ], - "verbs": [ - "get" - ] - } - ] - } - ], - "role_bindings": [ - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system::leader-locking-kube-scheduler", - "namespace": "kube-system", - "resourceVersion": "227", - "uid": "8bbb36aa-fcb7-4b82-ae97-84268211a5b2" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "system::leader-locking-kube-scheduler" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "User", - "name": "system:kube-scheduler" - }, - { - "kind": "ServiceAccount", - "name": "kube-scheduler", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:01Z", - "name": "kube-proxy", - "namespace": "kube-system", - "resourceVersion": "291", - "uid": "34fa3319-024e-4c1d-a219-0ebf57090837" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "kube-proxy" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:bootstrappers:kubeadm:default-node-token" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "samplewebhook", - "meta.helm.sh/release-namespace": "samplewebhook" - }, - "creationTimestamp": "2025-08-09T06:30:45Z", - "labels": { - "app": "example-webhook", - "app.kubernetes.io/managed-by": "Helm", - "chart": "example-webhook-0.1.0", - "heritage": "Helm", - "release": "samplewebhook" - }, - "name": "samplewebhook-example-webhook:webhook-authentication-reader", - "namespace": "kube-system", - "resourceVersion": "903", - "uid": "abb94dcb-1ab4-48d1-9c4c-1ade9f90247e" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "samplewebhook-example-webhook:webhook-authentication-reader" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "samplewebhook-example-webhook", - "namespace": "samplewebhook" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "kubeadm:kubelet-config", - "namespace": "kube-system", - "resourceVersion": "243", - "uid": "4ddfc123-eef3-4e72-a7e7-934c9af5e5f6" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "kubeadm:kubelet-config" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:nodes" - }, - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:bootstrappers:kubeadm:default-node-token" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cainjector", - "app.kubernetes.io/component": "cainjector", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cainjector", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-cainjector:leaderelection", - "namespace": "kube-system", - "resourceVersion": "619", - "uid": "97c0ac25-5dae-4584-85b3-4afa2a3bc4bc" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "cert-manager-cainjector:leaderelection" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager-cainjector", - "namespace": "cert-manager" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system::leader-locking-kube-controller-manager", - "namespace": "kube-system", - "resourceVersion": "226", - "uid": "3902fafd-36ae-44cd-9d29-2c6181302306" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "system::leader-locking-kube-controller-manager" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "User", - "name": "system:kube-controller-manager" - }, - { - "kind": "ServiceAccount", - "name": "kube-controller-manager", - "namespace": "kube-system" - }, - { - "kind": "ServiceAccount", - "name": "leader-election-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:token-cleaner", - "namespace": "kube-system", - "resourceVersion": "230", - "uid": "c2c8109f-6723-4e22-886e-961824943636" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "system:controller:token-cleaner" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "token-cleaner", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "ingress-nginx", - "meta.helm.sh/release-namespace": "ingress-nginx" - }, - "creationTimestamp": "2025-08-09T06:31:23Z", - "labels": { - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "ingress-nginx", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "ingress-nginx", - "app.kubernetes.io/part-of": "ingress-nginx", - "app.kubernetes.io/version": "1.12.3", - "helm.sh/chart": "ingress-nginx-4.12.3" - }, - "name": "ingress-nginx", - "namespace": "ingress-nginx", - "resourceVersion": "1197", - "uid": "cb338012-14ca-44d6-8ddc-893af9c8d757" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "ingress-nginx" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "ingress-nginx", - "namespace": "ingress-nginx" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:cloud-provider", - "namespace": "kube-system", - "resourceVersion": "229", - "uid": "3f4bd4d9-a3a4-448d-af17-affef7e89451" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "system:controller:cloud-provider" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cloud-provider", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:bootstrap-signer", - "namespace": "kube-public", - "resourceVersion": "231", - "uid": "34e79bed-6f95-4658-8b18-72200b5e70c0" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "system:controller:bootstrap-signer" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "bootstrap-signer", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:bootstrap-signer", - "namespace": "kube-system", - "resourceVersion": "228", - "uid": "1ac2aab9-0b3e-4684-b998-e595097c0091" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "system:controller:bootstrap-signer" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "bootstrap-signer", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "kubeadm:bootstrap-signer-clusterinfo", - "namespace": "kube-public", - "resourceVersion": "254", - "uid": "c7b1fc57-ff87-4b2d-8ea0-8a31f9f5a536" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "kubeadm:bootstrap-signer-clusterinfo" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "User", - "name": "system:anonymous" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:29:03Z", - "name": "local-path-provisioner-bind", - "namespace": "local-path-storage", - "resourceVersion": "325", - "uid": "76a121ce-6a6b-4efd-afa0-a74d754148df" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "local-path-provisioner-role" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "local-path-provisioner-service-account", - "namespace": "local-path-storage" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:30:39Z", - "labels": { - "app.kubernetes.io/component": "rbac", - "app.kubernetes.io/created-by": "sample-external-issuer", - "app.kubernetes.io/instance": "leader-election-rolebinding", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "rolebinding", - "app.kubernetes.io/part-of": "sample-external-issuer" - }, - "name": "sample-external-issuer-leader-election-rolebinding", - "namespace": "sample-external-issuer-system", - "resourceVersion": "847", - "uid": "6c65d429-9003-417f-bf6b-e2c017f00ddd" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "sample-external-issuer-leader-election-role" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "sample-external-issuer-controller-manager", - "namespace": "sample-external-issuer-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager:leaderelection", - "namespace": "kube-system", - "resourceVersion": "621", - "uid": "909cc32e-5be0-4a0f-af52-e3be82754850" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "cert-manager:leaderelection" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager", - "namespace": "cert-manager" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system::extension-apiserver-authentication-reader", - "namespace": "kube-system", - "resourceVersion": "225", - "uid": "8289c4c4-acd4-4cad-a66b-cbb61ee74c11" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "extension-apiserver-authentication-reader" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "User", - "name": "system:kube-controller-manager" - }, - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "User", - "name": "system:kube-scheduler" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-cert-manager-tokenrequest", - "namespace": "cert-manager", - "resourceVersion": "617", - "uid": "03d85ac9-7a41-4532-8441-d8e044270803" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "cert-manager-tokenrequest" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager", - "namespace": "cert-manager" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "projectcontour", - "meta.helm.sh/release-namespace": "projectcontour" - }, - "creationTimestamp": "2025-08-09T06:32:04Z", - "labels": { - "app.kubernetes.io/instance": "projectcontour", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "contour", - "app.kubernetes.io/version": "1.29.1", - "helm.sh/chart": "contour-18.2.4" - }, - "name": "projectcontour-contour-role", - "namespace": "projectcontour", - "resourceVersion": "1419", - "uid": "8dd91576-3e4e-454c-8909-688be31b2a03" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "projectcontour-contour" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "projectcontour-contour", - "namespace": "projectcontour" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "creationTimestamp": "2025-08-09T06:28:59Z", - "name": "kubeadm:nodes-kubeadm-config", - "namespace": "kube-system", - "resourceVersion": "240", - "uid": "ad02e9c2-89b1-470d-9dfe-0a6dd1999854" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "kubeadm:nodes-kubeadm-config" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:bootstrappers:kubeadm:default-node-token" - }, - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:nodes" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "RoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "webhook", - "app.kubernetes.io/component": "webhook", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "webhook", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-webhook:dynamic-serving", - "namespace": "cert-manager", - "resourceVersion": "618", - "uid": "ceb24b6d-a933-4eff-a089-b7d6a2306c92" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Role", - "name": "cert-manager-webhook:dynamic-serving" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager-webhook", - "namespace": "cert-manager" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:pod-garbage-collector", - "resourceVersion": "202", - "uid": "fe5028a6-8195-470f-841e-5d2a8db6a786" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:pod-garbage-collector" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "pod-garbage-collector", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "creationTimestamp": "2025-08-09T06:28:59Z", - "name": "kubeadm:cluster-admins", - "resourceVersion": "237", - "uid": "85cc78c6-654f-4b0c-babe-377a3db8fcfa" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "cluster-admin" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "kubeadm:cluster-admins" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:attachdetach-controller", - "resourceVersion": "185", - "uid": "b6ca9cf8-4996-47b3-b9d7-3cebcbd58f70" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:attachdetach-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "attachdetach-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:node-controller", - "resourceVersion": "200", - "uid": "a0922559-5c6d-4e8b-82a7-678603176409" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:node-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "node-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-clusterissuers", - "resourceVersion": "609", - "uid": "1bc56c34-5f3f-4a3e-83fa-5525f9f40fec" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "cert-manager-controller-clusterissuers" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager", - "namespace": "cert-manager" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:node-proxier", - "resourceVersion": "178", - "uid": "fbad939a-acbd-417b-a31f-5cb6ecc4f131" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:node-proxier" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "User", - "name": "system:kube-proxy" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cainjector", - "app.kubernetes.io/component": "cainjector", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cainjector", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-cainjector", - "resourceVersion": "601", - "uid": "7c420237-2b76-475d-96a2-b153be3496ff" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "cert-manager-cainjector" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager-cainjector", - "namespace": "cert-manager" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-orders", - "resourceVersion": "603", - "uid": "95d567e9-796f-4c86-be47-dd7a73f6a63d" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "cert-manager-controller-orders" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager", - "namespace": "cert-manager" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "kubeadm:get-nodes", - "resourceVersion": "248", - "uid": "fd7b89a8-7bb0-4375-a07e-b43736a1d939" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "kubeadm:get-nodes" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:bootstrappers:kubeadm:default-node-token" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:cronjob-controller", - "resourceVersion": "187", - "uid": "79548780-1935-425d-a749-5da64c892aed" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:cronjob-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cronjob-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:node", - "resourceVersion": "183", - "uid": "718931df-e190-4859-ad58-edf1efbd043b" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:node" - } - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:ttl-controller", - "resourceVersion": "210", - "uid": "0169888d-3e73-4ff6-9a86-2ac14ab58f2a" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:ttl-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "ttl-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:generic-garbage-collector", - "resourceVersion": "196", - "uid": "37819522-7231-4c86-85dc-9c5600b6aa25" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:generic-garbage-collector" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "generic-garbage-collector", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:legacy-service-account-token-cleaner", - "resourceVersion": "217", - "uid": "0e02ba77-077f-4e9a-b2fc-ab11dc2ff9e1" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:legacy-service-account-token-cleaner" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "legacy-service-account-token-cleaner", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:kube-controller-manager", - "resourceVersion": "179", - "uid": "152ea945-8dfc-4d24-aa6b-90cce9a254c2" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:kube-controller-manager" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "User", - "name": "system:kube-controller-manager" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "samplewebhook", - "meta.helm.sh/release-namespace": "samplewebhook" - }, - "creationTimestamp": "2025-08-09T06:30:45Z", - "labels": { - "app": "example-webhook", - "app.kubernetes.io/managed-by": "Helm", - "chart": "example-webhook-0.1.0", - "heritage": "Helm", - "release": "samplewebhook" - }, - "name": "samplewebhook-example-webhook:auth-delegator", - "resourceVersion": "901", - "uid": "903bb45e-bbc8-4f98-9d6f-5c587e943241" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:auth-delegator" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "samplewebhook-example-webhook", - "namespace": "samplewebhook" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "system:coredns", - "resourceVersion": "257", - "uid": "3530acfa-ca74-459c-b2c4-8c0f47de3bae" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:coredns" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "coredns", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:statefulset-controller", - "resourceVersion": "209", - "uid": "09def9da-cbb5-46bf-acc6-59f67f2c0a98" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:statefulset-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "statefulset-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:persistent-volume-binder", - "resourceVersion": "201", - "uid": "b68a746a-6224-4354-8704-7b3b868182cd" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:persistent-volume-binder" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "persistent-volume-binder", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-issuers", - "resourceVersion": "605", - "uid": "ee388fbe-180c-4365-a9e4-94a8e2a1deb9" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "cert-manager-controller-issuers" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager", - "namespace": "cert-manager" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "kubeadm:node-autoapprove-certificate-rotation", - "resourceVersion": "251", - "uid": "703634e9-2423-4475-bdff-ed3ca668dab4" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:certificates.k8s.io:certificatesigningrequests:selfnodeclient" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:nodes" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:service-controller", - "resourceVersion": "208", - "uid": "7ff2b5a1-2f4c-4f58-84cf-6ee6155f1d2c" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:service-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "service-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-ingress-shim", - "resourceVersion": "607", - "uid": "a4b43b76-3a0a-4e96-a808-d642863e8261" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "cert-manager-controller-ingress-shim" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager", - "namespace": "cert-manager" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:endpointslice-controller", - "resourceVersion": "192", - "uid": "78a0d9cb-ada8-46e1-a182-91b633f81c06" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:endpointslice-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "endpointslice-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:root-ca-cert-publisher", - "resourceVersion": "215", - "uid": "a80475af-9ad3-4996-84b2-4130fe15a7b9" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:root-ca-cert-publisher" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "root-ca-cert-publisher", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:service-account-controller", - "resourceVersion": "207", - "uid": "acb4e887-6559-4c18-ba1a-d2edf9a77c46" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:service-account-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "service-account-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-certificates", - "resourceVersion": "600", - "uid": "4a7fdc44-8350-4b66-a9a1-6d2ca322012f" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "cert-manager-controller-certificates" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager", - "namespace": "cert-manager" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:discovery", - "resourceVersion": "175", - "uid": "d687789e-ffab-42db-b31e-39eca5600011" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:discovery" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:authenticated" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "ingress-nginx", - "meta.helm.sh/release-namespace": "ingress-nginx" - }, - "creationTimestamp": "2025-08-09T06:31:23Z", - "labels": { - "app.kubernetes.io/instance": "ingress-nginx", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "ingress-nginx", - "app.kubernetes.io/part-of": "ingress-nginx", - "app.kubernetes.io/version": "1.12.3", - "helm.sh/chart": "ingress-nginx-4.12.3" - }, - "name": "ingress-nginx", - "resourceVersion": "1195", - "uid": "0dc0ee83-1071-4700-be25-055eecd36e99" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "ingress-nginx" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "ingress-nginx", - "namespace": "ingress-nginx" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:29:03Z", - "name": "local-path-provisioner-bind", - "resourceVersion": "326", - "uid": "f5870f7d-06c0-480b-98b0-b1b212c8524d" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "local-path-provisioner-role" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "local-path-provisioner-service-account", - "namespace": "local-path-storage" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:certificate-controller", - "resourceVersion": "211", - "uid": "ba3f2c33-d369-4b0e-aef2-5c379b15e6fb" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:certificate-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "certificate-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:replication-controller", - "resourceVersion": "204", - "uid": "5fd097c9-124a-470f-89e9-a5d707fc337f" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:replication-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "replication-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "cert-manager", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-approve:cert-manager-io", - "resourceVersion": "606", - "uid": "d3a2056d-a17d-4419-a360-f4cbbf76ce08" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "cert-manager-controller-approve:cert-manager-io" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager", - "namespace": "cert-manager" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:30:39Z", - "labels": { - "app.kubernetes.io/component": "kube-rbac-proxy", - "app.kubernetes.io/created-by": "sample-external-issuer", - "app.kubernetes.io/instance": "proxy-rolebinding", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "clusterrolebinding", - "app.kubernetes.io/part-of": "sample-external-issuer" - }, - "name": "sample-external-issuer-proxy-rolebinding", - "resourceVersion": "850", - "uid": "6575a038-682c-4237-80b4-5b96d9a49532" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "sample-external-issuer-proxy-role" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "sample-external-issuer-controller-manager", - "namespace": "sample-external-issuer-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:deployment-controller", - "resourceVersion": "189", - "uid": "333d5023-dd21-438c-942d-aee22af7256c" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:deployment-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "deployment-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:ephemeral-volume-controller", - "resourceVersion": "195", - "uid": "298d3beb-9e45-4021-9ce2-8da870217d0b" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:ephemeral-volume-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "ephemeral-volume-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:kube-scheduler", - "resourceVersion": "181", - "uid": "62a896c9-d576-4aed-a904-09b2012ea212" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:kube-scheduler" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "User", - "name": "system:kube-scheduler" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:namespace-controller", - "resourceVersion": "199", - "uid": "3f487cba-c981-4ec8-9d67-2e06dc992d57" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:namespace-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "namespace-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:pvc-protection-controller", - "resourceVersion": "212", - "uid": "94c476bf-8690-4321-9f3b-ba50002d3f99" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:pvc-protection-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "pvc-protection-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "kubeadm:node-proxier", - "resourceVersion": "280", - "uid": "9701a35a-3367-41ee-8ee9-5b70cc0d075d" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:node-proxier" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "kube-proxy", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "samplewebhook", - "meta.helm.sh/release-namespace": "samplewebhook" - }, - "creationTimestamp": "2025-08-09T06:30:45Z", - "labels": { - "app": "example-webhook", - "app.kubernetes.io/managed-by": "Helm", - "chart": "example-webhook-0.1.0", - "heritage": "Helm", - "release": "samplewebhook" - }, - "name": "samplewebhook-example-webhook:domain-solver", - "resourceVersion": "900", - "uid": "895b6a10-1b86-4e14-adf8-f38f96151730" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "samplewebhook-example-webhook:domain-solver" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager", - "namespace": "cert-manager" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:expand-controller", - "resourceVersion": "194", - "uid": "6e82c9d9-26da-4b70-bb61-a2c19327a380" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:expand-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "expand-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:endpointslicemirroring-controller", - "resourceVersion": "193", - "uid": "9742bf80-5aaa-49ff-9917-75a617dd353c" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:endpointslicemirroring-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "endpointslicemirroring-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:validatingadmissionpolicy-status-controller", - "resourceVersion": "216", - "uid": "819af031-1956-45e1-8bdd-6fdae0fc2cec" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:validatingadmissionpolicy-status-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "validatingadmissionpolicy-status-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "kubeadm:node-autoapprove-bootstrap", - "resourceVersion": "250", - "uid": "414eef29-5a00-4ef8-bc19-c3ccce011655" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:certificates.k8s.io:certificatesigningrequests:nodeclient" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:bootstrappers:kubeadm:default-node-token" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:monitoring", - "resourceVersion": "174", - "uid": "fb77040c-f491-4c01-bc72-6bbd9e97cc32" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:monitoring" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:monitoring" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:30:39Z", - "name": "sample-external-issuer-cert-manager-controller-approve:sample-issuer-example-com", - "resourceVersion": "848", - "uid": "a736f227-77aa-4a22-99bc-43cdeb3f0ada" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "sample-external-issuer-cert-manager-controller-approve:sample-issuer-example-com" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager", - "namespace": "cert-manager" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:service-account-issuer-discovery", - "resourceVersion": "184", - "uid": "e2b4a504-b797-49ce-90d8-a3cff9b00585" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:service-account-issuer-discovery" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:serviceaccounts" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:resourcequota-controller", - "resourceVersion": "205", - "uid": "998212be-b1d1-49f3-8a36-aaae13c94934" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:resourcequota-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "resourcequota-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "projectcontour", - "meta.helm.sh/release-namespace": "projectcontour" - }, - "creationTimestamp": "2025-08-09T06:32:04Z", - "labels": { - "app.kubernetes.io/instance": "projectcontour", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "contour", - "app.kubernetes.io/version": "1.29.1", - "helm.sh/chart": "contour-18.2.4" - }, - "name": "projectcontour-contour", - "resourceVersion": "1417", - "uid": "c430e2d8-71be-4b53-b91b-6286e079576e" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "projectcontour-contour" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "projectcontour-contour", - "namespace": "projectcontour" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:route-controller", - "resourceVersion": "206", - "uid": "5b9397a9-572d-40a8-aeda-979018d28c1d" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:route-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "route-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:02Z", - "name": "kindnet", - "resourceVersion": "311", - "uid": "38f6c5dd-1458-4f85-9261-412baa0ccc40" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "kindnet" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "kindnet", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "controller", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-challenges", - "resourceVersion": "604", - "uid": "2ecbe264-1b1b-4900-b5da-804dd4cd2d35" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "cert-manager-controller-challenges" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager", - "namespace": "cert-manager" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:public-info-viewer", - "resourceVersion": "177", - "uid": "63243e7f-a1c3-48c2-9943-fa389f2b718f" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:public-info-viewer" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:authenticated" - }, - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:unauthenticated" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:basic-user", - "resourceVersion": "176", - "uid": "a1225cc6-6931-44be-a252-cb3a3ded35dd" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:basic-user" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:authenticated" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:volume-scheduler", - "resourceVersion": "182", - "uid": "b72383fa-468d-4e0d-9652-c869c11ebafc" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:volume-scheduler" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "User", - "name": "system:kube-scheduler" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "cert-manager", - "app.kubernetes.io/component": "cert-manager", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "cert-manager", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-controller-certificatesigningrequests", - "resourceVersion": "608", - "uid": "d2bdbbf6-50b2-4a83-bcfd-2957143866ad" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "cert-manager-controller-certificatesigningrequests" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager", - "namespace": "cert-manager" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:disruption-controller", - "resourceVersion": "190", - "uid": "6624e33d-6c16-4627-b623-dd6d5dc96b45" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:disruption-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "disruption-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:ttl-after-finished-controller", - "resourceVersion": "214", - "uid": "d443ec01-2890-43d3-88be-e6f9b433c07b" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:ttl-after-finished-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "ttl-after-finished-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:endpoint-controller", - "resourceVersion": "191", - "uid": "674385fd-f987-435a-bdd4-5fc5c33ef047" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:endpoint-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "endpoint-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:horizontal-pod-autoscaler", - "resourceVersion": "197", - "uid": "8d12fdb5-2916-4b58-bf9d-6595272230c7" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:horizontal-pod-autoscaler" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "horizontal-pod-autoscaler", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "cluster-admin", - "resourceVersion": "173", - "uid": "d175ef3b-24a9-4464-ab3d-16cf3e9249f9" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "cluster-admin" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:masters" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:clusterrole-aggregation-controller", - "resourceVersion": "186", - "uid": "38c0a55e-0ea0-46f6-af33-0e6e2e9d84b0" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:clusterrole-aggregation-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "clusterrole-aggregation-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": {}, - "creationTimestamp": "2025-08-09T06:30:39Z", - "labels": { - "app.kubernetes.io/component": "rbac", - "app.kubernetes.io/created-by": "sample-external-issuer", - "app.kubernetes.io/instance": "manager-rolebinding", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "clusterrolebinding", - "app.kubernetes.io/part-of": "sample-external-issuer" - }, - "name": "sample-external-issuer-manager-rolebinding", - "resourceVersion": "849", - "uid": "573c4046-2b0a-4947-b5d0-cef4e359385d" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "sample-external-issuer-manager-role" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "sample-external-issuer-controller-manager", - "namespace": "sample-external-issuer-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:job-controller", - "resourceVersion": "198", - "uid": "1dabc533-8490-4cfb-9469-81898a97cb10" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:job-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "job-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:daemon-set-controller", - "resourceVersion": "188", - "uid": "097399db-c24c-4c5f-924e-b99f9e21e275" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:daemon-set-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "daemon-set-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:pv-protection-controller", - "resourceVersion": "213", - "uid": "635eb2c7-1d98-4af2-9e25-8e1d2cf32f34" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:pv-protection-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "pv-protection-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:controller:replicaset-controller", - "resourceVersion": "203", - "uid": "a69f176d-2177-4dd1-bb49-14f62211b08c" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:controller:replicaset-controller" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "replicaset-controller", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "meta.helm.sh/release-name": "cert-manager", - "meta.helm.sh/release-namespace": "cert-manager" - }, - "creationTimestamp": "2025-08-09T06:29:53Z", - "labels": { - "app": "webhook", - "app.kubernetes.io/component": "webhook", - "app.kubernetes.io/instance": "cert-manager", - "app.kubernetes.io/managed-by": "Helm", - "app.kubernetes.io/name": "webhook", - "app.kubernetes.io/version": "v1.18.0-beta.0-134-g0efd217d5da974", - "helm.sh/chart": "cert-manager-v1.18.0-beta.0-134-g0efd217d5da974" - }, - "name": "cert-manager-webhook:subjectaccessreviews", - "resourceVersion": "599", - "uid": "b095bc8b-7caa-4fb0-9196-4bd1438fb0dd" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "cert-manager-webhook:subjectaccessreviews" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "cert-manager-webhook", - "namespace": "cert-manager" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "annotations": { - "rbac.authorization.kubernetes.io/autoupdate": "true" - }, - "creationTimestamp": "2025-08-09T06:28:59Z", - "labels": { - "kubernetes.io/bootstrapping": "rbac-defaults" - }, - "name": "system:kube-dns", - "resourceVersion": "180", - "uid": "e189e6e7-0b32-4527-a489-02159604af13" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:kube-dns" - }, - "subjects": [ - { - "kind": "ServiceAccount", - "name": "kube-dns", - "namespace": "kube-system" - } - ] - }, - { - "apiVersion": "rbac.authorization.k8s.io/v1", - "kind": "ClusterRoleBinding", - "metadata": { - "creationTimestamp": "2025-08-09T06:29:00Z", - "name": "kubeadm:kubelet-bootstrap", - "resourceVersion": "249", - "uid": "5d5042a5-d9db-4c81-a6ba-09f3dda3ba68" - }, - "roleRef": { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "ClusterRole", - "name": "system:node-bootstrapper" - }, - "subjects": [ - { - "apiGroup": "rbac.authorization.k8s.io", - "kind": "Group", - "name": "system:bootstrappers:kubeadm:default-node-token" - } - ] - } - ] -} \ No newline at end of file diff --git a/pkg/internal/cyberark/dataupload/testdata/example-1/snapshot.json.gz b/pkg/internal/cyberark/dataupload/testdata/example-1/snapshot.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..809c40e6c0658674448006d982f0e561feff1ed0 GIT binary patch literal 26642 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 literal 0 HcmV?d00001 From 310bf584aca40ecf4e7d61b8639cc87f5e9dc9fd Mon Sep 17 00:00:00 2001 From: Richard Wall Date: Sun, 10 Aug 2025 07:15:27 +0100 Subject: [PATCH 18/20] WIP: Proof of concept / demo Signed-off-by: Richard Wall --- .../templates/deployment.yaml | 45 +++++++------- hack/e2e/ca/config.yaml | 3 + hack/e2e/ca/test.sh | 59 +++++++++++++++++++ hack/e2e/ca/values.agent.yaml | 1 + pkg/agent/config.go | 10 ++-- pkg/agent/run.go | 50 ++++++++++++++-- .../cyberark/dataupload/dataupload.go | 16 +++-- .../cyberark/dataupload/dataupload_test.go | 38 ++++-------- 8 files changed, 155 insertions(+), 67 deletions(-) create mode 100644 hack/e2e/ca/config.yaml create mode 100755 hack/e2e/ca/test.sh create mode 100644 hack/e2e/ca/values.agent.yaml diff --git a/deploy/charts/venafi-kubernetes-agent/templates/deployment.yaml b/deploy/charts/venafi-kubernetes-agent/templates/deployment.yaml index f37e8a16..270df61a 100644 --- a/deploy/charts/venafi-kubernetes-agent/templates/deployment.yaml +++ b/deploy/charts/venafi-kubernetes-agent/templates/deployment.yaml @@ -49,6 +49,26 @@ spec: valueFrom: fieldRef: fieldPath: spec.nodeName + - name: ARK_USERNAME + valueFrom: + secretKeyRef: + name: {{ .Values.authentication.secretName }} + key: ARK_USERNAME + - name: ARK_SECRET + valueFrom: + secretKeyRef: + name: {{ .Values.authentication.secretName }} + key: ARK_SECRET + - name: ARK_PLATFORM_DOMAIN + valueFrom: + secretKeyRef: + name: {{ .Values.authentication.secretName }} + key: ARK_PLATFORM_DOMAIN + - name: ARK_SUBDOMAIN + valueFrom: + secretKeyRef: + name: {{ .Values.authentication.secretName }} + key: ARK_SUBDOMAIN {{- with .Values.http_proxy }} - name: HTTP_PROXY value: {{ . }} @@ -71,18 +91,8 @@ spec: - "agent" - "-c" - "/etc/venafi/agent/config/{{ default "config.yaml" .Values.config.configmap.key }}" - {{- if .Values.authentication.venafiConnection.enabled }} - - --venafi-connection - - {{ .Values.authentication.venafiConnection.name | quote }} - - --venafi-connection-namespace - - {{ .Values.authentication.venafiConnection.namespace | quote }} - {{- else }} - - "--client-id" - - {{ .Values.config.clientId | quote }} - - "--private-key-path" - - "/etc/venafi/agent/key/{{ .Values.authentication.secretKey }}" - {{- end }} - - --venafi-cloud + - --log-level=6 + - --machine-hub {{- if .Values.metrics.enabled }} - --enable-metrics {{- end }} @@ -95,11 +105,6 @@ spec: - name: config mountPath: "/etc/venafi/agent/config" readOnly: true - {{- if not .Values.authentication.venafiConnection.enabled }} - - name: credentials - mountPath: "/etc/venafi/agent/key" - readOnly: true - {{- end }} {{- with .Values.volumeMounts }} {{- toYaml . | nindent 12 }} {{- end }} @@ -137,12 +142,6 @@ spec: configMap: name: {{ default "agent-config" .Values.config.configmap.name }} optional: false - {{- if not .Values.authentication.venafiConnection.enabled }} - - name: credentials - secret: - secretName: {{ .Values.authentication.secretName }} - optional: false - {{- end }} {{- with .Values.volumes }} {{- toYaml . | nindent 8 }} {{- end }} diff --git a/hack/e2e/ca/config.yaml b/hack/e2e/ca/config.yaml new file mode 100644 index 00000000..9644d534 --- /dev/null +++ b/hack/e2e/ca/config.yaml @@ -0,0 +1,3 @@ +machineHub: + subdomain: tlskp-test + credentialsSecretName: todo-unused diff --git a/hack/e2e/ca/test.sh b/hack/e2e/ca/test.sh new file mode 100755 index 00000000..579b513f --- /dev/null +++ b/hack/e2e/ca/test.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +# +set -o nounset +set -o errexit +set -o pipefail + +# CyberArk API configuration +: ${ARK_USERNAME?} +: ${ARK_SECRET?} +: ${ARK_PLATFORM_DOMAIN?} +: ${ARK_SUBDOMAIN?} + +# The base URL of the OCI registry used for Docker images and Helm charts +# E.g. ttl.sh/6ee49a01-c8ba-493e-bae9-4d8567574b56 +: ${OCI_BASE?} + +k8s_namespace=cyberark + +script_dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) +root_dir=$(cd "${script_dir}/../../.." && pwd) +export TERM=dumb + +tmp_dir="$(mktemp -d /tmp/jetstack-secure.XXXXX)" + +pushd "${tmp_dir}" +> release.env +make -C "$root_dir" release \ + OCI_SIGN_ON_PUSH=false \ + oci_platforms=linux/amd64 \ + oci_preflight_image_name=$OCI_BASE/images/venafi-agent \ + helm_chart_image_name=$OCI_BASE/charts/venafi-kubernetes-agent \ + GITHUB_OUTPUT="${tmp_dir}/release.env" +source release.env + +kind create cluster || true +kubectl create ns "$k8s_namespace" || true + +kubectl create secret generic agent-credentials \ + --namespace "$k8s_namespace" \ + --from-literal=ARK_USERNAME=$ARK_USERNAME \ + --from-literal=ARK_SECRET=$ARK_SECRET \ + --from-literal=ARK_PLATFORM_DOMAIN=$ARK_PLATFORM_DOMAIN \ + --from-literal=ARK_SUBDOMAIN=$ARK_SUBDOMAIN + +helm upgrade agent "oci://${OCI_BASE}/charts/venafi-kubernetes-agent" \ + --install \ + --create-namespace \ + --namespace "$k8s_namespace" \ + --version "${RELEASE_HELM_CHART_VERSION}" \ + --set fullnameOverride=agent \ + --set "image.repository=${OCI_BASE}/images/venafi-agent" \ + --values "${script_dir}/values.agent.yaml" + +kubectl scale -n "$k8s_namespace" deployment agent --replicas=0 +kubectl get cm -n "$k8s_namespace" agent-config -o jsonpath={.data.config\\.yaml} > config.original.yaml +yq eval-all '. as $item ireduce ({}; . * $item)' config.original.yaml "${script_dir}/config.yaml" > config.yaml +kubectl delete cm -n "$k8s_namespace" agent-config +kubectl create cm -n "$k8s_namespace" agent-config --from-file=config.yaml +kubectl scale -n "$k8s_namespace" deployment agent --replicas=1 diff --git a/hack/e2e/ca/values.agent.yaml b/hack/e2e/ca/values.agent.yaml new file mode 100644 index 00000000..b7db2541 --- /dev/null +++ b/hack/e2e/ca/values.agent.yaml @@ -0,0 +1 @@ +# Empty diff --git a/pkg/agent/config.go b/pkg/agent/config.go index 2686a1bd..55ac5352 100644 --- a/pkg/agent/config.go +++ b/pkg/agent/config.go @@ -606,12 +606,12 @@ func ValidateAndCombineConfig(log logr.Logger, cfg Config, flags AgentCmdFlags) res.ClusterID = clusterID res.ClusterDescription = cfg.ClusterDescription - // Validation of `data-gatherers`. - if dgErr := ValidateDataGatherers(cfg.DataGatherers); dgErr != nil { - errs = multierror.Append(errs, dgErr) - } - res.DataGatherers = cfg.DataGatherers } + // Validation of `data-gatherers`. + if dgErr := ValidateDataGatherers(cfg.DataGatherers); dgErr != nil { + errs = multierror.Append(errs, dgErr) + } + res.DataGatherers = cfg.DataGatherers // Validation of --period, -p, and the `period` field, as well as // --backoff-max-time, --one-shot, and --strict. The flag --period/-p takes diff --git a/pkg/agent/run.go b/pkg/agent/run.go index 6995c548..62a8552f 100644 --- a/pkg/agent/run.go +++ b/pkg/agent/run.go @@ -35,6 +35,9 @@ import ( "github.com/jetstack/preflight/pkg/clusteruid" "github.com/jetstack/preflight/pkg/datagatherer" "github.com/jetstack/preflight/pkg/datagatherer/k8s" + "github.com/jetstack/preflight/pkg/internal/cyberark/dataupload" + "github.com/jetstack/preflight/pkg/internal/cyberark/identity" + "github.com/jetstack/preflight/pkg/internal/cyberark/servicediscovery" "github.com/jetstack/preflight/pkg/kubeconfig" "github.com/jetstack/preflight/pkg/logs" "github.com/jetstack/preflight/pkg/version" @@ -79,8 +82,46 @@ func Run(cmd *cobra.Command, args []string) (returnErr error) { return fmt.Errorf("While evaluating configuration: %v", err) } - // We need the cluster UID before we progress further so it can be sent along with other data readings + var caClient *dataupload.CyberArkClient + if config.MachineHubMode { + platformDomain := os.Getenv("ARK_PLATFORM_DOMAIN") + subdomain := os.Getenv("ARK_SUBDOMAIN") + username := os.Getenv("ARK_USERNAME") + password := []byte(os.Getenv("ARK_SECRET")) + + const ( + discoveryContextServiceName = "inventory" + separator = "." + ) + + // TODO(wallrj): Maybe get this URL via the service discovery API. + // https://platform-discovery.integration-cyberark.cloud/api/public/tenant-discovery?allEndpoints=true&bySubdomain=tlskp-test + serviceURL := fmt.Sprintf("https://%s%s%s.%s", subdomain, separator, discoveryContextServiceName, platformDomain) + + var ( + identityClient *identity.Client + err error + ) + if platformDomain == "cyberark.cloud" { + identityClient, err = identity.New(ctx, subdomain) + } else { + discoveryClient := servicediscovery.New(servicediscovery.WithIntegrationEndpoint()) + identityClient, err = identity.NewWithDiscoveryClient(ctx, discoveryClient, subdomain) + } + if err != nil { + return fmt.Errorf("while creating the CyberArk identity client: %v", err) + } + if err := identityClient.LoginUsernamePassword(ctx, username, password); err != nil { + return fmt.Errorf("while logging in: %v", err) + } + caClient, err = dataupload.NewCyberArkClient(nil, serviceURL, identityClient.AuthenticateRequest) + if err != nil { + return fmt.Errorf("while creating the CyberArk dataupload client: %v", err) + } + } + // We need the cluster UID before we progress further so it can be sent along with other data readings + // TODO(wallrj): Use the k8s-discovery gatherer to get clusterID { restCfg, err := kubeconfig.LoadRESTConfig("") if err != nil { @@ -262,7 +303,7 @@ func Run(cmd *cobra.Command, args []string) (returnErr error) { // be cancelled, which will cause this blocking loop to exit // instead of waiting for the time period. for { - if err := gatherAndOutputData(klog.NewContext(ctx, log), eventf, config, preflightClient, dataGatherers); err != nil { + if err := gatherAndOutputData(klog.NewContext(ctx, log), eventf, config, preflightClient, caClient, dataGatherers); err != nil { return err } @@ -316,7 +357,7 @@ func newEventf(log logr.Logger, installNS string) (Eventf, error) { // Like Printf but for sending events to the agent's Pod object. type Eventf func(eventType, reason, msg string, args ...interface{}) -func gatherAndOutputData(ctx context.Context, eventf Eventf, config CombinedConfig, preflightClient client.Client, dataGatherers map[string]datagatherer.DataGatherer) error { +func gatherAndOutputData(ctx context.Context, eventf Eventf, config CombinedConfig, preflightClient client.Client, caClient *dataupload.CyberArkClient, dataGatherers map[string]datagatherer.DataGatherer) error { log := klog.FromContext(ctx).WithName("gatherAndOutputData") var readings []*api.DataReading @@ -362,8 +403,7 @@ func gatherAndOutputData(ctx context.Context, eventf Eventf, config CombinedConf if config.MachineHubMode { post := func() (any, error) { - log.Info("machine hub mode not yet implemented") - return struct{}{}, nil + return struct{}{}, caClient.PostDataReadingsWithOptions(ctx, readings, dataupload.Options{}) } group.Go(func() error { diff --git a/pkg/internal/cyberark/dataupload/dataupload.go b/pkg/internal/cyberark/dataupload/dataupload.go index ca58674a..6ee06e3d 100644 --- a/pkg/internal/cyberark/dataupload/dataupload.go +++ b/pkg/internal/cyberark/dataupload/dataupload.go @@ -80,11 +80,13 @@ func extractServerVersionFromReading(reading *api.DataReading) (string, error) { // ConvertDataReadingsToCyberarkSnapshot converts jetstack-secure DataReadings into Cyberark Snapshot format. func ConvertDataReadingsToCyberarkSnapshot( - input api.DataReadingsPost, + readings []*api.DataReading, ) (_ *Snapshot, err error) { k8sVersion := "" + // TODO(wallrj): Use the k8s-discovery gatherer to get clusterID + clusterID := "" resourceData := ResourceData{} - for _, reading := range input.DataReadings { + for _, reading := range readings { if reading.DataGatherer == "k8s-discovery" { k8sVersion, err = extractServerVersionFromReading(reading) if err != nil { @@ -102,9 +104,9 @@ func ConvertDataReadingsToCyberarkSnapshot( } return &Snapshot{ - AgentVersion: input.AgentMetadata.Version, - ClusterID: input.AgentMetadata.ClusterID, + AgentVersion: version.PreflightVersion, K8SVersion: k8sVersion, + ClusterID: clusterID, Secrets: resourceData["secrets"], ServiceAccounts: resourceData["serviceaccounts"], Roles: resourceData["roles"], @@ -141,15 +143,17 @@ func NewCyberArkClient(trustedCAs *x509.CertPool, baseURL string, authenticateRe // PostDataReadingsWithOptions PUTs the supplied payload to an [AWS presigned URL] which it obtains via the CyberArk inventory API. // // [AWS presigned URL]: https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html -func (c *CyberArkClient) PostDataReadingsWithOptions(ctx context.Context, payload api.DataReadingsPost, opts Options) error { +func (c *CyberArkClient) PostDataReadingsWithOptions(ctx context.Context, readings []*api.DataReading, opts Options) error { if opts.ClusterName == "" { return fmt.Errorf("programmer mistake: the cluster name (aka `cluster_id` in the config file) cannot be left empty") } - snapshot, err := ConvertDataReadingsToCyberarkSnapshot(payload) + snapshot, err := ConvertDataReadingsToCyberarkSnapshot(readings) if err != nil { return fmt.Errorf("while converting datareadings to Cyberark snapshot format: %s", err) } + // TODO(wallrj): Use the k8s-discovery gatherer to get clusterID + snapshot.ClusterID = opts.ClusterName encodedBody := &bytes.Buffer{} checksum := sha256.New() diff --git a/pkg/internal/cyberark/dataupload/dataupload_test.go b/pkg/internal/cyberark/dataupload/dataupload_test.go index 95f9c3fc..29d01dbe 100644 --- a/pkg/internal/cyberark/dataupload/dataupload_test.go +++ b/pkg/internal/cyberark/dataupload/dataupload_test.go @@ -31,20 +31,13 @@ import ( func TestCyberArkClient_PostDataReadingsWithOptions_MockAPI(t *testing.T) { fakeTime := time.Unix(123, 0) - defaultPayload := api.DataReadingsPost{ - AgentMetadata: &api.AgentMetadata{ - Version: "test-version", - ClusterID: "test", - }, - DataGatherTime: fakeTime, - DataReadings: []*api.DataReading{ - { - ClusterID: "success-cluster-id", - DataGatherer: "test-gatherer", - Timestamp: api.Time{Time: fakeTime}, - Data: map[string]interface{}{"test": "data"}, - SchemaVersion: "v1", - }, + defaultPayload := []*api.DataReading{ + { + ClusterID: "success-cluster-id", + DataGatherer: "test-gatherer", + Timestamp: api.Time{Time: fakeTime}, + Data: map[string]interface{}{"test": "data"}, + SchemaVersion: "v1", }, } defaultOpts := dataupload.Options{ @@ -60,7 +53,7 @@ func TestCyberArkClient_PostDataReadingsWithOptions_MockAPI(t *testing.T) { tests := []struct { name string - payload api.DataReadingsPost + payload []*api.DataReading authenticate func(req *http.Request) error opts dataupload.Options requireFn func(t *testing.T, err error) @@ -197,12 +190,7 @@ func TestCyberArkClient_PostDataReadingsWithOptions_RealAPI(t *testing.T) { dataReadings := parseDataReadings(t, readGZIP(t, "testdata/example-1/datareadings.json.gz")) err = cyberArkClient.PostDataReadingsWithOptions( ctx, - api.DataReadingsPost{ - AgentMetadata: &api.AgentMetadata{ - ClusterID: "bb068932-c80d-460d-88df-34bc7f3f3297", - }, - DataReadings: dataReadings, - }, + dataReadings, dataupload.Options{ ClusterName: "bb068932-c80d-460d-88df-34bc7f3f3297", }, @@ -272,13 +260,7 @@ func writeGZIP(t *testing.T, path string, data []byte) { func TestConvertDataReadingsToCyberarkSnapshot(t *testing.T) { dataReadings := parseDataReadings(t, readGZIP(t, "testdata/example-1/datareadings.json.gz")) - snapshot, err := dataupload.ConvertDataReadingsToCyberarkSnapshot(api.DataReadingsPost{ - AgentMetadata: &api.AgentMetadata{ - Version: "test-version", - ClusterID: "test-cluster-id", - }, - DataReadings: dataReadings, - }) + snapshot, err := dataupload.ConvertDataReadingsToCyberarkSnapshot(dataReadings) require.NoError(t, err) actualSnapshotBytes, err := json.MarshalIndent(snapshot, "", " ") From 4c3227361857f5d37282d56080917003edaa4b49 Mon Sep 17 00:00:00 2001 From: Richard Wall Date: Mon, 11 Aug 2025 07:12:23 +0100 Subject: [PATCH 19/20] Use unstructured instead of interface Signed-off-by: Richard Wall --- api/datareading.go | 20 ++++++ .../cyberark/dataupload/dataupload.go | 64 ++++++++++++------ .../dataupload/testdata/example-1/README.md | 2 +- .../dataupload/testdata/example-1/agent.yaml | 34 ++++++---- .../testdata/example-1/datareadings.json.gz | Bin 28818 -> 29815 bytes .../testdata/example-1/snapshot.json.gz | Bin 26642 -> 26979 bytes 6 files changed, 85 insertions(+), 35 deletions(-) diff --git a/api/datareading.go b/api/datareading.go index fa500a1d..1c08701a 100644 --- a/api/datareading.go +++ b/api/datareading.go @@ -1,8 +1,11 @@ package api import ( + "bytes" "encoding/json" "time" + + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" ) // DataReadingsPost is the payload in the upload request. @@ -48,3 +51,20 @@ func (v GatheredResource) MarshalJSON() ([]byte, error) { return json.Marshal(data) } + +func (v *GatheredResource) UnmarshalJSON(data []byte) error { + var tmpResource struct { + Resource *unstructured.Unstructured `json:"resource"` + DeletedAt Time `json:"deleted_at,omitempty"` + } + + d := json.NewDecoder(bytes.NewReader(data)) + d.DisallowUnknownFields() + + if err := d.Decode(&tmpResource); err != nil { + return err + } + v.Resource = tmpResource.Resource + v.DeletedAt = tmpResource.DeletedAt + return nil +} diff --git a/pkg/internal/cyberark/dataupload/dataupload.go b/pkg/internal/cyberark/dataupload/dataupload.go index 6ee06e3d..f2a3802d 100644 --- a/pkg/internal/cyberark/dataupload/dataupload.go +++ b/pkg/internal/cyberark/dataupload/dataupload.go @@ -12,6 +12,7 @@ import ( "net/http" "net/url" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/client-go/transport" "github.com/jetstack/preflight/api" @@ -30,43 +31,60 @@ const ( apiPathSnapshotLinks = "/api/ingestions/kubernetes/snapshot-links" ) -type ResourceData map[string][]interface{} +type ResourceData map[string][]*unstructured.Unstructured // Snapshot is the JSON that the CyberArk Discovery and Context API expects to // be uploaded to the AWS presigned URL. type Snapshot struct { - AgentVersion string `json:"agent_version"` - ClusterID string `json:"cluster_id"` - K8SVersion string `json:"k8s_version"` - Secrets []interface{} `json:"secrets"` - ServiceAccounts []interface{} `json:"service_accounts"` - Roles []interface{} `json:"roles"` - RoleBindings []interface{} `json:"role_bindings"` + AgentVersion string `json:"agent_version"` + ClusterID string `json:"cluster_id"` + K8SVersion string `json:"k8s_version"` + Secrets []*unstructured.Unstructured `json:"secrets"` + ServiceAccounts []*unstructured.Unstructured `json:"service_accounts"` + Roles []*unstructured.Unstructured `json:"roles"` + RoleBindings []*unstructured.Unstructured `json:"role_bindings"` } // The names of Datagatherers which have the data to populate the Cyberark Snapshot mapped to the key in the Cyberark snapshot. var gathererNameToresourceDataKeyMap = map[string]string{ - "k8s/secrets": "secrets", - "k8s/serviceaccounts": "serviceaccounts", - "k8s/roles": "roles", - "k8s/clusterroles": "roles", - "k8s/rolebindings": "rolebindings", - "k8s/clusterrolebindings": "rolebindings", + "ark/secrets": "secrets", + "ark/serviceaccounts": "serviceaccounts", + "ark/roles": "roles", + "ark/clusterroles": "roles", + "ark/rolebindings": "rolebindings", + "ark/clusterrolebindings": "rolebindings", } -func extractResourceListFromReading(reading *api.DataReading) ([]interface{}, error) { +func extractResourceListFromReading(reading *api.DataReading) ([]*unstructured.Unstructured, error) { data, ok := reading.Data.(*k8s.DynamicData) if !ok { return nil, fmt.Errorf("failed to convert data: %s", reading.DataGatherer) } items := data.Items - resources := make([]interface{}, len(items)) - for i, resource := range items { - resources[i] = resource.Resource + resources := make([]*unstructured.Unstructured, len(items)) + for i, item := range items { + if resource, ok := item.Resource.(*unstructured.Unstructured); ok { + resources[i] = resource + } else { + return nil, fmt.Errorf("failed to convert resource: %#v", item) + } } return resources, nil } +func extractClusterUIDFromReading(reading *api.DataReading) (string, error) { + resources, err := extractResourceListFromReading(reading) + if err != nil { + return "", err + } + for _, resource := range resources { + if resource.GetName() == "kube-system" { + return string(resource.GetUID()), nil + } + } + return "", fmt.Errorf("kube-system namespace UID not found in data reading: %v", reading) +} + func extractServerVersionFromReading(reading *api.DataReading) (string, error) { data, ok := reading.Data.(*k8s.DiscoveryData) if !ok { @@ -87,14 +105,20 @@ func ConvertDataReadingsToCyberarkSnapshot( clusterID := "" resourceData := ResourceData{} for _, reading := range readings { - if reading.DataGatherer == "k8s-discovery" { + if reading.DataGatherer == "ark/discovery" { k8sVersion, err = extractServerVersionFromReading(reading) if err != nil { return nil, fmt.Errorf("while extracting server version from data-reading: %s", err) } } + if reading.DataGatherer == "ark/namespaces" { + clusterID, err = extractClusterUIDFromReading(reading) + if err != nil { + return nil, fmt.Errorf("while extracting cluster UID from data-reading: %s", err) + } + } if key, found := gathererNameToresourceDataKeyMap[reading.DataGatherer]; found { - var resources []interface{} + var resources []*unstructured.Unstructured resources, err = extractResourceListFromReading(reading) if err != nil { return nil, fmt.Errorf("while extracting resource list from data-reading: %s", err) diff --git a/pkg/internal/cyberark/dataupload/testdata/example-1/README.md b/pkg/internal/cyberark/dataupload/testdata/example-1/README.md index b3e53157..0ea38f86 100644 --- a/pkg/internal/cyberark/dataupload/testdata/example-1/README.md +++ b/pkg/internal/cyberark/dataupload/testdata/example-1/README.md @@ -14,7 +14,7 @@ go run . agent \ --install-namespace venafi \ --log-level 6 \ --one-shot \ - --agent-config pkg/internal/cyberark/dataupload/testdata/example-1/agent.yaml \ + --agent-config-file pkg/internal/cyberark/dataupload/testdata/example-1/agent.yaml \ --output-path pkg/internal/cyberark/dataupload/testdata/example-1/datareadings.json gzip pkg/internal/cyberark/dataupload/testdata/example-1/datareadings.json ``` diff --git a/pkg/internal/cyberark/dataupload/testdata/example-1/agent.yaml b/pkg/internal/cyberark/dataupload/testdata/example-1/agent.yaml index 08861ee8..44bf3ef7 100644 --- a/pkg/internal/cyberark/dataupload/testdata/example-1/agent.yaml +++ b/pkg/internal/cyberark/dataupload/testdata/example-1/agent.yaml @@ -2,16 +2,22 @@ cluster_id: example-cluster-id organization_id: example-organization-id data-gatherers: # gather k8s apiserver version information -- kind: "k8s-discovery" - name: "k8s-discovery" -- kind: "k8s-dynamic" - name: "k8s/serviceaccounts" +- kind: k8s-discovery + name: ark/discovery +- kind: k8s-dynamic + name: ark/namespaces + config: + resource-type: + version: v1 + resource: namespaces +- kind: k8s-dynamic + name: ark/serviceaccounts config: resource-type: resource: serviceaccounts version: v1 -- kind: "k8s-dynamic" - name: "k8s/secrets" +- kind: k8s-dynamic + name: ark/secrets config: resource-type: version: v1 @@ -24,29 +30,29 @@ data-gatherers: - type!=kubernetes.io/ssh-auth - type!=bootstrap.kubernetes.io/token - type!=helm.sh/release.v1 -- kind: "k8s-dynamic" - name: "k8s/roles" +- kind: k8s-dynamic + name: ark/roles config: resource-type: version: v1 group: rbac.authorization.k8s.io resource: roles -- kind: "k8s-dynamic" - name: "k8s/clusterroles" +- kind: k8s-dynamic + name: ark/clusterroles config: resource-type: version: v1 group: rbac.authorization.k8s.io resource: clusterroles -- kind: "k8s-dynamic" - name: "k8s/rolebindings" +- kind: k8s-dynamic + name: ark/rolebindings config: resource-type: version: v1 group: rbac.authorization.k8s.io resource: rolebindings -- kind: "k8s-dynamic" - name: "k8s/clusterrolebindings" +- kind: k8s-dynamic + name: ark/clusterrolebindings config: resource-type: version: v1 diff --git a/pkg/internal/cyberark/dataupload/testdata/example-1/datareadings.json.gz b/pkg/internal/cyberark/dataupload/testdata/example-1/datareadings.json.gz index fcd6d6d3840f31d69dabdf87d9cedf65c2bdaed4..ac34d9111b49aa870c4be6681e02ac735f311ebb 100644 GIT binary patch literal 29815 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 literal 28818 zcmV)AK*YZviwFp9GM8uo17u-zVRB_*WNB_^b1rIgZ*BnWU0ZV-J92*CU*Ym=wsmm7 z=q<@Z^1RvPAzNEpxJq18q?V){`=s*U1CW$Nk%PI=v}S1GR2|zAIhaNR{o(6Iqw$wN zeERgi>HklkKD+tTdJ|TEoB7YTpFW3g=HYQ3VEKC>C zZMB>SJ6rhK;%@!?#m(#?tT(Bd{3U`22c!V$KVx!B`7P4_gzzmwhs~xh?u1D{&o<#< zoqq9`{VzVfe6;;|71qnAl?w-t>_0J&v;PXK^=!Gw?_F8rZp_o>ez}_cZZ_$+H%Z=` z+48rqc>n5`C%>c);3ZIW!`M*CNztye6wy8fCw2j0qQMX+G_ve#G=f;M4LDsi|+2wMx z-mJ{yW7f%Dt>8m6PxH;XTgZiZ*mi0CJx!*E+uM0CK256m(j}eWL4Fym-F@&+^E9U# zA74M3?P!1AeRjq~Ag_HU~+o~_gHRJ6lc*sO~Fnrsz){bc_h+~%#3?fz?+5a;#gpg;e) zZW!9r9<}wLVQMu^-Te#yBdos8T=-|_mQRaK+p9a~U)u~kmha8afBi$#CkK6)I;8ah z7k!Ix1Gv1=?c-|s?fa$eS|9iJ)vhUvhEl8n5f*?s?7@)yW3Z7+q>-X>ns$Alt|=Ms z?&)speO)NhKy7W=_=ns5LII1V53pH&35#FcZaS$ze)#4-%pY#n_rI+|Lh*Hg7hP_t z*Z%~2zg&K4QhM>}7h`(c#3e`sMYoI(BoS#E9CFE)9;I&{aiIsZFn7U&{hpin_te>@ z=iI$nZ5rMI=my`QrY90@oo!OfZLRKAdWIq!hY*g0yM6wBo{V9!nYpdSl*|88m%tKh&z?k>ZVL~B{vsi3)fAW-n4L$z>B`+^gPbw%xsa3Y1!D9Q@Z4q50A@5 zTI|kwc(zC#STrc%f=uo7xtD<(DDBtR$@vxEV0DAQ=CMV9DT6x{q9<5-?v0kLnF8)6 z!3%jj>@)Oevo{TV)9`CQ_feZP2VI^)7haGA*2M)$ONWe0b2RlNImTQuP~4`a$wWg8 zwT@Xg%>}8aDn})E1sOYOT`TZ>FpRH3^0v@!qG6k4f%EkH5=Q@Mv|N;R^LI2km zSBNeNd1Q32)8}^UpMgsgY;k!^rl*n2XH0g)DU5UkAxVxf5CTex06IZ3VVY4vr;W)) z9gfQ6+K01Z!+9=xdRgkz8Wwl6#kcc(^tVl10#zu!C1*J4t^RlGveNEe zSv6Ady4Y0uU!^92Fuu2epDk1&N;w5`$QTDuM(y zju>M#AWK663B|x_tsrpCQQqW3`f6B21&Idvrw9@k%*Z;{^7A>P*&;T~tRGuz`Dqfs zi)St^j*d%+QRVX=#DfY3fie_F9l7CCjh^;W=Yw64!9?j-{=NIK}rWumY>2=uH!ISIFa+TAi`>kR|MSkJG-S#RFGF z<t-v8j=I}&g#{IQ(jb(wfnrO{RDrTthvTAT zL8dOe>@eY93o(Dd1wYPL*cM}f{ZBuuAW!+YobiYR?Gm-nHjxa8@)71302$#u)>s@_qkS}|DHac zxn0&w=Z5|n9&b5`*9A+M6&{SH`RsO#V35*ar57d_({OsC)u(%Dax%_u@A8U2>;(Ve z@Y8*lKj%Q{gZbN`p^zJNv)z^3erMO=A1lDW|JpBAhyP!9eX6@v?{}o(ap}|4O3mHn zJ&F0exqek6>qevqbTM#5lo6nCKGGyn1jTRw?uk*}3M18MY1RjmtR-Kmr=rI7WP6QW zn|F03Jod+M;eyWWGd8DxC&t##OlZq(6x=zfoB+XD1ZI%~n=k>Wl!kh%qKjtIX7WZK z*X5KJhV(;NL|rM1LY5Z*v)LGT??e8xt&Uh@cvqFPG^}t&yQqL^Ez(+PDOl|#(Bv&R z>$!?@w0y2J*UFNrMqMrYj^Br0FDp6}g)C3`ZTNB^DiG8Xw?>)}&NXl+Jg}fFC}Jdt z#GDbuQZS^i3>A)5G%6Z&jaNm18U(IcP``FW_#g-K`4IK?j7~qtPN4FRJ+_VumjvaJ zCdbau0E$KfoD&{(WGIHws;>8Q?E2|xR0#j&)14}fdsWHLq;Xp=kgwpI^>ycDd51VUb@^gV%{><~Xpjk>fjK3T)J%f+(nuPG5p=ZDCqLv-@AWeo?5==) zRsuoKGKhC!m+9OycYw9{nO<6@jRI*c0!AeVgJb}k{z-+w*$JJrL7b{&N?ztiy~(x4 zoL*J(UN;l0mW#hH?eLs}a$=FxoGGc&lCCKSMv{wTB-8m4P?6S7O-z{fYS~Lm4vF&L!j^oVn4C`wsz&UIk09 zC@ZW-?bVNo2(5_+yZa1UDl2qn9=vVh5?DgfE#v2<9z54u7*zbEUkbp>Zu`+Y0Nvo5 z)5yf9yidQHZSqAtEv@cVdWIq!hY*g0yUlYkfoNWB`+8QoCCy4BYAxddtaS=l)C#m0 zIT4mC88oAWT?JJ-Qp>1JsC584DNy^Y`6VIm0$cYljCmD&-!uQb>_JdYk#W(0Gm-)0 z+9eOdF;EUgCVimRbXcHvES%bXsFOo60)WGQy#JO%f$x1F6U1V zVSA}+Z*VBHWGhtS0m6VFB+&uN6BCe#fwa^rp|B$E+A?*Dx*8Q8dXHcQhCa28_Fe=SMFBnmR21UfQ_kw$Asd`9P4BnN?owAg$@Q=&cVzZu~ z!RW9q-wz>`L0&rxX}lCL5il662xx2trBPvruI+w^qOL|oh2A4r*flT+zku+xqrxW|xuAu=+lGE_H!Ztc zjPljkUmh+pwda`s;%>J1b{docT5nziZ1-Sq7;P7`5ks*qgDCP2g`g;4ByqlKIn%y8GdK^yc`AaQcC4($ z7T%j9b7$|j4!mSEx(Cv4iMEeguXQjJ`rrCG3}_)(`#9W=AvELZtN{6{pb>VCYo z)>0DqATxPzfykC4S%ya9D223m>U=AEn!X_t;EqadF%KeMMH$s@O^qIq=rMXVtX!d? zBxK8WYj~XJsg-&#eCO#j;`$5?JbI+1(|`#xnQTW;I%qK5OC)0g4LR*NWp7Q53JpC+ zuR=rJak|)!)8NPJp3}SUIqi?6-M;y}2@@N)pUQ5br-mRdJeVXbFoqMNQ-L5dXKj?i z1vKpn9YYm1I`OMJQ9m`tLeVW9O3gX|a=W;0`PuGL-F^_8MSVfJUHvf#-;#0`$<5!L zEFO-wTLHE)58J5TLKANx_e&b1<-_dvQ>$vn-QCy@e)&P1x}b*sY`5`w=+;UTEGk~! zl^0xcgQxvrf9lT{${TKi7^Q{N;JFmQO!Co;MlAK-=FHz<2%fl~(WsUS zTK>CUk5K4AHT#cl_6IB8%Sthv8MOEfktyk{0jE{+8-m;37$AWJB)rp_Bz(9A9O%;1 zsFa}B$W<;-L7^mMOX1(I+u-mfP2Y3&-Ep~Igl3M(TsU2ce6umlK0~AytltkC%y;N*J4E0j6rc1^A^1;j&uwKr;_JlUwa!y!jZiT@JuvH>? z2$+HKQ9-0CYJoYH6ipl21}JM($g4>j)jzoSuEMuRv+% zwE}}74r@xJp=#oI&_hY1;z0M9RR&bCpd@6^a)}SK)hg*`aW@n@iX9~(%VzM^%x9^?safM6X6rn9kIOXY zzC*qP@M%3f@>os{S6G{fCGqBj9WM_jlz6d9tvQSszQ#`(h|%g?+L z=*6`AnO94SF~cl`NOW4H5lRky^5t!!?%=3%E+C8r=T~7~!|nmP@;iWDp*@ZA?ejF* zLpyAz%Vzl{EIx*%)it~*?aQOPwTK}q}%V(S+@oYi$Kq~na={;~bHpF_)T+3)ri#me_@8A(MXB)QHq zd(wuG} zB`}@drIA-)sEbisgt)p2cHgO}Yh1ebo!a-QUg^0Py@EqSiJ0AR{^Kd>Zg@GJ@=+kI z6~V*?u-M}qqNkt?6<~}Bn7aRG@7lW3O1Aa;`4v6#dd5uG{gStBqIR3aY!NW=WskZl z5zwt9on(yj-_I;H-HNQmLL?~iVuA=P=3MpFH!t-~D=dE+Q-B-TYN?c=u?L@h+HAgd zCghF9kHx_F{qEP#H1-}30WO@qBH}^Cfv11b1xVh^@?p1>eVKiE_w>PJ_4wD z$zIMNSaaJPP<5pf`IDg4lWv0GBr#-6n&LVXUUKl3dQi-$M6{J!P0=t|GC)=sW~pG< z&{^Y9IAvWvPc&T9rAedSzT88Qv__svddsbL7Nlko1aTNarRczFOQ?y=1o|Wzy6bGT zTzWLkW6z!zHLNDGx@sbRDz3gptAW?Z^Kz3_kTC)k(tyZDf@KQB2aF_~BOwIwxO@J7 z8e*xpe3dtz{hhwn)ckEd#ck#optsP5eamO%^Y3Z-U<<{Ax^@NsnK51;;{p~X^4f9LY zUC5F7=zUfoiDw|3;ow7#z^v3%aHEua-2CkxHhVynU+0_dm}1T9{xQj~8aU9qIRA2X zA9+A(YX+4lCKBfnRGf;&G>*n;L4Vc+kvukAdZ`7jSF{g z_tB^iE~C*Q_lCU-j1gu(#9v*SibC*IjtDYyDIXd+7=yQEQrUXJc_8|!jU1>q*ivy~ zHeassVvQG77dc%CXLc4*GloE86d^I9$ku2?3F*McC_v^Q1Lr9d@zmtUCz)xf*wDmp zYeZNhLe)i9-|CmPz=y66XQ%N}uH+)P=D1K@+cuH19K8f)OLXC-0iP`f8`4Uq8RH~8 zHC(7R)>6@-xewPEvBrq1iyRx(3Pn6>*sy$DEhiYMmZ{7fV8U4tLJ4r5N1!TXo-7kK zKkg9(x6Sc@>-^V=jkxj!)+d#(Fa6ms@Vookjp@wbj*iaLk-Jx}(NwpQa1)4=G66}B zfKXXsu**3rZogqU1UwC zf=dG=;}>c6VvMOq0%A3{HsbxtL_j2v87vbCytUaTMibLduBBt5p_U2=&3w1Ug*7fz zU1Z&W)47JhR%c=rm&voBfktaUxXb_%L4rv%vXD8;Pfj(i(pF1FhsGXU1H>92sxGol zD)Fq}3+^7ofstx-aLQ(?RRl)01`#6#?}Y^_vSN%ONEAJzFXtM`uNY^ z$A4xTiF+$)Jku+ed+2ATOMR;6eSVIsy#^T2tMgD*Qb2e%M2$@9-)W&{{F$WqsNrCXjoIeWkfdF9_ea^V>VUqa=bk39%$W zMKBbc@(!;n^B5iXPMN2$2rh@g-JBQqBs+)}|%<;3O;6K;U`Ey3mb*~@(_WJ$GB7h?|I!@>4gL3Pdi#wBEUW_W10%fnbd`0a4 z5{e7r=6l|_yMi5v}1qp z`gAbpU6NjtxgmsG5`{5YimU~tG&5#3C(ZGrj(m;g4=Mz`Qu?yHP$p zACzbMz2TQ{zq>(He>3y{`{g&q@8fe}9^}^O;VQblsPDB&RBr{f8{)j%07s9@nr+}3 z2qyo*SdT>&)t=a0W2 ze7Nb zc|VC>Oo}B)&4A$;dBTl>LBikxgu}4H*aGDo{SXsP#*POQE9MM7Y4Xc#&L|y$ja;E? zdV7K4>7bTci;h3sNn|XJgKYycv8}uJrfe|GX3sr6q}bMyMGV zVpt_Ko;D(*`Jlb|$P1~?J5Ui3r?o*c83+hTGB`;%1Zo4ZJf*>=6XH99YQ4v;GOQBG12#>@=wpx`E3Zfs_)Zk?x<;2%onVBTP~zmkC;fodBs;bjGdP4`Re*T zeEZ(;sGM%UC|7%S+V6$$fNwbZaIMj7?Dfi0uo*XFq9>Tf-#8@L8%#U zWmq+*P1?wA>Vz%MFT6S@WVp+Ul%A5T83;TomJze^$*~bs*RL6vUixSG}GhhV3F6 zg#jWjNf!+6y~U88WF8YP#6Z)kSBmPAEpn7zZ_D-8DqP=Y&^k86;P*Eiwm=(}0-k zybV-EC&y13t(sqISI)OHH>?-xopZ@lm%kG?l5?gZS&k$@X^)`hB1j^+*Iox=$K|+I z%{6ra(S3xF=8S`?v;HQ!AT-87ipErgKs*@Ekl$s;Otdr^x$5wCuff=JE}m-6mc3^p z1`J1&$;b#CMPDGyQJz&4l4xWM>kRU(7eA8>^7@d@sw9pp`^@Ie8rQ%I36wfRfG|yw zF69K?dx{$~bwtx(wWF(z^Rf=-o6*?WJ))`u3!@OxDFzlkGm9Q^87#>G5}~*Qkf_t0 zqZBLVk=kl*!xPB!mJ7u%^kba_)rFhgdN8=~3aL z+9`x{orUL+WG-{;Oa7i?_-A$Y((+(kb}Q_ZvS#W!2Hj}n!f{OH=OV+2Y6l4xGsfNt zs4V#`Ys6Lm0}I(wm9$Ect+<0~`)iwx*qSqaUmfj5m1)4}0%Xzx1fc@M3_^iN7D$XD zd%Nn@l?SRFU!E(v3>X^LkE>OSiOYnM%yFkF!>@@Z;G}cF9j6FtT+64M1AYjp+i7Y1 z8_7l7Z@%`*_bK|Aw~H`~$xw1uz1Rp(7Nd0mfdm6WT8!x#{zx`@opsQ`Kj&K6+1Kz( z$}ddUWWRV|BGL%N6Apqi1x67G$pt5aafHiNJ`OUCPm~jtJv8)i1lL2Z%V~oJ6v%2M zCuHK;F%2?bHU&roM@KvaN@A&D%BWX;$EqU~w+du~-ue0Id2e{M$cU*r#ZV5t30@pT ztpt%g1>;HSgHqH-ZM6)~dLLUs$@XSy)(cW>zkL|C*=rZC*51G*v&eflS(HXpHyCJ% zftW8nqL*g|qGsT8QjiqWJlbTHS#|uJ*5@|EY|}Znxf*3WB!omD5i!mq5zz^Gt4SV| z^9}>FEKFYYxOtkEMlZJtEb;eu~B3UZpLs1FDGVcq)V7Oc&)6^)0x>ZiePUC{p^#120e${@FiArLU zfgDQ%e6SWgd2dv5X*KV9ZPI%fa-s`ingQk)eyP(@h}JqZBvYmcWO7_)njoh{WVF#~DblJ_ zhT5jYv*R>K=ZJ3C>7)g=Csy-1pKxo5(JWl!nz|kVFM>dq~KTi=nto_==_!4 z-tY*&=LHOpdc$wc3cIwXn>QO=Cl1MV7P%a1)B!N!@jx=wgb>QCT=Djl+Awv70owB| z8&>TiWC)UFDuG9doSO#$CK!R(ma`1pt1#XVwQ??M(66%KT1JgHvre4GU;<>$kcBfw z!7G8^K*tbSRz!+b_fK64p&T|%`AdJX4MnQjKZI)BTBHS*lP{9l8C(voj9fHUQR{hF z_1=|Q|BRiPTVOq~TE2rYZN2geyi6rqDk<2UBmS^NTPyLwv+l_|Jw?ZqTlRc(mDIU7 zUI4~bhp|jEBbDF~bh5YyB?lIR*D|}*=#)8EdDXMob@kf6?Y_t)b~UkPCR1gUfMiWV zgv02^Cq}?|N4%oSXRbij7Zj;BB9EL=mc1av`Cb8LnBgx6a}T8`XpDrzF)^!!};lOv2`(1 zUDS_d2&PdIxXc)lmtH6vqr%rU05Eq!Hr4my)u;6$IAVk{B={=&Uk}OWI=ATGWqN zi#iRzp5E;ani@kqIVI}5vKx~EfCo~do@~^I(4nr;w=`A;9wKtevi<`G174Le8q7qY zne+${D-O%GQvn){g`YP9sNOYglqzRahW46xNoBy5*(RQbz!*(3l2s=)brHbjxv&N1 zuB+>FArL{8BtTu6;lN{2a>)Xa#Sj~nG~TYWZ?|9kOoT&bSMhkT6x|ZUr)U1eC#oVc z1zPT*9#YN8al;mrAl{QyIy}8b&@bm1g_0~Q;aQBU4*K)ALRbFP#5U-f83Q~kZiEL? z1U-d}3S%SUf#>Wk@+IQ=lkMevfL@uON8%RQTvjt1)Z%Wd1p^{WXF3TKyifu%)tZ=G za&^t3*X#fN`pJ{OUnKOxqaQ9BJl=9ATdlo8{Lnqw+30p#Z@SwT-`j(;^YbXtXIT&p1?)_+q7HMsC$P=KcWbY|v%7y{I|uEZe|NV!v`t#A z-A=L5&JJGp2fXg{aBzI?Izh%C8?X1eTU)J@t&KL>-RQKBH`<;4&fdxHaG$(?Tb|qd zc-U+EC$LLw7-yL)}zj4=Yop%Y{Y@g7# z2g4KE{kU=A+8eID-P&qzQi?X%NeA)dQ+xCKJA&U~``d9C><-&+cKe6@KWX<(Y#j_P ze(Z1WZ0xrCZ+BV$bC;aS_x$)^x4rA)$IY+%SSR`E9o| z8txwSzaBE#d&iGEdu&U*|Kn_9zjN_*_v7*K@QP%-;S+AcKEfmefZ69hacUKCvV^Kjjw5&inJAfeCUjre{;MQ4kX(B{kIPv zx8Aye-1dL`KYQ2LKGqgl5p%mJ&py>YIYC^_)I(4k)MX5>tHli!!d}9h zwKQyzVsDjnxQ{)4%ehUGW2y{l36|`*-d-T5X}WeGU$~Xz3MWs_T_Wh0dkxCuz&JAt zPMSg|c0Cje(~VykY$aRotPHZPOk_j+EQ+yAAIE)##;^=zn?XHMHm{*yo;0ED4sRlJ zz7XGl9N~W1$zuuQWD9>uyJnkkHz>u?st2;K`za=!W5^|JDy)NbH>SMDcxOy9u_8n* z6$-`^29Fe+*|B)ED!-9x(@45VgP82h`VgLDpVJM!tMM3D9}@d@VP8U-|mA z%8OH+hh~(AG`fuI%u^lj?M3l<9RU;CvSj zrG<~B2?fx89uwm*Cj1fNLt_uWU7MI{e>G($l3h`2xf;NMT%|9Uux#dC-X3&6&;S{yeX=mz}EE!uS_?lqeC6G{(IZu&Du63_BK!jmtPF>L(OV!Uz zd7(iC9ixHvkuRUCjN8(mNzHIse%Wg`OjBnLWV znY`@H)ivtED@WR>1NW(7O`bq*ls*ty%eUzuE#5xPHJiOMh-MHMuaRHuiorcgOE0D7 zjBRLB=OIc4dS?FR1YnB<*Cykx%e$>vw#_+a^H>cU;-cNm^H3IOUWzHmkRlZnGd07Q zB}ZtZ(U7mv0TWX5ZWS5#HeHlkdLf3f@2j3CwN)U+Iy(~7E6k}qV2xRi0=W>P4DA6~ zyGegm{$2H`=MSI8PnQWMepZG>!RZCLg$(Cl#?LI3p znsb%wmpD*O!f$o8y|69}Xs!wZARu&&qQ~(GKxad{-*P*uy3j7#@KWJ!VLhC0*`;WS z0P%1v{rRcVqbYfWlu0Ha;*uMyi}+R;W&CapzzM=;S8<7?Z`g#*ugRdFqQQL;8A;22 z3n1t|MM&D2Z^x0=HWA}fisha3lsK??Is{Tiom?{JU8q5_n$O3lkc`SB8aAV@?b4&AgNR&+`_^bCX_Wx??z^@GW^ic6#?h;ITh=&7-t z*;20{+s~ZKJ{j;OT2C8ku6DGev*^YU`uXu7rtQI}VQJp4Xr~L&b_^WJi2nU7*UG_w?PkS1B=(m@^8 ztC~&6if-gIu!PhlIP!|93W8eOlFRJ{dMtAqw=-S_C8_rOJ!C2~Y*q*AEL%yOTH6}}$ z_Y2fKN7u}Z~7$D$;>6r?LBuEEIhB@d1sMj0raU^sDcpDbUKuWfFi_mIU zncFLf*r;OmOJUkn`C(26F1bnJcywhl`d}{YOjF<>9AcRbr&aN zS2N>OS?)7jbJHxNWWc39+AGj0M36vqc$*66sS4am+N+422%tmx9rP`Dnu02+xN=MOn+!!$3MRY%g`{5FTh3_-0zSD&!2bMJK0< z@kw|Nm_U2amITI0QqV^v<)M`Q3*sU)B8I_8g>J&sGZW)YNB=+@u^kxOFtJ?FQtoGC z82Y3PZknMsB=pPK{B5zNnIun^-J-UUA6+x1>~tU#>%h=2jVZ+pIjlb_YxE%ou^4zp zg3heH&W5@ls-ZEVhND9(1F0$G-~Cc+ov9w3l_}SPIWk3ZOk3?SsAFdEtmwB^x#&A$ z&dq_dUDV1*4o5@-(C-NEqORFXv^}TB>O?WW)EkQ9K)*)j7$({+YaZIQ#!F^45!rAo zAZJA{gVM0Kqz^sNbOU)Dhjf#mqQ`e-tM~Q5pW%7-?m9)Fv91iRjdGWWp4cVUbJ0R9 z0V5a>n}Zl9I=C|!`aFR=NV*w7K?~wzZ#|6c(9a+1jr3DJZq*=T0`*M>4W?SZl7S?k z(=OF|!ga2Lf}x%4^OO=Z?T2cIZO-JyXE1pMR?(7-u?M)M(e``Vv}kN?ZY_njQx$>E(G-pS#e z9R5F%!@tO2{?iRM-)=y-S*B7?f7>E+d)|+>QG9>Hw?B6IsZYIpsLP*f_t@Wd(0%>4 z@?XAd=a+xBhvfSfpT-X_5nXf-_%g=@G<)A-(czJppex~Ku z)6>@h{}r2?Zr?ll(FTh@T8jAkdjFU2`}e6lzU^Q?y&iskiQ-SE*8lWFLXQ0h-yW>) zKHVFo^WoRpu5Z7ysy{eJr9P-n&fTX^>Ry%a>lW|Q^j(_1OVf90`YuiXuS(OuXx-v? zcza=QoPI|R`PSzAc%^1-GBZ5EM6OapHY$KXdFq(-^XcD<95fuik;CctqlX1RT2x{dDN;T4=P34dRt3?V7$Ztr(gMJSWycxw*^V)J z;n(Su^v;;{Xw8vM6^hP^r9|FU4g9o6d|w#+^|o<= zA#Wv_(+ceZSl-WU(OM1BdEHOP$ih_S-GvXtl=)~>IbUajohziD#fF`wIhin)?$8!C zYiX>on-HH8meaKqK&D!*xEVqWh*z<#p}f_u-jIESkLNfap}^HfWq7Yxw3Ox)^M!h} zA6*#l-GRGiBEr73nr)mlKsx{wJ~fN3xd7R9$skv;H{%rJQeMUt1jphTJ2SSu5s`HW z2+ojOi1j@x0r0XM&I4G}-dVxih4MNbdDj?~_Z85k85uCwZEY#OE5_P)_qO@pp_xd3FosC)5k-%np5qvqBC|G zsI0;YMU~40tLPM0esTqnYv`iQBJa@QH*r)f zYdz*^?>t4VzDl#RzdiSDjdD~Nzdb9bU8Ln$+;%kf*e3b-rm>t#V^*Lss(! z&eHO_0_Wu(T~f(zX^FwFZ@Q`EdD7G`n^%Tl=qBF^HZoDu?MlC3w`s-Gn$hnp18)349WLA_&_lUugzTGl{> zj?JY#wD85i$4-?I4niA7RU5F{zoH)}4t1?ds#g}ao80kzA~Y)EtOJ?L`L|ChnbNOY zwp(vznRvzk{q}5T(i+u%o9RkvId0Rs*rJQB|L;V7Ejta{|J`}?$CIP4IrqopZsTN< z_d9tWerBfZ>%BeS#GP}PC+r*gadz#VcRO^H?R6m(Ly<tN}aBIvp~g%KUMH zhE;(*Z#w*y9XfT<%^W(eiymWkFR?h)*`U$xHabhcP5Vic)_ljS%%CwCnPfQPxWyQH zPI8ag!$CUZxE$MAVxc$EeQu<#4cyGAG(0_CxZEf*mwKk}5z*7^_r^0^l3{w>s&+a4 zM>lSp{kF1XOULprA%zJ#y(Hz&Vw@IvzY}d%})bJipxq8KFcVm)_I;}o` zm8G6`2B?}jC0c8&aWQys;OIA=Yh5%}6&M#`Tdz3~!X`J|ISsji?Ot#!S0YYj(QFyPQBg0QRR{^J0vuci=WR%gM#&E)MN4;hy{6n-Wf~6Y^ zmf1N~sm5`e*}z86?>FWRf!hmsuzhY9m{iUQ&LX>uuR_uV+j!uUMJW zg=6Ocva*RE=vgoEZ&qpy82`y!{$7?v6k-)vU2qxgHxFBL$d057D_( z(H3FZfUSR1WG=h)UjiC2L2|v={cYlO&i8gdbVid_nJ$8XxCr>Z;P);CRlWx+%nvH; zhF~`i+x3M#OhvxGb98IKEsj_^F=a5{ zQ!|~27Jo1Mkuos*^(GtCZ=InZdzA!d3`4l}!mWq0!>yN#WK(`ky}~#xvU6KdzsqRi zI9508mr%29B`!>?PHc3orS2OQQLx>vzzwX1InWzdSzV_vyE0?HNruLy#n;)mm|}Cl z?YjyR?PXR!svb}I<`obA@%a&fjq}r{TxO>GnEeQlx;zIa0MO`_# z9{HvK$8O9ww9D$ulTv%3wL_a#t)+o12Q@o=-?9Y5cao%JdVa4}(U)F4z3VJl$#Ls* z;+m3G_WQm*TDJOi*-Fgi#c-6`-gLl~+1P}f&TTFZhYg`6xMd=A4S#9WZNZvy!BBRS zdTe9naiw)b2aTCg_RTA#FT;WVo9`Ks)#|0rV1k@#*OMa@MTZy?))Nkag`?Gnw6WY>0Yct<)xh-uIIj`5x;tr+(v`>CA%j z0audz+xx!VHs;o_JLfE1@?D)jjSKO%-v0&XhSzsTtpU4h=}FtEYRgXB(%s7F%8sWu z9Q#$8ZG_mIT%VflPB4OCL4BI1%KU=bf{>0JQ#7)vG z8;?qUyso$A*7`kI5!i)WE6rNN5_HOS^h>a+9pq!Tc75kvXeBOrN1b@u3FA6m@k+O4 zId0dj)NlEojLG%WnrQEFjr5K>XJ6>fp4B}+0!sCpix)M~F>HC7-{>dEuTZJs86%_3 z`hlIyy@WLzdc0`1IX#x~yd%UY%xbRNuHP75&pS(_6;!kHxgg{`NUHT6{TEif3M@xY zI(GNUi>1C}8$AOXj#aHJXv|`JS*kW*f;$6a5%l$o#=oO0&R@;2b_q$j0XyxH#QDjz zQM|BW;%D{bL0i9Uw3A@hgjcof;Y;Y-O*>1Hl)F&3=GGQ^{vac?9<+|s(zHGtK%!VC_ zR9&vH{~enHRQGl3%E4XYx80=G@7{SsCUJ!*cdpY}Se+sc#Ik2LxD4=(fmZ#6nMt{F zYV@=_t8FzoD6DaqbxEN#bSf6iBwy&w8(z(YP0#fMoi1EFYFe&K?3#-%`mt!B?hVmP zZO5tiJD$2|aOLOsCeW=_q^2{QliEnKZ4-wvm;Y7PB97s-mOhu4&ccoTvb)f1wuIV6 zZ>4Lv9;jSa4Bbhrx)mp7)3x-Kj)GU;q>g%h!O<$Iw`U|ntZJA-5r`NIKny|%v`9kP zBqo(xy#Woi=Pdx=8Ngcq>k~SljngDNt^Q}@fY2Z0c6vVu@_s}9;4gaLy>hF6#^S5U z)p5A#C7yiCtkLW3h~GcV*L$e`ls5T0+*Y$?i5A+1Jl%$js`x>ko2=blDZjaFOSJ*LOLV^;MAp$a_3g=9X03rz4P+OUWVMH}q zfxDS`e z)_qUsJP36!;GPTO^|7r)OnQ^ukZZjcA>3=hlb3k&Mx4LH7<=HIjOhs*{LBWSOu+g# zu!5d>TSj<$zOAT8+!_iMpaoKp4HCsbRj3F=8fY@ZNC@TUQ-scgd!AABL@k4F!!d=^ zWa~>lbDI3cH$RU#T2K(Sj}}u@#zHL1fU<0Mm4KscL=pt5L}Vz+lqis%s!-UW`&Q!` z-p{yu^AC7^R0uq0w!S^j=oAZ64XY-DyiHq#BI`pbDy-l>%viAOQkJCIr!tVL^UABIabI z&~9M=5M9aWSpbvAk1l}8SpXB7q_+%=#_3&;9RZnaAKobAK!uP(5Kzcvf}#pQBiRgO zA_-C;M-sw&a=}j!ndHj6Is0%6Kka{CT>MS^wA)I0_q%9cb>-*!XJ7TI=jxhWFY+f_ z@WVX{?%jaHeQu^Vcxks6@n{$eFq9BbA(engLm3cNud+2sOq800ky;+jw#VmBvJ)N8W2es0WrW75ExM)Xjr3E zRznfvQ>1BBlNBx#yNoeFl^-Qrf=;ir5({ z*;978>+)@-n|UCRtVUIQcLT1+A&vbDJwnp?YaaF}sDXY6+K-oMVgKC}xL7>`AoYjv z;}vmrH6N-*l04bo>FuB{?CJHzj-)Ib6>#{w7rbMYoonSDtA}z&f#kZ@$$K zlYA2xWVAisPNou~g35qO!w`r_3xGxx3CNlpA_^hX;0Go!92a9f`IL`1;l$9xKA83C zn)NFou&=2i->Q}1Cav@!u#%LL1n`a4U6q<<>*I_xe)+1;1=gc0C)0Gy`R^dPg?F?N zMM#1$iYO2Rf`BMRA_xRY1zIR+ffhxIpq*dh)xBf!hyvtIQ1g9RoEwj=J9c~Z>wk>uJlm7Ye|Jj%2c40QfoG%EBS5C)# z#f!FMlAtVT5~N}XkfahIGF1U8Ap#dKTEGHTqC^qSQoMxoX*kR%0Qgh0AQp#7Plhkdga@msS^tPUFWg=QQPf0Sr9Ok5AoO0Kd_bhuelh|biB#ZDm+|;hwE$U-l9q}pF;lE z_zuu^-vJe1gw%k7K!k`3@<;)is)&Fx#$*jfvZS1BgO5}0|MOiL{;ifcel2hAfv(xo z4@A8868Zslu1s=}nTF#bNkDHhxqV9%_PKuF=zc!{2FJIPX*%dF54`w6#vJ~*M_J@s z)_%BP+j#v8sB=IhV#}RgA@kH7O^u>J)kG#K05T=>mm&>lT7*C-A}T6S42kf~=bC+7 zXktHJOphow*rH>N>5O&o5%9KV#L=wO<7J(?T z5NNU(0xXJ(jQQ7Al#`9)7cqeU=4_Vy=kd|?hyIw^$?Ma;#t7w$)nbb9Mv-T`^SX1+ zv)v>rx3UVkz8;61Mg>PaBvwFkW$ax^tP zu+2W&F&_nE7K9jzK#7R&`1M;CIk|OSq|OFCeZD(UN>^qqs9T7k7wgGx7e$n zocy|99OU6a_+u6vxYoU2gN36cT?}$^C=|l<(J5yuOi#nz@G>09S)3bQ{C3w_Z_Omx zoKv$=$V$p~ue(C1gd;VZKgIu|Dh8?~V!%WwOH9C$qMV=CJtt|nYc}R-2*kWP*4!(W zV++8uB1yJ|^6Ob~=I-RLDCUofncr?-6E^4#UvE~g)y0Ne9i$-8b_Ic$9H@dE0fAA- z&1$Y7G{UWHtVA-6r~(Q8Kp*oa0_GL<%j)bVw?UQ)NGLyXG7dAx#M$+<*t*klB2?z) z4Y*|BJAaEcvT_9HMz&p{%N@toAZcq7=o{er8%y>Il>fcN|7*qe!J`;9dQi5@ZdHmR zqEHcNq9y_n3jrV!4S>WEzC)Dq8!RY%#{IqiniyEM5Sd{)WCk)3iU zBpaU-oF=3<$URK;W$eby04WsXSMXg zhh5<1B50N2#!Vym%}(8(6NXEiBXvWnFT~R{d$h|Yb)FQ(+x>7?JhTS$N#f;Ez6DL$addf(d&*#i^PKj>I-JkaThf)%e%nS zr7Br;%W}DDBJRImkdmy235t?IiWD(1(a~*y5Sak-ohNsrv%fs!i}_FEd$t<$KIu;9 zYOXx;VmCT_aZ=JVr7X?(?fdP`;4FmOVbn;Qkv;Sf(_WZ$S-^QoCQ<`xHIpQvIYxk} z(Li_w5Frc*D|kvXmEp{e&W7$M_3~b{=}^@2p%)MR(`Sp~qqIF3Zj>FHDfKYe2NOzf zLI@hyiI|BChgbr9I4za{j}YZ_pZRi9i`quIQ|`9`sF5U7PMj-Fav%y};08&c%vh;t z*$KGMUOIi0@76Nm<2k|GW;VD1`Voh*FnT~r#Q-1~>o38TP*-D2UW#~D(OTa$l7QpDIA8Ypdm z(>9a|qbLI@sRW`k10}KuD8w>`nWm}k5gMqcq~|k{XHRm(1#@?{N&O>b34ZO!$~-T& z*|vLY@}jx37bR+el>hvgjoch{ZyXJ0driZbXs!uu0=`+ypXQDYEg!weH}47jXAhm< zMS57$f6-}cd}KqEe_ox8Xf-FEs-s!w{oec9jk_nAp1-J4r~Vx{m1HLg76DU@224h$ z&x8Vq+Vg?3PGJK*RquHa=E)6ut7P`$jr`;gkm}roCNX$4?L5o#zxTm}rr$f7*6@4f zn6a-5{|_F{XcY8E^CrSmOG~1pNvW=fIpCEd?+&?GIPth!-m8!KW>01Vr02J;;w`IU z`Mr?7IKXza@jCe*KYaA=cO^V7;5fOtV+-!nUVK{g`*7nTOS66}RzIE#$I$1#rTUf| zjfUXepYLifLUr4AoZIP{tJmj}nDSLWdiSty=45!v_8Pc56IL1Tl>;S`@=8?qt75vBA$DYvJxs)wxP5>7a>hl{QhS zCca$u-ulT_FVJ@v*@JFd?H=sDnQQ|c>f69JqyvevYmXIROiFP5bf~-L;Whhluh~oOdD=GZ$k6~wee6-RZmfa)?Z^Z-m>HV@L1nd~l{rX? z4G5YT$*4p^qR7W;mWzBW^0AM6tX;KQlGJdN4{oWI(KTWG+UC2|uc)w;D1~SaJeSs8 z@XX!qJjZ}dLMh6#RLj9O-~F`5$rmp;55W5Q8!!x))L6U^(SLvZ)t@WUb%svK)Jw;; z`>;Cm>wKB+$r>S)DU7}(l4H)B31I>emu2W;&B8b2hG(KoU+sGGzfNr^m7^F$o`^5DD5;y~$;Fy@&MX z;v=}c{ye3p5d)f1KJooj36G3kQ;ExVoFp?Du+i?5jUov@OTuuOZ&#@_y@qxVi1`b) z$!71WoVY8(lps_pNK+)8E$X=ce(sY93y^G!4J%#-~@tnw4=T z*ST!l?X<_0@cL$)3H`&VgYJdKkrsHz=d>|*b9Y>uC%vEA#%cS*+c@q03^&i(9p%PZ z? zBCSj(@+w14OdWvqYyV^^_T7;%p^iw0?rZvL^26dXBZqK z$OV%sv21*O9V)OXv0e*bO-VJu{4%Ox__lj)`&f))Ys{LTV9U4qzD-mWt0dVXd*1f;VQ+T!7z zpAif>X&Se&N8G)*CDmF3LgK4N;(Z&Ezl!YWmnB+)eDRF;yJ!B*%P^@Kmewm?# zyu$W}8g1mSBExtg@I&VDeg4z0^|fAgDSOQvt$l-tbYC|bm71w2HAj7oFII1|#Ba(F zlM0kbz$sBcB%vTO=BT0+Q`AzF*d9Ug{t9%pTdp$#=+i(1>8dYwY=RO+!@-mHEEg17f}%>rL8NI0nkI==xg{*?(Yzgc>S#!WfJt0fL<1Csb+>Rtcb7 zq11B0G)eno4pjkCy`mpH-Tfe){qr|@;7J2L()BRm{_g1-mS(4gr*}`jG1LPLoP+^O zHjfG$@1Ag-pS`jA*@96dAO(h!=@`sK9jtJyyk$KdjOc(pCF>u)(P))T#VRX7QPpqQ zdKF=d{{R*I1E_@&%eF>Zj=V;i+2@fsYFx|Y_R{=aPuE#V%nQ(>#u|QLm0m(BB3}q4|MO>;(BAfIWnGYplLpFsDtjvrs zaJ(nydu>(yw;fCzXIN@T#Q|NzSw)$1G9k*GnxdexH|XWXK>l7qgrHT|Z?l!D`ZU2# z2RQ6vQA1Y$!&MHzhZTY-Nc;=M7b-|j7i#l0ZrX{Gr;4ZNV(AWU^|)W>N*G2P7K$TWg>n4I^WQds^daEnTL+3 z^G&$Jv3&F$_F|={a)c+QV#OfNK@g{%y9oL7$E2_#!BzpYh?HQWDKI1jU@0@D1>rdD zF;$@4R;M3sZSSxqQ&o??GC$|$Eg)a$iILV^y+CAH6iO^!UgdYkri5}6Uv@OA4}8_l z92qr(RpXDLz0!aP7AiQ{B$6jY$yn9b@j1IQvW&)OI3Su$Br|SM#A;!2jgBmlS2q#I zsgWBSd76sk0jO2I&OMcm>D^|E*UPJuxs${d+b27Y>El1$lc3eg^T*|U`S|WI?^e7G z{C=vUSn2t)3ok?&>%67Aw$mo&A!z@yE>_~vgeCii=ZW=NsBa-b^+(11wtk!~oZZW; zauiNf6{#1U;k4IjUNiMF*Q@!@NpuJ3ihzAM4@WH^N&!U*RMkM1A7 z(HI1sN<#fnnaAbbmi*<^M(~_sBmuKT0kN2YM8rUb6OGc;{cAG5a_S8~t>G)BhDQkOHo#E!G5*`q^FZu`wB6sylylK`>6=~QxN)#(Np|=JG4oK;7-yb zt|*X%;}X45gHD)AslqnHa&+SU#K|!__eNxbkqO4M&qM4ExiC*|l@dOxXvy@DpXnLG z5}HZ{JWa7X=@czwTpt)aHrN205meCqSIi2MjX`l+rxQl#(o9qoGcEn>P1p+mb2Fbt%0< zM!l})>)+Lz&V#Vl*O!q+$gc961qDzahJ(x4L1I$)N8sljR;VgJWv-?nkdA;0Ofq#0-@PBY8Nj5k~Uj$0LyBr9hHrPe?6tY#1@kCFNAZLHof4JHRRsU0A_P5;BFluADQeVM>?ttKKjqKKqinoO$cGUXn z_2w^>x#boC$ealcAstGuOu`_-Jy`&|ROT(i{wefZnyUyiAID(Z%-@W$-U z&E~gJhq5&DszVCN981c8X^Vj5%mPa=15T3EeYn9qjY!w~i4p1gXsrQkXhga`oe+_( zcmEs75grUr8n`?29`4M*NgOb`HrvEF{F$#a^UJ7);pbwtw#DjAtaQ_?Rq^Y$ulRfe zgXbCC7Fur>h&x-&xL~1H`f132NN3a@!D;OeO>q$I-IdxDc;6vtu`@)qNG^quMBe# zE3d8N&|=|4>2CSxlz3n3?3PH6<#3fGUlq&mh4kE;Y9ww;wbt2fF~6Kr^HN1E?v-O# zVeJauv3B^h8naWb->C1!Gh40INfmjMWu)gXtJml9yXC8X4AX{S8avTdh4h72Hf~q7 z)|A2R+ik=Z9?$c8cQ208v;L9y78;*+ku+nldwqwu@wbF?sdQh6d{>@(IbS+%^>~H5 zZZUtFuUEn!9owUooIP~2Me*1$+Vr^Zv^74mA<93m#agtQ6HnFAtn*cdA%SWJPO`B8 z8xNd}0UerqK2YYLZVc~wh31?c{XX8vPcAaI8^qwzwDT-4l%ag~`>t}MwwN~&p4y|M zwDwzlvnR6w{kcVVqm9?8*{eF4UFqK|I!tbU#t-v8+_=as9IR(4*|8&b;OD!0530{# z`Y>}cJmp5d((CT%-S0++Rc4FAF_BxBnuVZ|w|XiNp&ZjS%|4!TM)WH0$0C-*;7aR; z3VOFy_bCYF=>>h?fHmu z;FK^Cd*`sT;(pDxP670hA?|pGP?RKwA>e{AAe3al-RnU@7)`BWDxp2Lk{u~JVUyYy zA!iS!jFt-w)lIld<+|KY=ttPHJbsItDUVYoo^&hKz2UsSEBYxpBmN`Mtj1c?&1bg%97@ zg>&KCj@E(W|IT_xO@n5Il8i8nAk{f7jV-c)g6BqKl#yH}h>yfk)5_3_D%ECI3*49u zDo~_XHLE{K?MzB{?RoH67B?BVMe{hrl=URf*k{hcyE7ja_XsWG3 zibs@u*i!PrQL<%lvFZ6hDq;*XMnA=1(oOu)h9PIjOkd(U*$P<)jj471Tk%)tKj*EJpU(+Dr^X&LqOLH3@=|?vn63J^P?s`(R z5Z3qaW$C_FF_Q4JBph+Jdf5%`P5gf7ibmV@eV7yLwbNf;C*fZ1i_(XO@eI*Nd~S#4 zd_Es$jwag4gqQx2wlp`1K$#^yrh$z# zGc<4xQ=hWuCVi_nzA3RdYYlYW@OmUPZgg%QGobRnU>gT2T?LD|6Jt>R)g93hJ1OsC zAL`HhB^%gs0XG$@NZ`_gihBIW!aNG~8(x<`mc?7kPByWx`SFv3?`s}Jx2`=*G0U@V zG^*xzU8GebOuqOvm#U`ABLr$ycAWU#^eiD%Q41Gnk2^Fx5_>{ zpk|L8G+y<1)pu9@SY_JfYP7V+u|Fk)B}Pgt65z~aKrCm#63c-mS*CJfun|31dH1C; z4_pb2`4o{&oUC@jCZ1pAVyfgS>T{cGJ=qyk)=vKG* z(djUc)ye+qHm2^rsr@zmw^>vbDfM6SaROPsFBmAC`(u z>kdX^)4GwJs@Syd=x47A`^2Voe_k(SW7E3Wv~DmbJ2tKRI5Kt|dXH%uo7U}?icRZc z)4JHSE;g;ZuPUaHcXZIZ@rQ5pK0~*$6#j5pEQP;iDg5=JsS+S-`5v3Pew}UP70M{J zqub{fJc^lJzf4mcwk2Xf>o^?ceh~Rg3z{H9fDkHyycf8>rHG{YM(;YM0O+7&e>5AqO**#z%z5uz|{Ui!a|N)Hwtf<_oBbpQYDT}yA{ zI1;}1uW0PCfl8AUU+Uj5n8N^jTrBuZJe^p9?S2ig|9vUh={T|E$c`kF7W>i&NK;ag ztap9YTeED=P#?{alkT!o?FhA87;vJrK%KClq|tyV@w6zIbYkM3=rajtpR0*($4u=* zG@DMOfLJ^m<8NrH!Hg?N7sy9=`_!x9Ns(I-*KlVdC-IODR<+rvt{dD;a6g?nGW=Mr zHojW@P%C?E)~fpXtE1v<*J-w6a91?GT_EplGpk4U-k0V2@2A`1p>{h}%Os-+M-Jwc z$3M&RX01utn+x}#`QpKdpA-$=L^C-8A8`tl$=K*4Z;OaQph@yQ-COHI!s_#;`s$Lq zuLEWuy;&uDO8IMjyRO5}agdhfaOPaMJf;DJH^0qW< zMTl!KImdpZ9QqPq1Y>~=%;U_Ck5!O&qFF0e1cTwR3Ffg~rm9wUu^gdEQiCE8|3>8U zfsFQ=(OzFXI^qMF(O&z^$*1bYtc>=$HzA|F#^%t>Xs;RVwHb)yWM{P3!;y^k+A%Vl zUCC&#+j$x7b^Gty&UZ$8-Hv3m*OxDs(Oz@?QM?uDTCEobzO8#V=p={pc11)AQ|~b? zL0OG~G9*BjoPfiHM@TVg5t^=usO_K)mQZx>*WdKt&TNzk^VYT5>3(#2Du2&zzVB)B z``N*?2}psSLATk-_t6M?0qSJdH+xXZLtKv9Pu`a>zA(Ewz+5CxIwm)Q}tuB<2Pb zRt1%~Ahx6#lH=p~G0KE7CC1u~L~9{4dP(zI$&q&E$1PIS%sA}x44V_rNqtT=iSW3l zc=dlLs9ctwiP3CZX*JBHP3qH^m7RcFB}I~qvTx;WNb1w(q~R5qDjO~^s#!=UqXo;EyI7M?S;dq$nRGjXU^lF34V;{tb+NNsg&a%A5US>GgIbs{9}Jwj(;Q_|JeD)`b9oO zr^zKO;f7iXC8Y!?VjSvl2RJP}wOW^~U=x~Lqx%wD8RmBE`XUn-BIjN^g0WSHiyO8h zg%fhbW^ckIjWfp8)^;xG(KZ^9A7 zr!|;CU+?C#W{oVjp7H_&7CLCwoI#01__Lr+IwvI3<#d{L=YbqnW2p%`#5H%d7rXPK z#|PaxGnR7Hld?mZfaUFC`SUzi%F88&U`7T0LeB7|9Px9!`I*BzI?j0HqY7$Z<Bx}V7W&^3CUHg1O6+quo^#bIskoc-3@FIJSD z2AMB~6UcFp2C>>N=Aab303Yl$VGYJqPgrZ0vx4SoJWYy1_-=aqSsU10tG~LTkr6s! z0IHFXu~AFAuuX;MxNISJ%Sy&|5wQ*&R}y-z+dSSAtLaF!o06Ki9Pp$KXSc_qTMa~< zQ(EQC$3@w+cWSo@hVBEh-{xW-bRC9nFWNj^J>gPla2z=aha%oPnwrjl%3}iUZ>q0u znQ#Mwu^KwGHFHReJflGEn)M>vWP7u6Bh87PwHS#~9F6li zhaRt+rS>cFN2rClJ+YjcktzG|B^+~T&)RL{EQEF!d|R#sH>d=zoC31QJ`FMkiJyFEz^ck&Xvki z{^NO4K7r_S?lKhbsl8r1;9HPy5p{>QmCFPhE&Gt*}qBI|pB z3l4(?R=J0232V1G9cHGxbro0C5rj-205w3V=5?fig2a|_TC$>Waym&qVfx&bobyNm zy9ikmt$4i*t!9siHb7gFz#3cSfi`&xRtV6thN!Q5@p4K9!z8)b=zQv^1}0dp z;+u!souzA*u35UilCHOI=~fE^w<;`oTT9sntD)-KaI+hu+G%M$GX*GF21#p;1tn^k z%NZ$%7h+Oy)WLcn#)mGDEt`WiGw;p3H-6r`+1#IQ)v!*6OTAH|hM)G9I-o`okcDAj z5R;s7tfleESvBM9pqYIhteM$oW}lJf$^XVm?Z+-L>ef$f!4WAHXxDTn^aV)HOOVV` zP7ETl6oawLWwrck_j>>S>yOS`^EsTr_KQ)EeE!ru))AI$hB|+D=hXe??w^j)`^9(H zHC8>kW%s-8MmwJy&Yk_$we(Xa<v<{7FP9jCMHT1^ zW#{EIyPwV5z>zOHH@EnA8t<*ITwzRLU}r6`cU1uFzn%`#w#BulXVE^ zK<@zY%otNPAP)^l_ju(s<_nh+R`sQ1)SQXsotMTXalS=GX`$ zKq;z%$dv?Cp&StGm=%Ycu#650m(}NOn8DVXGkD?l_fhDN4$EzBEV9v zi8j2=`QnT;&&L_ZP|?mY-i{(nvjsun`cbXE z)(OgkT3BJhFz3RM{pXVY@}}@@c+?N|>t?L&x!Y_W!wYQk{+zcz4ef5~qNDZQ!f%G# znC+%~HbJ4N9^kH8w-pSH=7vp1jm_cgB$THQU8C3OzRGU>7MN)FcwhZ`2%78ZFwuvO zohOG#i8(W+rGTtAKoz2(h4z3jV~Tpo3x%#S=j@rBIp^#GG|xF_rw}V$A)Ra%X@GJNNRdC*3xfwhJFPcD?*|JHFHpgc|q6t-jZhzxze4?}jI?s=lZO zxafx2a)=fJ8v>TQy1g0ZP;#w-JCBhfP6<3=4oeFGPP_Ym)-n06)nD#iD`AJSpcl8x zVN{ddMrWq+nlRZQZinDgzOLg8>T#XpW=}`t>#pi7SYf3#C3sP13SenL8WarUB3R4} zX&wHUj#cOm73G}k`gf&=xT^yz!C48*O4#!+hvlc|rlg^^l(Z*?bYB^D4}tb~Pz$Z5 zuS(!WtHW1qXFdh#_R0zFMOk-iQ>Da#`PAr3ga)=rr7ktqq#!)GT-z-iX!{9n2kK}K zYdxpzwy)J0#BM-Q?yDhM0maVXhS{;#+mcp{^Gvr&ZfP1pLd$wnt<xHf0IXkadv z&Zo%o_|=4dSdqo4rpOz)-;Gh+*dsxL|2%}HZC|0eB2OvYTTDi%o!P5p&IfO z2kNaBW(_sG>UqiJUz<#a#XoJg_gF^xc1K&)mewCWs?`Q6f8^u)+jOnJhc{@^3S~*V zoj!yRZJF1AdC;gRvmPYz4!p6BDPb{j!&!2D!Gd?+I1m#WhM#=cAKlU5Uu$#c9@KyL Z%LvE~x@m&K|NHQt{{zrOW&b@j1_0Pbj1&L> diff --git a/pkg/internal/cyberark/dataupload/testdata/example-1/snapshot.json.gz b/pkg/internal/cyberark/dataupload/testdata/example-1/snapshot.json.gz index 809c40e6c0658674448006d982f0e561feff1ed0..506a30581f129701e96584477cc242529fd63874 100644 GIT binary patch literal 26979 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%0DL&PaAyJYcBjg^b9JP&riA8W) z2?$oZzYAXyQiB(W=JA)(q6LMLLk^DiS}D_Ha}`?-zwQ5vJ8!) z4346FF-8`>0OXS8#1)y|6Lz)f@7N4ga(%KwBNM6f)oF)b-8kEX<#Ss9RcVz5Gp6i7Vx~&+Ki5iC51kzz`0%_F$j=~!>PSzoo?*3KZc}Im z?IU=pR<5N=UIYU?ItxfyfJ;JwO+1Q_rN|P8Ay;)c(6Ozm!TEc#R(Dk~uZdK0QY^1| z&F5FjYd+XGisY{_D+gJn5YlF|PS3OSXH~ge6{kczbIJ$n!2}|}>=`)jG@y?hrOlqj zzMI?YGoWLYR(g=BfPNp2!e&d`l%M7eTk1+8#av9;MS|eH0@Ob5{96smWo@zujNCv# z9;)f@SfVPqeorpKmk=pWn^}OTO%2TBQn`<~5NanZ+DQ(GJ^=|OAb3eKrYKeK=IA}4 zLkm(zu$1|$i%DTHU^8!ow9j3sAYm-A=z<4|WC3;JK->y&+-oVb<$>v8$WI*(bZmWU zaDK8s;}xv!b`F%cX$^U{m~DQf*dzf|N~}ginF8Y=tYd&OO0d=^NIE-@QU+#*w;<*^ z8#)%Ty6<3;v+>H=c@n=t_*BA;qTn%EYd|aI00Xz+i4#PTVs>Oqz~Py&D?I2rgsQ{+ zdlIj^%CrWWEq*U_=v7T7)xNBU$)wuPHjb2Qk)HBAQfXM(1Qbk21Hu~(XjBBJNr2}{ z`XtfmoQITPJtDVb%~j3iDWh6Cr9*ZL7R#6_dlpKyRl}{5JZ4CI=UQ9kfTFUHV&*CP z$WRW%wceBX+wswxj@&>z(U?~AEKU3aYLUt{an$aLFI$HQsqM@D}sv-gpLI0 z4Fm5r2NHohDGW(FykWujq<1Vo*LXeo!FT5eH@I-}ggf(uXAg@#4Cud~(q>!j7nfX# zD17ujYf#J!K(Z2i$Pt87hNHAvQ{P=jH*jJ^&cbiI|M&m?KL7v#|Nj910RR6<-_i|t G>jVIX5><=< literal 26642 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 From 12839798fdeedd6038646e57a14430389fdb33f1 Mon Sep 17 00:00:00 2001 From: Richard Wall Date: Mon, 11 Aug 2025 07:39:48 +0100 Subject: [PATCH 20/20] Remove obsolete clusteruid package Signed-off-by: Richard Wall --- pkg/agent/run.go | 23 ---------- pkg/clusteruid/clusteruid.go | 45 ------------------- pkg/clusteruid/clusteruid_test.go | 39 ---------------- .../cyberark/dataupload/dataupload.go | 2 - 4 files changed, 109 deletions(-) delete mode 100644 pkg/clusteruid/clusteruid.go delete mode 100644 pkg/clusteruid/clusteruid_test.go diff --git a/pkg/agent/run.go b/pkg/agent/run.go index 62a8552f..4beaeb96 100644 --- a/pkg/agent/run.go +++ b/pkg/agent/run.go @@ -32,7 +32,6 @@ import ( "github.com/jetstack/preflight/api" "github.com/jetstack/preflight/pkg/client" - "github.com/jetstack/preflight/pkg/clusteruid" "github.com/jetstack/preflight/pkg/datagatherer" "github.com/jetstack/preflight/pkg/datagatherer/k8s" "github.com/jetstack/preflight/pkg/internal/cyberark/dataupload" @@ -120,28 +119,6 @@ func Run(cmd *cobra.Command, args []string) (returnErr error) { } } - // We need the cluster UID before we progress further so it can be sent along with other data readings - // TODO(wallrj): Use the k8s-discovery gatherer to get clusterID - { - restCfg, err := kubeconfig.LoadRESTConfig("") - if err != nil { - return err - } - - clientset, err := kubernetes.NewForConfig(restCfg) - if err != nil { - return err - } - - ctx, err = clusteruid.GetClusterUID(ctx, clientset) - if err != nil { - return fmt.Errorf("failed to get cluster UID: %v", err) - } - - clusterUID := clusteruid.ClusterUIDFromContext(ctx) - log.V(logs.Debug).Info("Retrieved cluster UID", "clusterUID", clusterUID) - } - group, gctx := errgroup.WithContext(ctx) defer func() { cancel() diff --git a/pkg/clusteruid/clusteruid.go b/pkg/clusteruid/clusteruid.go deleted file mode 100644 index 2a5327f2..00000000 --- a/pkg/clusteruid/clusteruid.go +++ /dev/null @@ -1,45 +0,0 @@ -package clusteruid - -import ( - "context" - - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/client-go/kubernetes" -) - -// clusterUIDKey is the context key for storing the cluster UID -type clusterUIDKey struct{} - -// GetClusterUID retrieves the UID of the kube-system namespace using the given Kubernetes clientset. -// This UID can be used as a unique identifier for the Kubernetes cluster. -// The UID is stored in the given context for later retrieval; use ClusterUIDFromContext to get it. -func GetClusterUID(ctx context.Context, clientset kubernetes.Interface) (context.Context, error) { - namespace, err := clientset.CoreV1().Namespaces().Get(ctx, "kube-system", metav1.GetOptions{}) - if err != nil { - return ctx, err - } - - ctx = withClusterUID(ctx, string(namespace.ObjectMeta.UID)) - return ctx, nil -} - -// ClusterUIDFromContext retrieves the cluster UID from the context. -// Panics if the value is not found or if the value is not a string. -func ClusterUIDFromContext(ctx context.Context) string { - value := ctx.Value(clusterUIDKey{}) - if value == nil { - panic("cluster UID not found in context") - } - - uid, ok := value.(string) - if !ok { - panic("cluster UID in context is not a string") - } - - return uid -} - -// withClusterUID adds the given cluster UID to the context -func withClusterUID(ctx context.Context, clusterUID string) context.Context { - return context.WithValue(ctx, clusterUIDKey{}, clusterUID) -} diff --git a/pkg/clusteruid/clusteruid_test.go b/pkg/clusteruid/clusteruid_test.go deleted file mode 100644 index 1d1cacae..00000000 --- a/pkg/clusteruid/clusteruid_test.go +++ /dev/null @@ -1,39 +0,0 @@ -package clusteruid - -import ( - "testing" - - corev1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/types" - "k8s.io/client-go/kubernetes/fake" -) - -func TestGetClusterUID(t *testing.T) { - client := fake.NewSimpleClientset() - - mockUID := "12345678-1234-5678-1234-567812345678" - - kubeSystemNS := &corev1.Namespace{ - ObjectMeta: metav1.ObjectMeta{ - Name: "kube-system", - UID: types.UID(mockUID), - }, - } - - _, err := client.CoreV1().Namespaces().Create(t.Context(), kubeSystemNS, metav1.CreateOptions{}) - if err != nil { - t.Fatalf("failed to create kube-system namespace with fake client: %v", err) - } - - ctx, err := GetClusterUID(t.Context(), client) - if err != nil { - t.Fatalf("expected no error, got %v", err) - } - - uid := ClusterUIDFromContext(ctx) - - if uid != mockUID { - t.Fatalf("expected to get uid=%v, but got uid=%v", mockUID, uid) - } -} diff --git a/pkg/internal/cyberark/dataupload/dataupload.go b/pkg/internal/cyberark/dataupload/dataupload.go index f2a3802d..75170ec9 100644 --- a/pkg/internal/cyberark/dataupload/dataupload.go +++ b/pkg/internal/cyberark/dataupload/dataupload.go @@ -176,8 +176,6 @@ func (c *CyberArkClient) PostDataReadingsWithOptions(ctx context.Context, readin if err != nil { return fmt.Errorf("while converting datareadings to Cyberark snapshot format: %s", err) } - // TODO(wallrj): Use the k8s-discovery gatherer to get clusterID - snapshot.ClusterID = opts.ClusterName encodedBody := &bytes.Buffer{} checksum := sha256.New()