From 1b3a2eb9a3ccc5e8b82686943e3b3a8a57980007 Mon Sep 17 00:00:00 2001 From: hebestreit Date: Sun, 6 Oct 2024 22:25:09 +0200 Subject: [PATCH] feat: added basic metrics to track pod image ages over time and highlight namespaces to updated --- Makefile | 7 +- README.md | 51 +- .../dashboards/pod-image-aging.json | 484 ++++++++++++++++++ .../templates/clusterrole.yaml | 9 + .../templates/configmap-dashboards.yaml | 21 + .../pod-image-aging/templates/deployment.yaml | 10 + charts/pod-image-aging/templates/service.yaml | 6 + .../templates/servicemonitor.yaml | 31 ++ charts/pod-image-aging/values.yaml | 19 +- cmd/main.go | 47 ++ config/rbac/role.yaml | 7 + docs/assets/grafana-dashboard.png | Bin 0 -> 199104 bytes internal/controller/metrics.go | 101 ++++ internal/controller/pod_controller.go | 46 +- internal/controller/utils.go | 70 +++ 15 files changed, 862 insertions(+), 47 deletions(-) create mode 100644 charts/pod-image-aging/dashboards/pod-image-aging.json create mode 100644 charts/pod-image-aging/templates/configmap-dashboards.yaml create mode 100644 charts/pod-image-aging/templates/servicemonitor.yaml create mode 100644 docs/assets/grafana-dashboard.png create mode 100644 internal/controller/metrics.go create mode 100644 internal/controller/utils.go diff --git a/Makefile b/Makefile index 95f27d1..6a37aee 100644 --- a/Makefile +++ b/Makefile @@ -82,7 +82,12 @@ k3d-import: docker-build .PHONY: helm-install helm-install: k3d-import - helm upgrade --install pod-image-aging charts/pod-image-aging --set image.tag="latest" --set dockerAuthSecretName=pod-image-aging-docker-auth + helm upgrade --install pod-image-aging charts/pod-image-aging --set image.tag="latest" --set dockerAuthSecretName=pod-image-aging-docker-auth --set metrics.enabled=true --set metrics.serviceMonitor.enabled=true --set dashboards.enabled=true + +.PHONY: helm-install-monitoring +helm-install-monitoring: + kubectl create namespace monitoring || true + helm upgrade --install -n monitoring kube-prometheus-stack prometheus-community/kube-prometheus-stack --set prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues=false ##@ Build diff --git a/README.md b/README.md index a9a6e7f..fb6f10c 100644 --- a/README.md +++ b/README.md @@ -113,7 +113,9 @@ EOF Create the secret from the above file: ```shell -kubectl -n $NAMESPACE create secret generic pod-image-aging-docker-auth --type=kubernetes.io/dockerconfigjson --from-file=.dockerconfigjson=.dockerconfigjson +kubectl -n $NAMESPACE create secret generic pod-image-aging-docker-auth \ + --type=kubernetes.io/dockerconfigjson \ + --from-file=.dockerconfigjson=.dockerconfigjson ``` ### Install using Helm @@ -151,6 +153,53 @@ NAMESPACE="default" helm uninstall -n $NAMESPACE pod-image-aging ``` +## Metrics + +The `pod-image-aging` controller exposes a few metrics which can be scraped by Prometheus to visualize the image age +over time or to define alerts based on your company's policies. + +Recommended configuration to use with the Prometheus Operator: + +```yaml +metrics: + enabled: true + serviceMonitor: + enabled: true +dashboards: + enabled: true +``` + +You can enable the metrics by setting the `metrics.enabled` property to `true`. + +If enabled the below metrics will be evaluated in an interval of 30 minutes. It's designed in this way to reduce the +load on the Kubernetes API and it's more likely that the pods are less frequently updated. You can change the interval +by setting the `metrics.interval` to a lower or higher value. + +| Metric | Description | Labels | +|------------------------------------|---------------------------------------|----------------------| +| `pod_image_aging_youngest_seconds` | Age of the youngest image in seconds. | `exported_namespace` | +| `pod_image_aging_oldest_seconds` | Age of the oldest image in seconds. | `exported_namespace` | +| `pod_image_aging_average_seconds` | Average age of all images in seconds. | `exported_namespace` | + +### ServiceMonitor + +If you're using the Prometheus Operator +a [ServiceMonitor](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitor) +resource can be created to automatically scrape the metrics by setting `metrics.serviceMonitor.enabled=true`. + +### Grafana Dashboard + +When using the official Grafana Helm chart you can automatically import the dashboard by setting +`dashboards.enabled=true`. This will create a ConfigMap with the dashboard definition which will be imported by the +sidecar container `grafana-sc-dashboard`. + +https://github.com/grafana/helm-charts/tree/main/charts/grafana#sidecar-for-dashboards + +Otherwise if you want to import the file manually take a look inside +the [charts/pod-image-aging/dashboards](charts/pod-image-aging/dashboards) folder for the JSON file. + +![grafana-dashboard](docs/assets/grafana-dashboard.png) + # Development Contributions are welcome! diff --git a/charts/pod-image-aging/dashboards/pod-image-aging.json b/charts/pod-image-aging/dashboards/pod-image-aging.json new file mode 100644 index 0000000..60e19bd --- /dev/null +++ b/charts/pod-image-aging/dashboards/pod-image-aging.json @@ -0,0 +1,484 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "links": [], + "panels": [ + { + "datasource": { + "default": true, + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisGridShow": false, + "axisLabel": "", + "axisPlacement": "auto", + "fillOpacity": 80, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineWidth": 1, + "scaleDistribution": { + "log": 2, + "type": "log" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 0 + }, + "id": 4, + "options": { + "barRadius": 0, + "barWidth": 0.97, + "fullHighlight": false, + "groupWidth": 0.7, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "orientation": "auto", + "showValue": "auto", + "stacking": "none", + "tooltip": { + "mode": "single", + "sort": "none" + }, + "xTickLabelRotation": 0, + "xTickLabelSpacing": 0 + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "exemplar": false, + "expr": "sum by(exported_namespace) (pod_image_aging_average_seconds{exported_namespace=~\"$namespace\"})", + "format": "time_series", + "instant": true, + "interval": "", + "legendFormat": "__auto", + "range": false, + "refId": "A" + } + ], + "title": "Namespaces (average)", + "type": "barchart" + }, + { + "datasource": { + "default": true, + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 0 + }, + "id": 3, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "showHeader": true, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "sum by (exported_namespace) (pod_image_aging_youngest_seconds{exported_namespace=~\"$namespace\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{namespace}}", + "range": true, + "refId": "A" + } + ], + "title": "Image Age (average)", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 8 + }, + "id": 1, + "options": { + "legend": { + "calcs": [ + "last" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "showHeader": true, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "sum by (exported_namespace) (pod_image_aging_youngest_seconds{exported_namespace=~\"$namespace\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{pod}}", + "range": true, + "refId": "A" + } + ], + "title": "Image Age (youngest)", + "type": "timeseries" + }, + { + "datasource": { + "default": true, + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 8 + }, + "id": 2, + "options": { + "legend": { + "calcs": [ + "last" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "showHeader": true, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "sum by (exported_namespace) (pod_image_aging_oldest_seconds{exported_namespace=~\"$namespace\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Image Age (oldest)", + "type": "timeseries" + } + ], + "schemaVersion": 39, + "tags": [], + "templating": { + "list": [ + { + "allValue": "", + "current": { + "selected": true, + "text": [ + "kube-system", + "monitoring" + ], + "value": [ + "kube-system", + "monitoring" + ] + }, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "definition": "label_values(pod_image_aging_youngest_seconds,exported_namespace)", + "hide": 0, + "includeAll": true, + "label": "Namespace", + "multi": true, + "name": "namespace", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(pod_image_aging_youngest_seconds,exported_namespace)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "Pod Image Aging", + "uid": "ae02xtemn0mbke", + "version": 4, + "weekStart": "" +} \ No newline at end of file diff --git a/charts/pod-image-aging/templates/clusterrole.yaml b/charts/pod-image-aging/templates/clusterrole.yaml index eca38e6..590bfca 100644 --- a/charts/pod-image-aging/templates/clusterrole.yaml +++ b/charts/pod-image-aging/templates/clusterrole.yaml @@ -5,6 +5,15 @@ metadata: labels: {{- include "pod-image-aging.labels" . | nindent 4 }} rules: + {{- if .Values.metrics.enabled }} + - apiGroups: + - "" + resources: + - namespaces + verbs: + - get + - list + {{ end }} - apiGroups: - "" resources: diff --git a/charts/pod-image-aging/templates/configmap-dashboards.yaml b/charts/pod-image-aging/templates/configmap-dashboards.yaml new file mode 100644 index 0000000..fa02a12 --- /dev/null +++ b/charts/pod-image-aging/templates/configmap-dashboards.yaml @@ -0,0 +1,21 @@ +{{- if .Values.dashboards.enabled -}} +{{ $root := . }} +{{- $namespace := .Values.dashboards.namespace | default $.Release.Namespace }} +{{- $files := .Files }} +{{- range $path, $_ := .Files.Glob "dashboards/*.json" }} +{{ $file := $path | base }} +{{ $name := print ($file | trimSuffix ".json") "-dashboard" }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ $name }} + namespace: {{ $namespace }} + labels: + grafana_dashboard: "1" + {{- include "pod-image-aging.labels" $root | nindent 4 }} +data: + {{ $file }}: |- +{{ $.Files.Get $path | indent 4 }} +--- +{{- end }} +{{- end -}} \ No newline at end of file diff --git a/charts/pod-image-aging/templates/deployment.yaml b/charts/pod-image-aging/templates/deployment.yaml index 26f539d..ac2ff51 100644 --- a/charts/pod-image-aging/templates/deployment.yaml +++ b/charts/pod-image-aging/templates/deployment.yaml @@ -42,10 +42,20 @@ spec: - "--exclude-images={{ .Values.excludeImages }}" - "--cache-expiration={{ .Values.cacheExpiry }}" - "--docker-auth-config-path={{ .Values.dockerAuthConfigPath }}" + {{- if .Values.metrics.enabled }} + - "--metrics-secure={{ .Values.metrics.secure }}" + - "--metrics-bind-address=:{{ .Values.metrics.bindAddress }}" + - "--metrics-interval={{ .Values.metrics.interval }}" + {{- end }} ports: - name: http containerPort: {{ .Values.service.port }} protocol: TCP + {{- if .Values.metrics.enabled }} + - name: metrics + containerPort: {{ .Values.metrics.bindAddress }} + protocol: TCP + {{- end }} livenessProbe: httpGet: path: /healthz diff --git a/charts/pod-image-aging/templates/service.yaml b/charts/pod-image-aging/templates/service.yaml index 64b85d8..132baeb 100644 --- a/charts/pod-image-aging/templates/service.yaml +++ b/charts/pod-image-aging/templates/service.yaml @@ -11,5 +11,11 @@ spec: targetPort: http protocol: TCP name: http + {{- if .Values.metrics.enabled }} + - port: {{ .Values.metrics.bindAddress }} + targetPort: metrics + protocol: TCP + name: metrics + {{- end }} selector: {{- include "pod-image-aging.selectorLabels" . | nindent 4 }} diff --git a/charts/pod-image-aging/templates/servicemonitor.yaml b/charts/pod-image-aging/templates/servicemonitor.yaml new file mode 100644 index 0000000..129acb7 --- /dev/null +++ b/charts/pod-image-aging/templates/servicemonitor.yaml @@ -0,0 +1,31 @@ +{{- if .Values.metrics.serviceMonitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ include "pod-image-aging.fullname" . }} + labels: + {{- include "pod-image-aging.labels" . | nindent 4 }} + {{- if .Values.metrics.serviceMonitor.additionalLabels }} +{{ toYaml .Values.metrics.serviceMonitor.additionalLabels | indent 4 }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.annotations }} + annotations: +{{ toYaml .Values.metrics.serviceMonitor.annotations | indent 4 }} + {{- end }} +spec: + selector: + matchLabels: + {{- include "pod-image-aging.selectorLabels" . | nindent 4 }} + namespaceSelector: + matchNames: + - {{ .Release.Namespace | quote }} + endpoints: + - path: /metrics + port: metrics + {{- if .Values.metrics.serviceMonitor.interval }} + interval: {{ .Values.metrics.serviceMonitor.interval }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.scrapeTimeout }} + scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }} + {{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/pod-image-aging/values.yaml b/charts/pod-image-aging/values.yaml index 7aaf376..f282d77 100644 --- a/charts/pod-image-aging/values.yaml +++ b/charts/pod-image-aging/values.yaml @@ -73,4 +73,21 @@ tolerations: [ ] affinity: { } -terminationGracePeriodSeconds: 10 \ No newline at end of file +terminationGracePeriodSeconds: 10 + +metrics: + enabled: false + secure: "false" + bindAddress: "8080" + interval: "30m" + + serviceMonitor: + enabled: false + interval: "" + additionalLabels: { } + annotations: { } + # scrapeTimeout: 10s + +dashboards: + enabled: false + namespace: "" \ No newline at end of file diff --git a/cmd/main.go b/cmd/main.go index 9a49f71..0d00a5b 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -17,9 +17,13 @@ limitations under the License. package main import ( + "context" "crypto/tls" "flag" + "github.com/go-logr/logr" + corev1 "k8s.io/api/core/v1" "os" + "sigs.k8s.io/controller-runtime/pkg/client" "time" // Import all Kubernetes client auth plugins (e.g. Azure, GCP, OIDC, etc.) @@ -60,6 +64,7 @@ func main() { var enableHTTP2 bool var tlsOpts []func(*tls.Config) var controllerOpts = &controller.Opts{} + var metricsInterval time.Duration flag.StringVar(&metricsAddr, "metrics-bind-address", "0", "The address the metrics endpoint binds to. Use :8443 for HTTPS or :8080 for HTTP, or leave as 0 to disable the metrics service.") flag.StringVar(&probeAddr, "health-probe-bind-address", ":8081", "The address the probe endpoint binds to.") flag.BoolVar(&enableLeaderElection, "leader-elect", false, "Enable leader election for controller manager. Enabling this will ensure there is only one active controller manager.") @@ -72,6 +77,7 @@ func main() { flag.StringVar(&controllerOpts.ExcludeImagesFilter, "exclude-images", "", "Regular expression to exclude images") flag.DurationVar(&controllerOpts.CacheExpiration, "cache-expiration", 168*time.Hour, "Expiration time for the cache") flag.StringVar(&controllerOpts.DockerAuthConfigPath, "docker-auth-config-path", "", "Path to the Docker auth config") + flag.DurationVar(&metricsInterval, "metrics-interval", 30*time.Minute, "Interval to update the metrics") opts := zap.Options{ Development: true, @@ -170,9 +176,50 @@ func main() { os.Exit(1) } + if metricsAddr != "0" { + // TODO use Runnable instead of goroutine to make sure it's gracefully stopped when the manager stops + metricsClient, err := client.New(ctrl.GetConfigOrDie(), client.Options{}) + if err != nil { + setupLog.Error(err, "unable to create client for metrics") + os.Exit(1) + } + go startMetricsUpdater(metricsClient, ctrl.Log.WithName("metrics"), metricsInterval) + } + setupLog.Info("starting manager") if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil { setupLog.Error(err, "problem running manager") os.Exit(1) } } + +// startMetricsUpdater runs a periodic job to update the custom metrics +func startMetricsUpdater(c client.Client, log logr.Logger, interval time.Duration) { + ticker := time.NewTicker(interval) + defer ticker.Stop() + + for { + // Call the updateMetrics function periodically + log.Info("Updating metrics...") + namespaces := &corev1.NamespaceList{} + err := c.List(context.Background(), namespaces) + if err != nil { + log.Error(err, "failed to list namespaces") + continue + } + + for _, namespace := range namespaces.Items { + if err := controller.UpdateMetrics(c, namespace.Name, log); err != nil { + log.Error(err, "failed to update metrics for namespace", "namespace", namespace.Name) + } + } + + select { + case <-ticker.C: + continue + case <-context.Background().Done(): + log.Info("Metrics updater stopped") + return + } + } +} diff --git a/config/rbac/role.yaml b/config/rbac/role.yaml index 5cf83f7..1ae7ffd 100644 --- a/config/rbac/role.yaml +++ b/config/rbac/role.yaml @@ -4,6 +4,13 @@ kind: ClusterRole metadata: name: manager-role rules: +- apiGroups: + - "" + resources: + - namespaces + verbs: + - get + - list - apiGroups: - "" resources: diff --git a/docs/assets/grafana-dashboard.png b/docs/assets/grafana-dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..782b9b772423b64f4ec1738d32bfa34fee8c4d2d GIT binary patch literal 199104 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
    gqpy(N`c{?*lff=Khxc3>6i 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%0AWu@d9Gy?tiQ;V*N|jxS35ZE`vL zLh<5631CO94%{{r>q>kcd-x3dZQzhWY}?%5{8sE!`tzgP{sQA(Q@Sjkx7cTLf3S%U zs3R=}?Dg$svo)7$0}k4}PzQC?KJvY*-}yKQ-yr+F&69D>3;?@%>!;zH8n|w)8;X1U zeShxDBz!iP-vS0Hcu>Cu%e2Gw)3BL?aI}eqtHBTc{VUgmPFYMqo9oyc`Cwn{^S9M+ z795ZT8}5XreX8h=^JmVKl-;;33z-~PpbbhOsM8wnw>^_3Fn7>jo8*qidx^*2EW+Ue z;LM2quOs}hkVW?aa6ICAts^vOFs43$oyf`8*9YJZ_WFlsYDIBOx@=OinR<4_&?c|3dGws`{tENjVTu^GvyUm!baZE3bRDIj z>Db2K>vq4r`M3XWZa;t7z1<~|PvyarKMZOItEcO|PrErW(|ud)x!vum(BPI@at=J5 zmv8aE;iBk{{jcwOf7*QoY} z@&CfRxmhef!8&|a0i7IKcIrbMbQcU7ho!0#BFbP3!2KoN*QMO`ZxYQ+768Z zh**LRGD+We}>;i^c5UPus7CCLXZjzh zKnw40eFdAwgSc9ve;(8Kz5o0$%&h+&_YRsbpxVEP?bz>)s_tVNaISi8`TLb9;cKWV zw&VSV-+a(K53>l|xO;0=zx%Z{x?`<({D1rD|56lFK578%Oa6HuEm_^uDVYEA&4$aobzl;dd}?pLT8icn;B+Yaw_sGy0mG*J_YGJP3o)a|J-_jHHM(1w tzTf>`%nq6Vg{V8W1UR$Xc-6Y>pZ%wsQL=W&Zh>cgJzf1=);T3K0RT|@H3R?v literal 0 HcmV?d00001 diff --git a/internal/controller/metrics.go b/internal/controller/metrics.go new file mode 100644 index 0000000..7a183ea --- /dev/null +++ b/internal/controller/metrics.go @@ -0,0 +1,101 @@ +package controller + +import ( + "context" + "encoding/json" + "fmt" + "github.com/go-logr/logr" + "github.com/prometheus/client_golang/prometheus" + corev1 "k8s.io/api/core/v1" + "sigs.k8s.io/controller-runtime/pkg/client" + ctrlmetrics "sigs.k8s.io/controller-runtime/pkg/metrics" + "time" +) + +const ( + metricsPrefix = "pod_image_aging" +) + +// Define Prometheus metrics +var ( + oldestImageSeconds = prometheus.NewGaugeVec( + prometheus.GaugeOpts{ + Name: fmt.Sprintf("%s_oldest_seconds", metricsPrefix), + Help: "The number of seconds since the oldest image in the namespace was created", + }, + []string{"namespace"}, + ) + youngestImageSeconds = prometheus.NewGaugeVec( + prometheus.GaugeOpts{ + Name: fmt.Sprintf("%s_youngest_seconds", metricsPrefix), + Help: "The number of seconds since the youngest image in the namespace was created", + }, + []string{"namespace"}, + ) + averageImageSeconds = prometheus.NewGaugeVec( + prometheus.GaugeOpts{ + Name: fmt.Sprintf("%s_average_seconds", metricsPrefix), + Help: "The average number of seconds since the images in the namespace were created", + }, + []string{"namespace"}, + ) +) + +func init() { + ctrlmetrics.Registry.MustRegister(oldestImageSeconds, youngestImageSeconds, averageImageSeconds) +} + +func UpdateMetrics(c client.Client, namespace string, log logr.Logger) error { + pods := &corev1.PodList{} + err := c.List(context.TODO(), pods, client.InNamespace(namespace)) + if err != nil { + log.Error(err, "Failed to list pods") + return err + } + + var imageCreationDates []time.Time + for _, pod := range pods.Items { + if !hasStatusAnnotation(&pod) { + continue + } + + status := &StatusAnnotation{} + if err := json.Unmarshal([]byte(pod.Annotations[getAnnotationKey("status")]), status); err != nil { + return err + } + + for _, container := range status.Containers { + createdDate, err := time.Parse(time.RFC3339, container.CreatedAt) + if err == nil { + imageCreationDates = append(imageCreationDates, createdDate) + } + } + } + + if len(imageCreationDates) > 0 { + now := time.Now() + oldest := now.Sub(imageCreationDates[0]).Seconds() + youngest := oldest + var total float64 + + for _, date := range imageCreationDates { + seconds := now.Sub(date).Seconds() + if seconds > oldest { + oldest = seconds + } + if seconds < youngest { + youngest = seconds + } + total += seconds + } + + avg := total / float64(len(imageCreationDates)) + + // Update the metrics + oldestImageSeconds.WithLabelValues(namespace).Set(oldest) + youngestImageSeconds.WithLabelValues(namespace).Set(youngest) + averageImageSeconds.WithLabelValues(namespace).Set(avg) + } + + return nil +} diff --git a/internal/controller/pod_controller.go b/internal/controller/pod_controller.go index 7fb7f44..34c12cc 100644 --- a/internal/controller/pod_controller.go +++ b/internal/controller/pod_controller.go @@ -28,7 +28,6 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" types2 "k8s.io/apimachinery/pkg/types" - "regexp" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/event" @@ -39,10 +38,6 @@ import ( "time" ) -const ( - domain = "pod-image-aging.hbst.io" -) - // PodReconciler reconciles a Pod object type PodReconciler struct { client.Client @@ -71,6 +66,7 @@ type Container struct { } // +kubebuilder:rbac:groups=core,resources=nodes,verbs=get;list;watch +// +kubebuilder:rbac:groups=core,resources=namespaces,verbs=get;list // +kubebuilder:rbac:groups=core,resources=pods,verbs=get;list;watch;patch // +kubebuilder:rbac:groups=core,resources=pods/status,verbs=get @@ -84,10 +80,7 @@ func (r *PodReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.R return ctrl.Result{}, client.IgnoreNotFound(err) } - if pod.Annotations[getAnnotationKey("status")] != "" || - pod.Annotations[getAnnotationKey("ignore")] == "true" || - pod.ObjectMeta.DeletionTimestamp != nil || - pod.Status.Phase != corev1.PodRunning { + if ignorePod(pod) { return ctrl.Result{}, nil } @@ -233,41 +226,6 @@ func inspectImage(ctx context.Context, container *corev1.ContainerStatus, os, ar return imgInspect, nil } -func getAnnotationKey(path string) string { - return fmt.Sprintf("%s/%s", domain, path) -} - -// wildCardToRegexp converts a wildcard pattern to a regular expression pattern. -func wildCardToRegexp(pattern string) string { - components := strings.Split(pattern, "*") - if len(components) == 1 { - // if len is 1, there are no *'s, return exact match pattern - return "^" + pattern + "$" - } - var result strings.Builder - for i, literal := range components { - - // Replace * with .* - if i > 0 { - result.WriteString(".*") - } - - // Quote any regular expression meta characters in the - // literal text. - result.WriteString(regexp.QuoteMeta(literal)) - } - return "^" + result.String() + "$" -} - -func isImageInWildcardFilter(image string, wildcardFilters []string) bool { - for _, wildcardFilter := range wildcardFilters { - if result, _ := regexp.MatchString(wildCardToRegexp(wildcardFilter), image); result { - return true - } - } - return false -} - func getImageCreatedAt(ctx context.Context, cache *cache.Cache, l logr.Logger, container corev1.ContainerStatus, node corev1.Node, opts *Opts) (*time.Time, error) { imageCreated, found := cache.Get(container.ImageID) if found { diff --git a/internal/controller/utils.go b/internal/controller/utils.go new file mode 100644 index 0000000..92271d8 --- /dev/null +++ b/internal/controller/utils.go @@ -0,0 +1,70 @@ +package controller + +import ( + "fmt" + corev1 "k8s.io/api/core/v1" + "regexp" + "strings" +) + +const ( + domain = "pod-image-aging.hbst.io" +) + +func ignorePod(pod *corev1.Pod) bool { + if hasStatusAnnotation(pod) { + return true + } + + if pod.Annotations[getAnnotationKey("ignore")] == "true" { + return true + } + + if pod.ObjectMeta.DeletionTimestamp != nil { + return true + } + + if pod.Status.Phase != corev1.PodRunning { + return true + } + + return false +} + +func hasStatusAnnotation(pod *corev1.Pod) bool { + return pod.Annotations[getAnnotationKey("status")] != "" +} +func getAnnotationKey(path string) string { + return fmt.Sprintf("%s/%s", domain, path) +} + +// wildCardToRegexp converts a wildcard pattern to a regular expression pattern. +func wildCardToRegexp(pattern string) string { + components := strings.Split(pattern, "*") + if len(components) == 1 { + // if len is 1, there are no *'s, return exact match pattern + return "^" + pattern + "$" + } + var result strings.Builder + for i, literal := range components { + + // Replace * with .* + if i > 0 { + result.WriteString(".*") + } + + // Quote any regular expression meta characters in the + // literal text. + result.WriteString(regexp.QuoteMeta(literal)) + } + return "^" + result.String() + "$" +} + +func isImageInWildcardFilter(image string, wildcardFilters []string) bool { + for _, wildcardFilter := range wildcardFilters { + if result, _ := regexp.MatchString(wildCardToRegexp(wildcardFilter), image); result { + return true + } + } + return false +}