From 5bc4a79bd6e17458a7c8bf1953a13e76d28bbb89 Mon Sep 17 00:00:00 2001 From: Julien Pinsonneau Date: Fri, 8 Nov 2024 11:46:10 +0100 Subject: [PATCH 1/3] add scopes config --- controllers/consoleplugin/config/config.go | 26 ++-- .../config/static-frontend-config.yaml | 115 ++++++++++++++++++ .../consoleplugin/consoleplugin_test.go | 1 + 3 files changed, 135 insertions(+), 7 deletions(-) diff --git a/controllers/consoleplugin/config/config.go b/controllers/consoleplugin/config/config.go index 9d4b450f1..83dc26c22 100644 --- a/controllers/consoleplugin/config/config.go +++ b/controllers/consoleplugin/config/config.go @@ -87,6 +87,18 @@ type FilterConfig struct { Placeholder string `yaml:"placeholder,omitempty" json:"placeholder,omitempty"` } +type ScopeConfig struct { + ID string `yaml:"id" json:"id"` + Name string `yaml:"name" json:"name"` + ShortName string `yaml:"shortName" json:"shortName"` + Description string `yaml:"description" json:"description"` + Labels []string `yaml:"labels" json:"labels"` + Feature string `yaml:"feature,omitempty" json:"feature,omitempty"` + Groups []string `yaml:"groups,omitempty" json:"groups,omitempty"` + Filter string `yaml:"filter,omitempty" json:"filter,omitempty"` + Filters []string `yaml:"filters,omitempty" json:"filters,omitempty"` +} + type FieldConfig struct { Name string `yaml:"name" json:"name"` Type string `yaml:"type" json:"type"` @@ -101,17 +113,17 @@ type Deduper struct { } type FrontendConfig struct { - RecordTypes []api.ConnTrackOutputRecordTypeEnum `yaml:"recordTypes" json:"recordTypes"` - Columns []ColumnConfig `yaml:"columns" json:"columns"` - Sampling int `yaml:"sampling" json:"sampling"` - Features []string `yaml:"features" json:"features"` - Deduper Deduper `yaml:"deduper" json:"deduper"` - Fields []FieldConfig `yaml:"fields" json:"fields"` - + RecordTypes []api.ConnTrackOutputRecordTypeEnum `yaml:"recordTypes" json:"recordTypes"` PortNaming flowslatest.ConsolePluginPortConfig `yaml:"portNaming,omitempty" json:"portNaming,omitempty"` + Columns []ColumnConfig `yaml:"columns" json:"columns"` Filters []FilterConfig `yaml:"filters,omitempty" json:"filters,omitempty"` + Scopes []ScopeConfig `yaml:"scopes" json:"scopes"` QuickFilters []flowslatest.QuickFilter `yaml:"quickFilters,omitempty" json:"quickFilters,omitempty"` AlertNamespaces []string `yaml:"alertNamespaces,omitempty" json:"alertNamespaces,omitempty"` + Sampling int `yaml:"sampling" json:"sampling"` + Features []string `yaml:"features" json:"features"` + Deduper Deduper `yaml:"deduper" json:"deduper"` + Fields []FieldConfig `yaml:"fields" json:"fields"` } type PluginConfig struct { diff --git a/controllers/consoleplugin/config/static-frontend-config.yaml b/controllers/consoleplugin/config/static-frontend-config.yaml index 83b64b504..778c7fd62 100644 --- a/controllers/consoleplugin/config/static-frontend-config.yaml +++ b/controllers/consoleplugin/config/static-frontend-config.yaml @@ -904,6 +904,121 @@ filters: name: Network events flow monitoring component: text hint: Specify a single network event. +scopes: + - id: cluster + name: Cluster + shortName: Cl + description: Cluster name or identifier + labels: + - K8S_ClusterName + feature: multiCluster + filter: cluster_name + - id: zone + name: Zone + shortName: AZ + description: Availability zone + labels: + - SrcK8S_Zone + - DstK8S_Zone + feature: zones + groups: + - clusters + filters: + - src_zone + - dst_zone + - id: host + name: Node + description: Node on which the resources are running + labels: + - SrcK8S_HostName + - DstK8S_HostName + groups: + - clusters + - zones + - clusters+zones + filters: + - src_host_name + - dst_host_name + - id: namespace + name: Namespace + shortName: NS + description: Resource namespace + labels: + - SrcK8S_Namespace + - DstK8S_Namespace + groups: + - clusters + - clusters+zones + - clusters+hosts + - zones + - zones+hosts + - hosts + filters: + - src_namespace + - dst_namespace + - id: owner + name: Owner + shortName: Own + description: Controller owner, such as a Deployment + labels: + - SrcK8S_OwnerName + - SrcK8S_OwnerType + - DstK8S_OwnerName + - DstK8S_OwnerType + - SrcK8S_Namespace + - DstK8S_Namespace + groups: + - clusters + - clusters+zones + - clusters+hosts + - clusters+namespaces + - zones + - zones+hosts + - zones+namespaces + - hosts + - hosts+namespaces + - namespaces + filters: + - src_owner_name + - dst_owner_name + - id: resource + name: Resource + shortName: Res + description: Base resource, such as a Pod, a Service or a Node + labels: + - SrcK8S_Name + - SrcK8S_Type + - SrcK8S_OwnerName + - SrcK8S_OwnerType + - SrcK8S_Namespace + - SrcAddr + - SrcK8S_HostName + - DstK8S_Name + - DstK8S_Type + - DstK8S_OwnerName + - DstK8S_OwnerType + - DstK8S_Namespace + - DstAddr + - DstK8S_HostName + groups: + - clusters + - clusters+zones + - clusters+hosts + - clusters+namespaces + - clusters+owners + - zones + - zones+hosts + - zones+namespaces + - zones+owners + - hosts + - hosts+namespaces + - hosts+owners + - namespaces + - namespaces+owners + - owners + filters: + - src_resource + - dst_resource # Fields definition, used to generate documentation fields: - name: TimeFlowStartMs diff --git a/controllers/consoleplugin/consoleplugin_test.go b/controllers/consoleplugin/consoleplugin_test.go index 2c463ac71..9db9822fd 100644 --- a/controllers/consoleplugin/consoleplugin_test.go +++ b/controllers/consoleplugin/consoleplugin_test.go @@ -338,6 +338,7 @@ func TestConfigMapContent(t *testing.T) { assert.Empty(config.Frontend.Features) assert.NotEmpty(config.Frontend.Columns) assert.NotEmpty(config.Frontend.Filters) + assert.NotEmpty(config.Frontend.Scopes) assert.Equal(config.Frontend.Sampling, 1) assert.Equal(config.Frontend.Deduper.Mark, false) assert.Equal(config.Frontend.Deduper.Merge, true) From 557da1fb72d270e4b21adba5550b639f4edfd29c Mon Sep 17 00:00:00 2001 From: Julien Pinsonneau <91894519+jpinsonneau@users.noreply.github.com> Date: Fri, 8 Nov 2024 14:46:56 +0100 Subject: [PATCH 2/3] Update controllers/consoleplugin/config/static-frontend-config.yaml Co-authored-by: Joel Takvorian --- controllers/consoleplugin/config/static-frontend-config.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/controllers/consoleplugin/config/static-frontend-config.yaml b/controllers/consoleplugin/config/static-frontend-config.yaml index 778c7fd62..c173242b9 100644 --- a/controllers/consoleplugin/config/static-frontend-config.yaml +++ b/controllers/consoleplugin/config/static-frontend-config.yaml @@ -928,6 +928,7 @@ scopes: - dst_zone - id: host name: Node + shortName: Node description: Node on which the resources are running labels: - SrcK8S_HostName From 98241aefb42d31c4cf25ace20bcc651c307b5222 Mon Sep 17 00:00:00 2001 From: Julien Pinsonneau Date: Tue, 12 Nov 2024 12:57:17 +0100 Subject: [PATCH 3/3] step into --- controllers/consoleplugin/config/config.go | 1 + controllers/consoleplugin/config/static-frontend-config.yaml | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/controllers/consoleplugin/config/config.go b/controllers/consoleplugin/config/config.go index 83dc26c22..e16e800d9 100644 --- a/controllers/consoleplugin/config/config.go +++ b/controllers/consoleplugin/config/config.go @@ -97,6 +97,7 @@ type ScopeConfig struct { Groups []string `yaml:"groups,omitempty" json:"groups,omitempty"` Filter string `yaml:"filter,omitempty" json:"filter,omitempty"` Filters []string `yaml:"filters,omitempty" json:"filters,omitempty"` + StepInto string `yaml:"stepInto,omitempty" json:"stepInto,omitempty"` } type FieldConfig struct { diff --git a/controllers/consoleplugin/config/static-frontend-config.yaml b/controllers/consoleplugin/config/static-frontend-config.yaml index c173242b9..a7792e978 100644 --- a/controllers/consoleplugin/config/static-frontend-config.yaml +++ b/controllers/consoleplugin/config/static-frontend-config.yaml @@ -913,6 +913,7 @@ scopes: - K8S_ClusterName feature: multiCluster filter: cluster_name + stepInto: zone - id: zone name: Zone shortName: AZ @@ -926,6 +927,7 @@ scopes: filters: - src_zone - dst_zone + stepInto: host - id: host name: Node shortName: Node @@ -940,6 +942,7 @@ scopes: filters: - src_host_name - dst_host_name + stepInto: resource - id: namespace name: Namespace shortName: NS @@ -957,6 +960,7 @@ scopes: filters: - src_namespace - dst_namespace + stepInto: owner - id: owner name: Owner shortName: Own @@ -982,6 +986,7 @@ scopes: filters: - src_owner_name - dst_owner_name + stepInto: resource - id: resource name: Resource shortName: Res