diff --git a/assets/neuvector-monitor/neuvector-monitor-102.0.4+up2.6.2.tgz b/assets/neuvector-monitor/neuvector-monitor-102.0.4+up2.6.2.tgz
new file mode 100644
index 0000000000..cdad583118
Binary files /dev/null and b/assets/neuvector-monitor/neuvector-monitor-102.0.4+up2.6.2.tgz differ
diff --git a/charts/neuvector-monitor/102.0.4+up2.6.2/Chart.yaml b/charts/neuvector-monitor/102.0.4+up2.6.2/Chart.yaml
new file mode 100644
index 0000000000..387f47755f
--- /dev/null
+++ b/charts/neuvector-monitor/102.0.4+up2.6.2/Chart.yaml
@@ -0,0 +1,26 @@
+annotations:
+ catalog.cattle.io/certified: rancher
+ catalog.cattle.io/display-name: NeuVector Monitor
+ catalog.cattle.io/kube-version: '>=1.18.0-0 < 1.28.0-0'
+ catalog.cattle.io/namespace: cattle-neuvector-system
+ catalog.cattle.io/os: linux
+ catalog.cattle.io/permit-os: linux
+ catalog.cattle.io/provides-gvr: neuvector.com/v1
+ catalog.cattle.io/rancher-version: '>= 2.7.0-0 < 2.8.0-0'
+ catalog.cattle.io/release-name: neuvector-monitor
+ catalog.cattle.io/type: cluster-tool
+ catalog.cattle.io/upstream-version: 2.6.2
+apiVersion: v1
+appVersion: 5.2.1
+description: Helm feature chart for NeuVector monitor services
+home: https://neuvector.com
+icon: https://avatars2.githubusercontent.com/u/19367275?s=200&v=4
+keywords:
+- security
+maintainers:
+- email: support@neuvector.com
+ name: becitsthere
+name: neuvector-monitor
+sources:
+- https://github.com/neuvector/neuvector
+version: 102.0.4+up2.6.2
diff --git a/charts/neuvector-monitor/102.0.4+up2.6.2/README.md b/charts/neuvector-monitor/102.0.4+up2.6.2/README.md
new file mode 100644
index 0000000000..5d3c4503e2
--- /dev/null
+++ b/charts/neuvector-monitor/102.0.4+up2.6.2/README.md
@@ -0,0 +1,22 @@
+# NeuVector Helm Chart
+
+Helm chart for NeuVector's monitoring services.
+
+## Configuration
+
+The following table lists the configurable parameters of the NeuVector chart and their default values.
+
+Parameter | Description | Default | Notes
+--------- | ----------- | ------- | -----
+`registry` | NeuVector container registry | `registry.neuvector.com` |
+`oem` | OEM release name | `nil` |
+`leastPrivilege` | Assume monitor chart is always installed after the core chart, so service accounts created by the core chart will be used. Keep this value as same as in the core chart. | `false` |
+
+`exporter.enabled` | If true, create Prometheus exporter | `false` |
+`exporter.image.repository` | exporter image name | `neuvector/prometheus-exporter` |
+`exporter.image.tag` | exporter image tag | `latest` |
+`exporter.CTRL_USERNAME` | Username to login to the controller. Suggest to replace the default admin user to a read-only user | `admin` |
+`exporter.CTRL_PASSWORD` | Passowrd to login to the controller. | `admin` |
+
+---
+
diff --git a/charts/neuvector-monitor/102.0.4+up2.6.2/app-readme.md b/charts/neuvector-monitor/102.0.4+up2.6.2/app-readme.md
new file mode 100644
index 0000000000..e0faed5b50
--- /dev/null
+++ b/charts/neuvector-monitor/102.0.4+up2.6.2/app-readme.md
@@ -0,0 +1,5 @@
+### Run-Time Protection Without Compromise
+
+NeuVector delivers a complete run-time security solution with container process/file system protection and vulnerability scanning combined with the only true Layer 7 container firewall. Protect sensitive data with a complete container security platform.
+
+Helm chart for NeuVector's monitoring services. Please make sure REST API service for controller in core chart is enabled.
diff --git a/charts/neuvector-monitor/102.0.4+up2.6.2/dashboards/nv_dashboard.json b/charts/neuvector-monitor/102.0.4+up2.6.2/dashboards/nv_dashboard.json
new file mode 100644
index 0000000000..ad7ce631be
--- /dev/null
+++ b/charts/neuvector-monitor/102.0.4+up2.6.2/dashboards/nv_dashboard.json
@@ -0,0 +1,1828 @@
+{
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": {
+ "type": "datasource",
+ "uid": "grafana"
+ },
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "target": {
+ "limit": 100,
+ "matchAny": false,
+ "tags": [],
+ "type": "dashboard"
+ },
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": true,
+ "fiscalYearStartMonth": 0,
+ "graphTooltip": 0,
+ "links": [],
+ "liveNow": false,
+ "panels": [
+ {
+ "datasource": {
+ "type": "datasource",
+ "uid": "grafana"
+ },
+ "gridPos": {
+ "h": 10,
+ "w": 3,
+ "x": 0,
+ "y": 0
+ },
+ "id": 38,
+ "options": {
+ "content": "
\n \n ![NeuVector Logo](https://avatars.githubusercontent.com/u/19367275?s=200&v=4)
\n
\n [Documentation](https://open-docs.neuvector.com)
\n \n [Users Slack Channel](https://rancher-users.slack.com/archives/C036F6JDZ8C)
\n \n [GitHub](https://github.com/neuvector)\n\n
",
+ "mode": "markdown"
+ },
+ "pluginVersion": "9.1.5",
+ "title": "NeuVector Product Links",
+ "type": "text"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "text": "N/A"
+ }
+ },
+ "type": "special"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "blue",
+ "value": null
+ }
+ ]
+ },
+ "unit": "none"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 3,
+ "y": 0
+ },
+ "id": 25,
+ "links": [],
+ "maxDataPoints": 100,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "mean"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "text": {},
+ "textMode": "auto"
+ },
+ "pluginVersion": "9.1.5",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "exemplar": true,
+ "expr": "nv_summary_enforcers",
+ "format": "time_series",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{target}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Enforcer Replica Count",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "decimals": 3,
+ "mappings": [
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "text": "N/A"
+ }
+ },
+ "type": "special"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "blue",
+ "value": null
+ }
+ ]
+ },
+ "unit": "short"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 6,
+ "y": 0
+ },
+ "id": 8,
+ "links": [],
+ "maxDataPoints": 100,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "text": {},
+ "textMode": "auto"
+ },
+ "pluginVersion": "9.1.5",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "exemplar": true,
+ "expr": "nv_summary_cvedbVersion",
+ "format": "time_series",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{target}}",
+ "refId": "A"
+ }
+ ],
+ "title": "CVE Database Version",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "decimals": 0,
+ "mappings": [
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "text": "N/A"
+ }
+ },
+ "type": "special"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "blue",
+ "value": null
+ }
+ ]
+ },
+ "unit": "short"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 9,
+ "y": 0
+ },
+ "id": 20,
+ "links": [],
+ "maxDataPoints": 1000,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "text": {},
+ "textMode": "auto"
+ },
+ "pluginVersion": "9.1.5",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "exemplar": true,
+ "expr": "nv_summary_pods",
+ "format": "time_series",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{target}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Discovered Pod Count",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "percentunit"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 12,
+ "x": 12,
+ "y": 0
+ },
+ "id": 34,
+ "links": [],
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "desc"
+ }
+ },
+ "pluginVersion": "9.1.5",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "max(nv_controller_cpu) by (display)\n",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{display}}",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "title": "Controller CPU Usage",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "text": "N/A"
+ }
+ },
+ "type": "special"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 1
+ }
+ ]
+ },
+ "unit": "none"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 3,
+ "y": 3
+ },
+ "id": 32,
+ "links": [],
+ "maxDataPoints": 100,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "none",
+ "justifyMode": "center",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "text": {},
+ "textMode": "auto"
+ },
+ "pluginVersion": "9.1.5",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "exemplar": true,
+ "expr": "nv_admission_denied",
+ "format": "time_series",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "A"
+ }
+ ],
+ "title": "Denied Admissions",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "continuous-RdYlGr"
+ },
+ "mappings": [
+ {
+ "options": {
+ "1": {
+ "color": "light-orange",
+ "index": 1
+ },
+ "2": {
+ "color": "yellow",
+ "index": 2
+ },
+ "3": {
+ "color": "green",
+ "index": 3
+ }
+ },
+ "type": "value"
+ },
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "index": 0,
+ "text": "N/A"
+ }
+ },
+ "type": "special"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "red",
+ "value": null
+ }
+ ]
+ },
+ "unit": "none"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 6,
+ "y": 3
+ },
+ "id": 2,
+ "links": [],
+ "maxDataPoints": 100,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "mean"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "text": {},
+ "textMode": "auto"
+ },
+ "pluginVersion": "9.1.5",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "exemplar": true,
+ "expr": "nv_summary_controllers",
+ "format": "time_series",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{target}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Controller Replicas",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "decimals": 0,
+ "mappings": [
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "text": "N/A"
+ }
+ },
+ "type": "special"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 1
+ }
+ ]
+ },
+ "unit": "none"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 9,
+ "y": 3
+ },
+ "id": 19,
+ "links": [],
+ "maxDataPoints": 100,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "center",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "text": {},
+ "textMode": "value"
+ },
+ "pluginVersion": "9.1.5",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "exemplar": true,
+ "expr": "nv_summary_disconnectedEnforcers",
+ "format": "time_series",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{target}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Disconnected Enforcers",
+ "type": "stat"
+ },
+ {
+ "columns": [
+ {
+ "text": "Current",
+ "value": "current"
+ }
+ ],
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "custom": {
+ "align": "center",
+ "displayMode": "auto",
+ "filterable": false,
+ "inspect": false,
+ "width": 300
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ },
+ "unit": "string"
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "log"
+ },
+ "properties": [
+ {
+ "id": "custom.width",
+ "value": 101
+ },
+ {
+ "id": "custom.displayMode",
+ "value": "color-text"
+ },
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "light-orange",
+ "mode": "fixed"
+ }
+ },
+ {
+ "id": "displayName",
+ "value": "Event Type"
+ },
+ {
+ "id": "custom.filterable",
+ "value": true
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "name"
+ },
+ "properties": [
+ {
+ "id": "custom.filterable",
+ "value": true
+ },
+ {
+ "id": "displayName",
+ "value": "Violation Type"
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Last seen"
+ },
+ "properties": [
+ {
+ "id": "unit",
+ "value": "dateTimeAsIso"
+ },
+ {
+ "id": "custom.width",
+ "value": 200
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "fromname"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Source Pod"
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "toname"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Destination Pod"
+ }
+ ]
+ }
+ ]
+ },
+ "fontSize": "90%",
+ "gridPos": {
+ "h": 8,
+ "w": 9,
+ "x": 3,
+ "y": 6
+ },
+ "id": 29,
+ "links": [],
+ "options": {
+ "footer": {
+ "enablePagination": true,
+ "fields": "",
+ "reducer": [
+ "sum"
+ ],
+ "show": false
+ },
+ "showHeader": true,
+ "sortBy": [
+ {
+ "desc": true,
+ "displayName": "Last seen"
+ }
+ ]
+ },
+ "pluginVersion": "9.1.5",
+ "scroll": true,
+ "showHeader": true,
+ "sort": {
+ "col": 1,
+ "desc": true
+ },
+ "styles": [
+ {
+ "alias": "Event",
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm",
+ "decimals": 2,
+ "link": false,
+ "mappingType": 1,
+ "pattern": "Metric",
+ "preserveFormat": false,
+ "sanitize": true,
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ },
+ {
+ "alias": "Time",
+ "colorMode": "value",
+ "colors": [
+ "#E0B400",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 0,
+ "pattern": "Current",
+ "thresholds": [],
+ "type": "number",
+ "unit": "dateTimeAsIso"
+ }
+ ],
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "nv_log_events",
+ "format": "time_series",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "range": false,
+ "refId": "A"
+ }
+ ],
+ "title": "Security Event Log",
+ "transform": "timeseries_aggregations",
+ "transformations": [
+ {
+ "id": "labelsToFields",
+ "options": {}
+ },
+ {
+ "id": "merge",
+ "options": {}
+ },
+ {
+ "id": "organize",
+ "options": {
+ "excludeByName": {
+ "Time": true,
+ "endpoint": true,
+ "fromns": true,
+ "id": true,
+ "instance": true,
+ "job": true,
+ "namespace": true,
+ "pod": true,
+ "service": true,
+ "target": true,
+ "tons": true
+ },
+ "indexByName": {
+ "Time": 0,
+ "Value": 14,
+ "endpoint": 1,
+ "fromname": 7,
+ "fromns": 15,
+ "id": 2,
+ "instance": 3,
+ "job": 4,
+ "log": 5,
+ "name": 6,
+ "namespace": 8,
+ "pod": 9,
+ "service": 10,
+ "target": 11,
+ "toname": 12,
+ "tons": 13
+ },
+ "renameByName": {}
+ }
+ },
+ {
+ "id": "groupBy",
+ "options": {
+ "fields": {
+ "Value": {
+ "aggregations": [
+ "max"
+ ],
+ "operation": "aggregate"
+ },
+ "fromname": {
+ "aggregations": [],
+ "operation": "groupby"
+ },
+ "log": {
+ "aggregations": [],
+ "operation": "groupby"
+ },
+ "name": {
+ "aggregations": [],
+ "operation": "groupby"
+ },
+ "toname": {
+ "aggregations": [],
+ "operation": "groupby"
+ }
+ }
+ }
+ },
+ {
+ "id": "organize",
+ "options": {
+ "excludeByName": {},
+ "indexByName": {},
+ "renameByName": {
+ "Value (lastNotNull)": "Last seen",
+ "Value (max)": "Last seen"
+ }
+ }
+ }
+ ],
+ "type": "table"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "left",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "bytes"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 12,
+ "x": 12,
+ "y": 6
+ },
+ "id": 12,
+ "links": [],
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "desc"
+ }
+ },
+ "pluginVersion": "9.1.5",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "max(nv_controller_memory) by (display)",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{display}}",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "title": "Controller Memory Usage",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ }
+ },
+ "mappings": [],
+ "unit": "none"
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value #A"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "High"
+ },
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "red",
+ "mode": "fixed"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value #B"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Medium"
+ },
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "light-orange",
+ "mode": "fixed"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 14,
+ "w": 3,
+ "x": 0,
+ "y": 10
+ },
+ "id": 24,
+ "links": [],
+ "options": {
+ "displayLabels": [
+ "value"
+ ],
+ "legend": {
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true,
+ "values": []
+ },
+ "pieType": "pie",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "tooltip": {
+ "mode": "none",
+ "sort": "none"
+ }
+ },
+ "pluginVersion": "9.1.5",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "expr": "sum(nv_container_vulnerabilityHigh) by (service)",
+ "format": "table",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "",
+ "refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "expr": "sum(nv_container_vulnerabilityMedium) by (service)",
+ "format": "table",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "",
+ "refId": "B"
+ }
+ ],
+ "title": "Cluster CVE Count",
+ "transformations": [
+ {
+ "id": "merge",
+ "options": {
+ "reducers": []
+ }
+ },
+ {
+ "id": "organize",
+ "options": {
+ "excludeByName": {
+ "Time": true
+ },
+ "indexByName": {},
+ "renameByName": {}
+ }
+ }
+ ],
+ "type": "piechart"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "fill": 0,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 6,
+ "w": 12,
+ "x": 12,
+ "y": 12
+ },
+ "hiddenSeries": false,
+ "id": 10,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "hideEmpty": true,
+ "hideZero": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "9.1.5",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "exemplar": true,
+ "expr": "max(nv_enforcer_cpu) by (display)\n",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{display}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Enforcer CPU Usage",
+ "tooltip": {
+ "shared": true,
+ "sort": 2,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:865",
+ "format": "percentunit",
+ "logBase": 1,
+ "show": true
+ },
+ {
+ "$$hashKey": "object:866",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "custom": {
+ "align": "center",
+ "displayMode": "auto",
+ "inspect": false,
+ "width": 101
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "exported_service"
+ },
+ "properties": [
+ {
+ "id": "custom.filterable",
+ "value": true
+ },
+ {
+ "id": "displayName",
+ "value": "Cluster Service Name"
+ },
+ {
+ "id": "custom.inspect",
+ "value": true
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value #A"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "High"
+ },
+ {
+ "id": "thresholds",
+ "value": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 1
+ }
+ ]
+ }
+ },
+ {
+ "id": "custom.displayMode",
+ "value": "color-text"
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value #B"
+ },
+ "properties": [
+ {
+ "id": "custom.displayMode",
+ "value": "color-text"
+ },
+ {
+ "id": "displayName",
+ "value": "Medium"
+ },
+ {
+ "id": "thresholds",
+ "value": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "light-orange",
+ "value": 1
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "exported_service"
+ },
+ "properties": [
+ {
+ "id": "custom.width",
+ "value": 300
+ },
+ {
+ "id": "custom.align",
+ "value": "right"
+ },
+ {
+ "id": "displayName",
+ "value": "Cluster Service Name"
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 10,
+ "w": 4,
+ "x": 3,
+ "y": 14
+ },
+ "id": 36,
+ "links": [],
+ "options": {
+ "footer": {
+ "enablePagination": true,
+ "fields": "",
+ "reducer": [
+ "sum"
+ ],
+ "show": false
+ },
+ "showHeader": true,
+ "sortBy": []
+ },
+ "pluginVersion": "9.1.5",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "editorMode": "code",
+ "expr": "sum(nv_container_vulnerabilityHigh) by (exported_service)",
+ "format": "table",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "editorMode": "code",
+ "expr": "sum(nv_container_vulnerabilityMedium) by (exported_service)",
+ "format": "table",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "B"
+ }
+ ],
+ "title": "Vulnerabilities by Service",
+ "transformations": [
+ {
+ "id": "merge",
+ "options": {
+ "reducers": []
+ }
+ },
+ {
+ "id": "organize",
+ "options": {
+ "excludeByName": {
+ "Time": true
+ },
+ "indexByName": {},
+ "renameByName": {}
+ }
+ }
+ ],
+ "type": "table"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "custom": {
+ "align": "center",
+ "displayMode": "auto",
+ "filterable": false,
+ "inspect": false,
+ "minWidth": 50
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "name"
+ },
+ "properties": [
+ {
+ "id": "unit",
+ "value": "string"
+ },
+ {
+ "id": "custom.align",
+ "value": "right"
+ },
+ {
+ "id": "custom.inspect",
+ "value": true
+ },
+ {
+ "id": "custom.filterable",
+ "value": true
+ },
+ {
+ "id": "displayName",
+ "value": "Repository/Image: Tag"
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value #A"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "High"
+ },
+ {
+ "id": "unit",
+ "value": "none"
+ },
+ {
+ "id": "custom.displayMode",
+ "value": "color-text"
+ },
+ {
+ "id": "color"
+ },
+ {
+ "id": "thresholds",
+ "value": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 1
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Value #B"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Medium"
+ },
+ {
+ "id": "unit",
+ "value": "none"
+ },
+ {
+ "id": "custom.displayMode",
+ "value": "color-text"
+ },
+ {
+ "id": "thresholds",
+ "value": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "light-orange",
+ "value": 1
+ }
+ ]
+ }
+ },
+ {
+ "id": "color"
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 10,
+ "w": 5,
+ "x": 7,
+ "y": 14
+ },
+ "id": 33,
+ "links": [],
+ "options": {
+ "footer": {
+ "enablePagination": true,
+ "fields": "",
+ "reducer": [
+ "sum"
+ ],
+ "show": false
+ },
+ "showHeader": true
+ },
+ "pluginVersion": "9.1.5",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "expr": "sum(nv_image_vulnerabilityHigh) by (name)",
+ "format": "table",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "",
+ "refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "expr": "sum(nv_image_vulnerabilityMedium) by (name)",
+ "format": "table",
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "",
+ "refId": "B"
+ }
+ ],
+ "title": "Registry Images Vulnerabilities",
+ "transformations": [
+ {
+ "id": "merge",
+ "options": {
+ "reducers": []
+ }
+ },
+ {
+ "id": "organize",
+ "options": {
+ "excludeByName": {
+ "Time": true
+ },
+ "indexByName": {},
+ "renameByName": {}
+ }
+ }
+ ],
+ "type": "table"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "fill": 0,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 6,
+ "w": 12,
+ "x": 12,
+ "y": 18
+ },
+ "hiddenSeries": false,
+ "id": 35,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "hideEmpty": true,
+ "hideZero": true,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "9.1.5",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "prometheus"
+ },
+ "exemplar": true,
+ "expr": "max(nv_enforcer_memory) by (display)",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{display}}",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Enforcer Memory Usage",
+ "tooltip": {
+ "shared": true,
+ "sort": 2,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:940",
+ "format": "bytes",
+ "logBase": 1,
+ "show": true
+ },
+ {
+ "$$hashKey": "object:941",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ }
+ ],
+ "refresh": "15s",
+ "schemaVersion": 37,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": []
+ },
+ "time": {
+ "from": "now-5m",
+ "to": "now"
+ },
+ "timepicker": {
+ "hidden": false,
+ "refresh_intervals": [
+ "5s",
+ "10s",
+ "15s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h"
+ ],
+ "time_options": [
+ "5m",
+ "15m",
+ "1h",
+ "6h",
+ "12h",
+ "24h",
+ "2d",
+ "7d",
+ "30d"
+ ]
+ },
+ "timezone": "UTC",
+ "title": "NeuVector",
+ "uid": "nv_dashboard0001",
+ "version": 2,
+ "weekStart": ""
+}
diff --git a/charts/neuvector-monitor/102.0.4+up2.6.2/questions.yaml b/charts/neuvector-monitor/102.0.4+up2.6.2/questions.yaml
new file mode 100644
index 0000000000..b8d51b3791
--- /dev/null
+++ b/charts/neuvector-monitor/102.0.4+up2.6.2/questions.yaml
@@ -0,0 +1,27 @@
+questions:
+#monitor configurations
+- variable: exporter.image.repository
+ default: "neuvector/prometheus-exporter"
+ description: exporter image repository
+ type: string
+ label: Exporter Image Path
+ group: "Container Images"
+- variable: exporter.image.tag
+ default: ""
+ description: image tag for exporter
+ type: string
+ label: exporter Image Tag
+ group: "Container Images"
+#controller crendential configuration
+- variable: exporter.CTRL_USERNAME
+ default: "admin"
+ description: Controller Username
+ type: string
+ label: Controller Username
+ group: "Controller Crendential"
+- variable: exporter.CTRL_PASSWORD
+ default: "admin"
+ description: Controller Password
+ type: string
+ label: Controller Password
+ group: "Controller Crendential"
diff --git a/charts/neuvector-monitor/102.0.4+up2.6.2/templates/_helpers.tpl b/charts/neuvector-monitor/102.0.4+up2.6.2/templates/_helpers.tpl
new file mode 100644
index 0000000000..5d21a18241
--- /dev/null
+++ b/charts/neuvector-monitor/102.0.4+up2.6.2/templates/_helpers.tpl
@@ -0,0 +1,40 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "neuvector.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "neuvector.fullname" -}}
+{{- if .Values.fullnameOverride -}}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- $name := default .Chart.Name .Values.nameOverride -}}
+{{- if contains $name .Release.Name -}}
+{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "neuvector.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{- define "system_default_registry" -}}
+{{- if .Values.global.cattle.systemDefaultRegistry -}}
+{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}}
+{{- else -}}
+{{- "" -}}
+{{- end -}}
+{{- end -}}
diff --git a/charts/neuvector-monitor/102.0.4+up2.6.2/templates/dashboard.yaml b/charts/neuvector-monitor/102.0.4+up2.6.2/templates/dashboard.yaml
new file mode 100644
index 0000000000..72c5d9f709
--- /dev/null
+++ b/charts/neuvector-monitor/102.0.4+up2.6.2/templates/dashboard.yaml
@@ -0,0 +1,15 @@
+{{- if .Values.exporter.grafanaDashboard.enabled }}
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: nv-grafana-dashboard
+ namespace: {{ .Values.exporter.grafanaDashboard.namespace | default .Release.Namespace }}
+ labels:
+ grafana_dashboard: "1"
+{{- if .Values.exporter.grafanaDashboard.labels }}
+ {{- toYaml .Values.exporter.grafanaDashboard.labels | nindent 4}}
+{{- end }}
+data:
+ nv_dashboard.json: |
+{{ .Files.Get "dashboards/nv_dashboard.json" | indent 4 }}
+{{- end }}
diff --git a/charts/neuvector-monitor/102.0.4+up2.6.2/templates/exporter-deployment.yaml b/charts/neuvector-monitor/102.0.4+up2.6.2/templates/exporter-deployment.yaml
new file mode 100644
index 0000000000..5353c05a6a
--- /dev/null
+++ b/charts/neuvector-monitor/102.0.4+up2.6.2/templates/exporter-deployment.yaml
@@ -0,0 +1,56 @@
+{{- if .Values.exporter.enabled -}}
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: neuvector-prometheus-exporter-pod
+ namespace: {{ .Release.Namespace }}
+ labels:
+ chart: {{ template "neuvector.chart" . }}
+ release: {{ .Release.Name }}
+ heritage: {{ .Release.Service }}
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: neuvector-prometheus-exporter-pod
+ template:
+ metadata:
+ annotations:
+ prometheus.io/path: /metrics
+ prometheus.io/port: "8068"
+ prometheus.io/scrape: "true"
+ checksum/secret: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }}
+ labels:
+ app: neuvector-prometheus-exporter-pod
+ release: {{ .Release.Name }}
+ spec:
+ {{- if .Values.imagePullSecrets }}
+ imagePullSecrets:
+ - name: {{ .Values.imagePullSecrets }}
+ {{- end }}
+ {{- if .Values.leastPrivilege }}
+ serviceAccountName: basic
+ serviceAccount: basic
+ {{- end }}
+ containers:
+ - name: neuvector-prometheus-exporter-pod
+ {{ if eq .Values.registry "registry.neuvector.com" }}
+ {{ if .Values.oem }}
+ image: "{{ .Values.registry }}/{{ .Values.oem }}/prometheus-exporter:{{ .Values.exporter.image.tag }}"
+ {{- else }}
+ image: "{{ .Values.registry }}/prometheus-exporter:{{ .Values.exporter.image.tag }}"
+ {{- end }}
+ {{- else }}
+ image: {{ template "system_default_registry" . }}{{ .Values.exporter.image.repository }}:{{ .Values.exporter.image.tag }}
+ {{- end }}
+ imagePullPolicy: Always
+ env:
+ - name: CTRL_API_SERVICE
+ value: {{ .Values.exporter.apiSvc }}
+ - name: EXPORTER_PORT
+ value: "8068"
+ envFrom:
+ - secretRef:
+ name: neuvector-prometheus-exporter-pod-secret
+ restartPolicy: Always
+{{- end }}
diff --git a/charts/neuvector-monitor/102.0.4+up2.6.2/templates/exporter-service.yaml b/charts/neuvector-monitor/102.0.4+up2.6.2/templates/exporter-service.yaml
new file mode 100644
index 0000000000..b304562709
--- /dev/null
+++ b/charts/neuvector-monitor/102.0.4+up2.6.2/templates/exporter-service.yaml
@@ -0,0 +1,28 @@
+{{- if and .Values.exporter.enabled .Values.exporter.svc.enabled -}}
+apiVersion: v1
+kind: Service
+metadata:
+ name: neuvector-prometheus-exporter
+ namespace: {{ .Release.Namespace }}
+ {{- with .Values.exporter.svc.annotations }}
+ annotations:
+ {{ toYaml . | nindent 4 }}
+ {{- end }}
+ labels:
+ chart: {{ template "neuvector.chart" . }}
+ release: {{ .Release.Name }}
+ heritage: {{ .Release.Service }}
+ app: neuvector-prometheus-exporter
+spec:
+ type: {{ .Values.exporter.svc.type }}
+ {{- if and .Values.exporter.svc.loadBalancerIP (eq .Values.exporter.svc.type "LoadBalancer") }}
+ loadBalancerIP: {{ .Values.exporter.svc.loadBalancerIP }}
+ {{- end }}
+ ports:
+ - port: 8068
+ name: metrics
+ targetPort: 8068
+ protocol: TCP
+ selector:
+ app: neuvector-prometheus-exporter-pod
+{{- end }}
diff --git a/charts/neuvector-monitor/102.0.4+up2.6.2/templates/exporter-servicemonitor.yaml b/charts/neuvector-monitor/102.0.4+up2.6.2/templates/exporter-servicemonitor.yaml
new file mode 100644
index 0000000000..25ca23d121
--- /dev/null
+++ b/charts/neuvector-monitor/102.0.4+up2.6.2/templates/exporter-servicemonitor.yaml
@@ -0,0 +1,39 @@
+{{- if .Values.exporter.serviceMonitor.enabled -}}
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+ name: neuvector-prometheus-exporter
+ namespace: {{ .Release.Namespace }}
+ {{- with .Values.exporter.serviceMonitor.annotations }}
+ annotations:
+ {{ toYaml . | nindent 4 }}
+ {{- end }}
+ labels:
+ chart: {{ template "neuvector.chart" . }}
+ release: {{ .Release.Name }}
+ heritage: {{ .Release.Service }}
+{{- if .Values.exporter.serviceMonitor.labels }}
+ {{- toYaml .Values.exporter.serviceMonitor.labels | nindent 4}}
+{{- end }}
+spec:
+ selector:
+ matchLabels:
+ app: neuvector-prometheus-exporter
+ namespaceSelector:
+ matchNames:
+ - {{ .Release.Namespace }}
+ endpoints:
+ - port: metrics
+ {{- if .Values.exporter.serviceMonitor.interval }}
+ interval: {{ .Values.exporter.serviceMonitor.interval }}
+ {{- end }}
+ path: "/metrics"
+ {{- if .Values.exporter.serviceMonitor.metricRelabelings }}
+ metricRelabelings:
+ {{- toYaml .Values.exporter.serviceMonitor.metricRelabelings | nindent 6 }}
+ {{- end }}
+ {{- if .Values.exporter.serviceMonitor.relabelings }}
+ relabelings:
+ {{- toYaml .Values.exporter.serviceMonitor.relabelings | nindent 6 }}
+ {{- end }}
+{{- end }}
diff --git a/charts/neuvector-monitor/102.0.4+up2.6.2/templates/secret.yaml b/charts/neuvector-monitor/102.0.4+up2.6.2/templates/secret.yaml
new file mode 100644
index 0000000000..9a04ac476d
--- /dev/null
+++ b/charts/neuvector-monitor/102.0.4+up2.6.2/templates/secret.yaml
@@ -0,0 +1,15 @@
+{{- if .Values.exporter.enabled -}}
+apiVersion: v1
+kind: Secret
+metadata:
+ name: neuvector-prometheus-exporter-pod-secret
+ namespace: {{ .Release.Namespace }}
+ labels:
+ chart: {{ template "neuvector.chart" . }}
+ release: {{ .Release.Name }}
+ heritage: {{ .Release.Service }}
+type: Opaque
+data:
+ CTRL_USERNAME: {{ .Values.exporter.CTRL_USERNAME | b64enc | quote }}
+ CTRL_PASSWORD: {{ .Values.exporter.CTRL_PASSWORD | b64enc | quote }}
+{{- end }}
diff --git a/charts/neuvector-monitor/102.0.4+up2.6.2/values.yaml b/charts/neuvector-monitor/102.0.4+up2.6.2/values.yaml
new file mode 100644
index 0000000000..9885e33669
--- /dev/null
+++ b/charts/neuvector-monitor/102.0.4+up2.6.2/values.yaml
@@ -0,0 +1,51 @@
+# Default values for neuvector.
+# This is a YAML-formatted file.
+# Declare variables to be passed into the templates.
+
+global:
+ cattle:
+ systemDefaultRegistry: ""
+
+registry: docker.io
+oem: ''
+leastPrivilege: false
+
+exporter:
+ # If false, exporter will not be installed
+ enabled: true
+ image:
+ repository: rancher/mirrored-neuvector-prometheus-exporter
+ tag: 5.2.1
+ # changes this to a readonly user !
+ CTRL_USERNAME: admin
+ CTRL_PASSWORD: admin
+
+ apiSvc: neuvector-svc-controller-api:10443
+
+ svc:
+ enabled: true
+ type: ClusterIP
+ loadBalancerIP: ''
+ annotations: {}
+ # service.beta.kubernetes.io/azure-load-balancer-internal: "true"
+ # service.beta.kubernetes.io/azure-load-balancer-internal-subnet: "apps-subnet"
+
+ grafanaDashboard:
+ enabled: false
+ namespace: "" # Release namespace, if empty
+ labels: {}
+
+ serviceMonitor:
+ enabled: false
+ # labels for the ServiceMonitor.
+ labels: {}
+ # annotations for the ServiceMonitor.
+ annotations: {}
+ # Scrape interval. If not set, the Prometheus default scrape interval is used.
+ interval: ""
+ # MetricRelabelConfigs to apply to samples after scraping, but before ingestion.
+ # ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig
+ metricRelabelings: []
+ # RelabelConfigs to apply to samples before scraping
+ # ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig
+ relabelings: []
diff --git a/index.yaml b/index.yaml
index 12141f492e..6af4579e3c 100755
--- a/index.yaml
+++ b/index.yaml
@@ -4281,6 +4281,36 @@ entries:
- assets/neuvector-crd/neuvector-crd-100.0.0+up2.2.0.tgz
version: 100.0.0+up2.2.0
neuvector-monitor:
+ - annotations:
+ catalog.cattle.io/certified: rancher
+ catalog.cattle.io/display-name: NeuVector Monitor
+ catalog.cattle.io/kube-version: '>=1.18.0-0 < 1.28.0-0'
+ catalog.cattle.io/namespace: cattle-neuvector-system
+ catalog.cattle.io/os: linux
+ catalog.cattle.io/permit-os: linux
+ catalog.cattle.io/provides-gvr: neuvector.com/v1
+ catalog.cattle.io/rancher-version: '>= 2.7.0-0 < 2.8.0-0'
+ catalog.cattle.io/release-name: neuvector-monitor
+ catalog.cattle.io/type: cluster-tool
+ catalog.cattle.io/upstream-version: 2.6.2
+ apiVersion: v1
+ appVersion: 5.2.1
+ created: "2023-08-25T15:24:42.821007802-07:00"
+ description: Helm feature chart for NeuVector monitor services
+ digest: 556987f92462d53a1c1a8906d6d13e6d3fef501c7a2d59b31fa7ae13eca57d9c
+ home: https://neuvector.com
+ icon: https://avatars2.githubusercontent.com/u/19367275?s=200&v=4
+ keywords:
+ - security
+ maintainers:
+ - email: support@neuvector.com
+ name: becitsthere
+ name: neuvector-monitor
+ sources:
+ - https://github.com/neuvector/neuvector
+ urls:
+ - assets/neuvector-monitor/neuvector-monitor-102.0.4+up2.6.2.tgz
+ version: 102.0.4+up2.6.2
- annotations:
catalog.cattle.io/certified: rancher
catalog.cattle.io/display-name: NeuVector Monitor