From 791c4f637e25f254a3bad9d02d8b9c1f93b896d5 Mon Sep 17 00:00:00 2001 From: nshankar13 Date: Thu, 12 Nov 2020 11:20:24 -0500 Subject: [PATCH 1/8] Restructured Chart --- charts/osm-arc/.helmignore | 23 + charts/osm-arc/Chart.lock | 6 + charts/osm-arc/Chart.yaml | 29 + charts/osm-arc/charts/osm-0.5.0-rc.1.tgz | Bin 0 -> 17999 bytes .../{osm => osm-arc}/templates/osm-label.yml | 12 +- charts/osm-arc/values.yaml | 29 + charts/osm/Chart.lock | 6 + charts/osm/Chart.yaml | 4 +- charts/osm/README.md | 23 +- .../osm/crds/experimental/backpressure.yaml | 21 + .../grafana/dashboards/osm-control-plane.json | 725 +++++++++++ .../dashboards/osm-mesh-envoy-details.json | 791 ++++++++++++ charts/osm/grafana/dashboards/osm-pod.json | 1113 ++++++++++++++++ .../dashboards/osm-service-to-service.json | 1042 +++++++++++++++ .../osm/grafana/dashboards/osm-workload.json | 1135 +++++++++++++++++ ...configmap.yml => fluentbit-configmap.yaml} | 17 +- charts/osm/templates/grafana-configmap.yaml | 115 ++ charts/osm/templates/grafana-deployment.yaml | 70 + charts/osm/templates/grafana-rbac.yaml | 35 + charts/osm/templates/grafana-svc.yaml | 13 + charts/osm/templates/jaeger-deployment.yaml | 33 + charts/osm/templates/jaeger-service.yaml | 16 + charts/osm/templates/mutatingwebhook.yaml | 35 +- charts/osm/templates/osm-configmap.yaml | 4 +- charts/osm/templates/osm-deployment.yaml | 52 +- charts/osm/templates/osm-rbac.yaml | 12 +- .../osm/templates/prometheus-configmap.yaml | 150 +++ .../osm/templates/prometheus-deployment.yaml | 49 + charts/osm/templates/prometheus-rbac.yaml | 33 + charts/osm/templates/prometheus-svc.yaml | 16 + charts/osm/values.schema.json | 301 +++++ charts/osm/values.yaml | 53 +- charts/values-override.yaml | 24 + 33 files changed, 5899 insertions(+), 88 deletions(-) create mode 100644 charts/osm-arc/.helmignore create mode 100644 charts/osm-arc/Chart.lock create mode 100644 charts/osm-arc/Chart.yaml create mode 100644 charts/osm-arc/charts/osm-0.5.0-rc.1.tgz rename charts/{osm => osm-arc}/templates/osm-label.yml (95%) create mode 100644 charts/osm-arc/values.yaml create mode 100644 charts/osm/Chart.lock create mode 100644 charts/osm/crds/experimental/backpressure.yaml create mode 100755 charts/osm/grafana/dashboards/osm-control-plane.json create mode 100644 charts/osm/grafana/dashboards/osm-mesh-envoy-details.json create mode 100644 charts/osm/grafana/dashboards/osm-pod.json create mode 100644 charts/osm/grafana/dashboards/osm-service-to-service.json create mode 100644 charts/osm/grafana/dashboards/osm-workload.json rename charts/osm/templates/{fluentbit-configmap.yml => fluentbit-configmap.yaml} (59%) create mode 100644 charts/osm/templates/grafana-configmap.yaml create mode 100644 charts/osm/templates/grafana-deployment.yaml create mode 100644 charts/osm/templates/grafana-rbac.yaml create mode 100644 charts/osm/templates/grafana-svc.yaml create mode 100644 charts/osm/templates/jaeger-deployment.yaml create mode 100644 charts/osm/templates/jaeger-service.yaml create mode 100644 charts/osm/templates/prometheus-configmap.yaml create mode 100644 charts/osm/templates/prometheus-deployment.yaml create mode 100644 charts/osm/templates/prometheus-rbac.yaml create mode 100644 charts/osm/templates/prometheus-svc.yaml create mode 100644 charts/osm/values.schema.json create mode 100644 charts/values-override.yaml diff --git a/charts/osm-arc/.helmignore b/charts/osm-arc/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/charts/osm-arc/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/charts/osm-arc/Chart.lock b/charts/osm-arc/Chart.lock new file mode 100644 index 00000000..5c847adb --- /dev/null +++ b/charts/osm-arc/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: osm + repository: file://../../charts/osm + version: 0.5.0-rc.1 +digest: sha256:d1226533d04b95e18f2f0763a5c8a0bef8378917c5c7dbca83a84194cdf6eebb +generated: "2020-11-11T19:27:13.3389966-05:00" diff --git a/charts/osm-arc/Chart.yaml b/charts/osm-arc/Chart.yaml new file mode 100644 index 00000000..fd5d5432 --- /dev/null +++ b/charts/osm-arc/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +name: osm-arc +description: A Helm chart for Kubernetes + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.5.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +appVersion: v0.5.0 + +dependencies: +- name: osm + version: "0.5.0-rc.1" + repository: "file://../../charts/osm" + diff --git a/charts/osm-arc/charts/osm-0.5.0-rc.1.tgz b/charts/osm-arc/charts/osm-0.5.0-rc.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..6f9942e0a70313f7130a28c3fd79489ef958a96c GIT binary patch literal 17999 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 E014F26#xJL literal 0 HcmV?d00001 diff --git a/charts/osm/templates/osm-label.yml b/charts/osm-arc/templates/osm-label.yml similarity index 95% rename from charts/osm/templates/osm-label.yml rename to charts/osm-arc/templates/osm-label.yml index 11287a55..1828ebf7 100644 --- a/charts/osm/templates/osm-label.yml +++ b/charts/osm-arc/templates/osm-label.yml @@ -6,7 +6,7 @@ apiVersion: v1 kind: ServiceAccount metadata: name: osm-label-account - namespace: {{ .Values.OpenServiceMesh.namespace }} + namespace: {{ .Release.Namespace }} annotations: "helm.sh/hook-weight": "20" "helm.sh/hook": pre-install @@ -37,7 +37,7 @@ metadata: subjects: - kind: ServiceAccount name: osm-label-account - namespace: {{ .Values.OpenServiceMesh.namespace }} + namespace: {{ .Release.Namespace }} roleRef: kind: ClusterRole name: osm-label-cluster-role @@ -55,7 +55,7 @@ metadata: subjects: - kind: ServiceAccount name: osm-label-account - namespace: {{ .Values.OpenServiceMesh.namespace }} + namespace: {{ .Release.Namespace }} roleRef: kind: ClusterRole name: osm-label-cluster-role @@ -73,7 +73,7 @@ metadata: subjects: - kind: ServiceAccount name: osm-label-account - namespace: {{ .Values.OpenServiceMesh.namespace }} + namespace: {{ .Release.Namespace }} roleRef: kind: ClusterRole name: osm-label-cluster-role @@ -83,7 +83,7 @@ apiVersion: batch/v1 kind: Job metadata: name: osm-label - namespace: {{ .Values.OpenServiceMesh.namespace }} + namespace: {{ .Release.Namespace }} annotations: "helm.sh/hook-weight": "35" "helm.sh/hook": pre-install @@ -109,7 +109,7 @@ spec: - name: labelnamespaces value: {{ .Values.OpenServiceMesh.ignoreNamespaces }} - name: osmnamespace - value: {{ .Values.OpenServiceMesh.namespace }} + value: {{ .Release.Namespace }} securityContext: allowPrivilegeEscalation: false command: diff --git a/charts/osm-arc/values.yaml b/charts/osm-arc/values.yaml new file mode 100644 index 00000000..0a8b751b --- /dev/null +++ b/charts/osm-arc/values.yaml @@ -0,0 +1,29 @@ +# Default values for osm-arc. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. +OpenServiceMesh: + ignoreNamespaces: "kube-system azure-arc arc-osm-system" + +osm: + OpenServiceMesh: + enableDebugServer: true + enablePermissiveTrafficPolicy: true + enableFluentbit: true + fluentBitImage: + name: fluentbit-logger + registry: "mcr.microsoft.com/oss/fluent" + tag: "v1.6.2" + pullPolicy: IfNotPresent + enforceSingleMesh: true + enablePrometheus: false + deployJaeger: false + customLogAnalyticsWorkspace: false + customerID: 49a4d43a-81ef-4607-83f6-a13872c6ae60 + sharedKey: 5q+pyUKQtxtef8ZGTb+aYYcFWR54lmtXpA0AYWJSqUOGBRd9AHgDZZmb0uuLpjOjIMZTp+F3F4e5JUMOWUmHHw== + fluentbitOutput: azure + webhookConfigNamePrefix: arc-osm-webhook + +alpine: + image: + name: "mcr.microsoft.com/azure-policy/alpine" + tag: "prod_20200505.1" diff --git a/charts/osm/Chart.lock b/charts/osm/Chart.lock new file mode 100644 index 00000000..f426bd50 --- /dev/null +++ b/charts/osm/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: osm-arc + repository: file://../../charts/osm-arc + version: 0.1.0 +digest: sha256:d86a5f1460388d13ef009984e1a2bc78a35035ac7a2e1805f1de1ea510532647 +generated: "2020-11-09T19:21:38.9345356-05:00" diff --git a/charts/osm/Chart.yaml b/charts/osm/Chart.yaml index f9cb8c19..77719b10 100644 --- a/charts/osm/Chart.yaml +++ b/charts/osm/Chart.yaml @@ -14,8 +14,8 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. -version: 0.4.2 +version: 0.5.0-rc.1 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. -appVersion: v0.4.2 +appVersion: v0.5.0-rc.1 diff --git a/charts/osm/README.md b/charts/osm/README.md index 77e39a06..359450e2 100644 --- a/charts/osm/README.md +++ b/charts/osm/README.md @@ -1,6 +1,6 @@ # osm -![Version: 0.2.0](https://img.shields.io/badge/Version-0.2.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.3.0](https://img.shields.io/badge/AppVersion-v0.3.0-informational?style=flat-square) +![Version: 0.4.2](https://img.shields.io/badge/Version-0.4.2-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.4.2](https://img.shields.io/badge/AppVersion-v0.4.2-informational?style=flat-square) A Helm chart to install the OSM control plane on Kubernetes @@ -9,7 +9,7 @@ A Helm chart to install the OSM control plane on Kubernetes | Key | Type | Default | Description | |-----|------|---------|-------------| | OpenServiceMesh.caBundleSecretName | string | `"osm-ca-bundle"` | | -| OpenServiceMesh.certficateManager | string | `"tresor"` | | +| OpenServiceMesh.certificateManager | string | `"tresor"` | | | OpenServiceMesh.certmanager.issuerGroup | string | `"cert-manager"` | | | OpenServiceMesh.certmanager.issuerKind | string | `"Issuer"` | | | OpenServiceMesh.certmanager.issuerName | string | `"osm-ca"` | | @@ -18,27 +18,28 @@ A Helm chart to install the OSM control plane on Kubernetes | OpenServiceMesh.enableDebugServer | bool | `false` | | | OpenServiceMesh.enableEgress | bool | `false` | | | OpenServiceMesh.enableGrafana | bool | `false` | | -| OpenServiceMesh.enablePrometheus | bool | `true` | | +| OpenServiceMesh.enableFluentbit | bool | `false` | | | OpenServiceMesh.enablePermissiveTrafficPolicy | bool | `false` | | +| OpenServiceMesh.enablePrometheus | bool | `true` | | | OpenServiceMesh.envoyLogLevel | string | `"error"` | | | OpenServiceMesh.grafana.port | int | `3000` | | | OpenServiceMesh.image.pullPolicy | string | `"IfNotPresent"` | | | OpenServiceMesh.image.registry | string | `"openservicemesh"` | | -| OpenServiceMesh.image.tag | string | `"v0.3.0"` | | -| OpenServiceMesh.imagePullSecrets | object | `{}` | | -| OpenServiceMesh.meshCIDRRanges | string | `"0.0.0.0/0"` | | +| OpenServiceMesh.image.tag | string | `"v0.4.2"` | | +| OpenServiceMesh.imagePullSecrets | list | `[]` | | | OpenServiceMesh.meshName | string | `"osm"` | | | OpenServiceMesh.prometheus.port | int | `7070` | | | OpenServiceMesh.prometheus.retention.time | string | `"15d"` | | | OpenServiceMesh.replicaCount | int | `1` | | -| OpenServiceMesh.serviceCertValidityMinutes | int | `1` | | +| OpenServiceMesh.serviceCertValidityDuration | string | `"24h"` | | | OpenServiceMesh.sidecarImage | string | `"envoyproxy/envoy-alpine:v1.15.0"` | | +| OpenServiceMesh.tracing.address | string | `"jaeger.osm-system.svc.cluster.local"` | | +| OpenServiceMesh.tracing.enable | bool | `true` | | +| OpenServiceMesh.tracing.endpoint | string | `"/api/v2/spans"` | | +| OpenServiceMesh.tracing.port | int | `9411` | | | OpenServiceMesh.useHTTPSIngress | bool | `false` | | | OpenServiceMesh.vault.host | string | `nil` | | | OpenServiceMesh.vault.protocol | string | `"http"` | | | OpenServiceMesh.vault.role | string | `"openservicemesh"` | | | OpenServiceMesh.vault.token | string | `nil` | | -| OpenServiceMesh.tracing.address | string | `"jaeger.osm-system.svc.cluster.local"` | | -| OpenServiceMesh.tracing.enable | bool | `false` | | -| OpenServiceMesh.tracing.endpoint | string | `"/api/v2/spans"` | | -| OpenServiceMesh.tracing.port | int | `9411` | | +| OpenServiceMesh.enforceSingleMesh | bool | `"false"` | | diff --git a/charts/osm/crds/experimental/backpressure.yaml b/charts/osm/crds/experimental/backpressure.yaml new file mode 100644 index 00000000..3239a44f --- /dev/null +++ b/charts/osm/crds/experimental/backpressure.yaml @@ -0,0 +1,21 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + name: backpressures.policy.openservicemesh.io +spec: + group: policy.openservicemesh.io + version: v1alpha1 + names: + kind: Backpressure + plural: backpressures + singular: backpressure + scope: Namespaced + validation: + openAPIV3Schema: + properties: + spec: + properties: + maxConnections: + description: "Max number of connections" + type: integer + pattern: '^[1-9]{1}[0-9]*' diff --git a/charts/osm/grafana/dashboards/osm-control-plane.json b/charts/osm/grafana/dashboards/osm-control-plane.json new file mode 100755 index 00000000..74fa12c6 --- /dev/null +++ b/charts/osm/grafana/dashboards/osm-control-plane.json @@ -0,0 +1,725 @@ +{ + "__inputs": [ + { + "name": "DS_PROMETHEUS", + "label": "Prometheus", + "description": "", + "type": "datasource", + "pluginId": "prometheus", + "pluginName": "Prometheus" + } + ], + "__requires": [ + { + "type": "panel", + "id": "gauge", + "name": "Gauge", + "version": "" + }, + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "7.0.1" + }, + { + "type": "panel", + "id": "graph", + "name": "Graph", + "version": "" + }, + { + "type": "datasource", + "id": "prometheus", + "name": "Prometheus", + "version": "1.0.0" + }, + { + "type": "panel", + "id": "singlestat", + "name": "Singlestat", + "version": "" + }, + { + "type": "panel", + "id": "table", + "name": "Table", + "version": "" + } + ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "description": "Metrics from service to control plane in Open Service Mesh", + "editable": true, + "gnetId": 11776, + "graphTooltip": 0, + "id": 6, + "iteration": 1591749761183, + "links": [], + "panels": [ + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 22, + "panels": [], + "title": "Request Count - HTTP", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 1 + }, + "hiddenSeries": false, + "id": 24, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pluginVersion": "7.0.1", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(envoy_cluster_upstream_rq_xx{envoy_response_code_class=\"2\",source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"osm-controller\"}[1m])", + "interval": "1m", + "legendFormat": "Time (per minute)", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Success Count", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 1 + }, + "hiddenSeries": false, + "id": 25, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pluginVersion": "7.0.1", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(envoy_cluster_upstream_rq_xx{envoy_response_code_class!=\"2\",source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"osm-controller\"}[1m])", + "interval": "1m", + "legendFormat": "Time (per minute)", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Failure Count", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": false, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 18 + }, + "id": 10, + "panels": [], + "title": "Traffic", + "type": "row" + }, + { + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 19 + }, + "id": 4, + "interval": "", + "options": { + "dataLinks": [] + }, + "pluginVersion": "7.0.1", + "targets": [ + { + "expr": "sum(envoy_cluster_upstream_cx_active{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"osm-controller\"})", + "legendFormat": "Connections", + "refId": "A" + } + ], + "title": "Active Connections to Control Plane", + "type": "graph", + "timeFrom": null, + "timeShift": null, + "renderer": "flot", + "yaxes": [ + { + "label": null, + "show": true, + "logBase": 1, + "min": null, + "max": null, + "format": "short" + }, + { + "label": null, + "show": true, + "logBase": 1, + "min": null, + "max": null, + "format": "short" + } + ], + "xaxis": { + "show": true, + "mode": "time", + "name": null, + "values": [], + "buckets": null + }, + "yaxis": { + "align": false, + "alignLevel": null + }, + "lines": true, + "fill": 1, + "fillGradient": 0, + "linewidth": 1, + "dashes": false, + "hiddenSeries": false, + "dashLength": 10, + "spaceLength": 10, + "points": false, + "pointradius": 2, + "bars": false, + "stack": false, + "percentage": false, + "legend": { + "show": true, + "values": false, + "min": false, + "max": false, + "current": false, + "total": false, + "avg": false + }, + "nullPointMode": "null", + "steppedLine": false, + "tooltip": { + "value_type": "individual", + "shared": true, + "sort": 0 + }, + "aliasColors": {}, + "seriesOverrides": [], + "thresholds": [], + "timeRegions": [] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 19 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(irate(envoy_cluster_upstream_cx_tx_bytes_total{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"osm-controller\"}[1m]))", + "legendFormat": "Bytes sent", + "refId": "A" + }, + { + "expr": "sum(irate(envoy_cluster_upstream_cx_rx_bytes_total{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"osm-controller\"}[1m]))", + "legendFormat": "Bytes received", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Traffic to Control Plane", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 19 + }, + "hiddenSeries": false, + "id": 26, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(irate(envoy_cluster_upstream_cx_destroy_remote_with_active_rq{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"osm-controller\"}[1m]))", + "legendFormat": "Connection destroyed by the client", + "refId": "A" + }, + { + "expr": "sum(irate(envoy_cluster_upstream_cx_connect_timeout{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"osm-controller\"}[1m]))", + "legendFormat": "Connection timeout", + "refId": "B" + }, + { + "expr": "sum(irate(envoy_cluster_upstream_cx_destroy_local_with_active_rq{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"osm-controller\"}[1m]))", + "legendFormat": "Connection destroyed by local Envoy", + "refId": "C" + }, + { + "expr": "sum(irate(envoy_cluster_upstream_rq_pending_failure_eject{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"osm-controller\"}[1m]))", + "legendFormat": "Pending failure ejection", + "refId": "D" + }, + { + "expr": "sum(irate(envoy_cluster_upstream_rq_pending_overflow{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"osm-controller\"}[1m]))", + "legendFormat": "Pending overflow", + "refId": "E" + }, + { + "expr": "sum(irate(envoy_cluster_upstream_rq_timeout{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"osm-controller\"}[1m]))", + "legendFormat": "Request timeout", + "refId": "F" + }, + { + "expr": "sum(irate(envoy_cluster_upstream_rq_rx_reset{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"osm-controller\"}[1m]))", + "legendFormat": "Response reset", + "refId": "G" + }, + { + "expr": "sum(irate(envoy_cluster_upstream_rq_tx_reset{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"osm-controller\"}[1m]))", + "legendFormat": "Request reset", + "refId": "H" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Connection/Requests errors to Control Plane", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": false, + "schemaVersion": 25, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "allValue": null, + "current": {}, + "datasource": "${DS_PROMETHEUS}", + "definition": "label_values(envoy_server_live{}, source_namespace)", + "hide": 0, + "includeAll": false, + "label": "Source Namespace", + "multi": false, + "name": "source_namespace", + "options": [], + "query": "label_values(envoy_server_live{}, source_namespace)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "${DS_PROMETHEUS}", + "definition": "label_values(envoy_server_live{source_namespace=\"$source_namespace\"}, source_service)", + "hide": 0, + "includeAll": false, + "label": "Source service", + "multi": false, + "name": "source_service", + "options": [], + "query": "label_values(envoy_server_live{source_namespace=\"$source_namespace\"}, source_service)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ] + }, + "timezone": "", + "title": "OSM Control Plane Metrics", + "uid": "OSMCPMetrics", + "version": 1 + } diff --git a/charts/osm/grafana/dashboards/osm-mesh-envoy-details.json b/charts/osm/grafana/dashboards/osm-mesh-envoy-details.json new file mode 100644 index 00000000..4f5f32b3 --- /dev/null +++ b/charts/osm/grafana/dashboards/osm-mesh-envoy-details.json @@ -0,0 +1,791 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "id": 7, + "links": [], + "panels": [ + { + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 0, + "y": 0 + }, + "id": 6, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "last" + ], + "values": false + } + }, + "pluginVersion": "7.0.1", + "targets": [ + { + "expr": "count(count by(source_namespace) (envoy_http_rq_total))", + "format": "time_series", + "instant": false, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Number of Namespaces", + "type": "stat" + }, + { + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 3, + "y": 0 + }, + "id": 7, + "options": { + "showLabels": false, + "showTime": false, + "sortOrder": "Descending", + "wrapLogMessage": false + }, + "pluginVersion": "7.0.1", + "targets": [ + { + "expr": "count by(source_namespace) (envoy_http_rq_total)", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Namespaces", + "transformations": [ + { + "id": "filterFieldsByName", + "options": {} + } + ], + "type": "logs" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 9, + "x": 6, + "y": 0 + }, + "hiddenSeries": false, + "id": 11, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "envoy_server_memory_allocated", + "interval": "", + "legendFormat": "Envoy {{source_namespace}} / {{source_pod_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Envoy Memalloc", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:361", + "format": "decbytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:362", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 9, + "x": 15, + "y": 0 + }, + "hiddenSeries": false, + "id": 13, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "envoy_server_memory_heap_size", + "interval": "", + "legendFormat": "Envoy {{source_namespace}} / {{source_pod_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Envoy Heap size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:361", + "format": "decbytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:362", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": {}, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 0, + "y": 4 + }, + "id": 2, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "last" + ], + "values": false + } + }, + "pluginVersion": "7.0.1", + "targets": [ + { + "expr": "count(count by(source_service) (envoy_http_rq_total))", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Number of Services", + "type": "stat" + }, + { + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 3, + "y": 4 + }, + "id": 4, + "options": { + "showLabels": false, + "showTime": false, + "sortOrder": "Descending", + "wrapLogMessage": false + }, + "pluginVersion": "7.0.1", + "repeat": null, + "targets": [ + { + "expr": "count by(source_service) (envoy_http_rq_total)", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Services", + "transformations": [ + { + "id": "filterFieldsByName", + "options": {} + } + ], + "type": "logs" + }, + { + "datasource": "Prometheus", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {}, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 0, + "y": 8 + }, + "id": 8, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "last" + ], + "values": false + } + }, + "pluginVersion": "7.0.1", + "targets": [ + { + "expr": "count(count by(source_pod_name) (envoy_http_rq_total))", + "format": "time_series", + "instant": false, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Number of Pods", + "type": "stat" + }, + { + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 3, + "y": 8 + }, + "id": 9, + "options": { + "showLabels": false, + "showTime": false, + "sortOrder": "Descending", + "wrapLogMessage": false + }, + "pluginVersion": "7.0.1", + "targets": [ + { + "expr": "count by(source_pod_name) (envoy_http_rq_total)", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Pods", + "transformations": [ + { + "id": "filterFieldsByName", + "options": {} + } + ], + "type": "logs" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 9, + "x": 6, + "y": 8 + }, + "hiddenSeries": false, + "id": 12, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "envoy_server_memory_physical_size", + "interval": "", + "legendFormat": "Envoy {{source_namespace}} / {{source_pod_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Envoy Physical Memory footprint", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:361", + "format": "decbytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:362", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "description": "\"Smoothed average of number of runnable threads x 1000. We multiply by thousand to avoid using floats, but preserving precision. Load is smoothed over the last 10 seconds. Instantaneous value can be read from LoadStats.NrRunning.\"\n https://github.com/google/cadvisor/blob/master/info/v1/container.go#L320:", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 9, + "x": 15, + "y": 8 + }, + "hiddenSeries": false, + "id": 14, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "container_cpu_load_average_10s{container=\"envoy\"}", + "interval": "", + "legendFormat": "Envoy {{namespace}} / {{pod}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Envoy CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:361", + "format": "none", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:362", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "schemaVersion": 25, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ] + }, + "timezone": "", + "title": "Mesh and Envoy Details", + "uid": "PLyKJcHGz", + "version": 1 +} diff --git a/charts/osm/grafana/dashboards/osm-pod.json b/charts/osm/grafana/dashboards/osm-pod.json new file mode 100644 index 00000000..5633f1a7 --- /dev/null +++ b/charts/osm/grafana/dashboards/osm-pod.json @@ -0,0 +1,1113 @@ +{ + "__inputs": [ + { + "name": "DS_PROMETHEUS", + "label": "Prometheus", + "description": "", + "type": "datasource", + "pluginId": "prometheus", + "pluginName": "Prometheus" + } + ], + "__requires": [ + { + "type": "panel", + "id": "gauge", + "name": "Gauge", + "version": "" + }, + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "7.0.1" + }, + { + "type": "panel", + "id": "graph", + "name": "Graph", + "version": "" + }, + { + "type": "datasource", + "id": "prometheus", + "name": "Prometheus", + "version": "1.0.0" + }, + { + "type": "panel", + "id": "singlestat", + "name": "Singlestat", + "version": "" + }, + { + "type": "panel", + "id": "table", + "name": "Table", + "version": "" + } + ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "description": "Metrics from a Pod in Open Service Mesh", + "editable": true, + "gnetId": 11776, + "graphTooltip": 0, + "id": 5, + "iteration": 1591749611164, + "links": [], + "panels": [ + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 22, + "panels": [], + "title": "Request Count - HTTP", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 1 + }, + "hiddenSeries": false, + "id": 24, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pluginVersion": "7.0.1", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(envoy_cluster_upstream_rq_xx{envoy_response_code_class=\"2\",source_pod_name=\"$source_pod\",source_namespace=\"$source_namespace\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m])", + "legendFormat": "{{envoy_cluster_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Success Count to other services", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 1 + }, + "hiddenSeries": false, + "id": 25, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pluginVersion": "7.0.1", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(envoy_cluster_upstream_rq_xx{envoy_response_code_class!=\"2\",source_pod_name=\"$source_pod\",source_namespace=\"$source_namespace\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m])", + "interval": "", + "legendFormat": "{{envoy_cluster_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Failure Count to other services", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 9 + }, + "id": 20, + "panels": [], + "title": "Request Latency", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 10 + }, + "hiddenSeries": false, + "id": 6, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "histogram_quantile(0.99,irate(envoy_cluster_upstream_rq_time_bucket{source_pod_name=\"$source_pod\",source_namespace=\"$source_namespace\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m]))", + "interval": "", + "legendFormat": "{{envoy_cluster_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Request Latency (P99)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 10 + }, + "hiddenSeries": false, + "id": 16, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "histogram_quantile(0.90,irate(envoy_cluster_upstream_rq_time_bucket{source_pod_name=\"$source_pod\",source_namespace=\"$source_namespace\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m]))", + "interval": "", + "legendFormat": "{{envoy_cluster_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Request Latency (P90)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 10 + }, + "hiddenSeries": false, + "id": 18, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "histogram_quantile(0.50,irate(envoy_cluster_upstream_rq_time_bucket{source_pod_name=\"$source_pod\",source_namespace=\"$source_namespace\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m]))", + "interval": "", + "legendFormat": "{{envoy_cluster_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Request Latency (P50)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": false, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 18 + }, + "id": 10, + "panels": [], + "title": "Traffic", + "type": "row" + }, + { + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 19 + }, + "id": 4, + "interval": "", + "options": { + "dataLinks": [] + }, + "pluginVersion": "7.0.1", + "targets": [ + { + "expr": "irate(envoy_cluster_upstream_cx_active{source_pod_name=\"$source_pod\",source_namespace=\"$source_namespace\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m])", + "legendFormat": "{{envoy_cluster_name}}", + "refId": "A" + } + ], + "title": "Active Connections to other services", + "type": "graph", + "timeFrom": null, + "timeShift": null, + "renderer": "flot", + "yaxes": [ + { + "label": null, + "show": true, + "logBase": 1, + "min": null, + "max": null, + "format": "short" + }, + { + "label": null, + "show": true, + "logBase": 1, + "min": null, + "max": null, + "format": "short" + } + ], + "xaxis": { + "show": true, + "mode": "time", + "name": null, + "values": [], + "buckets": null + }, + "yaxis": { + "align": false, + "alignLevel": null + }, + "lines": true, + "fill": 1, + "fillGradient": 0, + "linewidth": 1, + "dashes": false, + "hiddenSeries": false, + "dashLength": 10, + "spaceLength": 10, + "points": false, + "pointradius": 2, + "bars": false, + "stack": false, + "percentage": false, + "legend": { + "show": true, + "values": false, + "min": false, + "max": false, + "current": false, + "total": false, + "avg": false + }, + "nullPointMode": "null", + "steppedLine": false, + "tooltip": { + "value_type": "individual", + "shared": true, + "sort": 0 + }, + "aliasColors": {}, + "seriesOverrides": [], + "thresholds": [], + "timeRegions": [] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 19 + }, + "hiddenSeries": false, + "id": 26, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(envoy_cluster_upstream_cx_destroy_remote_with_active_rq{source_pod_name=\"$source_pod\",source_namespace=\"$source_namespace\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m])", + "legendFormat": "Connection destroyed by the client - {{envoy_cluster_name}}", + "refId": "A" + }, + { + "expr": "irate(envoy_cluster_upstream_cx_connect_timeout{source_pod_name=\"$source_pod\",source_namespace=\"$source_namespace\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m])", + "legendFormat": "Connection timeout - {{envoy_cluster_name}}", + "refId": "B" + }, + { + "expr": "irate(envoy_cluster_upstream_cx_destroy_local_with_active_rq{source_pod_name=\"$source_pod\",source_namespace=\"$source_namespace\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m])", + "legendFormat": "Connection destroyed by local Envoy - {{envoy_cluster_name}}", + "refId": "C" + }, + { + "expr": "irate(envoy_cluster_upstream_rq_pending_failure_eject{source_pod_name=\"$source_pod\",source_namespace=\"$source_namespace\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m])", + "legendFormat": "Pending failure ejection - {{envoy_cluster_name}}", + "refId": "D" + }, + { + "expr": "irate(envoy_cluster_upstream_rq_pending_overflow{source_pod_name=\"$source_pod\",source_namespace=\"$source_namespace\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m])", + "legendFormat": "Pending overflow - {{envoy_cluster_name}}", + "refId": "E" + }, + { + "expr": "irate(envoy_cluster_upstream_rq_timeout{source_pod_name=\"$source_pod\",source_namespace=\"$source_namespace\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m])", + "legendFormat": "Request timeout - {{envoy_cluster_name}}", + "refId": "F" + }, + { + "expr": "irate(envoy_cluster_upstream_rq_rx_reset{source_pod_name=\"$source_pod\",source_namespace=\"$source_namespace\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m])", + "legendFormat": "Response reset - {{envoy_cluster_name}}", + "refId": "G" + }, + { + "expr": "irate(envoy_cluster_upstream_rq_tx_reset{source_pod_name=\"$source_pod\",source_namespace=\"$source_namespace\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m])", + "legendFormat": "Request reset - {{envoy_cluster_name}}", + "refId": "H" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Connection/Requests errors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 27 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(envoy_cluster_upstream_cx_rx_bytes_total{source_pod_name=\"$source_pod\",source_namespace=\"$source_namespace\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m])", + "legendFormat": "{{envoy_cluster_name}}", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Bytes sent to other services", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 27 + }, + "hiddenSeries": false, + "id": 27, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(envoy_cluster_upstream_cx_tx_bytes_total{source_pod_name=\"$source_pod\",source_namespace=\"$source_namespace\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m])", + "interval": "", + "legendFormat": "{{envoy_cluster_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Bytes received to other services", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": false, + "schemaVersion": 25, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "allValue": null, + "current": {}, + "datasource": "${DS_PROMETHEUS}", + "definition": "label_values(envoy_server_live{}, source_namespace)", + "hide": 0, + "includeAll": false, + "label": "Namespace", + "multi": false, + "name": "source_namespace", + "options": [], + "query": "label_values(envoy_server_live{}, source_namespace)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "${DS_PROMETHEUS}", + "definition": "label_values(envoy_server_live{source_namespace=\"$source_namespace\"}, source_pod_name)", + "hide": 0, + "includeAll": false, + "label": "Pod", + "multi": false, + "name": "source_pod", + "options": [], + "query": "label_values(envoy_server_live{source_namespace=\"$source_namespace\"}, source_pod_name)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ] + }, + "timezone": "", + "title": "OSM Pod to Services Metrics", + "uid": "OSMpodMetrics", + "version": 1 + } diff --git a/charts/osm/grafana/dashboards/osm-service-to-service.json b/charts/osm/grafana/dashboards/osm-service-to-service.json new file mode 100644 index 00000000..cf11feca --- /dev/null +++ b/charts/osm/grafana/dashboards/osm-service-to-service.json @@ -0,0 +1,1042 @@ +{ + "__inputs": [ + { + "name": "DS_PROMETHEUS", + "label": "Prometheus", + "description": "", + "type": "datasource", + "pluginId": "prometheus", + "pluginName": "Prometheus" + } + ], + "__requires": [ + { + "type": "panel", + "id": "gauge", + "name": "Gauge", + "version": "" + }, + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "7.0.1" + }, + { + "type": "panel", + "id": "graph", + "name": "Graph", + "version": "" + }, + { + "type": "datasource", + "id": "prometheus", + "name": "Prometheus", + "version": "1.0.0" + }, + { + "type": "panel", + "id": "singlestat", + "name": "Singlestat", + "version": "" + }, + { + "type": "panel", + "id": "table", + "name": "Table", + "version": "" + } + ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "description": "Metrics between services in Open Service Mesh", + "editable": true, + "gnetId": 11776, + "graphTooltip": 0, + "id": 6, + "iteration": 1591749761183, + "links": [], + "panels": [ + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 22, + "panels": [], + "title": "Request Count - HTTP", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 1 + }, + "hiddenSeries": false, + "id": 24, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pluginVersion": "7.0.1", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(envoy_cluster_upstream_rq_xx{envoy_response_code_class=\"2\",source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"$destination_service\"}[1m])", + "legendFormat": "Time (per minute)", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Success Count", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 1 + }, + "hiddenSeries": false, + "id": 25, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pluginVersion": "7.0.1", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(envoy_cluster_upstream_rq_xx{envoy_response_code_class!=\"2\",source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"$destination_service\"}[1m])", + "interval": "", + "legendFormat": "Time (per minute)", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Failure Count", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 9 + }, + "id": 20, + "panels": [], + "title": "Request Latency", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 10 + }, + "hiddenSeries": false, + "id": 6, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "max(histogram_quantile(0.99, irate(envoy_cluster_upstream_rq_time_bucket{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"$destination_service\"}[1m])))", + "legendFormat": "Time", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Request Latency (P99)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 10 + }, + "hiddenSeries": false, + "id": 16, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "max(histogram_quantile(0.90, irate(envoy_cluster_upstream_rq_time_bucket{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"$destination_service\"}[1m])))", + "legendFormat": "Time", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Request Latency (P90)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 10 + }, + "hiddenSeries": false, + "id": 18, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "max(histogram_quantile(0.50, irate(envoy_cluster_upstream_rq_time_bucket{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"$destination_service\"}[1m])))", + "legendFormat": "Time", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Request Latency (P50)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": false, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 18 + }, + "id": 10, + "panels": [], + "title": "Traffic", + "type": "row" + }, + { + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 19 + }, + "id": 4, + "interval": "", + "options": { + "dataLinks": [] + }, + "pluginVersion": "7.0.1", + "targets": [ + { + "expr": "sum(envoy_cluster_upstream_cx_active{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"$destination_service\"})", + "legendFormat": "Connections", + "refId": "A" + } + ], + "title": "Active Connections between services", + "type": "graph", + "timeFrom": null, + "timeShift": null, + "renderer": "flot", + "yaxes": [ + { + "label": null, + "show": true, + "logBase": 1, + "min": null, + "max": null, + "format": "short" + }, + { + "label": null, + "show": true, + "logBase": 1, + "min": null, + "max": null, + "format": "short" + } + ], + "xaxis": { + "show": true, + "mode": "time", + "name": null, + "values": [], + "buckets": null + }, + "yaxis": { + "align": false, + "alignLevel": null + }, + "lines": true, + "fill": 1, + "fillGradient": 0, + "linewidth": 1, + "dashes": false, + "hiddenSeries": false, + "dashLength": 10, + "spaceLength": 10, + "points": false, + "pointradius": 2, + "bars": false, + "stack": false, + "percentage": false, + "legend": { + "show": true, + "values": false, + "min": false, + "max": false, + "current": false, + "total": false, + "avg": false + }, + "nullPointMode": "null", + "steppedLine": false, + "tooltip": { + "value_type": "individual", + "shared": true, + "sort": 0 + }, + "aliasColors": {}, + "seriesOverrides": [], + "thresholds": [], + "timeRegions": [] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 19 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(irate(envoy_cluster_upstream_cx_tx_bytes_total{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"$destination_service\"}[1m]))", + "legendFormat": "Bytes sent", + "refId": "A" + }, + { + "expr": "sum(irate(envoy_cluster_upstream_cx_rx_bytes_total{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"$destination_service\"}[1m]))", + "legendFormat": "Bytes received", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Traffic from source service perspective", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 19 + }, + "hiddenSeries": false, + "id": 26, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(irate(envoy_cluster_upstream_cx_destroy_remote_with_active_rq{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"$destination_service\"}[1m]))", + "legendFormat": "Connection destroyed by the client", + "refId": "A" + }, + { + "expr": "sum(irate(envoy_cluster_upstream_cx_connect_timeout{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"$destination_service\"}[1m]))", + "legendFormat": "Connection timeout", + "refId": "B" + }, + { + "expr": "sum(irate(envoy_cluster_upstream_cx_destroy_local_with_active_rq{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"$destination_service\"}[1m]))", + "legendFormat": "Connection destroyed by local Envoy", + "refId": "C" + }, + { + "expr": "sum(irate(envoy_cluster_upstream_rq_pending_failure_eject{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"$destination_service\"}[1m]))", + "legendFormat": "Pending failure ejection", + "refId": "D" + }, + { + "expr": "sum(irate(envoy_cluster_upstream_rq_pending_overflow{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"$destination_service\"}[1m]))", + "legendFormat": "Pending overflow", + "refId": "E" + }, + { + "expr": "sum(irate(envoy_cluster_upstream_rq_timeout{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"$destination_service\"}[1m]))", + "legendFormat": "Request timeout", + "refId": "F" + }, + { + "expr": "sum(irate(envoy_cluster_upstream_rq_rx_reset{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"$destination_service\"}[1m]))", + "legendFormat": "Response reset", + "refId": "G" + }, + { + "expr": "sum(irate(envoy_cluster_upstream_rq_tx_reset{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name=\"$destination_service\"}[1m]))", + "legendFormat": "Request reset", + "refId": "H" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Connection/Requests errors from source service perspective", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": false, + "schemaVersion": 25, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "allValue": null, + "current": {}, + "datasource": "${DS_PROMETHEUS}", + "definition": "label_values(envoy_server_live{}, source_namespace)", + "hide": 0, + "includeAll": false, + "label": "Source Namespace", + "multi": false, + "name": "source_namespace", + "options": [], + "query": "label_values(envoy_server_live{}, source_namespace)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "${DS_PROMETHEUS}", + "definition": "label_values(envoy_server_live{source_namespace=\"$source_namespace\"}, source_service)", + "hide": 0, + "includeAll": false, + "label": "Source service", + "multi": false, + "name": "source_service", + "options": [], + "query": "label_values(envoy_server_live{source_namespace=\"$source_namespace\"}, source_service)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "${DS_PROMETHEUS}", + "definition": "label_values(envoy_cluster_upstream_cx_active{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|.*-local|envoy-tracing-cluster|passthrough-outbound\"}, envoy_cluster_name)", + "hide": 0, + "includeAll": false, + "label": "Destination Service", + "multi": false, + "name": "destination_service", + "options": [], + "query": "label_values(envoy_cluster_upstream_cx_active{source_service=\"$source_service\",source_namespace=\"$source_namespace\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|.*-local|envoy-tracing-cluster|passthrough-outbound\"}, envoy_cluster_name)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ] + }, + "timezone": "", + "title": "OSM Service to Service Metrics", + "uid": "OSMs2sMetrics", + "version": 1 + } diff --git a/charts/osm/grafana/dashboards/osm-workload.json b/charts/osm/grafana/dashboards/osm-workload.json new file mode 100644 index 00000000..11753b44 --- /dev/null +++ b/charts/osm/grafana/dashboards/osm-workload.json @@ -0,0 +1,1135 @@ +{ + "__inputs": [ + { + "name": "DS_PROMETHEUS", + "label": "Prometheus", + "description": "", + "type": "datasource", + "pluginId": "prometheus", + "pluginName": "Prometheus" + } + ], + "__requires": [ + { + "type": "panel", + "id": "gauge", + "name": "Gauge", + "version": "" + }, + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "7.0.1" + }, + { + "type": "panel", + "id": "graph", + "name": "Graph", + "version": "" + }, + { + "type": "datasource", + "id": "prometheus", + "name": "Prometheus", + "version": "1.0.0" + }, + { + "type": "panel", + "id": "singlestat", + "name": "Singlestat", + "version": "" + }, + { + "type": "panel", + "id": "table", + "name": "Table", + "version": "" + } + ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "description": "Metrics from a Workload in Open Service Mesh", + "editable": true, + "gnetId": 11776, + "graphTooltip": 0, + "id": 5, + "iteration": 1591749611164, + "links": [], + "panels": [ + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 22, + "panels": [], + "title": "Request Count - HTTP", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 1 + }, + "hiddenSeries": false, + "id": 24, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pluginVersion": "7.0.1", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(envoy_cluster_upstream_rq_xx{envoy_response_code_class=\"2\",source_namespace=\"$source_namespace\",source_workload_kind=\"$source_workload_kind\",source_workload_name=\"$source_workload_name\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m])", + "legendFormat": "{{envoy_cluster_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Success Count to other services", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 1 + }, + "hiddenSeries": false, + "id": 25, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pluginVersion": "7.0.1", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(envoy_cluster_upstream_rq_xx{envoy_response_code_class!=\"2\",source_namespace=\"$source_namespace\",source_workload_kind=\"$source_workload_kind\",source_workload_name=\"$source_workload_name\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m])", + "interval": "", + "legendFormat": "{{envoy_cluster_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Failure Count to other services", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 9 + }, + "id": 20, + "panels": [], + "title": "Request Latency", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 10 + }, + "hiddenSeries": false, + "id": 6, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "histogram_quantile(0.99,irate(envoy_cluster_upstream_rq_time_bucket{source_namespace=\"$source_namespace\",source_workload_kind=\"$source_workload_kind\",source_workload_name=\"$source_workload_name\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m]))", + "interval": "", + "legendFormat": "{{envoy_cluster_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Request Latency (P99)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": "", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 10 + }, + "hiddenSeries": false, + "id": 16, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "histogram_quantile(0.90,irate(envoy_cluster_upstream_rq_time_bucket{source_namespace=\"$source_namespace\",source_workload_kind=\"$source_workload_kind\",source_workload_name=\"$source_workload_name\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m]))", + "interval": "", + "legendFormat": "{{envoy_cluster_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Request Latency (P90)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": 0, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 10 + }, + "hiddenSeries": false, + "id": 18, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "histogram_quantile(0.50,irate(envoy_cluster_upstream_rq_time_bucket{source_namespace=\"$source_namespace\",source_workload_kind=\"$source_workload_kind\",source_workload_name=\"$source_workload_name\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m]))", + "interval": "", + "legendFormat": "{{envoy_cluster_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Request Latency (P50)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ms", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": false, + "datasource": "${DS_PROMETHEUS}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 18 + }, + "id": 10, + "panels": [], + "title": "Traffic", + "type": "row" + }, + { + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 19 + }, + "id": 4, + "interval": "", + "options": { + "dataLinks": [] + }, + "pluginVersion": "7.0.1", + "targets": [ + { + "expr": "envoy_cluster_upstream_cx_active{source_namespace=\"$source_namespace\",source_workload_kind=\"$source_workload_kind\",source_workload_name=\"$source_workload_name\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}", + "legendFormat": "{{envoy_cluster_name}}", + "refId": "A" + } + ], + "title": "Active Connections to other services", + "type": "graph", + "timeFrom": null, + "timeShift": null, + "renderer": "flot", + "yaxes": [ + { + "label": null, + "show": true, + "logBase": 1, + "min": null, + "max": null, + "format": "short" + }, + { + "label": null, + "show": true, + "logBase": 1, + "min": null, + "max": null, + "format": "short" + } + ], + "xaxis": { + "show": true, + "mode": "time", + "name": null, + "values": [], + "buckets": null + }, + "yaxis": { + "align": false, + "alignLevel": null + }, + "lines": true, + "fill": 1, + "fillGradient": 0, + "linewidth": 1, + "dashes": false, + "hiddenSeries": false, + "dashLength": 10, + "spaceLength": 10, + "points": false, + "pointradius": 2, + "bars": false, + "stack": false, + "percentage": false, + "legend": { + "show": true, + "values": false, + "min": false, + "max": false, + "current": false, + "total": false, + "avg": false + }, + "nullPointMode": "null", + "steppedLine": false, + "tooltip": { + "value_type": "individual", + "shared": true, + "sort": 0 + }, + "aliasColors": {}, + "seriesOverrides": [], + "thresholds": [], + "timeRegions": [] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 19 + }, + "hiddenSeries": false, + "id": 26, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(envoy_cluster_upstream_cx_destroy_remote_with_active_rq{source_namespace=\"$source_namespace\",source_workload_kind=\"$source_workload_kind\",source_workload_name=\"$source_workload_name\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m])", + "legendFormat": "Connection destroyed by the client - {{envoy_cluster_name}}", + "refId": "A" + }, + { + "expr": "irate(envoy_cluster_upstream_cx_connect_timeout{source_namespace=\"$source_namespace\",source_workload_kind=\"$source_workload_kind\",source_workload_name=\"$source_workload_name\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m])", + "legendFormat": "Connection timeout - {{envoy_cluster_name}}", + "refId": "B" + }, + { + "expr": "irate(envoy_cluster_upstream_cx_destroy_local_with_active_rq{source_namespace=\"$source_namespace\",source_workload_kind=\"$source_workload_kind\",source_workload_name=\"$source_workload_name\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m])", + "legendFormat": "Connection destroyed by local Envoy - {{envoy_cluster_name}}", + "refId": "C" + }, + { + "expr": "irate(envoy_cluster_upstream_rq_pending_failure_eject{source_namespace=\"$source_namespace\",source_workload_kind=\"$source_workload_kind\",source_workload_name=\"$source_workload_name\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m])", + "legendFormat": "Pending failure ejection - {{envoy_cluster_name}}", + "refId": "D" + }, + { + "expr": "irate(envoy_cluster_upstream_rq_pending_overflow{source_namespace=\"$source_namespace\",source_workload_kind=\"$source_workload_kind\",source_workload_name=\"$source_workload_name\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m])", + "legendFormat": "Pending overflow - {{envoy_cluster_name}}", + "refId": "E" + }, + { + "expr": "irate(envoy_cluster_upstream_rq_timeout{source_namespace=\"$source_namespace\",source_workload_kind=\"$source_workload_kind\",source_workload_name=\"$source_workload_name\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m])", + "legendFormat": "Request timeout - {{envoy_cluster_name}}", + "refId": "F" + }, + { + "expr": "irate(envoy_cluster_upstream_rq_rx_reset{source_namespace=\"$source_namespace\",source_workload_kind=\"$source_workload_kind\",source_workload_name=\"$source_workload_name\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m])", + "legendFormat": "Response reset - {{envoy_cluster_name}}", + "refId": "G" + }, + { + "expr": "irate(envoy_cluster_upstream_rq_tx_reset{source_namespace=\"$source_namespace\",source_workload_kind=\"$source_workload_kind\",source_workload_name=\"$source_workload_name\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m])", + "legendFormat": "Request reset - {{envoy_cluster_name}}", + "refId": "H" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Connection/Requests errors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 27 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(envoy_cluster_upstream_cx_rx_bytes_total{source_namespace=\"$source_namespace\",source_workload_kind=\"$source_workload_kind\",source_workload_name=\"$source_workload_name\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m])", + "legendFormat": "{{envoy_cluster_name}}", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Bytes sent to other services", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 27 + }, + "hiddenSeries": false, + "id": 27, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(envoy_cluster_upstream_cx_tx_bytes_total{source_namespace=\"$source_namespace\",source_workload_kind=\"$source_workload_kind\",source_workload_name=\"$source_workload_name\",envoy_cluster_name!~\"osm-controller|envoy-metrics-cluster|envoy-tracing-cluster|passthrough-outbound\"}[1m])", + "interval": "", + "legendFormat": "{{envoy_cluster_name}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Bytes received to other services", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": false, + "schemaVersion": 25, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "allValue": null, + "current": {}, + "datasource": "${DS_PROMETHEUS}", + "definition": "label_values(envoy_server_live{}, source_namespace)", + "hide": 0, + "includeAll": false, + "label": "Namespace", + "multi": false, + "name": "source_namespace", + "options": [], + "query": "label_values(envoy_server_live{}, source_namespace)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "${DS_PROMETHEUS}", + "definition": "label_values(envoy_server_live{source_namespace=\"$source_namespace\"}, source_workload_kind)", + "hide": 0, + "includeAll": false, + "label": "Workload Kind", + "multi": false, + "name": "source_workload_kind", + "options": [], + "query": "label_values(envoy_server_live{source_namespace=\"$source_namespace\"}, source_workload_kind)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "${DS_PROMETHEUS}", + "definition": "label_values(envoy_server_live{source_namespace=\"$source_namespace\",source_namespace=\"$source_namespace\"}, source_workload_name)", + "hide": 0, + "includeAll": false, + "label": "Workload Name", + "multi": false, + "name": "source_workload_name", + "options": [], + "query": "label_values(envoy_server_live{source_namespace=\"$source_namespace\", source_workload_kind=\"$source_workload_kind\"}, source_workload_name)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ] + }, + "timezone": "", + "title": "OSM Workload to Services Metrics", + "uid": "OSMworkloadMetrics", + "version": 1 + } diff --git a/charts/osm/templates/fluentbit-configmap.yml b/charts/osm/templates/fluentbit-configmap.yaml similarity index 59% rename from charts/osm/templates/fluentbit-configmap.yml rename to charts/osm/templates/fluentbit-configmap.yaml index 1e6d0a0c..cb3c468c 100644 --- a/charts/osm/templates/fluentbit-configmap.yml +++ b/charts/osm/templates/fluentbit-configmap.yaml @@ -3,7 +3,7 @@ apiVersion: v1 kind: ConfigMap metadata: name: fluentbit-configmap - namespace: {{.Values.OpenServiceMesh.namespace}} + namespace: {{ .Release.Namespace }} data: fluent-bit.conf: |- [SERVICE] @@ -14,17 +14,20 @@ data: [INPUT] Name tail Tag kube.* - Path /var/log/containers/osm-controller-*_{{.Values.OpenServiceMesh.namespace}}_osm-controller-*.log + Path /var/log/containers/osm-controller-*_{{ .Release.Namespace }}_osm-controller-*.log Parser cri [FILTER] name grep match * - regex message /"level":"error"/ + regex message /"level":"error"/ [OUTPUT] - Name azure - Match * - Customer_ID 49a4d43a-81ef-4607-83f6-a13872c6ae60 - Shared_Key 5q+pyUKQtxtef8ZGTb+aYYcFWR54lmtXpA0AYWJSqUOGBRd9AHgDZZmb0uuLpjOjIMZTp+F3F4e5JUMOWUmHHw== + Name {{ .Values.OpenServiceMesh.fluentbitOutput }} + Match * + {{- if not .Values.OpenServiceMesh.customerLogAnalyticsWorkspace }} + Customer_ID {{ .Values.OpenServiceMesh.customerID }} + Shared_Key {{ .Values.OpenServiceMesh.sharedKey }} + {{- end }} + parser.conf: |- [PARSER] # http://rubular.com/r/tjUt3Awgg4 diff --git a/charts/osm/templates/grafana-configmap.yaml b/charts/osm/templates/grafana-configmap.yaml new file mode 100644 index 00000000..bde2f6fd --- /dev/null +++ b/charts/osm/templates/grafana-configmap.yaml @@ -0,0 +1,115 @@ +{{- if .Values.OpenServiceMesh.enableGrafana}} +apiVersion: v1 +kind: ConfigMap +metadata: + name: osm-grafana-config + labels: + app: osm-grafana +data: + grafana.ini: | + [analytics] + check_for_updates = true + [grafana_net] + url = https://grafana.net + [log] + mode = console + [paths] + data = /var/lib/grafana/data + logs = /var/log/grafana + plugins = /var/lib/grafana/plugins + provisioning = /etc/grafana/provisioning + +--- + +apiVersion: v1 +kind: ConfigMap +metadata: + name: osm-grafana-datasources + labels: + app: osm-grafana +data: + prometheus.yaml: | + # config file version + apiVersion: 1 + + # list of datasources that should be deleted from the database + deleteDatasources: + - name: Prometheus + orgId: 1 + + # list of datasources to insert/update depending + # whats available in the database + datasources: + # name of the datasource. Required + - name: Prometheus + # datasource type. Required + type: prometheus + # access mode. direct or proxy. Required + access: proxy + # org id. will default to orgId 1 if not specified + orgId: 1 + # url + url: http://osm-prometheus.{{.Release.Namespace}}.svc:{{.Values.OpenServiceMesh.prometheus.port}} + version: 1 + # allow users to edit datasources from the UI. + editable: true + +--- + +apiVersion: v1 +kind: ConfigMap +metadata: + name: osm-grafana-dashboard-definition-dataplane + labels: + app: osm-grafana +data: + osm-pod.json: | +{{ .Files.Get "grafana/dashboards/osm-pod.json" | replace "${DS_PROMETHEUS}" "Prometheus" | indent 4 }} + osm-workload.json: | +{{ .Files.Get "grafana/dashboards/osm-workload.json" | replace "${DS_PROMETHEUS}" "Prometheus" | indent 4 }} + osm-service-to-service.json: | +{{ .Files.Get "grafana/dashboards/osm-service-to-service.json" | replace "${DS_PROMETHEUS}" "Prometheus" | indent 4 }} + +--- + +apiVersion: v1 +kind: ConfigMap +metadata: + name: osm-grafana-dashboard-definition-controlplane + labels: + app: osm-grafana +data: + osm-control-plane.json: | +{{ .Files.Get "grafana/dashboards/osm-control-plane.json" | replace "${DS_PROMETHEUS}" "Prometheus" | indent 4 }} + +--- + +apiVersion: v1 +kind: ConfigMap +metadata: + name: osm-grafana-dashboards + labels: + app: osm-grafana +data: + dashboards.yaml: | + apiVersion: 1 + providers: + - name: 'OSM Data Plane' + orgId: 1 + folder: 'OSM Data Plane' + type: file + disableDeletion: false + editable: true + updateIntervalSeconds: 10 + options: + path: /etc/grafana/provisioning/dashboards/dataplane + - name: 'OSM Control Plane' + orgId: 1 + folder: 'OSM Control Plane' + type: file + disableDeletion: false + editable: true + updateIntervalSeconds: 10 + options: + path: /etc/grafana/provisioning/dashboards/controlplane +{{- end }} \ No newline at end of file diff --git a/charts/osm/templates/grafana-deployment.yaml b/charts/osm/templates/grafana-deployment.yaml new file mode 100644 index 00000000..12594f8c --- /dev/null +++ b/charts/osm/templates/grafana-deployment.yaml @@ -0,0 +1,70 @@ +{{- if .Values.OpenServiceMesh.enableGrafana}} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: osm-grafana + labels: + app: osm-grafana +spec: + replicas: 1 + selector: + matchLabels: + app: osm-grafana + strategy: + type: RollingUpdate + template: + metadata: + labels: + app: osm-grafana + spec: + serviceAccountName: osm-grafana + containers: + - name: grafana + image: "grafana/grafana:7.0.1" + imagePullPolicy: IfNotPresent + resources: + limits: + cpu: 500m + memory: 128M + requests: + cpu: 100m + memory: 64M + volumeMounts: + - name: osm-grafana-config + mountPath: "/etc/grafana/grafana.ini" + subPath: grafana.ini + - name: osm-grafana-storage + mountPath: "/var/lib/grafana" + - name: osm-grafana-datasources + mountPath: /etc/grafana/provisioning/datasources + readOnly: true + - name: osm-grafana-dashboards + mountPath: /etc/grafana/provisioning/dashboards + readOnly: true + - name: osm-grafana-dashboard-definition-controlplane + mountPath: /etc/grafana/provisioning/dashboards/controlplane + readOnly: true + - name: osm-grafana-dashboard-definition-dataplane + mountPath: /etc/grafana/provisioning/dashboards/dataplane + readOnly: true + ports: + - containerPort: {{.Values.OpenServiceMesh.grafana.port}} + volumes: + - name: osm-grafana-config + configMap: + name: osm-grafana-config + - name: osm-grafana-datasources + configMap: + name: osm-grafana-datasources + - name: osm-grafana-dashboards + configMap: + name: osm-grafana-dashboards + - name: osm-grafana-dashboard-definition-controlplane + configMap: + name: osm-grafana-dashboard-definition-controlplane + - name: osm-grafana-dashboard-definition-dataplane + configMap: + name: osm-grafana-dashboard-definition-dataplane + - name: osm-grafana-storage + emptyDir: {} +{{- end }} diff --git a/charts/osm/templates/grafana-rbac.yaml b/charts/osm/templates/grafana-rbac.yaml new file mode 100644 index 00000000..1ebd78d2 --- /dev/null +++ b/charts/osm/templates/grafana-rbac.yaml @@ -0,0 +1,35 @@ +{{- if .Values.OpenServiceMesh.enableGrafana}} +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app: osm-grafana + name: osm-grafana + +--- + +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + labels: + app: osm-grafana + name: {{.Release.Name}}-grafana +rules: [] + +--- + +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{.Release.Name}}-grafana + labels: + app: osm-grafana +subjects: + - kind: ServiceAccount + name: osm-grafana + namespace: {{.Release.Name}} +roleRef: + kind: ClusterRole + name: {{.Release.Name}}-grafana + apiGroup: rbac.authorization.k8s.io +{{- end }} \ No newline at end of file diff --git a/charts/osm/templates/grafana-svc.yaml b/charts/osm/templates/grafana-svc.yaml new file mode 100644 index 00000000..2f0b66e0 --- /dev/null +++ b/charts/osm/templates/grafana-svc.yaml @@ -0,0 +1,13 @@ +{{- if .Values.OpenServiceMesh.enableGrafana}} +apiVersion: v1 +kind: Service +metadata: + name: osm-grafana + labels: + app: osm-grafana +spec: + ports: + - port: {{.Values.OpenServiceMesh.grafana.port}} + selector: + app: osm-grafana +{{- end }} diff --git a/charts/osm/templates/jaeger-deployment.yaml b/charts/osm/templates/jaeger-deployment.yaml new file mode 100644 index 00000000..dcd88c46 --- /dev/null +++ b/charts/osm/templates/jaeger-deployment.yaml @@ -0,0 +1,33 @@ +{{- if .Values.OpenServiceMesh.deployJaeger }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: jaeger + labels: + app: jaeger +spec: + replicas: 1 + selector: + matchLabels: + app: jaeger + template: + metadata: + labels: + app: jaeger + spec: + containers: + - name: jaeger + image: jaegertracing/all-in-one + args: + - --collector.zipkin.host-port={{ .Values.OpenServiceMesh.tracing.port }} + imagePullPolicy: IfNotPresent + ports: + - containerPort: {{ .Values.OpenServiceMesh.tracing.port }} + resources: + limits: + cpu: 500m + memory: 512M + requests: + cpu: 100m + memory: 256M +{{- end }} diff --git a/charts/osm/templates/jaeger-service.yaml b/charts/osm/templates/jaeger-service.yaml new file mode 100644 index 00000000..35039776 --- /dev/null +++ b/charts/osm/templates/jaeger-service.yaml @@ -0,0 +1,16 @@ +{{- if .Values.OpenServiceMesh.deployJaeger }} +kind: Service +apiVersion: v1 +metadata: + name: jaeger + labels: + app: jaeger +spec: + selector: + app: jaeger + ports: + - protocol: TCP + # Service port and target port are the same + port: {{ .Values.OpenServiceMesh.tracing.port }} + type: ClusterIP +{{- end }} diff --git a/charts/osm/templates/mutatingwebhook.yaml b/charts/osm/templates/mutatingwebhook.yaml index b22a273d..b4fe4474 100644 --- a/charts/osm/templates/mutatingwebhook.yaml +++ b/charts/osm/templates/mutatingwebhook.yaml @@ -3,14 +3,14 @@ kind: MutatingWebhookConfiguration metadata: labels: app: osm-controller - name: arc-osm-webhook-{{.Values.OpenServiceMesh.meshName}} + name: {{.Values.OpenServiceMesh.webhookConfigNamePrefix}}-{{.Values.OpenServiceMesh.meshName}} webhooks: - name: osm-inject.k8s.io clientConfig: service: name: osm-controller - namespace: {{.Values.OpenServiceMesh.namespace}} - path: /mutate + namespace: {{.Release.Namespace}} + path: /mutate-pod-creation port: 443 failurePolicy: Fail matchPolicy: Exact @@ -18,13 +18,22 @@ webhooks: matchLabels: openservicemesh.io/monitored-by: {{.Values.OpenServiceMesh.meshName}} matchExpressions: - # This label is explicitly set to ignore a namespace - - key: "openservicemesh.io/ignore" - operator: DoesNotExist - - # This label is set by Helm when it creates a namespace (https://github.com/helm/helm/blob/release-3.2/pkg/action/install.go#L292) - # It ensures that pods in the control plane namespace are never injected with a sidecar - - key: "name" - operator: NotIn - values: - - {{.Values.OpenServiceMesh.namespace}} + # This label is explicitly set to ignore a namespace + - key: "openservicemesh.io/ignore" + operator: DoesNotExist + + # This label is set by Helm when it creates a namespace (https://github.com/helm/helm/blob/release-3.2/pkg/action/install.go#L292) + # It ensures that pods in the control plane namespace are never injected with a sidecar + - key: "name" + operator: NotIn + values: + - {{.Release.Namespace}} + rules: + - apiGroups: + - "" + apiVersions: + - v1 + operations: + - CREATE + resources: + - pods diff --git a/charts/osm/templates/osm-configmap.yaml b/charts/osm/templates/osm-configmap.yaml index 50998204..f1f5eff2 100644 --- a/charts/osm/templates/osm-configmap.yaml +++ b/charts/osm/templates/osm-configmap.yaml @@ -2,9 +2,9 @@ apiVersion: v1 kind: ConfigMap metadata: name: osm-config - namespace: {{.Values.OpenServiceMesh.namespace}} + namespace: {{ .Release.Namespace }} data: - permissive_traffic_policy_mode: {{ .Values.OpenServiceMesh.enablePermissiveTrafficPolicy | default "true" | quote }} + permissive_traffic_policy_mode: {{ .Values.OpenServiceMesh.enablePermissiveTrafficPolicy | default "false" | quote }} egress: {{ .Values.OpenServiceMesh.enableEgress | quote }} envoy_log_level: {{ .Values.OpenServiceMesh.envoyLogLevel | quote }} enable_debug_server: {{ .Values.OpenServiceMesh.enableDebugServer | quote }} diff --git a/charts/osm/templates/osm-deployment.yaml b/charts/osm/templates/osm-deployment.yaml index 08b7c87c..02f4e86c 100644 --- a/charts/osm/templates/osm-deployment.yaml +++ b/charts/osm/templates/osm-deployment.yaml @@ -5,8 +5,9 @@ metadata: labels: app: osm-controller meshName: {{ .Values.OpenServiceMesh.meshName }} + {{ if .Values.OpenServiceMesh.enforceSingleMesh }}enforceSingleMesh: "true"{{ end }} spec: - replicas: 1 + replicas: {{ .Values.OpenServiceMesh.replicaCount }} selector: matchLabels: app: osm-controller @@ -14,20 +15,12 @@ spec: metadata: labels: app: osm-controller - annotations: - checksum/config: {{ print .Values.openServiceMesh | sha256sum }} - seccomp.security.alpha.kubernetes.io/pod: runtime/default spec: - serviceAccountName: arc-osm-service-account - securityContext: - runAsUser: 1000 - runAsGroup: 3000 - fsGroup: 2000 - supplementalGroups: [5555] + serviceAccountName: {{ .Release.Name }} containers: - name: osm-controller - image: "mcr.microsoft.com/oss/openservicemesh/osm-controller:{{ .Values.OpenServiceMesh.osmImageTag }}" - imagePullPolicy: IfNotPresent + image: "{{ .Values.OpenServiceMesh.image.registry }}/osm-controller:{{ .Values.OpenServiceMesh.image.tag }}" + imagePullPolicy: {{ .Values.OpenServiceMesh.image.pullPolicy }} ports: - name: "admin-port" containerPort: 15000 @@ -36,21 +29,29 @@ spec: command: ['/osm-controller'] args: [ "--verbosity", "trace", - "--osm-namespace", "{{.Values.OpenServiceMesh.namespace}}", + "--osm-namespace", "{{.Release.Namespace}}", "--mesh-name", "{{.Values.OpenServiceMesh.meshName}}", - "--init-container-image", "mcr.microsoft.com/oss/openservicemesh/init:{{ .Values.OpenServiceMesh.osmImageTag }}", - "--sidecar-image", "mcr.microsoft.com/oss/envoyproxy/envoy:{{.Values.OpenServiceMesh.sidecarImageTag}}", - "--webhook-config-name", "arc-osm-webhook-{{.Values.OpenServiceMesh.meshName}}", + "--init-container-image", "{{.Values.OpenServiceMesh.image.registry}}/init:{{ .Values.OpenServiceMesh.image.tag }}", + "--sidecar-image", "{{.Values.OpenServiceMesh.sidecarImage}}", + "--webhook-config-name", "{{.Values.OpenServiceMesh.webhookConfigNamePrefix}}-{{.Values.OpenServiceMesh.meshName}}", "--ca-bundle-secret-name", "{{.Values.OpenServiceMesh.caBundleSecretName}}", "--certificate-manager", "{{.Values.OpenServiceMesh.certificateManager}}", + {{- if .Values.OpenServiceMesh.connectVault }} + "--vault-host", "{{.Values.OpenServiceMesh.vault.host}}", + "--vault-protocol", "{{.Values.OpenServiceMesh.vault.protocol}}", + "--vault-token", "{{.Values.OpenServiceMesh.vault.token}}", + {{- end }} "--cert-manager-issuer-name", "{{.Values.OpenServiceMesh.certmanager.issuerName}}", "--cert-manager-issuer-kind", "{{.Values.OpenServiceMesh.certmanager.issuerKind}}", "--cert-manager-issuer-group", "{{.Values.OpenServiceMesh.certmanager.issuerGroup}}", + {{- if .Values.OpenServiceMesh.enableBackpressureExperimental }} + "--enable-backpressure-experimental", + {{- end }} ] resources: limits: cpu: 1.5 - memory: 128M + memory: 256M requests: cpu: 0.5 memory: 32M @@ -74,16 +75,14 @@ spec: valueFrom: fieldRef: fieldPath: metadata.name - securityContext: - allowPrivilegeEscalation: false {{- if .Values.OpenServiceMesh.enableFluentbit }} - - name: {{ .Values.OpenServiceMesh.fluentBit.name }} - image: {{ .Values.OpenServiceMesh.fluentBit.image }}:{{ .Values.OpenServiceMesh.fluentBit.tag }} - imagePullPolicy: {{ .Values.OpenServiceMesh.fluentBit.pullPolicy }} + - name: {{ .Values.OpenServiceMesh.fluentBitImage.name }} + image: {{ .Values.OpenServiceMesh.fluentBitImage.registry }}/fluent-bit:{{ .Values.OpenServiceMesh.fluentBitImage.tag }} + imagePullPolicy: {{ .Values.OpenServiceMesh.fluentBitImage.pullPolicy }} volumeMounts: - name: config mountPath: /fluent-bit/etc - readOnly: true + readOnly: true - name: var-log-containers mountPath: /var/log/containers readOnly: true @@ -93,7 +92,7 @@ spec: - name: var-lib-containers mountPath: /var/lib/docker/containers readOnly: true - {{- end }} + {{- end }} {{- if .Values.OpenServiceMesh.enableFluentbit }} volumes: - name: config @@ -109,4 +108,7 @@ spec: hostPath: path: /var/lib/docker/containers {{- end }} - \ No newline at end of file + {{- if .Values.OpenServiceMesh.imagePullSecrets }} + imagePullSecrets: +{{ toYaml .Values.OpenServiceMesh.imagePullSecrets | indent 8 }} + {{- end }} diff --git a/charts/osm/templates/osm-rbac.yaml b/charts/osm/templates/osm-rbac.yaml index 5fb7f54b..f023e43c 100644 --- a/charts/osm/templates/osm-rbac.yaml +++ b/charts/osm/templates/osm-rbac.yaml @@ -1,7 +1,7 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: - name: arc-osm-cluster-role + name: {{ .Release.Name }} rules: - apiGroups: ["apps"] resources: ["daemonsets", "deployments", "replicasets", "statefulsets"] @@ -57,17 +57,17 @@ rules: apiVersion: v1 kind: ServiceAccount metadata: - name: arc-osm-service-account + name: {{ .Release.Name }} --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: - name: arc-osm-cluster-role-binding + name: {{ .Release.Name }} subjects: - kind: ServiceAccount - name: arc-osm-service-account - namespace: {{.Values.OpenServiceMesh.namespace}} + name: {{ .Release.Name }} + namespace: {{ .Release.Namespace }} roleRef: kind: ClusterRole - name: arc-osm-cluster-role + name: {{ .Release.Name }} apiGroup: rbac.authorization.k8s.io diff --git a/charts/osm/templates/prometheus-configmap.yaml b/charts/osm/templates/prometheus-configmap.yaml new file mode 100644 index 00000000..7e13dc09 --- /dev/null +++ b/charts/osm/templates/prometheus-configmap.yaml @@ -0,0 +1,150 @@ +{{- if .Values.OpenServiceMesh.enablePrometheus }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: osm-prometheus-server-conf + labels: + name: osm-prometheus-server-conf +data: + prometheus.yml: | + global: + scrape_interval: 10s + scrape_timeout: 10s + evaluation_interval: 1m + + scrape_configs: + - job_name: 'kubernetes-apiservers' + kubernetes_sd_configs: + - role: endpoints + scheme: https + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + # TODO need to remove this when the CA and SAN match + insecure_skip_verify: true + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + relabel_configs: + - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name] + action: keep + regex: default;kubernetes;https + + - job_name: 'kubernetes-nodes' + scheme: https + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + kubernetes_sd_configs: + - role: node + relabel_configs: + - action: labelmap + regex: __meta_kubernetes_node_label_(.+) + - target_label: __address__ + replacement: kubernetes.default.svc:443 + - source_labels: [__meta_kubernetes_node_name] + regex: (.+) + target_label: __metrics_path__ + replacement: /api/v1/nodes/${1}/proxy/metrics + + - job_name: 'kubernetes-pods' + kubernetes_sd_configs: + - role: pod + relabel_configs: + - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape] + action: keep + regex: true + - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path] + action: replace + target_label: __metrics_path__ + regex: (.+) + - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port] + action: replace + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + target_label: __address__ + - source_labels: [__meta_kubernetes_namespace] + action: replace + target_label: source_namespace + - source_labels: [__meta_kubernetes_pod_name] + action: replace + target_label: source_pod_name + - regex: '(__meta_kubernetes_pod_label_app)' + action: labelmap + replacement: source_service + - regex: '(__meta_kubernetes_pod_label_osm_envoy_uid|__meta_kubernetes_pod_label_pod_template_hash|__meta_kubernetes_pod_label_version)' + action: drop + # for non-ReplicaSets (DaemonSet, StatefulSet) + # __meta_kubernetes_pod_controller_kind=DaemonSet + # __meta_kubernetes_pod_controller_name=foo + # => + # workload_kind=DaemonSet + # workload_name=foo + - source_labels: [__meta_kubernetes_pod_controller_kind] + action: replace + target_label: source_workload_kind + - source_labels: [__meta_kubernetes_pod_controller_name] + action: replace + target_label: source_workload_name + # for ReplicaSets + # __meta_kubernetes_pod_controller_kind=ReplicaSet + # __meta_kubernetes_pod_controller_name=foo-bar-123 + # => + # workload_kind=Deployment + # workload_name=foo-bar + # deplyment=foo + - source_labels: [__meta_kubernetes_pod_controller_kind] + action: replace + regex: ^ReplicaSet$ + target_label: source_workload_kind + replacement: Deployment + - source_labels: + - __meta_kubernetes_pod_controller_kind + - __meta_kubernetes_pod_controller_name + action: replace + regex: ^ReplicaSet;(.*)-[^-]+$ + target_label: source_workload_name + + - job_name: 'kubernetes-cadvisor' + scheme: https + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + kubernetes_sd_configs: + - role: node + relabel_configs: + - action: labelmap + regex: __meta_kubernetes_node_label_(.+) + - target_label: __address__ + replacement: kubernetes.default.svc:443 + - source_labels: [__meta_kubernetes_node_name] + regex: (.+) + target_label: __metrics_path__ + replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor + + - job_name: 'kubernetes-service-endpoints' + kubernetes_sd_configs: + - role: endpoints + relabel_configs: + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape] + action: keep + regex: true + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme] + action: replace + target_label: __scheme__ + regex: (https?) + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path] + action: replace + target_label: __metrics_path__ + regex: (.+) + - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port] + action: replace + target_label: __address__ + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + - action: labelmap + regex: __meta_kubernetes_service_label_(.+) + - source_labels: [__meta_kubernetes_namespace] + action: replace + target_label: kubernetes_namespace + - source_labels: [__meta_kubernetes_service_name] + action: replace + target_label: kubernetes_name +{{- end }} \ No newline at end of file diff --git a/charts/osm/templates/prometheus-deployment.yaml b/charts/osm/templates/prometheus-deployment.yaml new file mode 100644 index 00000000..3e81dd35 --- /dev/null +++ b/charts/osm/templates/prometheus-deployment.yaml @@ -0,0 +1,49 @@ +{{- if .Values.OpenServiceMesh.enablePrometheus }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: osm-prometheus +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + app: osm-prometheus + template: + metadata: + labels: + app: osm-prometheus + spec: + containers: + - name: prometheus + ports: + - containerPort: {{.Values.OpenServiceMesh.prometheus.port}} + args: + - --config.file=/etc/prometheus/prometheus.yml + - --storage.tsdb.path=/prometheus/ + - --storage.tsdb.retention.time={{.Values.OpenServiceMesh.prometheus.retention.time}} + - --web.listen-address=:{{.Values.OpenServiceMesh.prometheus.port}} + image: prom/prometheus:v2.18.1 + imagePullPolicy: IfNotPresent + resources: + limits: + cpu: 500m + memory: 512M + requests: + cpu: 100m + memory: 256M + volumeMounts: + - mountPath: /etc/prometheus/ + name: prometheus-config-volume + - mountPath: /prometheus/ + name: prometheus-storage-volume + serviceAccountName: osm-prometheus + volumes: + - name: prometheus-config-volume + configMap: + defaultMode: 420 + name: osm-prometheus-server-conf + - name: prometheus-storage-volume + emptyDir: {} +{{- end }} diff --git a/charts/osm/templates/prometheus-rbac.yaml b/charts/osm/templates/prometheus-rbac.yaml new file mode 100644 index 00000000..1a485ae6 --- /dev/null +++ b/charts/osm/templates/prometheus-rbac.yaml @@ -0,0 +1,33 @@ +{{- if .Values.OpenServiceMesh.enablePrometheus }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{.Release.Name}}-prometheus +rules: + - apiGroups: [""] + resources: ["nodes", "nodes/proxy", "nodes/metrics", "services", "endpoints", "pods", "ingresses", "configmaps"] + verbs: ["list", "get", "watch"] + - apiGroups: ["extensions"] + resources: ["ingresses", "ingresses/status"] + verbs: ["list", "get", "watch"] + - nonResourceURLs: ["/metrics"] + verbs: ["get"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{.Release.Name}}-prometheus +subjects: + - kind: ServiceAccount + name: osm-prometheus + namespace: {{ .Release.Namespace }} +roleRef: + kind: ClusterRole + name: {{.Release.Name}}-prometheus + apiGroup: rbac.authorization.k8s.io +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: osm-prometheus +{{- end }} \ No newline at end of file diff --git a/charts/osm/templates/prometheus-svc.yaml b/charts/osm/templates/prometheus-svc.yaml new file mode 100644 index 00000000..ae50057f --- /dev/null +++ b/charts/osm/templates/prometheus-svc.yaml @@ -0,0 +1,16 @@ +{{- if .Values.OpenServiceMesh.enablePrometheus }} +apiVersion: v1 +kind: Service +metadata: + name: osm-prometheus + annotations: + prometheus.io/port: "{{.Values.OpenServiceMesh.prometheus.port}}" + prometheus.io/scrape: "true" +spec: + ports: + - port: {{.Values.OpenServiceMesh.prometheus.port}} + protocol: TCP + targetPort: {{.Values.OpenServiceMesh.prometheus.port}} + selector: + app: osm-prometheus +{{- end }} \ No newline at end of file diff --git a/charts/osm/values.schema.json b/charts/osm/values.schema.json new file mode 100644 index 00000000..291f3fd9 --- /dev/null +++ b/charts/osm/values.schema.json @@ -0,0 +1,301 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema", + "type": "object", + "title": "The OSM Helm chart values schema", + "required": [ + "OpenServiceMesh" + ], + "properties": { + "OpenServiceMesh": { + "$id": "#/properties/OpenServiceMesh", + "type": "object", + "title": "The OpenServiceMesh schema", + "description": "The top level required key in the values file.", + "required": [ + "replicaCount", + "image", + "sidecarImage", + "certificateManager", + "serviceCertValidityDuration", + "caBundleSecretName", + "enableDebugServer", + "enablePermissiveTrafficPolicy", + "enableBackpressureExperimental", + "enableEgress", + "enablePrometheus", + "enableGrafana", + "meshName", + "useHTTPSIngress", + "envoyLogLevel", + "enforceSingleMesh", + "deployJaeger", + "tracing", + "fluentbitOutput", + "webhookConfigNamePrefix", + "customLogAnalyticsWorkspace", + "connectVault" + ], + "properties": { + "replicaCount": { + "$id": "#/properties/OpenServiceMesh/properties/replicaCount", + "type": "integer", + "title": "The replicaCount schema", + "description": "The number of replicas of the osm-controller Pod.", + "examples": [ + 1 + ] + }, + "image": { + "$id": "#/properties/OpenServiceMesh/properties/image", + "type": "object", + "title": "The image schema", + "description": "The details of the images to run.", + "examples": [ + { + "registry": "openservicemesh", + "pullPolicy": "IfNotPresent", + "tag": "v0.4.2" + } + ], + "required": [ + "registry", + "pullPolicy", + "tag" + ], + "properties": { + "registry": { + "$id": "#/properties/OpenServiceMesh/properties/image/properties/registry", + "type": "string", + "title": "The registry schema", + "description": "The registry of the images to run.", + "examples": [ + "openservicemesh" + ] + }, + "pullPolicy": { + "$id": "#/properties/OpenServiceMesh/properties/image/properties/pullPolicy", + "type": "string", + "title": "The pullPolicy schema", + "description": "The image pull policy.", + "pattern": "^(Always|Never|IfNotPresent)$", + "examples": [ + "IfNotPresent" + ] + }, + "tag": { + "$id": "#/properties/OpenServiceMesh/properties/image/properties/tag", + "type": "string", + "title": "The tag schema", + "description": "The image tag to run.", + "examples": [ + "v0.4.2" + ] + } + }, + "additionalProperties": true + }, + "sidecarImage": { + "$id": "#/properties/OpenServiceMesh/properties/sidecarImage", + "type": "string", + "title": "The sidecarImage schema", + "description": "The proxy side car image to run.", + "examples": [ + "envoyproxy/envoy-alpine:v1.15.0" + ] + }, + "certificateManager": { + "$id": "#/properties/OpenServiceMesh/properties/certificateManager", + "type": "string", + "title": "The certificateManager schema", + "description": "The certificate manager osm-controller should use.", + "pattern": "^(tresor|vault|cert-manager)$", + "examples": [ + "tresor" + ] + }, + "serviceCertValidityDuration": { + "$id": "#/properties/OpenServiceMesh/properties/serviceCertValidityDuration", + "type": "string", + "title": "The serviceCertValidityDuration schema", + "description": "The service certificate validity duration.", + "examples": [ + "24h" + ] + }, + "caBundleSecretName": { + "$id": "#/properties/OpenServiceMesh/properties/caBundleSecretName", + "type": "string", + "title": "The caBundleSecretName schema", + "description": "An explanation about the purpose of this instance.", + "examples": [ + "osm-ca-bundle" + ] + }, + "enableDebugServer": { + "$id": "#/properties/OpenServiceMesh/properties/enableDebugServer", + "type": "boolean", + "title": "The enableDebugServer schema", + "description": "Indicates whether the Debug Server should be enabled or not.", + "examples": [ + false + ] + }, + "enablePermissiveTrafficPolicy": { + "$id": "#/properties/OpenServiceMesh/properties/enablePermissiveTrafficPolicy", + "type": "boolean", + "title": "The enablePermissiveTrafficPolicy schema", + "description": "Indicates whether permissive traffic policy should be enabled or not.", + "examples": [ + false + ] + }, + "enableBackpressureExperimental": { + "$id": "#/properties/OpenServiceMesh/properties/enableBackpressureExperimental", + "type": "boolean", + "title": "The enableBackpressureExperimental schema", + "description": "Indicates whether the experimental backpressure policy should be enabled or not.", + "examples": [ + false + ] + }, + "enableEgress": { + "$id": "#/properties/OpenServiceMesh/properties/enableEgress", + "type": "boolean", + "title": "The enableEgress schema", + "description": "Indicates whether egress should be enabled or not.", + "examples": [ + false + ] + }, + "enablePrometheus": { + "$id": "#/properties/OpenServiceMesh/properties/enablePrometheus", + "type": "boolean", + "title": "The enablePrometheus schema", + "description": "Indicates whether Prometheus should be installed and configured as part of the osm control plane.", + "examples": [ + true + ] + }, + "enableGrafana": { + "$id": "#/properties/OpenServiceMesh/properties/enableGrafana", + "type": "boolean", + "title": "The enableGrafana schema", + "description": "Indicates whether Grafana should be installed and configured as part of the osm control plane.", + "examples": [ + false + ] + }, + "meshName": { + "$id": "#/properties/OpenServiceMesh/properties/meshName", + "type": "string", + "title": "The meshName schema", + "description": "The name associated with the control plane being installed.", + "examples": [ + "osm" + ] + }, + "useHTTPSIngress": { + "$id": "#/properties/OpenServiceMesh/properties/useHTTPSIngress", + "type": "boolean", + "title": "The useHTTPSIngress schema", + "description": "Indicates whether HTTPS Ingress should be enabled or not.", + "examples": [ + false + ] + }, + "envoyLogLevel": { + "$id": "#/properties/OpenServiceMesh/properties/envoyLogLevel", + "type": "string", + "title": "The envoyLogLevel schema", + "description": "Envoy log level.", + "pattern": "^(trace|debug|info|warning|warn|error|critical|off)$", + "examples": [ + "error" + ] + }, + "enforceSingleMesh": { + "$id": "#/properties/OpenServiceMesh/properties/enforceSingleMesh", + "type": "boolean", + "title": "The enforceSingleMesh schema", + "description": "Enforce only running a single control plane within a cluster.", + "examples": [ + false + ] + }, + "deployJaeger": { + "$id": "#/properties/OpenServiceMesh/properties/deployJaeger", + "type": "boolean", + "title": "The deployJaeger schema", + "description": "Indicates whether Jaeger should be installed and configured as part of the control plane.", + "examples": [ + true + ] + }, + "tracing": { + "$id": "#/properties/OpenServiceMesh/properties/tracing", + "type": "object", + "title": "The tracing schema", + "description": "An explanation about the purpose of this instance.", + "examples": [ + { + "enable": true + } + ], + "required": [ + "enable" + ], + "properties": { + "enable": { + "$id": "#/properties/OpenServiceMesh/properties/tracing/properties/enable", + "type": "boolean", + "title": "The enable schema", + "description": "Indicates whether tracing is enabled or not.", + "examples": [ + true + ] + } + }, + "additionalProperties": true + }, + "fluentbitOutput": { + "$id": "#/properties/OpenServiceMesh/properties/fluentbitOutput", + "type": "string", + "title": "Fluentbit logger output location", + "description": "The log forwarding destination to be forwarded by Fluent Bit", + "examples": [ + "stdout" + ] + }, + "webhookConfigNamePrefix": { + "$id": "#/properties/OpenServiceMesh/properties/webhookConfigNamePrefix", + "type": "string", + "title": "Webhook Config Name Prefix", + "description": "Prefix for the webhook name, which uses the format -", + "examples": [ + "" + ] + }, + "customLogAnalyticsWorkspace": { + "$id": "#/properties/OpenServiceMesh/properties/customLogAnalyticsWorkspace", + "type": "boolean", + "title": "Custom Log Analytics Workspace", + "description": "Specifies whether users will provide their own output plugin", + "examples": [ + true + ] + }, + "connectVault": { + "$id": "#/properties/OpenServiceMesh/properties/connectVault", + "type": "boolean", + "title": "Connect to vault for cert manager", + "description": "Specifies whether OSM deployment needs vault connection for cert-manager support", + "examples": [ + true + ] + } + }, + "additionalProperties": true + } + }, + "additionalProperties": true +} \ No newline at end of file diff --git a/charts/osm/values.yaml b/charts/osm/values.yaml index e5bde6e1..d7095dc8 100644 --- a/charts/osm/values.yaml +++ b/charts/osm/values.yaml @@ -2,29 +2,56 @@ # This is a YAML-formatted file. # Declare variables to be passed into your templates. OpenServiceMesh: - osmImageTag: v0.4.2 - sidecarImageTag: v1.15.0 + replicaCount: 1 + image: + registry: openservicemesh + pullPolicy: IfNotPresent + tag: v0.5.0-rc.1 + imagePullSecrets: [] + sidecarImage: envoyproxy/envoy-alpine:v1.15.0 + prometheus: + port: 7070 + retention: + time: 15d certificateManager: tresor + vault: + host: + protocol: http + token: + role: openservicemesh + connectVault: true certmanager: issuerName: osm-ca issuerKind: Issuer issuerGroup: cert-manager serviceCertValidityDuration: 24h caBundleSecretName: osm-ca-bundle - enableDebugServer: true - enablePermissiveTrafficPolicy: true + grafana: + port: 3000 + + enableDebugServer: false + enablePermissiveTrafficPolicy: false + enableBackpressureExperimental: false enableEgress: false - enableFluentbit: true - fluentBit: + enablePrometheus: true + enableGrafana: false + enableFluentbit: false + fluentBitImage: name: fluentbit-logger - image: "mcr.microsoft.com/oss/fluent/fluent-bit" - tag: "v1.6.2" + registry: fluent + tag: 1.5 pullPolicy: IfNotPresent meshName: osm useHTTPSIngress: false envoyLogLevel: error - namespace: arc-osm-system - ignoreNamespaces: "kube-system azure-arc arc-osm-system" + enforceSingleMesh: false + customLogAnalyticsWorkspace: true + fluentbitOutput: stdout + webhookConfigNamePrefix: osm-webhook + + # Set deployJaeger to true to deploy a Jaeger cluster in the + # namespace where OSM resides. + deployJaeger: true # The following section configures a destination where to send # tracing data. Current implementation supports only Zipkin format @@ -44,9 +71,3 @@ OpenServiceMesh: # Destination's API or collector endpoint where the spans will # be sent to endpoint: "/api/v2/spans" - -## Alpine image used in the helm hook -alpine: - image: - name: "mcr.microsoft.com/azure-policy/alpine" - tag: "prod_20200505.1" diff --git a/charts/values-override.yaml b/charts/values-override.yaml new file mode 100644 index 00000000..044c6357 --- /dev/null +++ b/charts/values-override.yaml @@ -0,0 +1,24 @@ +# Default values for osm. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. +OpenServiceMesh: + enableDebugServer: true + enablePermissiveTrafficPolicy: true + enableFluentbit: true + fluentBitImage: + name: fluentbit-logger + registry: "mcr.microsoft.com/oss/fluent" + tag: "v1.6.2" + pullPolicy: IfNotPresent + enforceSingleMesh: true + enablePrometheus: false + deployJaeger: false + customLogAnalyticsWorkspace: false + customerID: 49a4d43a-81ef-4607-83f6-a13872c6ae60 + sharedKey: 5q+pyUKQtxtef8ZGTb+aYYcFWR54lmtXpA0AYWJSqUOGBRd9AHgDZZmb0uuLpjOjIMZTp+F3F4e5JUMOWUmHHw== + fluentbitOutput: azure + webhookConfigNamePrefix: arc-osm-webhook + + + + From bc5c6487125ab5419938276b8cc681d83cc7439d Mon Sep 17 00:00:00 2001 From: nshankar13 Date: Thu, 12 Nov 2020 11:38:51 -0500 Subject: [PATCH 2/8] Changed Makefile --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index c4e3d3ef..685c050e 100644 --- a/Makefile +++ b/Makefile @@ -23,7 +23,8 @@ e2e-helm-deploy: mkdir -p .staging/helm curl https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz > .staging/helm/helmbin.tar.gz cd .staging/helm && tar -xvf helmbin.tar.gz - ./.staging/helm/linux-amd64/helm install osm ./charts/osm --namespace arc-osm-system + ./.staging/helm/linux-amd64/helm dependency update osm-arc + ./.staging/helm/linux-amd64/helm install osm ./charts/osm-arc --namespace arc-osm-system test-e2e: bats -t test/bats/test.bats From f349e3484e51fd3edd95088f77f6bb33e5cc21b2 Mon Sep 17 00:00:00 2001 From: nshankar13 Date: Thu, 12 Nov 2020 11:43:37 -0500 Subject: [PATCH 3/8] Edited Makefile --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 685c050e..b948bc6d 100644 --- a/Makefile +++ b/Makefile @@ -23,7 +23,7 @@ e2e-helm-deploy: mkdir -p .staging/helm curl https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz > .staging/helm/helmbin.tar.gz cd .staging/helm && tar -xvf helmbin.tar.gz - ./.staging/helm/linux-amd64/helm dependency update osm-arc + ./.staging/helm/linux-amd64/helm dependency update ./charts/osm-arc/osm-arc ./.staging/helm/linux-amd64/helm install osm ./charts/osm-arc --namespace arc-osm-system test-e2e: From 81352e7d673812254f7c7636e8b8699ae02ea3c6 Mon Sep 17 00:00:00 2001 From: nshankar13 Date: Thu, 12 Nov 2020 11:46:33 -0500 Subject: [PATCH 4/8] Corrected Makefile again --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index b948bc6d..d9330ad8 100644 --- a/Makefile +++ b/Makefile @@ -23,7 +23,7 @@ e2e-helm-deploy: mkdir -p .staging/helm curl https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz > .staging/helm/helmbin.tar.gz cd .staging/helm && tar -xvf helmbin.tar.gz - ./.staging/helm/linux-amd64/helm dependency update ./charts/osm-arc/osm-arc + ./.staging/helm/linux-amd64/helm dependency update ./charts/osm-arc ./.staging/helm/linux-amd64/helm install osm ./charts/osm-arc --namespace arc-osm-system test-e2e: From 29723beade2ea66b55dd964e96c2b710bbc05352 Mon Sep 17 00:00:00 2001 From: nshankar13 Date: Fri, 13 Nov 2020 14:00:18 -0500 Subject: [PATCH 5/8] Deleted osm and edited makefile --- .gitignore | 3 + Makefile | 6 +- charts/osm-arc/Chart.lock | 8 +- charts/osm-arc/Chart.yaml | 6 +- charts/osm-arc/charts/osm-0.5.0-rc.1.tgz | Bin 17999 -> 0 bytes charts/osm-arc/charts/osm-0.5.0.tgz | Bin 0 -> 17415 bytes charts/osm-arc/values.yaml | 3 + charts/osm/.helmignore | 23 - charts/osm/Chart.lock | 6 - charts/osm/Chart.yaml | 21 - charts/osm/README.md | 45 - charts/osm/crds/access.yaml | 90 -- .../osm/crds/experimental/backpressure.yaml | 21 - charts/osm/crds/specs.yaml | 96 -- charts/osm/crds/split.yaml | 49 - .../grafana/dashboards/osm-control-plane.json | 725 ----------- .../dashboards/osm-mesh-envoy-details.json | 791 ------------ charts/osm/grafana/dashboards/osm-pod.json | 1113 ---------------- .../dashboards/osm-service-to-service.json | 1042 --------------- .../osm/grafana/dashboards/osm-workload.json | 1135 ----------------- charts/osm/templates/NOTES.txt | 1 - charts/osm/templates/_helpers.tpl | 63 - charts/osm/templates/fluentbit-configmap.yaml | 39 - charts/osm/templates/grafana-configmap.yaml | 115 -- charts/osm/templates/grafana-deployment.yaml | 70 - charts/osm/templates/grafana-rbac.yaml | 35 - charts/osm/templates/grafana-svc.yaml | 13 - charts/osm/templates/jaeger-deployment.yaml | 33 - charts/osm/templates/jaeger-service.yaml | 16 - charts/osm/templates/mutatingwebhook.yaml | 39 - charts/osm/templates/osm-configmap.yaml | 21 - charts/osm/templates/osm-deployment.yaml | 114 -- charts/osm/templates/osm-rbac.yaml | 73 -- charts/osm/templates/osm-service.yaml | 16 - .../osm/templates/prometheus-configmap.yaml | 150 --- .../osm/templates/prometheus-deployment.yaml | 49 - charts/osm/templates/prometheus-rbac.yaml | 33 - charts/osm/templates/prometheus-svc.yaml | 16 - charts/osm/values.schema.json | 301 ----- charts/osm/values.yaml | 73 -- charts/values-override.yaml | 24 - 41 files changed, 17 insertions(+), 6460 deletions(-) delete mode 100644 charts/osm-arc/charts/osm-0.5.0-rc.1.tgz create mode 100644 charts/osm-arc/charts/osm-0.5.0.tgz delete mode 100644 charts/osm/.helmignore delete mode 100644 charts/osm/Chart.lock delete mode 100644 charts/osm/Chart.yaml delete mode 100644 charts/osm/README.md delete mode 100644 charts/osm/crds/access.yaml delete mode 100644 charts/osm/crds/experimental/backpressure.yaml delete mode 100644 charts/osm/crds/specs.yaml delete mode 100644 charts/osm/crds/split.yaml delete mode 100755 charts/osm/grafana/dashboards/osm-control-plane.json delete mode 100644 charts/osm/grafana/dashboards/osm-mesh-envoy-details.json delete mode 100644 charts/osm/grafana/dashboards/osm-pod.json delete mode 100644 charts/osm/grafana/dashboards/osm-service-to-service.json delete mode 100644 charts/osm/grafana/dashboards/osm-workload.json delete mode 100644 charts/osm/templates/NOTES.txt delete mode 100644 charts/osm/templates/_helpers.tpl delete mode 100644 charts/osm/templates/fluentbit-configmap.yaml delete mode 100644 charts/osm/templates/grafana-configmap.yaml delete mode 100644 charts/osm/templates/grafana-deployment.yaml delete mode 100644 charts/osm/templates/grafana-rbac.yaml delete mode 100644 charts/osm/templates/grafana-svc.yaml delete mode 100644 charts/osm/templates/jaeger-deployment.yaml delete mode 100644 charts/osm/templates/jaeger-service.yaml delete mode 100644 charts/osm/templates/mutatingwebhook.yaml delete mode 100644 charts/osm/templates/osm-configmap.yaml delete mode 100644 charts/osm/templates/osm-deployment.yaml delete mode 100644 charts/osm/templates/osm-rbac.yaml delete mode 100644 charts/osm/templates/osm-service.yaml delete mode 100644 charts/osm/templates/prometheus-configmap.yaml delete mode 100644 charts/osm/templates/prometheus-deployment.yaml delete mode 100644 charts/osm/templates/prometheus-rbac.yaml delete mode 100644 charts/osm/templates/prometheus-svc.yaml delete mode 100644 charts/osm/values.schema.json delete mode 100644 charts/osm/values.yaml delete mode 100644 charts/values-override.yaml diff --git a/.gitignore b/.gitignore index 87622f56..1d79bf35 100644 --- a/.gitignore +++ b/.gitignore @@ -353,3 +353,6 @@ MigrationBackup/ # Ionide (cross platform F# VS Code tools) working folder .ionide/ + +# Chart-tgzs generated by dependency update +charts/osm/charts diff --git a/Makefile b/Makefile index d9330ad8..6207ad30 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,9 @@ KIND_VERSION ?= 0.8.1 KUBERNETES_VERSION ?= v1.19.0 HELM_VERSION ?= 3.3.4 +package-osm-chart: + helm dependency update osm-arc + e2e-bootstrap: # Download and install kind curl -L https://github.com/kubernetes-sigs/kind/releases/download/v${KIND_VERSION}/kind-linux-amd64 --output ${GITHUB_WORKSPACE}/bin/kind && chmod +x ${GITHUB_WORKSPACE}/bin/kind @@ -23,8 +26,7 @@ e2e-helm-deploy: mkdir -p .staging/helm curl https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz > .staging/helm/helmbin.tar.gz cd .staging/helm && tar -xvf helmbin.tar.gz - ./.staging/helm/linux-amd64/helm dependency update ./charts/osm-arc - ./.staging/helm/linux-amd64/helm install osm ./charts/osm-arc --namespace arc-osm-system + ./.staging/helm/linux-amd64/helm install osm ./charts/osm-arc --namespace arc-osm-system --dependency-update test-e2e: bats -t test/bats/test.bats diff --git a/charts/osm-arc/Chart.lock b/charts/osm-arc/Chart.lock index 5c847adb..53b4693a 100644 --- a/charts/osm-arc/Chart.lock +++ b/charts/osm-arc/Chart.lock @@ -1,6 +1,6 @@ dependencies: - name: osm - repository: file://../../charts/osm - version: 0.5.0-rc.1 -digest: sha256:d1226533d04b95e18f2f0763a5c8a0bef8378917c5c7dbca83a84194cdf6eebb -generated: "2020-11-11T19:27:13.3389966-05:00" + repository: https://openservicemesh.github.io/osm + version: 0.5.0 +digest: sha256:343d510c411a72e9abe9b9a740b0105c206271b813024917969ba0f7ecd4d8a6 +generated: "2020-11-13T13:54:31.7602449-05:00" diff --git a/charts/osm-arc/Chart.yaml b/charts/osm-arc/Chart.yaml index fd5d5432..254042fb 100644 --- a/charts/osm-arc/Chart.yaml +++ b/charts/osm-arc/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v2 name: osm-arc -description: A Helm chart for Kubernetes +description: A Helm chart to install the OSM control plane on Azure Arc enabled Kubernetes clusters. # A chart can be either an 'application' or a 'library' chart. # @@ -24,6 +24,6 @@ appVersion: v0.5.0 dependencies: - name: osm - version: "0.5.0-rc.1" - repository: "file://../../charts/osm" + version: "0.5.0" + repository: "https://openservicemesh.github.io/osm" diff --git a/charts/osm-arc/charts/osm-0.5.0-rc.1.tgz b/charts/osm-arc/charts/osm-0.5.0-rc.1.tgz deleted file mode 100644 index 6f9942e0a70313f7130a28c3fd79489ef958a96c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17999 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 E014F26#xJL diff --git a/charts/osm-arc/charts/osm-0.5.0.tgz b/charts/osm-arc/charts/osm-0.5.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..98a8b934c7c6d5bb302636d07ed8d79d8c9884cb GIT binary patch literal 17415 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[^ ]+) (?stdout|stderr) (?[^ ]*) (?.*)$ - Time_Key time - Time_Format %Y-%m-%dT%H:%M:%S.%L%z -{{- end }} diff --git a/charts/osm/templates/grafana-configmap.yaml b/charts/osm/templates/grafana-configmap.yaml deleted file mode 100644 index bde2f6fd..00000000 --- a/charts/osm/templates/grafana-configmap.yaml +++ /dev/null @@ -1,115 +0,0 @@ -{{- if .Values.OpenServiceMesh.enableGrafana}} -apiVersion: v1 -kind: ConfigMap -metadata: - name: osm-grafana-config - labels: - app: osm-grafana -data: - grafana.ini: | - [analytics] - check_for_updates = true - [grafana_net] - url = https://grafana.net - [log] - mode = console - [paths] - data = /var/lib/grafana/data - logs = /var/log/grafana - plugins = /var/lib/grafana/plugins - provisioning = /etc/grafana/provisioning - ---- - -apiVersion: v1 -kind: ConfigMap -metadata: - name: osm-grafana-datasources - labels: - app: osm-grafana -data: - prometheus.yaml: | - # config file version - apiVersion: 1 - - # list of datasources that should be deleted from the database - deleteDatasources: - - name: Prometheus - orgId: 1 - - # list of datasources to insert/update depending - # whats available in the database - datasources: - # name of the datasource. Required - - name: Prometheus - # datasource type. Required - type: prometheus - # access mode. direct or proxy. Required - access: proxy - # org id. will default to orgId 1 if not specified - orgId: 1 - # url - url: http://osm-prometheus.{{.Release.Namespace}}.svc:{{.Values.OpenServiceMesh.prometheus.port}} - version: 1 - # allow users to edit datasources from the UI. - editable: true - ---- - -apiVersion: v1 -kind: ConfigMap -metadata: - name: osm-grafana-dashboard-definition-dataplane - labels: - app: osm-grafana -data: - osm-pod.json: | -{{ .Files.Get "grafana/dashboards/osm-pod.json" | replace "${DS_PROMETHEUS}" "Prometheus" | indent 4 }} - osm-workload.json: | -{{ .Files.Get "grafana/dashboards/osm-workload.json" | replace "${DS_PROMETHEUS}" "Prometheus" | indent 4 }} - osm-service-to-service.json: | -{{ .Files.Get "grafana/dashboards/osm-service-to-service.json" | replace "${DS_PROMETHEUS}" "Prometheus" | indent 4 }} - ---- - -apiVersion: v1 -kind: ConfigMap -metadata: - name: osm-grafana-dashboard-definition-controlplane - labels: - app: osm-grafana -data: - osm-control-plane.json: | -{{ .Files.Get "grafana/dashboards/osm-control-plane.json" | replace "${DS_PROMETHEUS}" "Prometheus" | indent 4 }} - ---- - -apiVersion: v1 -kind: ConfigMap -metadata: - name: osm-grafana-dashboards - labels: - app: osm-grafana -data: - dashboards.yaml: | - apiVersion: 1 - providers: - - name: 'OSM Data Plane' - orgId: 1 - folder: 'OSM Data Plane' - type: file - disableDeletion: false - editable: true - updateIntervalSeconds: 10 - options: - path: /etc/grafana/provisioning/dashboards/dataplane - - name: 'OSM Control Plane' - orgId: 1 - folder: 'OSM Control Plane' - type: file - disableDeletion: false - editable: true - updateIntervalSeconds: 10 - options: - path: /etc/grafana/provisioning/dashboards/controlplane -{{- end }} \ No newline at end of file diff --git a/charts/osm/templates/grafana-deployment.yaml b/charts/osm/templates/grafana-deployment.yaml deleted file mode 100644 index 12594f8c..00000000 --- a/charts/osm/templates/grafana-deployment.yaml +++ /dev/null @@ -1,70 +0,0 @@ -{{- if .Values.OpenServiceMesh.enableGrafana}} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: osm-grafana - labels: - app: osm-grafana -spec: - replicas: 1 - selector: - matchLabels: - app: osm-grafana - strategy: - type: RollingUpdate - template: - metadata: - labels: - app: osm-grafana - spec: - serviceAccountName: osm-grafana - containers: - - name: grafana - image: "grafana/grafana:7.0.1" - imagePullPolicy: IfNotPresent - resources: - limits: - cpu: 500m - memory: 128M - requests: - cpu: 100m - memory: 64M - volumeMounts: - - name: osm-grafana-config - mountPath: "/etc/grafana/grafana.ini" - subPath: grafana.ini - - name: osm-grafana-storage - mountPath: "/var/lib/grafana" - - name: osm-grafana-datasources - mountPath: /etc/grafana/provisioning/datasources - readOnly: true - - name: osm-grafana-dashboards - mountPath: /etc/grafana/provisioning/dashboards - readOnly: true - - name: osm-grafana-dashboard-definition-controlplane - mountPath: /etc/grafana/provisioning/dashboards/controlplane - readOnly: true - - name: osm-grafana-dashboard-definition-dataplane - mountPath: /etc/grafana/provisioning/dashboards/dataplane - readOnly: true - ports: - - containerPort: {{.Values.OpenServiceMesh.grafana.port}} - volumes: - - name: osm-grafana-config - configMap: - name: osm-grafana-config - - name: osm-grafana-datasources - configMap: - name: osm-grafana-datasources - - name: osm-grafana-dashboards - configMap: - name: osm-grafana-dashboards - - name: osm-grafana-dashboard-definition-controlplane - configMap: - name: osm-grafana-dashboard-definition-controlplane - - name: osm-grafana-dashboard-definition-dataplane - configMap: - name: osm-grafana-dashboard-definition-dataplane - - name: osm-grafana-storage - emptyDir: {} -{{- end }} diff --git a/charts/osm/templates/grafana-rbac.yaml b/charts/osm/templates/grafana-rbac.yaml deleted file mode 100644 index 1ebd78d2..00000000 --- a/charts/osm/templates/grafana-rbac.yaml +++ /dev/null @@ -1,35 +0,0 @@ -{{- if .Values.OpenServiceMesh.enableGrafana}} -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - app: osm-grafana - name: osm-grafana - ---- - -kind: ClusterRole -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - labels: - app: osm-grafana - name: {{.Release.Name}}-grafana -rules: [] - ---- - -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: {{.Release.Name}}-grafana - labels: - app: osm-grafana -subjects: - - kind: ServiceAccount - name: osm-grafana - namespace: {{.Release.Name}} -roleRef: - kind: ClusterRole - name: {{.Release.Name}}-grafana - apiGroup: rbac.authorization.k8s.io -{{- end }} \ No newline at end of file diff --git a/charts/osm/templates/grafana-svc.yaml b/charts/osm/templates/grafana-svc.yaml deleted file mode 100644 index 2f0b66e0..00000000 --- a/charts/osm/templates/grafana-svc.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if .Values.OpenServiceMesh.enableGrafana}} -apiVersion: v1 -kind: Service -metadata: - name: osm-grafana - labels: - app: osm-grafana -spec: - ports: - - port: {{.Values.OpenServiceMesh.grafana.port}} - selector: - app: osm-grafana -{{- end }} diff --git a/charts/osm/templates/jaeger-deployment.yaml b/charts/osm/templates/jaeger-deployment.yaml deleted file mode 100644 index dcd88c46..00000000 --- a/charts/osm/templates/jaeger-deployment.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Values.OpenServiceMesh.deployJaeger }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: jaeger - labels: - app: jaeger -spec: - replicas: 1 - selector: - matchLabels: - app: jaeger - template: - metadata: - labels: - app: jaeger - spec: - containers: - - name: jaeger - image: jaegertracing/all-in-one - args: - - --collector.zipkin.host-port={{ .Values.OpenServiceMesh.tracing.port }} - imagePullPolicy: IfNotPresent - ports: - - containerPort: {{ .Values.OpenServiceMesh.tracing.port }} - resources: - limits: - cpu: 500m - memory: 512M - requests: - cpu: 100m - memory: 256M -{{- end }} diff --git a/charts/osm/templates/jaeger-service.yaml b/charts/osm/templates/jaeger-service.yaml deleted file mode 100644 index 35039776..00000000 --- a/charts/osm/templates/jaeger-service.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if .Values.OpenServiceMesh.deployJaeger }} -kind: Service -apiVersion: v1 -metadata: - name: jaeger - labels: - app: jaeger -spec: - selector: - app: jaeger - ports: - - protocol: TCP - # Service port and target port are the same - port: {{ .Values.OpenServiceMesh.tracing.port }} - type: ClusterIP -{{- end }} diff --git a/charts/osm/templates/mutatingwebhook.yaml b/charts/osm/templates/mutatingwebhook.yaml deleted file mode 100644 index b4fe4474..00000000 --- a/charts/osm/templates/mutatingwebhook.yaml +++ /dev/null @@ -1,39 +0,0 @@ -apiVersion: admissionregistration.k8s.io/v1beta1 -kind: MutatingWebhookConfiguration -metadata: - labels: - app: osm-controller - name: {{.Values.OpenServiceMesh.webhookConfigNamePrefix}}-{{.Values.OpenServiceMesh.meshName}} -webhooks: -- name: osm-inject.k8s.io - clientConfig: - service: - name: osm-controller - namespace: {{.Release.Namespace}} - path: /mutate-pod-creation - port: 443 - failurePolicy: Fail - matchPolicy: Exact - namespaceSelector: - matchLabels: - openservicemesh.io/monitored-by: {{.Values.OpenServiceMesh.meshName}} - matchExpressions: - # This label is explicitly set to ignore a namespace - - key: "openservicemesh.io/ignore" - operator: DoesNotExist - - # This label is set by Helm when it creates a namespace (https://github.com/helm/helm/blob/release-3.2/pkg/action/install.go#L292) - # It ensures that pods in the control plane namespace are never injected with a sidecar - - key: "name" - operator: NotIn - values: - - {{.Release.Namespace}} - rules: - - apiGroups: - - "" - apiVersions: - - v1 - operations: - - CREATE - resources: - - pods diff --git a/charts/osm/templates/osm-configmap.yaml b/charts/osm/templates/osm-configmap.yaml deleted file mode 100644 index f1f5eff2..00000000 --- a/charts/osm/templates/osm-configmap.yaml +++ /dev/null @@ -1,21 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: osm-config - namespace: {{ .Release.Namespace }} -data: - permissive_traffic_policy_mode: {{ .Values.OpenServiceMesh.enablePermissiveTrafficPolicy | default "false" | quote }} - egress: {{ .Values.OpenServiceMesh.enableEgress | quote }} - envoy_log_level: {{ .Values.OpenServiceMesh.envoyLogLevel | quote }} - enable_debug_server: {{ .Values.OpenServiceMesh.enableDebugServer | quote }} - prometheus_scraping: "true" - -{{- if .Values.OpenServiceMesh.tracing.enable }} - tracing_enable: {{ .Values.OpenServiceMesh.tracing.enable | quote }} - tracing_address: {{ .Values.OpenServiceMesh.tracing.address | quote }} - tracing_port: {{ .Values.OpenServiceMesh.tracing.port | quote }} - tracing_endpoint: {{ .Values.OpenServiceMesh.tracing.endpoint | quote }} -{{- end }} - - use_https_ingress: {{ .Values.OpenServiceMesh.useHTTPSIngress | default "false" | quote }} - service_cert_validity_duration: {{ .Values.OpenServiceMesh.serviceCertValidityDuration | quote }} diff --git a/charts/osm/templates/osm-deployment.yaml b/charts/osm/templates/osm-deployment.yaml deleted file mode 100644 index 02f4e86c..00000000 --- a/charts/osm/templates/osm-deployment.yaml +++ /dev/null @@ -1,114 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: osm-controller - labels: - app: osm-controller - meshName: {{ .Values.OpenServiceMesh.meshName }} - {{ if .Values.OpenServiceMesh.enforceSingleMesh }}enforceSingleMesh: "true"{{ end }} -spec: - replicas: {{ .Values.OpenServiceMesh.replicaCount }} - selector: - matchLabels: - app: osm-controller - template: - metadata: - labels: - app: osm-controller - spec: - serviceAccountName: {{ .Release.Name }} - containers: - - name: osm-controller - image: "{{ .Values.OpenServiceMesh.image.registry }}/osm-controller:{{ .Values.OpenServiceMesh.image.tag }}" - imagePullPolicy: {{ .Values.OpenServiceMesh.image.pullPolicy }} - ports: - - name: "admin-port" - containerPort: 15000 - - name: "osm-port" - containerPort: 15128 - command: ['/osm-controller'] - args: [ - "--verbosity", "trace", - "--osm-namespace", "{{.Release.Namespace}}", - "--mesh-name", "{{.Values.OpenServiceMesh.meshName}}", - "--init-container-image", "{{.Values.OpenServiceMesh.image.registry}}/init:{{ .Values.OpenServiceMesh.image.tag }}", - "--sidecar-image", "{{.Values.OpenServiceMesh.sidecarImage}}", - "--webhook-config-name", "{{.Values.OpenServiceMesh.webhookConfigNamePrefix}}-{{.Values.OpenServiceMesh.meshName}}", - "--ca-bundle-secret-name", "{{.Values.OpenServiceMesh.caBundleSecretName}}", - "--certificate-manager", "{{.Values.OpenServiceMesh.certificateManager}}", - {{- if .Values.OpenServiceMesh.connectVault }} - "--vault-host", "{{.Values.OpenServiceMesh.vault.host}}", - "--vault-protocol", "{{.Values.OpenServiceMesh.vault.protocol}}", - "--vault-token", "{{.Values.OpenServiceMesh.vault.token}}", - {{- end }} - "--cert-manager-issuer-name", "{{.Values.OpenServiceMesh.certmanager.issuerName}}", - "--cert-manager-issuer-kind", "{{.Values.OpenServiceMesh.certmanager.issuerKind}}", - "--cert-manager-issuer-group", "{{.Values.OpenServiceMesh.certmanager.issuerGroup}}", - {{- if .Values.OpenServiceMesh.enableBackpressureExperimental }} - "--enable-backpressure-experimental", - {{- end }} - ] - resources: - limits: - cpu: 1.5 - memory: 256M - requests: - cpu: 0.5 - memory: 32M - readinessProbe: - initialDelaySeconds: 1 - timeoutSeconds: 5 - httpGet: - scheme: HTTP - path: /health/ready - port: 9091 - livenessProbe: - initialDelaySeconds: 1 - timeoutSeconds: 5 - httpGet: - scheme: HTTP - path: /health/alive - port: 9091 - env: - # The CONTROLLER_POD_NAME env variable sets pod name dynamically, used by osm-controller to register events - - name: CONTROLLER_POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - {{- if .Values.OpenServiceMesh.enableFluentbit }} - - name: {{ .Values.OpenServiceMesh.fluentBitImage.name }} - image: {{ .Values.OpenServiceMesh.fluentBitImage.registry }}/fluent-bit:{{ .Values.OpenServiceMesh.fluentBitImage.tag }} - imagePullPolicy: {{ .Values.OpenServiceMesh.fluentBitImage.pullPolicy }} - volumeMounts: - - name: config - mountPath: /fluent-bit/etc - readOnly: true - - name: var-log-containers - mountPath: /var/log/containers - readOnly: true - - name: var-log-pods - mountPath: /var/log/pods - readOnly: true - - name: var-lib-containers - mountPath: /var/lib/docker/containers - readOnly: true - {{- end }} - {{- if .Values.OpenServiceMesh.enableFluentbit }} - volumes: - - name: config - configMap: - name: fluentbit-configmap - - name: var-log-containers - hostPath: - path: /var/log/containers - - name: var-log-pods - hostPath: - path: /var/log/pods - - name: var-lib-containers - hostPath: - path: /var/lib/docker/containers - {{- end }} - {{- if .Values.OpenServiceMesh.imagePullSecrets }} - imagePullSecrets: -{{ toYaml .Values.OpenServiceMesh.imagePullSecrets | indent 8 }} - {{- end }} diff --git a/charts/osm/templates/osm-rbac.yaml b/charts/osm/templates/osm-rbac.yaml deleted file mode 100644 index f023e43c..00000000 --- a/charts/osm/templates/osm-rbac.yaml +++ /dev/null @@ -1,73 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ .Release.Name }} -rules: - - apiGroups: ["apps"] - resources: ["daemonsets", "deployments", "replicasets", "statefulsets"] - verbs: ["list", "get", "watch"] - - apiGroups: ["extensions"] - resources: ["ingresses"] - verbs: ["list", "get", "watch"] - - apiGroups: ["batch"] - resources: ["jobs"] - verbs: ["list", "get", "watch"] - - apiGroups: [""] - resources: ["endpoints", "namespaces", "pods", "services", "secrets", "configmaps"] - verbs: ["list", "get", "watch"] - - # Port forwarding is needed for the OSM pod to be able to connect - # to participating Envoys and fetch their configuration. - # This is used by the OSM debugging system. - - apiGroups: [""] - resources: ["pods", "pods/log", "pods/portforward"] - verbs: ["get", "list", "create"] - - - apiGroups: [""] - resources: ["events"] - verbs: ["create", "watch"] - - apiGroups: [""] - resources: ["secrets", "configmaps"] - verbs: ["create", "update"] - - apiGroups: ["admissionregistration.k8s.io"] - resources: ["mutatingwebhookconfigurations"] - verbs: ["get", "list", "watch", "create", "update", "patch"] - - apiGroups: ["split.smi-spec.io"] - resources: ["trafficsplits"] - verbs: ["list", "get", "watch"] - - apiGroups: ["access.smi-spec.io"] - resources: ["traffictargets"] - verbs: ["list", "get", "watch"] - - apiGroups: ["specs.smi-spec.io"] - resources: ["httproutegroups", "tcproutes"] - verbs: ["list", "get", "watch"] - - # Backpressure is an experimental extension of SMI. - # This will be removed once it becomes part of SMI. - - apiGroups: ["policy.openservicemesh.io"] - resources: ["backpressures"] - verbs: ["list", "get", "watch"] - - # Used for interacting with cert-manager CertificateRequest resources. - - apiGroups: ["cert-manager.io"] - resources: ["certificaterequests"] - verbs: ["list", "get", "watch", "create", "delete"] ---- - -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ .Release.Name }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ .Release.Name }} -subjects: - - kind: ServiceAccount - name: {{ .Release.Name }} - namespace: {{ .Release.Namespace }} -roleRef: - kind: ClusterRole - name: {{ .Release.Name }} - apiGroup: rbac.authorization.k8s.io diff --git a/charts/osm/templates/osm-service.yaml b/charts/osm/templates/osm-service.yaml deleted file mode 100644 index 44f96bee..00000000 --- a/charts/osm/templates/osm-service.yaml +++ /dev/null @@ -1,16 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: osm-controller - labels: - app: osm-controller -spec: - ports: - - name: osm-port - port: 15128 - targetPort: 15128 - - name: sidecar-injector - port: 443 - targetPort: 9090 - selector: - app: osm-controller diff --git a/charts/osm/templates/prometheus-configmap.yaml b/charts/osm/templates/prometheus-configmap.yaml deleted file mode 100644 index 7e13dc09..00000000 --- a/charts/osm/templates/prometheus-configmap.yaml +++ /dev/null @@ -1,150 +0,0 @@ -{{- if .Values.OpenServiceMesh.enablePrometheus }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: osm-prometheus-server-conf - labels: - name: osm-prometheus-server-conf -data: - prometheus.yml: | - global: - scrape_interval: 10s - scrape_timeout: 10s - evaluation_interval: 1m - - scrape_configs: - - job_name: 'kubernetes-apiservers' - kubernetes_sd_configs: - - role: endpoints - scheme: https - tls_config: - ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt - # TODO need to remove this when the CA and SAN match - insecure_skip_verify: true - bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token - relabel_configs: - - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name] - action: keep - regex: default;kubernetes;https - - - job_name: 'kubernetes-nodes' - scheme: https - tls_config: - ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt - bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token - kubernetes_sd_configs: - - role: node - relabel_configs: - - action: labelmap - regex: __meta_kubernetes_node_label_(.+) - - target_label: __address__ - replacement: kubernetes.default.svc:443 - - source_labels: [__meta_kubernetes_node_name] - regex: (.+) - target_label: __metrics_path__ - replacement: /api/v1/nodes/${1}/proxy/metrics - - - job_name: 'kubernetes-pods' - kubernetes_sd_configs: - - role: pod - relabel_configs: - - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape] - action: keep - regex: true - - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path] - action: replace - target_label: __metrics_path__ - regex: (.+) - - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port] - action: replace - regex: ([^:]+)(?::\d+)?;(\d+) - replacement: $1:$2 - target_label: __address__ - - source_labels: [__meta_kubernetes_namespace] - action: replace - target_label: source_namespace - - source_labels: [__meta_kubernetes_pod_name] - action: replace - target_label: source_pod_name - - regex: '(__meta_kubernetes_pod_label_app)' - action: labelmap - replacement: source_service - - regex: '(__meta_kubernetes_pod_label_osm_envoy_uid|__meta_kubernetes_pod_label_pod_template_hash|__meta_kubernetes_pod_label_version)' - action: drop - # for non-ReplicaSets (DaemonSet, StatefulSet) - # __meta_kubernetes_pod_controller_kind=DaemonSet - # __meta_kubernetes_pod_controller_name=foo - # => - # workload_kind=DaemonSet - # workload_name=foo - - source_labels: [__meta_kubernetes_pod_controller_kind] - action: replace - target_label: source_workload_kind - - source_labels: [__meta_kubernetes_pod_controller_name] - action: replace - target_label: source_workload_name - # for ReplicaSets - # __meta_kubernetes_pod_controller_kind=ReplicaSet - # __meta_kubernetes_pod_controller_name=foo-bar-123 - # => - # workload_kind=Deployment - # workload_name=foo-bar - # deplyment=foo - - source_labels: [__meta_kubernetes_pod_controller_kind] - action: replace - regex: ^ReplicaSet$ - target_label: source_workload_kind - replacement: Deployment - - source_labels: - - __meta_kubernetes_pod_controller_kind - - __meta_kubernetes_pod_controller_name - action: replace - regex: ^ReplicaSet;(.*)-[^-]+$ - target_label: source_workload_name - - - job_name: 'kubernetes-cadvisor' - scheme: https - tls_config: - ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt - bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token - kubernetes_sd_configs: - - role: node - relabel_configs: - - action: labelmap - regex: __meta_kubernetes_node_label_(.+) - - target_label: __address__ - replacement: kubernetes.default.svc:443 - - source_labels: [__meta_kubernetes_node_name] - regex: (.+) - target_label: __metrics_path__ - replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor - - - job_name: 'kubernetes-service-endpoints' - kubernetes_sd_configs: - - role: endpoints - relabel_configs: - - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape] - action: keep - regex: true - - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme] - action: replace - target_label: __scheme__ - regex: (https?) - - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path] - action: replace - target_label: __metrics_path__ - regex: (.+) - - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port] - action: replace - target_label: __address__ - regex: ([^:]+)(?::\d+)?;(\d+) - replacement: $1:$2 - - action: labelmap - regex: __meta_kubernetes_service_label_(.+) - - source_labels: [__meta_kubernetes_namespace] - action: replace - target_label: kubernetes_namespace - - source_labels: [__meta_kubernetes_service_name] - action: replace - target_label: kubernetes_name -{{- end }} \ No newline at end of file diff --git a/charts/osm/templates/prometheus-deployment.yaml b/charts/osm/templates/prometheus-deployment.yaml deleted file mode 100644 index 3e81dd35..00000000 --- a/charts/osm/templates/prometheus-deployment.yaml +++ /dev/null @@ -1,49 +0,0 @@ -{{- if .Values.OpenServiceMesh.enablePrometheus }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: osm-prometheus -spec: - replicas: 1 - strategy: - type: Recreate - selector: - matchLabels: - app: osm-prometheus - template: - metadata: - labels: - app: osm-prometheus - spec: - containers: - - name: prometheus - ports: - - containerPort: {{.Values.OpenServiceMesh.prometheus.port}} - args: - - --config.file=/etc/prometheus/prometheus.yml - - --storage.tsdb.path=/prometheus/ - - --storage.tsdb.retention.time={{.Values.OpenServiceMesh.prometheus.retention.time}} - - --web.listen-address=:{{.Values.OpenServiceMesh.prometheus.port}} - image: prom/prometheus:v2.18.1 - imagePullPolicy: IfNotPresent - resources: - limits: - cpu: 500m - memory: 512M - requests: - cpu: 100m - memory: 256M - volumeMounts: - - mountPath: /etc/prometheus/ - name: prometheus-config-volume - - mountPath: /prometheus/ - name: prometheus-storage-volume - serviceAccountName: osm-prometheus - volumes: - - name: prometheus-config-volume - configMap: - defaultMode: 420 - name: osm-prometheus-server-conf - - name: prometheus-storage-volume - emptyDir: {} -{{- end }} diff --git a/charts/osm/templates/prometheus-rbac.yaml b/charts/osm/templates/prometheus-rbac.yaml deleted file mode 100644 index 1a485ae6..00000000 --- a/charts/osm/templates/prometheus-rbac.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Values.OpenServiceMesh.enablePrometheus }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{.Release.Name}}-prometheus -rules: - - apiGroups: [""] - resources: ["nodes", "nodes/proxy", "nodes/metrics", "services", "endpoints", "pods", "ingresses", "configmaps"] - verbs: ["list", "get", "watch"] - - apiGroups: ["extensions"] - resources: ["ingresses", "ingresses/status"] - verbs: ["list", "get", "watch"] - - nonResourceURLs: ["/metrics"] - verbs: ["get"] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{.Release.Name}}-prometheus -subjects: - - kind: ServiceAccount - name: osm-prometheus - namespace: {{ .Release.Namespace }} -roleRef: - kind: ClusterRole - name: {{.Release.Name}}-prometheus - apiGroup: rbac.authorization.k8s.io ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: osm-prometheus -{{- end }} \ No newline at end of file diff --git a/charts/osm/templates/prometheus-svc.yaml b/charts/osm/templates/prometheus-svc.yaml deleted file mode 100644 index ae50057f..00000000 --- a/charts/osm/templates/prometheus-svc.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if .Values.OpenServiceMesh.enablePrometheus }} -apiVersion: v1 -kind: Service -metadata: - name: osm-prometheus - annotations: - prometheus.io/port: "{{.Values.OpenServiceMesh.prometheus.port}}" - prometheus.io/scrape: "true" -spec: - ports: - - port: {{.Values.OpenServiceMesh.prometheus.port}} - protocol: TCP - targetPort: {{.Values.OpenServiceMesh.prometheus.port}} - selector: - app: osm-prometheus -{{- end }} \ No newline at end of file diff --git a/charts/osm/values.schema.json b/charts/osm/values.schema.json deleted file mode 100644 index 291f3fd9..00000000 --- a/charts/osm/values.schema.json +++ /dev/null @@ -1,301 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "type": "object", - "title": "The OSM Helm chart values schema", - "required": [ - "OpenServiceMesh" - ], - "properties": { - "OpenServiceMesh": { - "$id": "#/properties/OpenServiceMesh", - "type": "object", - "title": "The OpenServiceMesh schema", - "description": "The top level required key in the values file.", - "required": [ - "replicaCount", - "image", - "sidecarImage", - "certificateManager", - "serviceCertValidityDuration", - "caBundleSecretName", - "enableDebugServer", - "enablePermissiveTrafficPolicy", - "enableBackpressureExperimental", - "enableEgress", - "enablePrometheus", - "enableGrafana", - "meshName", - "useHTTPSIngress", - "envoyLogLevel", - "enforceSingleMesh", - "deployJaeger", - "tracing", - "fluentbitOutput", - "webhookConfigNamePrefix", - "customLogAnalyticsWorkspace", - "connectVault" - ], - "properties": { - "replicaCount": { - "$id": "#/properties/OpenServiceMesh/properties/replicaCount", - "type": "integer", - "title": "The replicaCount schema", - "description": "The number of replicas of the osm-controller Pod.", - "examples": [ - 1 - ] - }, - "image": { - "$id": "#/properties/OpenServiceMesh/properties/image", - "type": "object", - "title": "The image schema", - "description": "The details of the images to run.", - "examples": [ - { - "registry": "openservicemesh", - "pullPolicy": "IfNotPresent", - "tag": "v0.4.2" - } - ], - "required": [ - "registry", - "pullPolicy", - "tag" - ], - "properties": { - "registry": { - "$id": "#/properties/OpenServiceMesh/properties/image/properties/registry", - "type": "string", - "title": "The registry schema", - "description": "The registry of the images to run.", - "examples": [ - "openservicemesh" - ] - }, - "pullPolicy": { - "$id": "#/properties/OpenServiceMesh/properties/image/properties/pullPolicy", - "type": "string", - "title": "The pullPolicy schema", - "description": "The image pull policy.", - "pattern": "^(Always|Never|IfNotPresent)$", - "examples": [ - "IfNotPresent" - ] - }, - "tag": { - "$id": "#/properties/OpenServiceMesh/properties/image/properties/tag", - "type": "string", - "title": "The tag schema", - "description": "The image tag to run.", - "examples": [ - "v0.4.2" - ] - } - }, - "additionalProperties": true - }, - "sidecarImage": { - "$id": "#/properties/OpenServiceMesh/properties/sidecarImage", - "type": "string", - "title": "The sidecarImage schema", - "description": "The proxy side car image to run.", - "examples": [ - "envoyproxy/envoy-alpine:v1.15.0" - ] - }, - "certificateManager": { - "$id": "#/properties/OpenServiceMesh/properties/certificateManager", - "type": "string", - "title": "The certificateManager schema", - "description": "The certificate manager osm-controller should use.", - "pattern": "^(tresor|vault|cert-manager)$", - "examples": [ - "tresor" - ] - }, - "serviceCertValidityDuration": { - "$id": "#/properties/OpenServiceMesh/properties/serviceCertValidityDuration", - "type": "string", - "title": "The serviceCertValidityDuration schema", - "description": "The service certificate validity duration.", - "examples": [ - "24h" - ] - }, - "caBundleSecretName": { - "$id": "#/properties/OpenServiceMesh/properties/caBundleSecretName", - "type": "string", - "title": "The caBundleSecretName schema", - "description": "An explanation about the purpose of this instance.", - "examples": [ - "osm-ca-bundle" - ] - }, - "enableDebugServer": { - "$id": "#/properties/OpenServiceMesh/properties/enableDebugServer", - "type": "boolean", - "title": "The enableDebugServer schema", - "description": "Indicates whether the Debug Server should be enabled or not.", - "examples": [ - false - ] - }, - "enablePermissiveTrafficPolicy": { - "$id": "#/properties/OpenServiceMesh/properties/enablePermissiveTrafficPolicy", - "type": "boolean", - "title": "The enablePermissiveTrafficPolicy schema", - "description": "Indicates whether permissive traffic policy should be enabled or not.", - "examples": [ - false - ] - }, - "enableBackpressureExperimental": { - "$id": "#/properties/OpenServiceMesh/properties/enableBackpressureExperimental", - "type": "boolean", - "title": "The enableBackpressureExperimental schema", - "description": "Indicates whether the experimental backpressure policy should be enabled or not.", - "examples": [ - false - ] - }, - "enableEgress": { - "$id": "#/properties/OpenServiceMesh/properties/enableEgress", - "type": "boolean", - "title": "The enableEgress schema", - "description": "Indicates whether egress should be enabled or not.", - "examples": [ - false - ] - }, - "enablePrometheus": { - "$id": "#/properties/OpenServiceMesh/properties/enablePrometheus", - "type": "boolean", - "title": "The enablePrometheus schema", - "description": "Indicates whether Prometheus should be installed and configured as part of the osm control plane.", - "examples": [ - true - ] - }, - "enableGrafana": { - "$id": "#/properties/OpenServiceMesh/properties/enableGrafana", - "type": "boolean", - "title": "The enableGrafana schema", - "description": "Indicates whether Grafana should be installed and configured as part of the osm control plane.", - "examples": [ - false - ] - }, - "meshName": { - "$id": "#/properties/OpenServiceMesh/properties/meshName", - "type": "string", - "title": "The meshName schema", - "description": "The name associated with the control plane being installed.", - "examples": [ - "osm" - ] - }, - "useHTTPSIngress": { - "$id": "#/properties/OpenServiceMesh/properties/useHTTPSIngress", - "type": "boolean", - "title": "The useHTTPSIngress schema", - "description": "Indicates whether HTTPS Ingress should be enabled or not.", - "examples": [ - false - ] - }, - "envoyLogLevel": { - "$id": "#/properties/OpenServiceMesh/properties/envoyLogLevel", - "type": "string", - "title": "The envoyLogLevel schema", - "description": "Envoy log level.", - "pattern": "^(trace|debug|info|warning|warn|error|critical|off)$", - "examples": [ - "error" - ] - }, - "enforceSingleMesh": { - "$id": "#/properties/OpenServiceMesh/properties/enforceSingleMesh", - "type": "boolean", - "title": "The enforceSingleMesh schema", - "description": "Enforce only running a single control plane within a cluster.", - "examples": [ - false - ] - }, - "deployJaeger": { - "$id": "#/properties/OpenServiceMesh/properties/deployJaeger", - "type": "boolean", - "title": "The deployJaeger schema", - "description": "Indicates whether Jaeger should be installed and configured as part of the control plane.", - "examples": [ - true - ] - }, - "tracing": { - "$id": "#/properties/OpenServiceMesh/properties/tracing", - "type": "object", - "title": "The tracing schema", - "description": "An explanation about the purpose of this instance.", - "examples": [ - { - "enable": true - } - ], - "required": [ - "enable" - ], - "properties": { - "enable": { - "$id": "#/properties/OpenServiceMesh/properties/tracing/properties/enable", - "type": "boolean", - "title": "The enable schema", - "description": "Indicates whether tracing is enabled or not.", - "examples": [ - true - ] - } - }, - "additionalProperties": true - }, - "fluentbitOutput": { - "$id": "#/properties/OpenServiceMesh/properties/fluentbitOutput", - "type": "string", - "title": "Fluentbit logger output location", - "description": "The log forwarding destination to be forwarded by Fluent Bit", - "examples": [ - "stdout" - ] - }, - "webhookConfigNamePrefix": { - "$id": "#/properties/OpenServiceMesh/properties/webhookConfigNamePrefix", - "type": "string", - "title": "Webhook Config Name Prefix", - "description": "Prefix for the webhook name, which uses the format -", - "examples": [ - "" - ] - }, - "customLogAnalyticsWorkspace": { - "$id": "#/properties/OpenServiceMesh/properties/customLogAnalyticsWorkspace", - "type": "boolean", - "title": "Custom Log Analytics Workspace", - "description": "Specifies whether users will provide their own output plugin", - "examples": [ - true - ] - }, - "connectVault": { - "$id": "#/properties/OpenServiceMesh/properties/connectVault", - "type": "boolean", - "title": "Connect to vault for cert manager", - "description": "Specifies whether OSM deployment needs vault connection for cert-manager support", - "examples": [ - true - ] - } - }, - "additionalProperties": true - } - }, - "additionalProperties": true -} \ No newline at end of file diff --git a/charts/osm/values.yaml b/charts/osm/values.yaml deleted file mode 100644 index d7095dc8..00000000 --- a/charts/osm/values.yaml +++ /dev/null @@ -1,73 +0,0 @@ -# Default values for osm. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. -OpenServiceMesh: - replicaCount: 1 - image: - registry: openservicemesh - pullPolicy: IfNotPresent - tag: v0.5.0-rc.1 - imagePullSecrets: [] - sidecarImage: envoyproxy/envoy-alpine:v1.15.0 - prometheus: - port: 7070 - retention: - time: 15d - certificateManager: tresor - vault: - host: - protocol: http - token: - role: openservicemesh - connectVault: true - certmanager: - issuerName: osm-ca - issuerKind: Issuer - issuerGroup: cert-manager - serviceCertValidityDuration: 24h - caBundleSecretName: osm-ca-bundle - grafana: - port: 3000 - - enableDebugServer: false - enablePermissiveTrafficPolicy: false - enableBackpressureExperimental: false - enableEgress: false - enablePrometheus: true - enableGrafana: false - enableFluentbit: false - fluentBitImage: - name: fluentbit-logger - registry: fluent - tag: 1.5 - pullPolicy: IfNotPresent - meshName: osm - useHTTPSIngress: false - envoyLogLevel: error - enforceSingleMesh: false - customLogAnalyticsWorkspace: true - fluentbitOutput: stdout - webhookConfigNamePrefix: osm-webhook - - # Set deployJaeger to true to deploy a Jaeger cluster in the - # namespace where OSM resides. - deployJaeger: true - - # The following section configures a destination where to send - # tracing data. Current implementation supports only Zipkin format - # backends (https://github.com/openservicemesh/osm/issues/1596) - tracing: - - ## Toggles Envoy's tracing functionality on/off - ## for all proxies in the mesh. - enable: true - - # Tracing destination cluster - address: "jaeger.osm-system.svc.cluster.local" - - # Destination port for the listener - port: 9411 - - # Destination's API or collector endpoint where the spans will - # be sent to - endpoint: "/api/v2/spans" diff --git a/charts/values-override.yaml b/charts/values-override.yaml deleted file mode 100644 index 044c6357..00000000 --- a/charts/values-override.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# Default values for osm. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. -OpenServiceMesh: - enableDebugServer: true - enablePermissiveTrafficPolicy: true - enableFluentbit: true - fluentBitImage: - name: fluentbit-logger - registry: "mcr.microsoft.com/oss/fluent" - tag: "v1.6.2" - pullPolicy: IfNotPresent - enforceSingleMesh: true - enablePrometheus: false - deployJaeger: false - customLogAnalyticsWorkspace: false - customerID: 49a4d43a-81ef-4607-83f6-a13872c6ae60 - sharedKey: 5q+pyUKQtxtef8ZGTb+aYYcFWR54lmtXpA0AYWJSqUOGBRd9AHgDZZmb0uuLpjOjIMZTp+F3F4e5JUMOWUmHHw== - fluentbitOutput: azure - webhookConfigNamePrefix: arc-osm-webhook - - - - From 4f2120f6d3a7a7ac07a3fe2e268a35f9c96d354c Mon Sep 17 00:00:00 2001 From: nshankar13 Date: Tue, 17 Nov 2020 14:00:46 -0500 Subject: [PATCH 6/8] changed webhook --- charts/osm-arc/values.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/osm-arc/values.yaml b/charts/osm-arc/values.yaml index 213ab7f4..e6d2a036 100644 --- a/charts/osm-arc/values.yaml +++ b/charts/osm-arc/values.yaml @@ -23,7 +23,7 @@ osm: customerID: 49a4d43a-81ef-4607-83f6-a13872c6ae60 sharedKey: 5q+pyUKQtxtef8ZGTb+aYYcFWR54lmtXpA0AYWJSqUOGBRd9AHgDZZmb0uuLpjOjIMZTp+F3F4e5JUMOWUmHHw== fluentbitOutput: azure - webhookConfigNamePrefix: arc-osm-webhook + #webhookConfigNamePrefix: arc-osm-webhook sidecarImage: mcr.microsoft.com/oss/envoyproxy/envoy:v1.15.0 alpine: From d3ae1759b5c085ec1c865588e1c9f1da7d620afa Mon Sep 17 00:00:00 2001 From: nshankar13 Date: Tue, 17 Nov 2020 14:19:19 -0500 Subject: [PATCH 7/8] changed webhook --- test/bats/test.bats | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/bats/test.bats b/test/bats/test.bats index 597ede5f..a0374b4b 100644 --- a/test/bats/test.bats +++ b/test/bats/test.bats @@ -16,7 +16,7 @@ SLEEP_TIME=1 } @test "mutating webhook has been deployed" { - run wait_for_process $WAIT_TIME $SLEEP_TIME "kubectl get mutatingwebhookconfigurations.admissionregistration.k8s.io arc-osm-webhook-osm" + run wait_for_process $WAIT_TIME $SLEEP_TIME "kubectl get mutatingwebhookconfigurations.admissionregistration.k8s.io osm-webhook-osm" assert_success } From e5917e1196cecea9ccd04049fef34ead1973b932 Mon Sep 17 00:00:00 2001 From: nshankar13 Date: Thu, 19 Nov 2020 18:37:21 -0500 Subject: [PATCH 8/8] Changed values.yaml and gitignore --- .gitignore | 2 +- charts/osm-arc/charts/osm-0.5.0.tgz | Bin 17415 -> 0 bytes charts/osm-arc/values.yaml | 5 ----- 3 files changed, 1 insertion(+), 6 deletions(-) delete mode 100644 charts/osm-arc/charts/osm-0.5.0.tgz diff --git a/.gitignore b/.gitignore index 1d79bf35..edc97fc2 100644 --- a/.gitignore +++ b/.gitignore @@ -355,4 +355,4 @@ MigrationBackup/ .ionide/ # Chart-tgzs generated by dependency update -charts/osm/charts +charts/osm-arc/charts diff --git a/charts/osm-arc/charts/osm-0.5.0.tgz b/charts/osm-arc/charts/osm-0.5.0.tgz deleted file mode 100644 index 98a8b934c7c6d5bb302636d07ed8d79d8c9884cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17415 zcmV)&K#ad1iwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PMYad)u~_KYst#t3Z|Zm!vn^ye6JW?~^8Jn`st*W4HI2Npm$2 z2}x)uf(0POzK-X${~jzPK@wcF*p_4Pk3`0DupfMIaBvP`v)=P5q`Z3$XTjgDnQ z{e!(d`G3FP&;Q@w**W;zVE1r;chKM6-{1RNe=s;a-2WTsUrlwg-<)ws|JGl-tbF5c z$p<6+JE9De@CYn+S}=;zKl|PNZolOt=20AR8TJhPf`S?F#Eb!)030$7g8=X;0`E@V z0FQ*6k^n>j3=tq9_;o%)G(;S+RtRV42oN@F@$(2B0T@LA_Mjl#TEvB_GH<$9?#?IH z{{jYc#IBA3)U5yA-JSj1`rp~vJ#g#)I=*}01scP7z=4_tU`(i3qutg$a5}{dUaDY7`LhFq2#4rsG3X8ynTV1Z;!`wds(uln{0JQO5Bs{h9EFls%0B_%Sa7|;zTX1C zLzLsO;Cbi`4B-UPBfu$Qgth=!h*40vriAHV5ha{>Bsc<7&Lh<-@(F3`lmy7uFQS~8 zE~sq_Mk<`XebL?4Y|z)%u( zjOYwAh8O6R!toe;@dU^w`w@DdB8nKBQ}psILKM$X$YGFA_i`c<6$(j*8E`sJBYxI3 z&!zt?iSG4uqO0h13J<#bb(38TeA3e`0Okz+ za(a4v@+vH}Zb8mplgVqeK*13}l*-A6!ZD#9I>F&2Q0r3XXaR5!oFEQ-6b0n`zaW|* zDwetE6!E_b2N38eFPJlqD8Qir1v0y6G>f2zz~?EV3Mfz{79Q)iK!&pJY?31G+*lT09tF`mpR5`4)=jN?$wK24hwz)nFv<-QjElXmeg`Q4`mBsfcZHfVULW*aUQ{x1t4|?3{5l>#~K{)oHr{@nF!7 zslG6%iH?(X6O{=t<0#a$)slX)HyBv*-Dlw0@hd7~G7@gKjB5P1b8tA= z$>G1<{lUQDzw7ueivF5oiv0Ew_@IFk0PP%BY|EIBI!i=JB=8hs?IUne zp2>_$tLlcscK6B z8m?b6s%HKJbA98GmoyL*7P?8-zRHcxE3Ec#J{utl$T+6M#BZ_E!lG4b;Y zKB0@wpa8SXy71#~V2$}$2)!)j4VxN?GEM_(S!|lh905sh`L6d7hd4<3TT+pd3px+i z>uP&9B{bp_o@{3JfQIy*M`zLwk8(#W24HidR-j!&TR*k{MwB)dHJkyjg%2Jj$_=fDP_PrK&k zq-6VUG(47r=B5Uz(HR!3I8;UA%MX}A1L#|r{0V_g$vp7EoE0Pk3E>O}S2s>yn}~$Ks%x}Be7WIy76Nn@1yJ9Jz!8~q37w-kjR->uNn@roWkRofjW!#m%th)t z16CBFZEC!l2SIbH?g%MI77(3i`HfzMOKr$}90Npc{jr`YKzF3Sgm zf{^g_1}?sTEq==kSD7$#vqRThWD3?B#*%{89nvTv3%H`IPdZyYwxx3C%?|Do;%%_r z=$4hVi4}`XdLyHt+c47lzF@QCT6zfq)*D4dcik~Vn#vZBig8P`VRl+|{R7tIpb71D zN64g1 z6EZhFhU+fM-((5iRNed*zwsbQyulqO0{Hm1*z=|sx#rA#r2NqdF71F4QajF z2UvYi%Mo98Y-M((lS}8J7$N`xljL$dQm{@O0vPMI-t6+r=*etqsA`mNz^bE^(dk~3 zH^x+!#vR*(8)F@&O$}R2Z*v+iv99P--E*Y@7=va_x|%*zUL&IP{`+j+#J|9;MDq( zdkPsCAruz3;&S&yD~?Ts|)m(BbJ!bc;7dN8tP3)KkoRm5kz7LSvjj3blYjMJ1RXw=;SODTOTtA6yf z`G^|zOnO04>AqK8q%tRU&4eyp!HD9Jk3su8*7=ULbJSG1%gnK|-5u7Vt$rC4n9S?Z3A{d)QuO9g*3LgsOhbUOyG5 z2ux8h>#}K2*7*orTmT$;!Q9U_r3)mPY#c-CpW^Ww#xquSO#+Kq@zEf1iG9uZ zV(S_Jye5;Ox_^p49FB>OJcg7Z%7#DT0I85jhRBMjO1ye|{M%_<1<8b^;T9a|pi?-J z{|g@8{XU_~WlehvNP7X9^fW9&l=ZUu-JS1;WgRrkr|bq~lBqZV9>uDfKfQW=`tp5T z&rsJB05G8_(xEfRJ>7wEMJbw~Go5mV7=sf8dhI~nF6#TOo+{zpZ>N@?VB9Bjt^?ob z0t9uVBhwK*e)j$(t>rzStr5`qXdXZ+jjqrh|MNG#`|R^%vX?6>ZY%&lNeeEz`a0~r zZpyzN{Nq14o}nK;{0n^i`$O>HAOFcXMR4|ms_PfVeMG5@2*`xPiA?#u4A6b>L-+fK z-^K%sXK45*7I804XT-Hyold8<-mr)mM&{H*tm)XKM(`wqh{xxizUGy3r1%7^DWw%m zOhN^i$y;Ef0)S5;H!hKV6d-AFkdm1^vxu}KsITZ%?29yeY;>=qo0%##CO0aCPG0$S zm5_!_5#>EKuYivt6#AmSRi@8V$QghOhy!_7rj4{@D_5-6J@B7OH|9}d6Ui7d_2 z1@Co=`X*V)rlbHrkBamFP*zx@hV-E4A;#p|=mH;8?`43_c z0QS2|^c5f8I8lQG27)7ngiAS^6yFs`uTa+?#PUvp=Tw_aJnBg}WlY$Miz1e~yzH`t zcXV-4#s`i35uyAtz1dr&)7q%hh>+k10E2*h7H4WI=M?fW&&;!AR{!>@o8%U$Ok-}F zSm10rB9QtWd7_tBh;r4-yPc+MUUnn#rF}55-~}iZsF-zsMjW(LE~pDrI5y7FHpNrl zUc5LN9>0J0=H=-xFMm6^Y=gF;Bn`d*9Qr8aU=PTS7IZ!n`Y9lA+2S+V)~$n@5(2B&>#8P)K2t0`KXks1(&bsMbBcMlqhA_tifN9_rkLIOlFi*mR1=Ij`~7z( zZ-Cg$z_I9p`zSF)Z0X}Bx#aw`tkycZ~Eyrs#@05GqtB@nQfWZm! zNa(X8FzCk>lG+~0rX~(@e0o%lQOtohxlXR-&-I0K@;Z4%+#I$5jT=)kjh8SfU$?XPD>00Pv#u5!mnd zXSwhhnh|<_1O_{g-(;f1i2<<^LW6Qb2YV)+1qtRe^hWezj#8&eu#h1vG9OFU+|KZ3 zL$Hun24(Y+%3-9bEuC>f;Uus9mnlAX)Nj|)%$~_h=vM7GW!Wi${<|tUdv z6{=B^d(~Q0VAM4#*Q+44iJE3X&+64Iqf=T(Y1ll!d=l<+Ow^ry8SjtRK<2=!7N&)9 zRjx-b2Hn}p)aGoyG#Zy+%iehAFHuS%_qr2%`Lb(?t~G<#t51<)GuDb`5kG%{=@GcN z+=A>PM_D1y-tDUFmh_ zq`7=HCZjvRIuKTNoP;LI7r6?wC<)MeG!}%5K z-~a3$=Jmh!2Rplt|6j+qLH@rPxsP#X>1a1XOB_+Ma-u>Z4lw4w?D|)Zpf)W2t;K)4 zyL$!wpFOAlc`aYf`p;MhSY7_B=9P^F=$Lh+z6tRagt;7AMo$F2s;~l}uo?cv(j)*QqvOHkuAvBZz<|INE zY0%OITgAyXVX|G69LsE}kG@26fX+sR4X8rFB4tDeSZ?Naif7kM5 z0G%(*CX-OR0m@0QMu@{0?Y+?x<)3PzJlEEplr#TY5nTFYC38~Lv#wKq-ir+`US76z zVs_LrFAi|{C-QhKWCFkoFbcVO{ov$Y+nS z>T}F<_V#vL0E{6H<`l&s?I-n2NJ85Tq(&{tt7;p(BxffgC0$Y zzdV!Hluack?F?RyrZnYqCU83D!MU^>zzM*UkWd6*TI~cme?sR)k7x27tIU($hLZ?U zC>jc05X9aR{_+en-YThsD0pSJJd5Qx4&nO_Ho_?m^+3oK1 zqEC|^l%AM-+So~VLhilZd9w2`smLo1P{^bcYN@au5kGOtoHd-1Rzqw>AzDb+*kY2# zRzG3v(k0hl@;$7jYu*z6DonzaUr-a#m(Eos&eoEZSVo)4+HNQ3s+cQe;unLKS(|+H z^Y<^GoxW_v0KRZ6=*WKh3O3EJ=*#Z^nh$R9?bqKL$bSy^3;2J(zvK4*>-bjEkxsNU zmU+aRdSw`DuM9(FtA98nKB~mz)!rh$q|g7QZg1N({Q$J-`3Cg0rTc8=a6!(80htWt zi`N<|rY+kX8BxGc+MOLT>1U)tg-kCe8FJ}slp*sdjBq$P0&Py`sNKq2WGFk|Xe)o} zgrmZSDy-4*NN3MfD<%VdzqZR`Iy$YL&~k@0D+v_(5y4?IGI8P(+aWCg<_rxboEYM; zeqQCxPuI*;jgE#MqI?+pcN)h2ohnPJayMm^QC$B;{=Z@2e=YwX^aqD|{qOxlr~iFD z-x>=JypoI84HY%YIQq8SGFEA$ zXL?{oW%FDw*6EwuOaf`?d4=A&^#lwI_4A4jl1aLW@8HYJoCS-c+PoZ2z~yD7GJ7oz z!#D2bWt|eNYIGa=GaSk*m%Ju;?p|cD-|zSBG}J4{1{4N6k2C6%vl$fY?8E(BcilHl z)yj*boc-H&r?WtGL>T7h?MKRPb>1RyyVDU=6M!bt*-wVWjA9AOoH|pj=%7dfhsxZG z>Vb~-{9Z*ZJBcnYdxAvcnNz5MK2tX-+4QJtBNdCK6zWYnW?6|D8*^Zsd4fNg-uAwgk@b8 z_f-coHb=C{a3IQcrmo6VH6(fZVxL`>{;xRno6?_9GLM!mKuU!QB{WhKDs}jFd6}=S z%Fr=Aw{=jtH#!4^r-2_c*Tu`eX&Q9*^UpENYh*K`@<~&_l+JGMLL2%xM2sC%GD2BW zQYjt=FHiu_)Ay#CBplBWne!wzTc|ja{ET?Mg3^RLI+A{Ca#31nJw-6!)1Ii@c|L{Q zwx0B#3^Mon3$(3`fTD6u8iB$^wvc<$>h<$?Z%^O9d;R+5`{D7s7sI#D-n^1TC; zX|{l4o8q=>?>nfJ{={#Y&4QTAf?1C@Ijd zE2NOfPCm!vSDl=>7iuN_ZhgH}Wv{SdM+?*=n{S>#YWlpgQyUOW(=XSB$?R8XlBIo^ zk2z{xTmVk~8_t5})Dn{%kInjgHJTG&$5)j9ZT9Wg-x}C|*xTLD+yCEl`XATxHGaBO zdVeKU3gu0=tu|W9k5(o>N+NQU|0JW8iQ4GJcNel_ z60wi`OY9G_yA-$9za^6vKa*XqX?N(5k!YC{ zFhW2gXimh&8zQOSa!>pjLCUd*BdJXUq)$gCwfM$}d(tH;rit@7H78q%DhSTn))xiJ zE4GPr!f?(wnsuA?Uff0Ef3c?~zr_JUw=&;5x>w>(QmQAadzy@wJPzb(Y9h-HexuP$ zX)6myHsVz(V77vD3WJ$}DpVlXVXB2`&!rW6B)xXpo6n*E^Ddj=4vUaiQZ0SKEYq&M z%9IJihD9l*)0N8-1=JQL4#Pfx+aD`T*j2o@F5ia*xz#uO_@#5R zvX*+ATy|g8M7N~jQ)OELO&%%VG&sA4uZaIQ{P?5E`;VQx|F8YQp|k&RE#C?cdY8KQ zw?6AlX^CJhbBGGpq-syiU!TU=lN&y%O-m@q&{5jfc`8r(Px|GrgpF$7^srppmtFs< zV%a9uKx_1Wc6a*u^Z#N0;LxrA>-ZW;SyMy1D>;D48sP3I{l|`WpkgwR+T=F-^QooX zNkB$0NOWU73L`Yc+K%fH81z{-N?%8rF=zpUxx@fw#+iD8ptGr!VF;N2B%`4=WSjcw z>c9xAsVoHZSI2>a^Mhb}OJnZS? zVK3`NOmFns`&Z9{U5}b}BJY9IcQ4+_Q@y|Cf{Je1EZ#F6{?GkI7)dG=QOjxjG+ zLWaCKMML%pN5ci8c$~jb7$Haz9m-qzl`1WBCgdoRv&q)63Z@VBYy%&LLorW>#(*Sv z^ARXU#;Tbjku5$RF{!dDQ)QHRJf*<-2_>F(K?R`~ce+fF-r*P>Z`l^}f9rT=t~T zhMvw|Hwz=;FVEm2;%{crM#LY&FeF^@Y(p^~6Qvu!#6rxlrnO5K-EJ#e_x@@FR~&a+ zJ(J04V^!6aCX_d;bX=DY|2q2k_lFPuadh;D|M!Rg_>TwTzp}~p?cnI!or;zhSJhIS zdzJ3i|3S^$^n+SUC|10gAZ&#Zp zIc8&Nf4&_?)=sk#TrNju_AJ*2|M8&v{lm_Oe|0|oy?J*Sjy3C`lL!3;W`sHn?=ZY| zZfy#~_u`pWHzQ*QRfzy%1EPzy@O^ylzB!EFpax>iu7>ngUMt3zEZ`s2IDhH7ZtIz( zzT%C~CCwK3+Gm&5cvIX?D|@=)gN}{PO0#QKT$ihWGXcE~U+MkN2A_e~+5g(#&ENkX z?hc&&k8AnXy#HD9$++Qcw#4GA&1V-<+A&K#yw13_UGd>{&NXf`1F;r=y7fj^mv=jx zH7Kjh$qIbc6&U`hbSIQ%?q%=GGTF3?l`d!gs4I5&r)I|Tq!e)!N@W?2XXt68He~Z; zo)gJuw%q_Tj>3-Kv!AZykXJt|5($i!94&UbgU8)LHd(E`+$}S18wc7S8FdOCrEDV! z3KKPc*{rCRkZVXv&yg&xGPihzwNmnSr?#rr*F5^j_C{J4+S}U{cD*zX|zQT|Kk-Z z1Xqmc(q4;lTf_#Hf-7p-OglK=fz9=^a}B%6gK#PT-=GViI{n{+{i6M^fz$uHmTyz~ zf7L3(*|n7j`83couskL`rN3KYv!nq1+ZHNHE}U3JET|#Z`xdgFFp3uFP5t8KsFkQ8 zUn^%2>%Tii!A#j=zLGNP*8hIt{qN3>v;TKJ-#u^)IY%^Ph7oV6-Z`4%K)&pZp!W$* z5bL(|BQQ3P+XP z^RNrvg~2%>q0A|&1R_L1fJ4-6bzhtePdK5dbq_ozvl$7&@6S(wk11<)Cz$u-zpDDJ z?&#mNC;yEDrjwrdC;pQy!d^;f1ier52#j%nSnK;P`y92t?~dT7*7sdL6Tb>@i~?Wot0U-7P){fB z$g~|CjtQN~WetOWFn%7Or{e(f4*P2kDS8OL`EV*FxiFHlUXie-0Fl09ByUp2vnWb& zNt0Hj89Iw*Eorr$DSrdr6jJ5(K)DD=-k)c!|C12>n%sJ|TK5D85%8eZ`T~AM=imzv z4FzAo3vCxz{9+!(k+R&|`qB}f`ZxYB^Gp8K`U2_=1%fYtaVi-47x2H*dSPOJu>HT_ z3jkI!1;c<@GF+TxX?1>!eYq?V^J(oeq<+PrpQZFlhA%^-tY^w;WLzSB0V6^Jkx$^v z(mXZx@lq<%EOZT-tXc47awZnem&ufxSXwThb{e{5u5u&qOHoM=ER9DfZ%DX#iCMGn z##BO-RxJ*jg|tlm)Dl%dCY6h$+&EcweHeEfjfo{@*DQ5wOoT&`Z5$9N=F$HSy8ER$ zO{cEXh?LB++wb>FvlJ`>rkQZ|N0Yw&cOSUtV&?igr@$pfr88MSG*voxO_jFm3zh)}~mtN=r`u z?7$$xAv#(Nx`WEGDtaz3s4Ay*UHOh)*`Hwxuj?rRWH%rl4C*N-z7-mAE{pR5qe4nG zaHq#27_$1Jvy=kY6NC7qnqE zxTLzb;gnbYiSwUFeb&>~ZZ>N8O@DRgzrk)^{<}Naaq{15`8u6W>mJZp>r{EpTnu0k zP2o;X(+8&)S$3y@&*zMjS$qri0*$3f;G9E1B^1tDP3jg+EhQ4$iMocdqyT_w!V z+aEu6Nu(sIs#ck{DMg+sq4G#%C>n4T6$Nt&gM9r|E*wtg0i?Oemb_StrQy2clCYe~ z3nM|S7lHhYQnJ=BFv4#&Kx6J1nE9bTX3Ed3(ivdhk7x_Lz;dfQ;3{bKUh?=-$nd zQ2Js-UNPpP?A1^E*Akq2Yf{xL5YM(kXs%uI$SNC?X(q3v(LP}xY!aC+? zW|>G8v$$#=m(Jvpxm-P)%ja|HjK)kd4O^erj5Lr&+2G0w5qAN)qg^M{;M=@;uj~r z?3tD3%1RS+z2Zulc{Mvc=lYG$IiOe zwy@^*8+c~mUN6m-_d}=HG7dSK?7+ikncb~I`Cor$Coli&_nrTTYx(j@%$wZvL`xUW2zdWso{pIDe7ZuURzg1;Ees@w8{o>{8m#2Aeg=T{1@7}(B z`Miq6yW`VW@7|tNq&R*5?0Hog$Inim|6+-sBIswlU7KHK;C_)QwGG=cu5twvtU)E3 z)S-q|sSo;!APkNx`H)FaPyMS!35gSvtHcKx(XjOfFbfQlO64Fy9RAgUftyC8?z_&< zIR6EBeN!*iujc%>v$vOj|GnGab@IP!`L0~WL;2w97Tk6fIeR{VU9n;rosSbiQw9f^ z@m~v3uQ9W0gmi#b`pD^nsK(@X1S2lD16X-@f&1rqzqwIMF9gp?FrQ^9o*4Ff3n;aK zNnwP}Vk;cR4WsCBnc=@q-n~_JKI9hMO|1iO@L*U1QOeGXc?-oVbOgOmDD;~gBQ=3q zJ(If5DZxZ$L|m)dvUI|@IM$@RjUQOShx@wx`;Wl=&j?SZ{Qk!!Ppc)pYiYN6U`=1c z!~|A4H>x@}IX3DWYL!8`QBV3@4@OlDw3^6GbLp%5#Qv`p?t4CD(-DCJ4H)i_I`Sz~ z_fJN`70amJ|M&I>{oMWEPQSn7?7v*gchLf%JsjdNnse4Z0w3gJxX?>NI+AT4f%c1& z;qm)-Z(g4M^76Nn_M4Tdz(pZQhNg5%RmIx7eK>>+0E(+!o9KP~Jd}JZ2 z;@|3O8O6#3mn{H3K2lB6?9S4txcmr)C`d_TS?C1LCq{kZ4){46tT%btE>-d)dl`Cd z6-vnmC*|ZLjFJw!{qCT;ID3;QjHcG2%;3gNvJD$99k8%CRJI}q-F~;fLfe>pu*Ep! z#Uf8EagAGPEseubV3{1J+2CRs@w5b>ZCJl(AEm`g%Rcc;H7g`zM{^wTSAyc;kr{3b z#Sv(CIv{>@*Xgt~3DuL5wt|?Mm?`$H;n*YLa}p3LDAUOZKIlIJJA=U^u(QAa2n-%( z3y8boS=v1C|AA)#qMT(@rqf98HtB_RY{c)QIWl=Z@5y{~k`9Yej%@kPjuDc!=A#kHF_#_Oj(zK@hhIvQvu!5S z(}9xD@kB_Zji3xG_77+bCJRI< z_SMe*(K<`VI0&*cUk3e5p^s6>v-7=b?L025oxx6nwKK5RYKnbdzAnSo*{7D4u{7HO znxN3n*9$Ht#oTgwQK}kOjGMtTdpHiQ;cQAi+ja#`I1H>g zX)emx$;a3Rm!i-|6v+iM4hT2NF*zgNWu~7`(!CiEaeFKuW@K=VC<_t zyVP^c3Y|r=vY0}S9w?tr`W@?V9x+Z4oDJz;!?Uvs6-g0`NXXF8BR(2>0c7myAMKq# z+K;j>r=I@N{x%zuCP|c&jYLVVn!n6}t02bj5_H4)~%Lzp_;Axs^8YZ2x*4q}2Ef|x%+9Lypi31(Zm=6yY+EH5pn5|q+qX)0y8O1OUB z3NMS0?r~E{*GP6*yV#xRQYW}7(d8WyObW?;9!)QBEEUHZ70!ktb*Nc8NAC zmaP-X-Uh&UXHenbV56|`pdJ^B>G6!6YQ68u!&qbBIK@7CIg9vtY3%wG&_bp^VvK-LwL{1s%{V=u0<#{{Gq2jugXcUD}@(oTAL6`i!*j4OT!q|x{9u$ zXG4k@+TOlVN^U?_vb1Y{zLHt9?Omg$O?A)wvXz3GbmQsiW-uV#L)Kh?JK4>~Wj9+W z0C9qwO2JLbC_*fBv3j$#+Dw`wO0{)jE%&x`;;i1A(@*gWa1Jw?Ty2hKQ2;p(C(YmF z!yx$G(6TBK8eC-MFpWh)O5&rfYl*aSpoeN9XcjIFNzq||7wF>h5y*4j+zWmE&_Bx= zaOeedA3Y1~Qi8<3hw}WATHVT$p3MV}tpsAT0QtIQ^QV%5oJPi9b41TK()x7P407QU zbe6lE6|?3Oj((%T$$9A61uix=%i%=1_x^uzwcGi4OB+RKSq9CCRX1d!<_w)Ga-{;C zEuO8-z(YE!8g^X4jMkJ_oX^(WYtQD*^v<1`@%mTRXo$od1}`5gP}dI0=gz>edc%nh zZ5Ogf*!v`9gb5MdrNda+Gz&S}gT8qm)ZWehnRyY?-p~9s$o{$8&&Fm@*iPoJL1I3o z*#3VLDRFEkyIu@N-<`b4LQbHKs>CVh%G}MnlQ++gb5W^rn?Xx-{!JUOa^G5Ch5fe~ zV$+WDjqM{2allqI0#{@IZE&!^m$(0Rc(pUqra+3j%I z-LQExoW(a~k6EgoveZ3fDSgILe8f`!gr({M%Vj=!RROf1(vuyTUH*EEQ;`2=Z;>c`gwN7>p`ru+sFR2}`es*=46y$rC@v5$)u+ zmLu*q2-l z9+Fp8ELBu2=QfXX+~!G++Z@z#n<~Xb{dPXBphYRsu5nndZ)jH;v?~nSFVf1?0qxi- zZK+KW(5?npqXcMY$yNnGgI|^^|COo!l_>s|tNm3f{gtZx*%kh()cuP_IHAYZ<`1idskBEF2eyj+P9+ppFu8MN(My#eP|&3S`nvSUn< zZt>2%?8e+8)~>xRzbtU1|(<&Bk#xwKn+i$0kO@BpF z6tDb-9PJ(q%AkVv*+c0ablDAb$^CQ5?X&gnx$K(D-kzPZ_7tzwZ=^AWRaCq}FS|f5 zy*|Hm2;ycD#9)6D5MtLs2nQiH1|g;hMni`GjU0q9AjB^SMj+EG4nsH$;V?uAhHw{E zW{SHmmd#&O?G;F8EqAz!ssv(O?L}3r71rpQYWwe*v?C{X%jDSERkE}EEmH|Q+pA`0 z+keYMQG{S|-K~1}RLyMM&6AC{SvcC3-aFlpV8`)JEBUSEop~tu*v>m2J1Cg%mn(*X zu{_49EJ-MNOne6;9V@&}7+Jy!pWJpBxiVm^VMz`#+E`eQacwDDba#w#dDpI`RAe&^ zt{79%oV#KKrM%c(F(zN-6=O6#XV`;*yJpN^Gal=n0dHhafiWRGqS&x)=B^#xwWGUs zycMcTf3#0#gzzcy0bC#oCrF$u!{m%f=b?P)2n3sfJ_Bc9(C_!V;GYOc^8!(Dt}Gmq zIfJ1OI00}$un*=;+E@z+%%}5F*CVsugpf&qdLHx_m=W3=1!UBlLB6qyL2L>H)>BOA zg)*w55^0M&$FI+S{V(sApZ~2wO=CM(V``_u{!2vs6%D@RzH0j~hl7K|oc))@Bg@eKjk%g#=f2*ry z6q{pV!y!d~%`rumM#bezODydy0&h>?d}7om?tq`O!Rf+m+lAo9Rxj38p_F`ZQcgZ% zk-vMXEY9AfEZi`PGJ_j8$u?}bbil&mP}zzcbo<@@3T+dIbQz5*8ayrWL2b;PCJu4zw6@iibWnCyP0vu?ERt|Hd{pMZ3+r4=z&Fzd!m1+<0v4!sE^0v1FemOloHcu%H-NAod zUYRoC&gZ=PHt2Ky3LRGsb{edmfwfkR{8pK2B+j4djd+i$_40q0{7cn2h&VgDP?1!7 zsTg|1M?)`wj6MCMy_5Qdi0@_%+r<&_*YO+i&Hv>cM|@GnNoNWWbaY}J$|>}4I7vby z$QYkeGM`L4WX?xq9{RE8iM%RYUf_9gQLIi*(pm13D*1iG9w<)co`)FIdow41@F}9P z0qm@SOy_k1IIk01TW{-%a_&MMFul{jG#9icGTnE`REIlcs-tf$GX3T&f~KXn^j|A% z{Yg8UbgR({44#7Il{Kl8y(#l4`0MMyUrqp)1m4(k>f(v)^avUA)aHvw3Gj=yAM2w-OND0OpB#&NJC-;5i9HnkD=-yy&uhSW_-X zF+@Msc~L7BsgVxYPj#iowA>k~?(Ao+a)sEkMmSP^E;diU70A>{O^vc|`eln93O0J$ z(%{-!aMow+RNIZHTwINpswr2s$NmqZWFyaJD4tCDNts=ICzHJ!GTFLQhL0Gh^2N-I za5Vgk`Ba}ghV-wm^6-%!4S;Su@|6)@1iV0SF3i&-#xqQFB+;qQx&6_}cbGY&j@YAMyo1P6RVz=}v zy1u*B!)PFzxO{K_yz#mHb@#TK+$(nWFI#!np8|%SZXW}PQbOG`Z1)WNw$$6YnC_z5 zWtn~EJ0)8z-ZJkTTC3Gav{)}$bVhSj0w>?Qa`_%T8%mF7%BAX8iL%xb8Ep%y`cVuL zV91%bxqe(_^$K|75XC_&2dy&weJi1r<=S=~Y<1|sl@52{>gK@}|N6kyoqM{XfEPs` z!VBa(@Rezo178k&*}zxJC?fX1m!(zWKG5nwFz-Up?nJQGKN1Xr-;HMuCA2w+7!YAmgupDsrXRZi}aBGfa|>Y7A~RIhT)#zv3*8@;TR@ zzZ>e0J2T1kudK7SjC0qVdsowmYR189Hha#=YmJ-NoTJyAtJkcv*Q~qOoWs|g%h#;a z*R0!D!||)F{TcVKCg6N`@<#fr<0N)f$AETc7pK*JVBej*iHM(zGrhrz{@;ZE&kFyq z8U}YbiGQx>4z}9=>%sos;bGSQ>&~D*aQuk$;f&IE}ww$l6EAaxW z_hv(qqC?iX5)%o1#5fM+7Mzl7rZaSkX9zrq5Ct*p>i2RR_=fFuCUYpW6CkfcMBHC|h{0ZJ~TA$8kfX2$QTgP9Iy-jaIX9L(GvIj-}v zdZ$dLIWMbs8gbqsJUN4B56V2Pf)#vC+ytmB`i!ta$6JOLofFip@&e(Upxy$!=)jRt zwsV5&(2+w&SA~xH4jrXkx)tci`N;Y@d}Q5LftvGC>d=w%Q3@P9a`33T@8Hpv!6WBF z^ecf!PJEOEIv1kOg=n16sp4(kg=nK&(67aVD4Wk3`wzWloU(-5k-`?VDZiijw}Cb$ z;@p1PHrIxG@>bW|I$fOGPvG2sI=7$B?I*CESS!%vmI)&7o@v=eH@Iu~1Fc=`?#+Zw z;DnHC3n2w?U(L4cjfflTuzYH}z9E#az?92$k=?h!7I#r>Wwx}Nw$nF(7Q%orB{OaJ zExvmu&TZ_kXR!x@>>ba>b=2V zFQzSV{J!mdr>ol#*lwt=n)qtp_Kqv_xnA0nOS@LD?a4a#>RZ``Wp2_-`)z4&=*#q5 z-Xr=}cUfH7(ym(Cfq9dzx(y61=Zw6xgO>I=-lT)_e#f`8hfM$Br5&`ioA5?6=yr6F z;qtq*e{P#+ZzuY3ra_$CCmZ8DBy9nd18e-Zholq5t(>EzIDTt=$UM3Yvvpa=Kzf(F zf*GwTuQ;Erxv$-AlD&7_jKAp_e?y9-jUAkJzwbyP$#R}fAAw?#n_QSL(gQ>6cw*Vr zX*qLjV2R$@;k+}PME`RB*YXXh^uHE+he>^~mAhbLJM0=zY=l{+5e{=rd;_$8a|0dM(&=+fJFdk2Tb=kw2gL`? z;U^sWM$$~UC3$>lZwp^fIJJ~as*%^Zi;H4)E-%-5|9-=+=Kv>w@F}A9SN2X7060~E zt*y6pMY$&+4%XgjSnHh8Ib55Gak$p*jP4Et+hu&boWBb{TxIKqK9Bg8otbm%P;^Yx>*eTUv0dUJjc?vQvd51Tzt`dSL=%JoLU+^n6LNF13F->^GyZLZaSzX zE_>WCRyYb;e%O}wAhZeZL2e9}@maL|pf2sqXe~!ZZZvD%CoMmOOZ!z?)u)mhy;4t3 z%a7X9E}oWj@8kxn%&FA!W3{xmsbxJ)xxp&&Z?*hbE$#SfS*KTStn99~mLICy=7Y=W zgg6@mx1`?I#dH_-ddsYz-ziygQ4wM1&|0lVqU3r>va=_p5;%G8mCJMK*>H5u5gW>Z zcNlG5-IE`;5|jNXh8Qs9EI(a8D)W&iSJ-v|90$xCFw6A!tpsM4Oa66`*`b4GI^03C zn}=rHL9=Yf-MN=l3bs+?A-q7ogKn92Iq2q~oAXZErHv&1RC1&w@d(w