diff --git a/.githooks/pre-commit b/.githooks/pre-commit new file mode 100755 index 00000000..48c98308 --- /dev/null +++ b/.githooks/pre-commit @@ -0,0 +1,7 @@ +#!/bin/bash + +# Run helm-docs +./scripts/generate-docs.sh + +# Add updated README.md files to the commit +git add **/README.md \ No newline at end of file diff --git a/.github/scripts/version_updater.py b/.github/scripts/version_updater.py index 4bfa88ba..8f04a09a 100644 --- a/.github/scripts/version_updater.py +++ b/.github/scripts/version_updater.py @@ -52,9 +52,8 @@ def update_deployment_version(version, chart_version, deployment_yml): yml.dump_all(docs, file) -def update(version, chart_file_path, chart_version_level, deployment_yml): - chart_version = update_chart_version(version, chart_file_path, chart_version_level) - update_deployment_version(version, chart_version, deployment_yml) +def update(version, chart_file_path, chart_version_level): + update_chart_version(version, chart_file_path, chart_version_level) def update_chart_version(version, chart_file_path, chart_version_level): @@ -78,13 +77,12 @@ def update_chart_version(version, chart_file_path, chart_version_level): return new_version if __name__ == "__main__": - if len(sys.argv) != 4: - print("Usage: version_updater.py ") + if len(sys.argv) != 3: + print("Usage: version_updater.py ") sys.exit(1) new_version = sys.argv[1] chart_yml = sys.argv[2] - deployment_yml = sys.argv[3] - update(new_version, chart_yml, 'patch', deployment_yml) + update(new_version, chart_yml, 'patch') diff --git a/.github/scripts/version_verifier/version_verifier.py b/.github/scripts/version_verifier/version_verifier.py deleted file mode 100644 index b7427976..00000000 --- a/.github/scripts/version_verifier/version_verifier.py +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env python3 -import sys - -import yaml - -def validate_image_version(chart_yaml: str, deployment_yaml: str): - with open(chart_yaml, "r") as f: - chart = yaml.load(f, yaml.FullLoader) - image_ver = chart['appVersion'] - - with open(deployment_yaml, "r") as stream: - docs = yaml.load_all(stream, yaml.FullLoader) - excludes = ["digma-ds-deployment"] - for data in docs: - app_name = data['metadata']['name'] - if data['kind'] != 'Deployment' or app_name in excludes: - continue - try: - containers = data['spec']['template']['spec']['containers'] - for container in containers: - image = container['image'] - # Split the image string to get the version part - version = image.split(':')[-1] - if version != image_ver: - print( - f"{app_name} - Image version '{version}' does not match the expected version from chart.yaml '{image_ver}'.") - return False - - app_version = next(e for e in container['env'] if e['name'] == 'ApplicationVersion') - if app_version['value'] != version: - print( - f"{app_name} - Image version '{version}' does not match the ApplicationVersion '{app_version['value']}'.") - return False - - except KeyError as e: - print(f"Key error: {e}") - return False - return True - -def main(): - deployment_yml = 'rendered-deployment.yaml' - chart_yml = 'Chart.yaml' - chart_yml = sys.argv[1] - deployment_yml = sys.argv[2] - if not validate_image_version(chart_yml, deployment_yml): - sys.exit(1) - - -if __name__ == "__main__": - main() diff --git a/.github/workflows/helm-lint.yml b/.github/workflows/helm-lint.yml index 40801082..aaeffb36 100644 --- a/.github/workflows/helm-lint.yml +++ b/.github/workflows/helm-lint.yml @@ -15,4 +15,5 @@ jobs: - name: Run Helm Lint run: | - helm lint ./src/digma --set digma.licenseKey="dummy-license-key" \ No newline at end of file + helm dependency update ./charts/digma + helm lint ./charts/digma --set digma.licenseKey="dummy-license-key" \ No newline at end of file diff --git a/.github/workflows/release-charts.yml b/.github/workflows/release-charts.yml index 229e9fef..da2212b9 100644 --- a/.github/workflows/release-charts.yml +++ b/.github/workflows/release-charts.yml @@ -22,6 +22,6 @@ jobs: - name: Run chart-releaser uses: helm/chart-releaser-action@v1.1.0 with: - charts_dir: src + charts_dir: charts env: CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" \ No newline at end of file diff --git a/.github/workflows/version-updater.yml b/.github/workflows/version-updater.yml index 72229cde..f5c797e6 100644 --- a/.github/workflows/version-updater.yml +++ b/.github/workflows/version-updater.yml @@ -28,7 +28,7 @@ jobs: git checkout -b ${{ env.BRANCH_NAME }} - name: Run Python script run: | - python .github/scripts/version_updater.py "${{ github.event.inputs.app_version }}" 'src/digma/Chart.yaml' 'src/rendered-deployment.yaml' + python .github/scripts/version_updater.py "${{ github.event.inputs.app_version }}" 'charts/digma/Chart.yaml' - name: Commit and Push run: | git config --global user.name 'github-actions[bot]' diff --git a/.github/workflows/version-verifier.yml b/.github/workflows/version-verifier.yml index f8a9d2d8..190b8db7 100644 --- a/.github/workflows/version-verifier.yml +++ b/.github/workflows/version-verifier.yml @@ -16,6 +16,6 @@ jobs: cache: 'pip' # caching pip dependencies - run: pip install -r .github/scripts/version_verifier/requirements.txt - name: Run Version Verifier Script - run: python3 .github/scripts/version_verifier/version_verifier.py 'src/digma/Chart.yaml' 'src/rendered-deployment.yaml' + run: python3 .github/scripts/version_verifier/version_verifier.py 'charts/digma/Chart.yaml' \ No newline at end of file diff --git a/.gitignore b/.gitignore index 4f82e34f..84020c54 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ -*-values.yaml \ No newline at end of file +# editor and IDE paraphernalia +.idea +.vscode +.DS_Store \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 0d1185b6..00000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "name": "Launch Package", - "type": "go", - "request": "launch", - "mode": "auto", - "program": "${fileDirname}" - } - ] -} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index b58dcb47..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "editor.tabSize": 2, - "digma.environment": "HELM-TEST", - "gopls": { - "ui.semanticTokens": true - } -} diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md new file mode 100644 index 00000000..a022e05e --- /dev/null +++ b/DEVELOPMENT.md @@ -0,0 +1,5 @@ +## Development Notes +- Set up a custom Git hooks directory: + ```bash + git config --local core.hooksPath .githooks/ + ``` \ No newline at end of file diff --git a/charts/digma/.gitignore b/charts/digma/.gitignore new file mode 100644 index 00000000..d3a9b707 --- /dev/null +++ b/charts/digma/.gitignore @@ -0,0 +1,36 @@ +# Ignore chart build artifacts +charts/ +Chart.lock + +# Ignore Helm release files +release.yaml +output.yaml + +# Ignore temporary files +*.tmp +*.log +*.swp +*.bak +*.~* + +# Ignore specific configuration files +**/values.local.yaml +secrets.yaml # Avoid committing sensitive data +.env + +# Ignore package artifacts +*.tgz + +# Ignore MacOS system files +.DS_Store + +# Ignore IDE files +.idea/ +*.iml +.vscode/ + +# Ignore debugging files +debug.log + +# Ignore other build-related files +build/ diff --git a/src/sample-app-go/.helmignore b/charts/digma/.helmignore similarity index 84% rename from src/sample-app-go/.helmignore rename to charts/digma/.helmignore index 0e8a0eb3..5f9d003e 100644 --- a/src/sample-app-go/.helmignore +++ b/charts/digma/.helmignore @@ -14,10 +14,14 @@ *.swp *.bak *.tmp -*.orig *~ # Various IDEs .project .idea/ *.tmproj -.vscode/ +# img folder +img/ +# Changelog +CHANGELOG.md + +values.local.yaml diff --git a/charts/digma/Chart.yaml b/charts/digma/Chart.yaml new file mode 100644 index 00000000..97924cfd --- /dev/null +++ b/charts/digma/Chart.yaml @@ -0,0 +1,40 @@ +annotations: + category: Infrastructure +apiVersion: v2 +appVersion: 0.3.166-health-alpha.2 +dependencies: +- name: kafka + repository: oci://registry-1.docker.io/bitnamicharts + version: 31.0.0 +- name: prometheus + repository: oci://registry-1.docker.io/bitnamicharts + version: 1.3.28 + condition: observability.useLocal +- name: grafana + repository: oci://registry-1.docker.io/bitnamicharts + version: 11.3.26 + condition: observability.useLocal +- name: elasticsearch + repository: oci://registry-1.docker.io/bitnamicharts + version: 21.3.17 +- name: influxdb + repository: oci://registry-1.docker.io/bitnamicharts + version: 6.3.22 +- name: redis + repository: oci://registry-1.docker.io/bitnamicharts + version: 20.3.0 +- name: postgresql + repository: oci://registry-1.docker.io/bitnamicharts + version: 16.2.1 +- name: common + repository: oci://registry-1.docker.io/bitnamicharts + version: 2.x.x + tags: + - bitnami-common +name: digma +description: A Helm chart containing Digma's services +home: https://github.com/digma-ai/digma +icon: https://digma.ai/wp-content/uploads/2024/02/logo-alt-1.svg +type: application +version: 1.0.254 + diff --git a/charts/digma/README.md b/charts/digma/README.md new file mode 100644 index 00000000..935724c4 --- /dev/null +++ b/charts/digma/README.md @@ -0,0 +1,425 @@ +# digma + +![Version: 1.0.254](https://img.shields.io/badge/Version-1.0.254-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.3.166-health-alpha.2](https://img.shields.io/badge/AppVersion-0.3.166--health--alpha.2-informational?style=flat-square) + +A Helm chart containing Digma's services + +**Homepage:** + +## TL;DR + +```console +helm repo add digma https://digma-ai.github.io/helm-chart/ +helm repo update +helm install digma digma/digma --namespace digma --create-namespace + +``` +## Introduction + +This chart bootstraps a [Digma](https://digma.ai) deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. + +## Prerequisites + +- Kubernetes 1.23+ +- Helm 3.8.0+ + +## Installing the Chart + +To install the chart with the release name `my-release`: +```console +helm install my-release +``` +## Values + +### Global Digma parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| digma.deployment.size | string | `"medium"` | adjusts the deployment to efficiently handle different scales of workload, and can be either small, medium, or large. | +| digma.accessToken | string | `nil` | access token for plugin authentication, and set the same one in the IDE plugin settings. | +| digma.licenseKey | string | `nil` | a digma license to use,If you've signed up for a free Digma account you should have received a Digma license to use. You can use this link [https://digma.ai/sign-up/] to sign up | +| digma.report.enabled | bool | `false` | daily issues report enabled | +| digma.report.scheduledTimeUtc | string | `nil` | scheduled time of the report, HH:mm:ss (24-hour format) | +| digma.report.uiExternalBaseUrl | string | `nil` | UI external service URL (automatically detected if not set) | +| digma.report.recipients.to | string | `nil` | email recipients, list of recipients separated by semicolons (;) | +| digma.report.recipients.cc | string | `nil` | report email additional recipients, list of recipients separated by semicolons (;) | +| digma.report.recipients.bcc | string | `nil` | hidden from other recipients, list of recipients separated by semicolons (;) | +| digma.report.emailGateway.apiKey | string | `nil` | Email gateway email api key | +| digma.report.emailGateway.url | string | `nil` | Email gateway URL | + +### Observability parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| observability.useLocal | bool | `true` | Use local observability, Deploys Prometheus and Grafana | +| observability.siteName | string | `"undefined"` | siteName | +| observability.environmentName | string | `"digma"` | Environments represent different deployment stages or scopes | +| observability.otlp.remoteEndpoint | string | `nil` | Please note this parameter, cannot be set while useLocal is true | +| observability.otlp.samplerProbability | float | `0.1` | Control the fraction of traces that are sampled | +| observability.otlp.exportTraces | bool | `true` | Export traces | +| observability.otlp.exportMetrics | bool | `true` | Export metrics | + +### Global Docker image parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| global.imagePullSecrets | list | `[]` | Global Docker registry secret names as an array | + +### Common parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| kubeVersion | string | `""` | kubeVersion Override Kubernetes version | +| commonLabels | object | `{}` | commonLabels Labels to add to all deployed objects | +| commonAnnotations | object | `{}` | commonAnnotations Annotations to add to all deployed objects | + +### CollectorWorker parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| collectorWorker.image.pullPolicy | string | `"IfNotPresent"` | image pull policy | +| collectorWorker.image.pullSecrets | list | `[]` | image pull secrets | +| collectorWorker.replicas | string | `"{{ index .Values.presets .Values.digma.deployment.size \"collectorWorker\" \"replicas\" }}"` | replicas based on a given preset(.Values.digma.deployment.size) Number of replicas to deploy | +| collectorWorker.service.ports.http | int | `5052` | HTTP service port, health check at /healthz | +| collectorWorker.podLabels | object | `{}` | Extra labels for pods | +| collectorWorker.podAnnotations | object | `{}` | Extra annotations for pods | +| collectorWorker.nodeSelector | object | `{}` | Node labels for pods assignment | +| collectorWorker.tolerations | list | `[]` | Tolerations for pods assignment | +| collectorWorker.affinity | object | `{}` | Affinity for pods assignment | +| collectorWorker.extraEnvVars | list | `[]` | Array with extra environment variables to add | +| collectorWorker.livenessProbe.enabled | bool | `true` | Enable livenessProbe | +| collectorWorker.livenessProbe.initialDelaySeconds | int | `120` | Initial delay seconds for livenessProbe | +| collectorWorker.livenessProbe.periodSeconds | int | `10` | Period seconds for livenessProbe | +| collectorWorker.livenessProbe.timeoutSeconds | int | `5` | Timeout seconds for livenessProbe | +| collectorWorker.livenessProbe.failureThreshold | int | `3` | Failure threshold for livenessProbe | +| collectorWorker.livenessProbe.successThreshold | int | `1` | Success threshold for livenessProbe | + +### Otel Collector parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| otelCollector.samplingPercentage | int | `100` | telemetry data that should be sampled and sent to the backend | +| otelCollector.existingConfigmap | string | `""` | The name of an existing ConfigMap with your custom configuration | +| otelCollector.existingConfigmapKey | string | `""` | The name of the key with the config file | +| otelCollector.image.registry | string | `"docker.io"` | image registry | +| otelCollector.image.repository | string | `"otel/opentelemetry-collector-contrib"` | image repository | +| otelCollector.image.tag | string | `"0.103.0"` | image tag | +| otelCollector.image.pullPolicy | string | `"IfNotPresent"` | image pull policy | +| otelCollector.image.pullSecrets | list | `[]` | image pull secrets | +| otelCollector.replicas | int | `1` | Number of replicas to deploy | +| otelCollector.service.type | string | `"ClusterIP"` | service type | +| otelCollector.service.annotations | object | `{}` | Additional custom annotations for service | +| otelCollector.service.ports.health | int | `13133` | health check service port | +| otelCollector.service.ports.grpc | int | `4317` | gRPC port | +| otelCollector.service.ports.http | int | `4318` | HTTP port listen to path: /v1/traces | +| otelCollector.podLabels | object | `{}` | Extra labels for pods | +| otelCollector.podAnnotations | object | `{}` | Extra annotations for pods | +| otelCollector.nodeSelector | object | `{}` | Node labels for pods assignment | +| otelCollector.tolerations | list | `[]` | Tolerations for pods assignment | +| otelCollector.affinity | object | `{}` | Affinity for pods assignment | +| otelCollector.grpc.ingress.enabled | bool | `false` | Enable ingress | +| otelCollector.grpc.ingress.pathType | string | `"ImplementationSpecific"` | Ingress path type | +| otelCollector.grpc.ingress.apiVersion | string | `""` | Force Ingress API version (automatically detected if not set) | +| otelCollector.grpc.ingress.hostname | string | `nil` | Default host for the ingress record | +| otelCollector.grpc.ingress.ingressClassName | string | `nil` | IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+) | +| otelCollector.grpc.ingress.path | string | `"/"` | The Path to otelCollector. You may need to set this to '/*' in order to use this with ALB ingress controllers. | +| otelCollector.grpc.ingress.annotations | string | `nil` | Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations. | +| otelCollector.grpc.ingress.extraPaths | list | `[]` | Any additional paths that may need to be added to the ingress under the main host | +| otelCollector.grpc.ingress.extraRules | list | `[]` | Additional rules to be covered with this ingress record | +| otelCollector.http.ingress.enabled | bool | `false` | Enable ingress | +| otelCollector.http.ingress.pathType | string | `"ImplementationSpecific"` | Ingress path type | +| otelCollector.http.ingress.apiVersion | string | `""` | Force Ingress API version (automatically detected if not set) | +| otelCollector.http.ingress.hostname | string | `nil` | Default host for the ingress record | +| otelCollector.http.ingress.ingressClassName | string | `nil` | IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+) | +| otelCollector.http.ingress.path | string | `"/"` | The Path to otelCollector. You may need to set this to '/*' in order to use this with ALB ingress controllers. | +| otelCollector.http.ingress.annotations | string | `nil` | Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations. | +| otelCollector.http.ingress.extraPaths | list | `[]` | Any additional paths that may need to be added to the ingress under the main host | +| otelCollector.http.ingress.extraRules | list | `[]` | Additional rules to be covered with this ingress record | + +### CollectorApi parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| collectorApi.image.pullPolicy | string | `"IfNotPresent"` | image pull policy | +| collectorApi.image.pullSecrets | list | `[]` | image pull secrets | +| collectorApi.replicas | int | `1` | Number of replicas to deploy | +| collectorApi.service.type | string | `"ClusterIP"` | service type | +| collectorApi.service.annotations | object | `{}` | Additional custom annotations for service | +| collectorApi.service.ports.internal | int | `5048` | internal service port | +| collectorApi.service.ports.grpc | int | `5050` | gRPC service port | +| collectorApi.service.ports.http | int | `5049` | HTTP port listen to path: /v1/traces, health check at /healthz | +| collectorApi.podLabels | object | `{}` | Extra labels for pods | +| collectorApi.podAnnotations | object | `{}` | Extra annotations for pods | +| collectorApi.nodeSelector | object | `{}` | Node labels for pods assignment | +| collectorApi.tolerations | list | `[]` | Tolerations for pods assignment | +| collectorApi.affinity | object | `{}` | Affinity for pods assignment | +| collectorApi.livenessProbe.enabled | bool | `true` | Enable livenessProbe | +| collectorApi.livenessProbe.initialDelaySeconds | int | `120` | Initial delay seconds for livenessProbe | +| collectorApi.livenessProbe.periodSeconds | int | `10` | Period seconds for livenessProbe | +| collectorApi.livenessProbe.timeoutSeconds | int | `5` | Timeout seconds for livenessProbe | +| collectorApi.livenessProbe.failureThreshold | int | `3` | Failure threshold for livenessProbe | +| collectorApi.livenessProbe.successThreshold | int | `1` | Success threshold for livenessProbe | + +### AnalyticsApi parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| analyticsApi.secured | bool | `true` | Indicates whether the analytics API uses a secured HTTPS connection. Set to false if ingress is enabled | +| analyticsApi.image.pullPolicy | string | `"IfNotPresent"` | image pull policy | +| analyticsApi.image.pullSecrets | list | `[]` | image pull secrets | +| analyticsApi.replicas | int | `1` | Number of replicas to deploy | +| analyticsApi.service.type | string | `"ClusterIP"` | service type | +| analyticsApi.service.annotations | object | `{}` | Additional custom annotations for service | +| analyticsApi.service.ports.http | int | `5051` | HTTP service port, health check at /healthz | +| analyticsApi.podLabels | object | `{}` | Extra labels for pods | +| analyticsApi.podAnnotations | object | `{}` | Extra annotations for pods | +| analyticsApi.nodeSelector | object | `{}` | Node labels for pods assignment | +| analyticsApi.tolerations | list | `[]` | Tolerations for pods assignment | +| analyticsApi.affinity | object | `{}` | Affinity for pods assignment | +| analyticsApi.ingress.enabled | bool | `false` | Enable ingress | +| analyticsApi.ingress.pathType | string | `"ImplementationSpecific"` | Ingress path type | +| analyticsApi.ingress.apiVersion | string | `""` | Force Ingress API version (automatically detected if not set) | +| analyticsApi.ingress.hostname | string | `nil` | Default host for the ingress record | +| analyticsApi.ingress.ingressClassName | string | `nil` | IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+) | +| analyticsApi.ingress.path | string | `"/"` | The Path to AnalyticsApi. You may need to set this to '/*' in order to use this with ALB ingress controllers. | +| analyticsApi.ingress.annotations | string | `nil` | Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations. | +| analyticsApi.ingress.extraPaths | list | `[]` | Any additional paths that may need to be added to the ingress under the main host | +| analyticsApi.ingress.extraRules | list | `[]` | Additional rules to be covered with this ingress record | +| analyticsApi.livenessProbe.enabled | bool | `true` | Enable livenessProbe | +| analyticsApi.livenessProbe.initialDelaySeconds | int | `120` | Initial delay seconds for livenessProbe | +| analyticsApi.livenessProbe.periodSeconds | int | `10` | Period seconds for livenessProbe | +| analyticsApi.livenessProbe.timeoutSeconds | int | `5` | Timeout seconds for livenessProbe | +| analyticsApi.livenessProbe.failureThreshold | int | `3` | Failure threshold for livenessProbe | +| analyticsApi.livenessProbe.successThreshold | int | `1` | Success threshold for livenessProbe | + +### MeasurementAnalysis parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| measurementAnalysis.image.pullPolicy | string | `"IfNotPresent"` | image pull policy | +| measurementAnalysis.image.pullSecrets | list | `[]` | image pull secrets | +| measurementAnalysis.replicas | string | `"{{ index .Values.presets .Values.digma.deployment.size \"measurementAnalysis\" \"replicas\" }}"` | replicas based on a given preset(.Values.digma.deployment.size) Number of replicas to deploy | +| measurementAnalysis.service.ports.http | int | `5054` | HTTP service port, health check at /healthz | +| measurementAnalysis.podLabels | object | `{}` | Extra labels for pods | +| measurementAnalysis.podAnnotations | object | `{}` | Extra annotations for pods | +| measurementAnalysis.nodeSelector | object | `{}` | Node labels for pods assignment | +| measurementAnalysis.tolerations | list | `[]` | Tolerations for pods assignment | +| measurementAnalysis.affinity | object | `{}` | Affinity for pods assignment | +| measurementAnalysis.extraEnvVars | list | `[]` | Array with extra environment variables to add | +| measurementAnalysis.livenessProbe.enabled | bool | `true` | Enable livenessProbe | +| measurementAnalysis.livenessProbe.initialDelaySeconds | int | `120` | Initial delay seconds for livenessProbe | +| measurementAnalysis.livenessProbe.periodSeconds | int | `10` | Period seconds for livenessProbe | +| measurementAnalysis.livenessProbe.timeoutSeconds | int | `5` | Timeout seconds for livenessProbe | +| measurementAnalysis.livenessProbe.failureThreshold | int | `3` | Failure threshold for livenessProbe | +| measurementAnalysis.livenessProbe.successThreshold | int | `1` | Success threshold for livenessProbe | + +### Scheduler parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| scheduler.image.pullPolicy | string | `"IfNotPresent"` | image pull policy | +| scheduler.image.pullSecrets | list | `[]` | image pull secrets | +| scheduler.replicas | int | `1` | Number of replicas to deploy | +| scheduler.service.ports.http | int | `5053` | HTTP service port, health check at /healthz | +| scheduler.podLabels | object | `{}` | Extra labels for pods | +| scheduler.podAnnotations | object | `{}` | Extra annotations for pods | +| scheduler.nodeSelector | object | `{}` | Node labels for pods assignment | +| scheduler.tolerations | list | `[]` | Tolerations for pods assignment | +| scheduler.affinity | object | `{}` | Affinity for pods assignment | +| scheduler.livenessProbe.enabled | bool | `true` | Enable livenessProbe | +| scheduler.livenessProbe.initialDelaySeconds | int | `120` | Initial delay seconds for livenessProbe | +| scheduler.livenessProbe.periodSeconds | int | `10` | Period seconds for livenessProbe | +| scheduler.livenessProbe.timeoutSeconds | int | `5` | Timeout seconds for livenessProbe | +| scheduler.livenessProbe.failureThreshold | int | `3` | Failure threshold for livenessProbe | +| scheduler.livenessProbe.successThreshold | int | `1` | Success threshold for livenessProbe | + +### PipelineWorker parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| pipelineWorker.image.pullPolicy | string | `"IfNotPresent"` | image pull policy | +| pipelineWorker.image.pullSecrets | list | `[]` | image pull secrets | +| pipelineWorker.replicas | string | `"{{ index .Values.presets .Values.digma.deployment.size \"pipelineWorker\" \"replicas\" }}"` | replicas based on a given preset(.Values.digma.deployment.size) Number of replicas to deploy | +| pipelineWorker.service.ports.http | int | `5055` | HTTP service port, health check at /healthz | +| pipelineWorker.podLabels | object | `{}` | Extra labels for pods | +| pipelineWorker.podAnnotations | object | `{}` | Extra annotations for pods | +| pipelineWorker.nodeSelector | object | `{}` | Node labels for pods assignment | +| pipelineWorker.tolerations | list | `[]` | Tolerations for pods assignment | +| pipelineWorker.affinity | object | `{}` | Affinity for pods assignment | +| pipelineWorker.livenessProbe.enabled | bool | `true` | Enable livenessProbe | +| pipelineWorker.livenessProbe.initialDelaySeconds | int | `120` | Initial delay seconds for livenessProbe | +| pipelineWorker.livenessProbe.periodSeconds | int | `10` | Period seconds for livenessProbe | +| pipelineWorker.livenessProbe.timeoutSeconds | int | `5` | Timeout seconds for livenessProbe | +| pipelineWorker.livenessProbe.failureThreshold | int | `3` | Failure threshold for livenessProbe | +| pipelineWorker.livenessProbe.successThreshold | int | `1` | Success threshold for livenessProbe | + +### UI parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| nginx.image.pullPolicy | string | `"IfNotPresent"` | image pull policy | +| nginx.image.pullSecrets | list | `[]` | image pull secrets | +| nginx.replicas | int | `1` | Number of replicas to deploy | +| nginx.podLabels | object | `{}` | Extra labels for pods | +| nginx.podAnnotations | object | `{}` | Extra annotations for pods | +| nginx.nodeSelector | object | `{}` | Node labels for pods assignment | +| nginx.tolerations | list | `[]` | Tolerations for pods assignment | +| nginx.affinity | object | `{}` | Affinity for pods assignment | +| ui.service.type | string | `"ClusterIP"` | service type | +| ui.service.annotations | object | `{}` | Additional custom annotations for service | +| ui.service.ports.http | int | `80` | HTTP service port | +| ui.ingress.enabled | bool | `false` | Enable ingress | +| ui.ingress.pathType | string | `"ImplementationSpecific"` | Ingress path type | +| ui.ingress.apiVersion | string | `""` | Force Ingress API version (automatically detected if not set) | +| ui.ingress.hostname | string | `nil` | Default host for the ingress record | +| ui.ingress.ingressClassName | string | `nil` | IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+) | +| ui.ingress.path | string | `"/"` | The Path to UI. You may need to set this to '/*' in order to use this with ALB ingress controllers. | +| ui.ingress.annotations | string | `nil` | Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations. | +| ui.ingress.extraPaths | list | `[]` | Any additional paths that may need to be added to the ingress under the main host | +| ui.ingress.extraRules | list | `[]` | Additional rules to be covered with this ingress record | + +### MetricsExporter parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| metricsExporter.image.pullPolicy | string | `"IfNotPresent"` | image pull policy | +| metricsExporter.image.pullSecrets | list | `[]` | image pull secrets | +| metricsExporter.replicas | int | `1` | Number of replicas to deploy | +| metricsExporter.service.annotations | object | `{}` | Additional custom annotations for service | +| metricsExporter.service.ports.http | int | `9091` | HTTP service port | +| metricsExporter.podLabels | object | `{}` | Extra labels for pods | +| metricsExporter.podAnnotations | object | `{}` | Extra annotations for pods | +| metricsExporter.nodeSelector | object | `{}` | Node labels for pods assignment | +| metricsExporter.tolerations | list | `[]` | Tolerations for pods assignment | +| metricsExporter.affinity | object | `{}` | Affinity for pods assignment | +| metricsExporter.serviceAccount | object | `{"annotations":{}}` | Annotations to add to the ServiceAccount Metadata | + +### Otel CollectorDF parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| otelCollectorDf.image.registry | string | `"docker.io"` | image registry | +| otelCollectorDf.image.repository | string | `"otel/opentelemetry-collector-contrib"` | image repository | +| otelCollectorDf.image.tag | string | `"0.103.0"` | image tag | +| otelCollectorDf.image.pullPolicy | string | `"IfNotPresent"` | image pull policy | +| otelCollectorDf.image.pullSecrets | list | `[]` | image pull secrets | +| otelCollectorDf.replicas | int | `1` | Number of replicas to deploy | +| otelCollectorDf.service.annotations | object | `{}` | Additional custom annotations for service | +| otelCollectorDf.service.ports.grpc | int | `4317` | HTTP gRPC service port | +| otelCollectorDf.service.ports.prometheus_scraper | int | `8889` | prometheus scraper service port | +| otelCollectorDf.podLabels | object | `{}` | Extra labels for pods | +| otelCollectorDf.podAnnotations | object | `{}` | Extra annotations for pods | +| otelCollectorDf.nodeSelector | object | `{}` | Node labels for pods assignment | +| otelCollectorDf.tolerations | list | `[]` | Tolerations for pods assignment | +| otelCollectorDf.affinity | object | `{}` | Affinity for pods assignment | + +### Influxdb parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| influxdb.podLabels | object | `{}` | Extra labels for pods | +| influxdb.podAnnotations | object | `{}` | Extra annotations for pods | +| influxdb.nodeSelector | object | `{}` | Node labels for pods assignment | +| influxdb.tolerations | list | `[]` | Tolerations for pods assignment | +| influxdb.affinity | object | `{}` | Affinity for pods assignment | + +### Postgresql parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| postgresql.primary.podLabels | object | `{}` | Extra labels for pods | +| postgresql.primary.podAnnotations | object | `{}` | Extra annotations for pods | +| postgresql.primary.nodeSelector | object | `{}` | Node labels for pods assignment | +| postgresql.primary.tolerations | list | `[]` | Tolerations for pods assignment | +| postgresql.primary.affinity | object | `{}` | Affinity for pods assignment | + +### Redis parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| redis.master.podLabels | object | `{}` | Extra labels for pods | +| redis.master.podAnnotations | object | `{}` | Extra annotations for pods | +| redis.master.nodeSelector | object | `{}` | Node labels for pods assignment | +| redis.master.tolerations | list | `[]` | Tolerations for pods assignment | +| redis.master.affinity | object | `{}` | Affinity for pods assignment | + +### Jaeger parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| jaeger.image.registry | string | `"docker.io"` | image registry | +| jaeger.image.repository | string | `"jaegertracing/all-in-one"` | image repository | +| jaeger.image.tag | string | `"1.61.0"` | image tag | +| jaeger.image.pullPolicy | string | `"IfNotPresent"` | image pull policy | +| jaeger.image.pullSecrets | list | `[]` | image pull secrets | +| jaeger.replicas | int | `1` | Number of replicas to deploy | +| jaeger.service.type | string | `"ClusterIP"` | service type | +| jaeger.service.annotations | object | `{}` | Additional custom annotations for service | +| jaeger.service.ports.http_ui | int | `16686` | UI HTTP service port | +| jaeger.service.ports.grpc_internal | int | `4317` | gRPC collector internal service port | +| jaeger.podLabels | object | `{}` | Extra labels for pods | +| jaeger.podAnnotations | object | `{}` | Extra annotations for pods | +| jaeger.nodeSelector | object | `{}` | Node labels for pods assignment | +| jaeger.tolerations | list | `[]` | Tolerations for pods assignment | +| jaeger.affinity | object | `{}` | Affinity for pods assignment | +| jaeger.ingress.enabled | bool | `false` | Enable ingress | +| jaeger.ingress.pathType | string | `"ImplementationSpecific"` | Ingress path type | +| jaeger.ingress.apiVersion | string | `""` | Force Ingress API version (automatically detected if not set) | +| jaeger.ingress.hostname | string | `nil` | Default host for the ingress record | +| jaeger.ingress.ingressClassName | string | `nil` | IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+) | +| jaeger.ingress.path | string | `"/"` | The Path to UI. You may need to set this to '/*' in order to use this with ALB ingress controllers. | +| jaeger.ingress.annotations | string | `nil` | Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations. | +| jaeger.ingress.extraPaths | list | `[]` | Any additional paths that may need to be added to the ingress under the main host | +| jaeger.ingress.extraRules | list | `[]` | Additional rules to be covered with this ingress record | + +### Elasticsearch parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| elasticsearch.master.podLabels | object | `{}` | Extra labels for pods | +| elasticsearch.master.podAnnotations | object | `{}` | Extra annotations for pods | +| elasticsearch.master.nodeSelector | object | `{}` | Node labels for pods assignment | +| elasticsearch.master.tolerations | list | `[]` | Tolerations for pods assignment | +| elasticsearch.master.affinity | object | `{}` | Affinity for pods assignment | + +### Grafana parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| grafana.grafana.podLabels | object | `{}` | Extra labels for pods | +| grafana.grafana.podAnnotations | object | `{}` | Extra annotations for pods | +| grafana.grafana.nodeSelector | object | `{}` | Node labels for pods assignment | +| grafana.grafana.tolerations | list | `[]` | Tolerations for pods assignment | +| grafana.grafana.affinity | object | `{}` | Affinity for pods assignment | + +### Prometheus parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| prometheus.server.podLabels | object | `{}` | Extra labels for pods | +| prometheus.server.podAnnotations | object | `{}` | Extra annotations for pods | +| prometheus.server.nodeSelector | object | `{}` | Node labels for pods assignment | +| prometheus.server.tolerations | list | `[]` | Tolerations for pods assignment | +| prometheus.server.affinity | object | `{}` | Affinity for pods assignment | + +### Kafka parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| kafka.controller.podLabels | object | `{}` | Extra labels for pods | +| kafka.controller.podAnnotations | object | `{}` | Extra annotations for pods | +| kafka.controller.nodeSelector | object | `{}` | Node labels for pods assignment | +| kafka.controller.tolerations | list | `[]` | Tolerations for pods assignment | +| kafka.controller.affinity | object | `{}` | Affinity for pods assignment | +## Requirements + +| Repository | Name | Version | +|------------|------|---------| +| oci://registry-1.docker.io/bitnamicharts | common | 2.x.x | +| oci://registry-1.docker.io/bitnamicharts | elasticsearch | 21.3.17 | +| oci://registry-1.docker.io/bitnamicharts | grafana | 11.3.26 | +| oci://registry-1.docker.io/bitnamicharts | influxdb | 6.3.22 | +| oci://registry-1.docker.io/bitnamicharts | kafka | 31.0.0 | +| oci://registry-1.docker.io/bitnamicharts | postgresql | 16.2.1 | +| oci://registry-1.docker.io/bitnamicharts | prometheus | 1.3.28 | +| oci://registry-1.docker.io/bitnamicharts | redis | 20.3.0 | \ No newline at end of file diff --git a/charts/digma/README.md.gotmpl b/charts/digma/README.md.gotmpl new file mode 100644 index 00000000..515f6ccc --- /dev/null +++ b/charts/digma/README.md.gotmpl @@ -0,0 +1,40 @@ +{{ template "chart.header" . }} + +{{ template "chart.deprecationWarning" . }} + +{{ template "chart.badgesSection" . }} + +{{ template "chart.description" . }} + +{{ template "chart.homepageLine" . }} + +{{ template "chart.maintainersSection" . }} + +{{ template "chart.sourcesSection" . }} + +## TL;DR + +```console +helm repo add digma https://digma-ai.github.io/helm-chart/ +helm repo update +helm install digma digma/digma --namespace digma --create-namespace + +``` +## Introduction + +This chart bootstraps a [Digma](https://digma.ai) deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. + + +## Prerequisites + +- Kubernetes 1.23+ +- Helm 3.8.0+ + +## Installing the Chart + +To install the chart with the release name `my-release`: +```console +helm install my-release +``` +{{ template "chart.valuesSection" . }} +{{ template "chart.requirementsSection" . }} \ No newline at end of file diff --git a/src/digma/grafana-dashboards/Activities.json b/charts/digma/files/grafana-dashboards/Activities.json similarity index 100% rename from src/digma/grafana-dashboards/Activities.json rename to charts/digma/files/grafana-dashboards/Activities.json diff --git a/src/digma/grafana-dashboards/Environment.json b/charts/digma/files/grafana-dashboards/Environment.json similarity index 100% rename from src/digma/grafana-dashboards/Environment.json rename to charts/digma/files/grafana-dashboards/Environment.json diff --git a/src/digma/grafana-dashboards/Kafka.json b/charts/digma/files/grafana-dashboards/Kafka.json similarity index 100% rename from src/digma/grafana-dashboards/Kafka.json rename to charts/digma/files/grafana-dashboards/Kafka.json diff --git a/charts/digma/files/nginx.conf b/charts/digma/files/nginx.conf new file mode 100644 index 00000000..8ed572eb --- /dev/null +++ b/charts/digma/files/nginx.conf @@ -0,0 +1,85 @@ +events { } + +http { + upstream jaeger { + server {{ include "digma.jaeger" . }}:{{ .Values.jaeger.service.ports.http_ui }}; + } + upstream digma { + server {{ include "digma.analytics-api" . }}:{{ .Values.analyticsApi.service.ports.http}}; + } + port_in_redirect off; + absolute_redirect off; + + # + # digma ui + # + server { + listen {{ .Values.ui.service.ports.http}}; + root /app; + + location /health { + access_log off; + return 200 'OK'; + add_header Content-Type text/plain; + } + } + + # + # jaeger auth proxy + # + server { + listen {{ .Values.jaeger.service.ports.http_ui }}; + + location / { + # Call /auth/validate before serving the request + auth_request /auth/validate; + # Catch the cookie from /auth/validate + auth_request_set $auth_cookie $upstream_http_set_cookie; + # Forward the cookie to th client + add_header Set-Cookie $auth_cookie; + # Catch header "X-Auth-Fail-Reason" from /auth/validate + auth_request_set $auth_fail_reason $upstream_http_x_auth_fail_reason; + + proxy_pass http://jaeger; + } + + error_page 401 = @error401; + + location @error401 { + # Forward header "X-Auth-Fail-Reason" to the client as part of the redirect response + add_header X-Auth-Fail-Reason $auth_fail_reason; + return 302 /jaeger-login/index.html?return_url=$request_uri; + } + + location /health { + access_log off; + return 200 'OK'; + add_header Content-Type text/plain; + } + + location /favicon.ico { + root /app; + log_not_found off; + access_log off; + } + + location /jaeger-login { + root /app; + } + + location /auth/validate { + internal; + proxy_pass {{ include "digma.analytics-api.protocol" .}}://digma/authentication/jaeger/validate-or-refresh; + proxy_pass_request_body off; + proxy_set_header Content-Length ""; + proxy_set_header X-Original-URI $request_uri; + proxy_set_header Digma-Access-Token {{ printf "Token %s" (.Values.digma.accessToken) | quote }}; + } + + location /auth/login { + proxy_pass {{ include "digma.analytics-api.protocol" .}}://digma/authentication/jaeger/login; + proxy_set_header X-Original-URI $request_uri; + proxy_set_header Digma-Access-Token {{ printf "Token %s" (.Values.digma.accessToken) | quote }}; + } + } +} \ No newline at end of file diff --git a/charts/digma/templates/NOTES.txt b/charts/digma/templates/NOTES.txt new file mode 100644 index 00000000..abffdd13 --- /dev/null +++ b/charts/digma/templates/NOTES.txt @@ -0,0 +1,138 @@ +CHART NAME: {{ .Chart.Name }} +CHART VERSION: {{ .Chart.Version }} +APP VERSION: {{ .Chart.AppVersion }} + +** Please be patient while the chart is being deployed ** + +DIGMA API: +{{- if .Values.analyticsApi.ingress.enabled }} +URL: https://{{ .Values.analyticsApi.ingress.hostname }} +{{- else }} +{{- if contains "NodePort" .Values.analyticsApi.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ include "common.names.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "digma.analytics-api" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ include "common.names.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + export URL="http://${NODE_IP}:${NODE_PORT}/" + echo "API URL: http://$NODE_IP:$NODE_PORT/" +{{- else if contains "LoadBalancer" .Values.analyticsApi.service.type }} +** Please ensure an external IP is associated to the {{ include "digma.analytics-api" . }} service before proceeding ** +** Watch the status using: kubectl get svc --namespace {{ include "common.names.namespace" . }} -w {{ include "digma.analytics-api" . }} ** + + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.names.namespace" . }} {{ include "digma.analytics-api" . }} --template "{{ "{{ range (index .status.loadBalancer.ingress 0) }}{{ . }}{{ end }}" }}") +{{- $port:=.Values.analyticsApi.service.ports.http | toString }} + echo "API URL: http://$SERVICE_IP{{- if ne $port "80" }}:{{ .Values.analyticsApi.service.ports.http }}{{ end }}" +{{- else if contains "ClusterIP" .Values.analyticsApi.service.type }} + echo "API URL: http://127.0.0.1:{{ .Values.analyticsApi.service.ports.http }}" + kubectl port-forward --namespace {{ include "common.names.namespace" . }} svc/{{ include "digma.analytics-api" . }} {{ .Values.analyticsApi.service.ports.http }}:{{ .Values.analyticsApi.service.ports.http }} & +{{- end }} +{{- end }} + +Collector: +{{- if or .Values.otelCollector.grpc.ingress.enabled .Values.otelCollector.http.ingress.enabled }} + {{- if or .Values.otelCollector.grpc.ingress.enabled }} +[gRPC] https://{{ .Values.otelCollector.grpc.ingress.hostname }} + {{- end }} + {{- if or .Values.otelCollector.http.ingress.enabled }} +[HTTP] https://{{ .Values.otelCollector.http.ingress.hostname }} + {{- end }} +{{- else }} +{{- if contains "NodePort" .Values.otelCollector.service.type }} + {{- if and .Values.otelCollector.service.ports.grpc .Values.otelCollector.service.ports.http }} + NODE_PORT=$(kubectl get --namespace {{ include "common.names.namespace" . }} -o jsonpath="{.spec.ports[2].nodePort}" services {{ include "digma.otel-collector" . }}) + NODE_IP=$(kubectl get nodes --namespace {{ include "common.names.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + URL="http://${NODE_IP}:${NODE_PORT}/" + echo "[gRPC] http://$NODE_IP:$NODE_PORT/" + NODE_PORT=$(kubectl get --namespace {{ include "common.names.namespace" . }} -o jsonpath="{.spec.ports[1].nodePort}" services {{ include "digma.otel-collector" . }}) + NODE_IP=$(kubectl get nodes --namespace {{ include "common.names.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + URL="http://${NODE_IP}:${NODE_PORT}/" + echo "[HTTP] http://$NODE_IP:$NODE_PORT/" + {{- else }} + {{- if .Values.otelCollector.service.ports.grpc }} + NODE_PORT=$(kubectl get --namespace {{ include "common.names.namespace" . }} -o jsonpath="{.spec.ports[1].nodePort}" services {{ include "digma.otel-collector" . }}) + NODE_IP=$(kubectl get nodes --namespace {{ include "common.names.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + URL="http://${NODE_IP}:${NODE_PORT}/" + echo "[gRPC] http://$NODE_IP:$NODE_PORT/" + {{- else }} + NODE_PORT=$(kubectl get --namespace {{ include "common.names.namespace" . }} -o jsonpath="{.spec.ports[1].nodePort}" services {{ include "digma.otel-collector" . }}) + NODE_IP=$(kubectl get nodes --namespace {{ include "common.names.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + URL="http://${NODE_IP}:${NODE_PORT}/" + echo "[HTTP] http://$NODE_IP:$NODE_PORT/" + {{- end }} + {{- end }} +{{- else if contains "LoadBalancer" .Values.otelCollector.service.type }} +** Please ensure an external IP is associated to the {{ include "digma.otel-collector" . }} service before proceeding ** +** Watch the status using: kubectl get svc --namespace {{ include "common.names.namespace" . }} -w {{ include "digma.otel-collector" . }} ** + + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.names.namespace" . }} {{ include "digma.otel-collector" . }} --template "{{ "{{ range (index .status.loadBalancer.ingress 0) }}{{ . }}{{ end }}" }}") +{{- if .Values.otelCollector.service.ports.grpc }} + echo "[gRPC] http://$SERVICE_IP:{{ .Values.otelCollector.service.ports.grpc }}" +{{- end }} +{{- if .Values.otelCollector.service.ports.http }} +{{- $port:=.Values.otelCollector.service.ports.http | toString }} + echo "[HTTP] http://$SERVICE_IP{{- if ne $port "80" }}:{{ .Values.otelCollector.service.ports.http }}{{ end }}" +{{- end }} +{{- else if contains "ClusterIP" .Values.otelCollector.service.type }} + {{- if .Values.otelCollector.service.ports.grpc }} + echo "[gRPC] http://127.0.0.1:{{ .Values.otelCollector.service.ports.grpc }}" + kubectl port-forward --namespace {{ include "common.names.namespace" . }} svc/{{ include "digma.otel-collector" . }} {{ .Values.otelCollector.service.ports.grpc }}:{{ .Values.otelCollector.service.ports.grpc }} & + {{- end }} + {{- if .Values.otelCollector.service.ports.http }} + echo "[HTTP] http://127.0.0.1:{{ .Values.otelCollector.service.ports.http }}" + kubectl port-forward --namespace {{ include "common.names.namespace" . }} svc/{{ include "digma.otel-collector" . }} {{ .Values.otelCollector.service.ports.http }}:{{ .Values.otelCollector.service.ports.http }} & + {{- end }} +{{- end }} +{{- end }} + +UI: +{{- if .Values.ui.ingress.enabled }} +URL: https://{{ .Values.ui.ingress.hostname }} +{{- else }} +{{- if contains "NodePort" .Values.ui.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ include "common.names.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "digma.ui" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ include "common.names.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + export URL="http://${NODE_IP}:${NODE_PORT}/" + echo "Digma UI URL: http://$NODE_IP:$NODE_PORT/" +{{- else if contains "LoadBalancer" .Values.ui.service.type }} +** Please ensure an external IP is associated to the {{ include "digma.ui" . }} service before proceeding ** +** Watch the status using: kubectl get svc --namespace {{ include "common.names.namespace" . }} -w {{ include "digma.ui" . }} ** + + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.names.namespace" . }} {{ include "digma.ui" . }} --template "{{ "{{ range (index .status.loadBalancer.ingress 0) }}{{ . }}{{ end }}" }}") +{{- $port:=.Values.ui.service.ports.http | toString }} + echo "UI URL: http://$SERVICE_IP{{- if ne $port "80" }}:{{ .Values.ui.service.ports.http }}{{ end }}" +{{- else if contains "ClusterIP" .Values.ui.service.type }} + echo "UI URL: http://127.0.0.1:{{ .Values.ui.service.ports.http }}" + kubectl port-forward --namespace {{ include "common.names.namespace" . }} svc/{{ include "digma.ui" . }} {{ .Values.ui.service.ports.http }}:{{ .Values.ui.service.ports.http }} & +{{- end }} +{{- end }} + +Jaeger: +{{- if .Values.jaeger.ingress.enabled }} +URL: https://{{ .Values.jaeger.ingress.hostname }} +{{- else }} +{{- if contains "NodePort" .Values.jaeger.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ include "common.names.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "digma.jaeger" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ include "common.names.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") + export URL="http://${NODE_IP}:${NODE_PORT}/" + echo "Jaeger URL: http://$NODE_IP:$NODE_PORT/" +{{- else if contains "LoadBalancer" .Values.jaeger.service.type }} +** Please ensure an external IP is associated to the {{ include "digma.jaeger" . }} service before proceeding ** +** Watch the status using: kubectl get svc --namespace {{ include "common.names.namespace" . }} -w {{ include "digma.jaeger" . }} ** + + export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.names.namespace" . }} {{ include "digma.jaeger" . }} --template "{{ "{{ range (index .status.loadBalancer.ingress 0) }}{{ . }}{{ end }}" }}") +{{- $port:=.Values.jaeger.service.ports.http_ui | toString }} + echo "Jaeger URL: http://$SERVICE_IP{{- if ne $port "80" }}:{{ .Values.jaeger.service.ports.http_ui }}{{ end }}" +{{- else if contains "ClusterIP" .Values.jaeger.service.type }} + echo "Jaeger URL: http://127.0.0.1:{{ .Values.jaeger.service.ports.http_ui }}" + kubectl port-forward --namespace {{ include "common.names.namespace" . }} svc/{{ include "digma.jaeger" . }} {{ .Values.jaeger.service.ports.http_ui }}:{{ .Values.jaeger.service.ports.http_ui }} & +{{- end }} +{{- end }} + +{{- if .Values.digma.report.enabled }} + {{- if (empty (default "" .Values.digma.report.uiExternalBaseUrl)) -}} + {{- if or (not .Values.ui.ingress.enabled) (or (not .Values.ui.ingress.hostname) (eq .Values.ui.ingress.hostname "")) }} + +** Please make sure to set digma.report.uiExternalBaseUrl to enable the Digma daily report. ** + + {{- end -}} + {{- end -}} +{{- end -}} + diff --git a/charts/digma/templates/_debug-pod/deployment.yaml b/charts/digma/templates/_debug-pod/deployment.yaml new file mode 100644 index 00000000..403d41e0 --- /dev/null +++ b/charts/digma/templates/_debug-pod/deployment.yaml @@ -0,0 +1,82 @@ +{{ if .Values.debug.enabled }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "digma.debug" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: debug-pod + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.debug.podLabels .Values.commonLabels ) "context" . ) }} + replicas: 1 + selector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} + app.kubernetes.io/component: debug-pod + template: + metadata: + labels: + {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }} + app.kubernetes.io/component: debug-pod + annotations: + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 8 }} + {{- end }} + {{- if .Values.debug.podAnnotations }} + {{- include "common.tplvalues.render" (dict "value" .Values.debug.podAnnotations "context" .) | nindent 8 }} + {{- end }} + spec: + {{- include "common.images.pullSecrets" ( dict "images" (list .Values.debug) "global" .Values.global) | nindent 6 }} + {{- if .Values.debug.affinity }} + affinity: {{- include "common.tplvalues.render" ( dict "value" .Values.debug.affinity "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.debug.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" ( dict "value" .Values.debug.nodeSelector "context" .) | nindent 8 }} + {{- end }} + {{- if .Values.debug.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.debug.tolerations "context" .) | nindent 8 }} + {{- end }} + containers: + - name: digma-kafka-ui + image: {{ include "common.images.image" (dict "imageRoot" .Values.debug.kafkaUi.image "global" .Values.global) }} + imagePullPolicy: {{ .Values.debug.kafkaUi.image.pullPolicy }} + ports: + - containerPort: {{ .Values.debug.kafkaUi.port }} + env: + - name: KAFKA_CLUSTERS_0_NAME + value: {{ .Values.kafka.kraft.clusterId }} + - name: KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS + value: {{include "digma.kafka.client" .}} + + - name: digma-pgadmin + image: {{ include "common.images.image" (dict "imageRoot" .Values.debug.pgadmin.image "global" .Values.global) }} + imagePullPolicy: {{ .Values.debug.pgadmin.image.pullPolicy }} + volumeMounts: + - name: pgadmin-data + mountPath: /var/lib/pgadmin + - name: pgadmin-config + mountPath: /pgadmin4/servers.json + subPath: servers.json + ports: + - containerPort: {{ .Values.debug.pgadmin.port }} + env: + - name: PGADMIN_LISTEN_PORT + value: {{ .Values.debug.pgadmin.port | quote}} + {{- include "common.tplvalues.render" (dict "value" .Values.debug.pgadmin.env "context" $) | nindent 8 }} + + - name: digma-redis-commander + image: {{ include "common.images.image" (dict "imageRoot" .Values.debug.redisCommander.image "global" .Values.global) }} + imagePullPolicy: {{ .Values.debug.redisCommander.image.pullPolicy }} + ports: + - containerPort: {{ .Values.debug.redisCommander.port }} + env: + - name: REDIS_HOSTS + value: {{ include "digma.redis.host" .}} + volumes: + - name: pgadmin-data + emptyDir: {} + - name: pgadmin-config + configMap: + name: debug-pgadmin-config +{{ end }} \ No newline at end of file diff --git a/charts/digma/templates/_debug-pod/pgadmin-config.yaml b/charts/digma/templates/_debug-pod/pgadmin-config.yaml new file mode 100644 index 00000000..dc273109 --- /dev/null +++ b/charts/digma/templates/_debug-pod/pgadmin-config.yaml @@ -0,0 +1,26 @@ +{{ if .Values.debug.enabled }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: debug-pgadmin-config + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: debug-pgadmin-config + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +data: + servers.json: | + { + "Servers": { + "1": { + "Name": "PostgreSQL Server", + "Group": "Servers", + "Host": "{{ include "digma.postgresql" .}}", + "Port": {{.Values.postgresql.primary.service.ports.postgresql}}, + "Username": "{{.Values.postgresql.auth.username}}", + "SSLMode": "prefer", + "MaintenanceDB": "postgres" + } + } + } + {{- end }} \ No newline at end of file diff --git a/charts/digma/templates/_helpers.tpl b/charts/digma/templates/_helpers.tpl new file mode 100644 index 00000000..d856eba2 --- /dev/null +++ b/charts/digma/templates/_helpers.tpl @@ -0,0 +1,372 @@ +{{- define "replicas.value" -}} +{{- $value := .value -}} +{{- if (typeOf $value | eq "float64") -}} +{{ $value }} +{{- else -}} +{{ tpl $value .context }} +{{- end -}} +{{- end -}} + +{{/* +Return the proper analytics api fullname +*/}} +{{- define "digma.analytics-api" -}} + {{- printf "%s-analytics-api" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }} +{{- end -}} + +{{/* +Return http or https depending on the secured property value +*/}} +{{- define "digma.analytics-api.protocol" -}} +{{- if .Values.analyticsApi.secured -}} +https +{{- else -}} +http +{{- end -}} +{{- end -}} + +{{/* +Return the proper collector api fullname +*/}} +{{- define "digma.collector-api" -}} + {{- printf "%s-collector-api" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }} +{{- end -}} + +{{/* +Return the proper scheduler fullname +*/}} +{{- define "digma.scheduler" -}} + {{- printf "%s-scheduler" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }} +{{- end -}} + + +{{/* +Return the proper collector-worker fullname +*/}} +{{- define "digma.collector-worker" -}} + {{- printf "%s-collector-worker" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }} +{{- end -}} + +{{/* +Return the proper pipeline-worker fullname +*/}} +{{- define "digma.pipeline-worker" -}} + {{- printf "%s-pipeline-worker" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }} +{{- end -}} + +{{/* +Return the proper measurement-analysis fullname +*/}} +{{- define "digma.measurement-analysis" -}} + {{- printf "%s-measurement-analysis" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }} +{{- end -}} + +{{/* +Return the proper ui fullname +*/}} +{{- define "digma.ui" -}} + {{- printf "%s-ui" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }} +{{- end -}} + +{{/* +Return the proper ui service external url +*/}} +{{- define "digma.report.uiServiceBaseUrl" -}} +{{- if not (empty (default "" .Values.digma.report.uiExternalBaseUrl)) -}} +{{.Values.digma.report.uiExternalBaseUrl}} +{{- else }} +{{- if and .Values.ui.ingress.enabled (and .Values.ui.ingress.hostname (ne .Values.ui.ingress.hostname "")) }} +{{- printf "https://%s" .Values.ui.ingress.hostname -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Return the proper otel collector fullname +*/}} +{{- define "digma.otel-collector" -}} + {{- printf "%s-otel-collector" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }} +{{- end -}} + +{{/* +Get the otel collector configuration configmap. +*/}} +{{- define "otel-collector.configmapName" -}} +{{- if .Values.otelCollector.existingConfigmap -}} + {{- include "common.tplvalues.render" (dict "value" .Values.otelCollector.existingConfigmap "context" .) -}} +{{- else }} + {{- include "digma.otel-collector" . -}} +{{- end -}} +{{- end -}} + +{{/* +Get the otel collector configuration configmap key. +*/}} +{{- define "otel-collector.configmapKey" -}} +{{- if .Values.otelCollector.existingConfigmapKey -}} + {{- include "common.tplvalues.render" (dict "value" .Values.otelCollector.existingConfigmapKey "context" .) -}} +{{- else }} + {{- printf "config.yaml" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the proper otel collector df (dogfooding) fullname +*/}} +{{- define "digma.otel-collector-df" -}} + {{- printf "%s-otel-collector-df" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }} +{{- end -}} + +{{/* +Return the proper otel collector df scraper url +*/}} +{{- define "digma.otel-collector-df-prometheus-scraper-url" -}} +{{- printf "%s:%v" (include "digma.otel-collector-df" .) .Values.otelCollectorDf.service.ports.prometheus_scraper -}} +{{- end -}} + +{{/* +Return the proper otel collector df grpc url +*/}} +{{- define "digma.otel-collector-df-grpc" -}} +{{ printf "http://%s:%v" (include "digma.otel-collector-df" .) .Values.otelCollectorDf.service.ports.grpc }} +{{- end -}} + + +{{/* +Return the proper debug fullname +*/}} +{{- define "digma.debug" -}} +{{- printf "%s-debug" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }} +{{- end -}} + +{{/* +Return the proper postgres fullname +*/}} +{{- define "digma.postgresql" -}} +{{- include "common.names.dependency.fullname" (dict "chartName" "postgresql" "chartValues" .Values.postgresql "context" $) -}} +{{- end -}} + +{{/* +Return postgres connectivity env +*/}} +{{- define "env.postgres" -}} +- name: ConnectionStrings__Postgres + value: {{ printf "Server=%s;Port=%v;Database=digma_analytics;User Id=%s;Password=%s;" ( include "digma.postgresql" . ) .Values.postgresql.primary.service.ports.postgresql .Values.postgresql.auth.username .Values.postgresql.auth.password}} +{{- end -}} + +{{/* +Return the proper influx fullname +*/}} +{{- define "digma.influx.fullname" -}} +{{- include "common.names.dependency.fullname" (dict "chartName" "influxdb" "chartValues" .Values.influxdb "context" $) -}} +{{- end -}} + +{{/* +Return influx connectivity env +*/}} +{{- define "env.influx" -}} +- name: influx2__Url + value: {{ printf "http://%s:%v" (include "digma.influx.fullname" .) .Values.influxdb.service.ports.http }} +{{- end -}} + +{{/* +Return the proper redis fullname +*/}} +{{- define "digma.redis.fullname" -}} +{{- include "common.names.dependency.fullname" (dict "chartName" "redis" "chartValues" .Values.redis "context" $) -}} +{{- end -}} + +{{/* +Return redis connectivity env +*/}} +{{- define "env.redis" -}} +- name: CacheSettings__RedisConnection + value: {{ (include "digma.redis.host" .) }} +- name: ExternalLogging__ConnectionString + value: {{ (include "digma.redis.host" .) }} +{{- end -}} + + +{{/* +Return the proper redis host +*/}} +{{- define "digma.redis.host" -}} +{{- if .Values.redis.enabled -}} + {{- printf "%s-master" (include "digma.redis.fullname" .) | trunc 63 | trimSuffix "-" -}} +{{- else -}} + {{- print .Values.externalRedis.host -}} +{{- end -}} +{{- end -}} + +{{/* +Return the proper jaeger fullname +*/}} +{{- define "digma.jaeger" -}} + {{- printf "%s-jaeger" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }} +{{- end -}} + +{{/* +Return the proper jaeger-ui fullname +*/}} +{{- define "digma.jaeger.ui" -}} + {{- printf "%s-jaeger-ui" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }} +{{- end -}} + +{{/* +Return the proper jaeger-collector fullname +*/}} +{{- define "digma.jaeger.collector" -}} + {{- printf "%s-jaeger-collector" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }} +{{- end -}} + +{{/* +Return the proper nginx fullname +*/}} +{{- define "digma.nginx" -}} + {{- printf "%s-nginx" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }} +{{- end -}} + +{{/* +Return jaeger connectivity env +*/}} +{{- define "env.jaeger" -}} +- name: Jaeger__OtlpUrl + value: {{ printf "http://%s:%v" (include "digma.jaeger.collector" .) .Values.jaeger.service.ports.grpc_internal }} +{{- end -}} + +{{/* +Return the proper elasticsearch fullname +*/}} +{{- define "digma.elasticsearch.fullname" -}} +{{- include "common.names.dependency.fullname" (dict "chartName" "elasticsearch" "chartValues" .Values.elasticsearch "context" $) -}} +{{- end -}} + +{{/* +Return elasticsearch url +*/}} +{{- define "digma.elasticsearch.url" -}} + {{ printf "http://%s:%v" (include "digma.elasticsearch.fullname" .) .Values.elasticsearch.service.ports.restAPI }} +{{- end -}} + +{{/* +Return elasticsearch connectivity env +*/}} +{{- define "env.elasticsearch" -}} +- name: ElasticSearch__Uri + value: {{ include "digma.elasticsearch.url" . }} +{{- end -}} + +{{/* +Return the proper kafka fullname +*/}} +{{- define "digma.kafka.fullname" -}} +{{- include "common.names.dependency.fullname" (dict "chartName" "kafka" "chartValues" .Values.kafka "context" $) -}} +{{- end -}} + +{{/* +Return kafka client url +*/}} +{{- define "digma.kafka.client" -}} +{{ printf "%s:%v" (include "digma.kafka.fullname" .) .Values.kafka.service.ports.client }} +{{- end -}} + +{{/* +Return kafka connectivity env +*/}} +{{- define "env.kafka" -}} +- name: Kafka__Urls__0 + value: {{include "digma.kafka.client" .}} +{{- end -}} + +{{/* +Return the proper grafana fullname +*/}} +{{- define "digma.grafana.fullname" -}} +{{- include "common.names.dependency.fullname" (dict "chartName" "grafana" "chartValues" .Values.grafana "context" $) -}} +{{- end -}} + + +{{/* +Return the proper prometheus fullname +*/}} +{{- define "digma.prometheus.fullname" -}} +{{- printf "%s-service" (include "digma.prometheus" .) }} +{{- end -}} + +{{/* +Return the proper prometheus name +*/}} +{{- define "digma.prometheus" -}} +{{- include "common.names.dependency.fullname" (dict "chartName" "prometheus" "chartValues" .Values.prometheus "context" $) -}} +{{- end -}} + +{{/* +Return prometheus url +*/}} +{{- define "digma.prometheus.url" -}} +{{ printf "http://%s:%v" (include "digma.prometheus.fullname" .) .Values.prometheus.server.service.ports.http }} +{{- end -}} + + +{{/* +Return the proper metrics exporter fullname +*/}} +{{- define "digma.k8s-metrics-exporter" -}} +{{- printf "%s-k8s-metrics-exporter" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }} +{{- end -}} + +{{/* +Return metrics exporter target url +*/}} +{{- define "digma.k8s-metrics-exporter-target" -}} +{{ printf "%s:%v" ( include "digma.k8s-metrics-exporter" . ) .Values.metricsExporter.service.ports.http}} +{{- end -}} + +{{/* +Return true if observability enabled +*/}} +{{- define "digma.observability.enabled" -}} +{{- if or (.Values.observability.useLocal) (not (empty (default "" .Values.observability.otlp.remoteEndpoint))) }} +{{- print "true" -}} +{{- else -}} +{{- print "false" -}} +{{- end -}} +{{- end -}} + + +{{- define "env.digma.app.common" -}} +- name: BACKEND_DEPLOYMENT_TYPE + value: Helm +- name: IsCentralize + value: "true" +- name: DIGMA_LICENSE_KEY + value: {{ required "A valid .Values.digma.licenseKey entry is required. If you've signed up for a free Digma account you should have received a Digma license to use. check https://docs.digma.ai/digma-developer-guide/installation/central-on-prem-install" .Values.digma.licenseKey }} +- name: ApplicationVersion + value: {{.Chart.AppVersion}} +- name: ChartVersion + value: {{.Chart.Version}} + {{- if eq "true" (include "digma.observability.enabled" .) }} +- name: Site + value: {{ .Values.observability.siteName }} +- name: DEPLOYMENT_ENV + value: {{ .Values.observability.environmentName }} +- name: DIGMA_ENV_TYPE + value: "Public" +- name: OtlpExporterUrl + value: {{ include "digma.otel-collector-df-grpc" .}} +- name: OtlpSamplerProbability + value: {{ .Values.observability.otlp.samplerProbability| quote }} +- name: OtlpExportTraces + value: {{ quote .Values.observability.otlp.exportTraces }} +- name: OtlpExportMetrics + value: {{ quote .Values.observability.otlp.exportMetrics }} +- name: OtlpExportLogs + value: "false" + {{- end -}} +{{- end -}} + + + + + + diff --git a/charts/digma/templates/analytics/deployment.yaml b/charts/digma/templates/analytics/deployment.yaml new file mode 100644 index 00000000..6cfe4eab --- /dev/null +++ b/charts/digma/templates/analytics/deployment.yaml @@ -0,0 +1,69 @@ +apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ include "digma.analytics-api" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: analytics-api + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.analyticsApi.podLabels .Values.commonLabels ) "context" . ) }} + replicas: {{ include "replicas.value" (dict "value" .Values.analyticsApi.replicas "context" .) }} + selector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} + app.kubernetes.io/component: analytics-api + template: + metadata: + labels: + {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }} + app.kubernetes.io/component: analytics-api + annotations: + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 8 }} + {{- end }} + {{- if .Values.analyticsApi.podAnnotations }} + {{- include "common.tplvalues.render" (dict "value" .Values.analyticsApi.podAnnotations "context" .) | nindent 8 }} + {{- end }} + spec: + {{- include "common.images.pullSecrets" ( dict "images" (list .Values.analyticsApi.image) "global" .Values.global) | nindent 6 }} + {{- if .Values.analyticsApi.affinity }} + affinity: {{- include "common.tplvalues.render" ( dict "value" .Values.analyticsApi.affinity "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.analyticsApi.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" ( dict "value" .Values.analyticsApi.nodeSelector "context" .) | nindent 8 }} + {{- end }} + {{- if .Values.analyticsApi.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.analyticsApi.tolerations "context" .) | nindent 8 }} + {{- end }} + containers: + - name: digma-analytics + image: {{ include "common.images.image" (dict "imageRoot" .Values.analyticsApi.image "global" .Values.global "chart" .Chart) }} + imagePullPolicy: {{ .Values.analyticsApi.image.pullPolicy }} + resources: {{- toYaml .Values.analyticsApi.resources | nindent 12 }} + ports: + - name: http + containerPort: {{ .Values.analyticsApi.service.ports.http }} + env: + {{- include "env.digma.app.common" . | nindent 8 }} + {{- include "env.redis" . | nindent 8 }} + {{- include "env.influx" . | nindent 8 }} + {{- include "env.kafka" . | nindent 8 }} + {{- include "env.postgres" . | nindent 8 }} + - name: GlobalExceptionSettings__ExposeInternalDetails + value: "true" + - name: Analytics.Endpoints__Default__Secured + value: {{ .Values.analyticsApi.secured | quote }} + - name: CollectorUrl + value: http://{{(include "digma.collector-api" $)}}:{{ .Values.collectorApi.service.ports.internal }} + {{- if .Values.digma.accessToken }} + - name: AccessToken + value: {{ .Values.digma.accessToken | quote }} + {{- end }} + {{- if .Values.analyticsApi.livenessProbe.enabled }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.analyticsApi.livenessProbe "enabled") "context" $) | nindent 10 }} + httpGet: + path: /healthz + port: http + scheme: {{ include "digma.analytics-api.protocol" . | upper}} + {{- end }} \ No newline at end of file diff --git a/charts/digma/templates/analytics/ingress.yaml b/charts/digma/templates/analytics/ingress.yaml new file mode 100644 index 00000000..45f4ec71 --- /dev/null +++ b/charts/digma/templates/analytics/ingress.yaml @@ -0,0 +1,44 @@ +{{- if .Values.analyticsApi.ingress.enabled }} +apiVersion: {{ include "common.capabilities.ingress.apiVersion" . }} +kind: Ingress +metadata: + name: {{ include "digma.analytics-api" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: analytics-api + {{- if or .Values.analyticsApi.ingress.annotations .Values.commonAnnotations }} + {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.analyticsApi.ingress.annotations .Values.commonAnnotations ) "context" . ) }} + annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.analyticsApi.ingress.ingressClassName (include "common.ingress.supportsIngressClassname" .) }} + ingressClassName: {{ .Values.analyticsApi.ingress.ingressClassName | quote }} + {{- end }} + rules: + {{- if .Values.analyticsApi.ingress.hostname }} + - host: {{ tpl .Values.analyticsApi.ingress.hostname $ | quote }} + http: + paths: + {{- if .Values.analyticsApi.ingress.extraPaths }} + {{- toYaml .Values.analyticsApi.ingress.extraPaths | nindent 10 }} + {{- end }} + - path: {{ default "/" .Values.analyticsApi.ingress.path }} + {{- if eq "true" (include "common.ingress.supportsPathType" .) }} + pathType: {{ .Values.analyticsApi.ingress.pathType }} + {{- end }} + backend: {{- include "common.ingress.backend" (dict "serviceName" (include "digma.analytics-api" $) "servicePort" "http" "context" $) | nindent 14 }} + {{- end }} + {{- if .Values.analyticsApi.ingress.extraRules }} + {{- include "common.tplvalues.render" (dict "value" .Values.analyticsApi.ingress.extraRules "context" $) | nindent 4 }} + {{- end }} + {{- if or .Values.analyticsApi.ingress.tls .Values.analyticsApi.ingress.extraTls }} + tls: + {{- if .Values.analyticsApi.ingress.tls }} + - hosts: + - {{ .Values.analyticsApi.ingress.hostname | quote }} + secretName: {{ printf "%s-tls" .Values.ingress.hostname }} + {{- end }} + {{- if .Values.analyticsApi.ingress.extraTls }} + {{- include "common.tplvalues.render" (dict "value" .Values.analyticsApi.ingress.extraTls "context" $) | nindent 4 }} + {{- end }} + {{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/digma/templates/analytics/service.yaml b/charts/digma/templates/analytics/service.yaml new file mode 100644 index 00000000..ba50eb87 --- /dev/null +++ b/charts/digma/templates/analytics/service.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "digma.analytics-api" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: analytics-api + {{- if or .Values.analyticsApi.service.annotations .Values.commonAnnotations }} + {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.analyticsApi.service.annotations .Values.commonAnnotations ) "context" . ) }} + annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.analyticsApi.service.type }} + ports: + - name: http + protocol: TCP + port: {{ .Values.analyticsApi.service.ports.http }} + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.analyticsApi.podLabels .Values.commonLabels ) "context" . ) }} + selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: analytics-api \ No newline at end of file diff --git a/charts/digma/templates/backend-configs.yaml b/charts/digma/templates/backend-configs.yaml new file mode 100644 index 00000000..c326d637 --- /dev/null +++ b/charts/digma/templates/backend-configs.yaml @@ -0,0 +1,62 @@ +apiVersion: cloud.google.com/v1 +kind: BackendConfig +metadata: + name: analytics-api-backendconfig + namespace: digma +spec: + healthCheck: + type: HTTP + requestPath: /healthz + port: 5051 + +--- + +apiVersion: cloud.google.com/v1 +kind: BackendConfig +metadata: + name: collector-http-backendconfig + namespace: digma +spec: + healthCheck: + type: HTTP + requestPath: /health + port: 13133 + +--- + +apiVersion: cloud.google.com/v1 +kind: BackendConfig +metadata: + name: collector-grpc-backendconfig + namespace: digma +spec: + healthCheck: + type: HTTP + requestPath: /health + port: 13133 + +--- + +apiVersion: cloud.google.com/v1 +kind: BackendConfig +metadata: + name: ui-backendconfig + namespace: digma +spec: + healthCheck: + type: HTTP + requestPath: /health + port: 80 + +--- + +apiVersion: cloud.google.com/v1 +kind: BackendConfig +metadata: + name: jaeger-backendconfig + namespace: digma +spec: + healthCheck: + type: HTTP + requestPath: /jaeger-login/index.html + port: 16686 \ No newline at end of file diff --git a/charts/digma/templates/certificates.yaml b/charts/digma/templates/certificates.yaml new file mode 100644 index 00000000..476dfe79 --- /dev/null +++ b/charts/digma/templates/certificates.yaml @@ -0,0 +1,53 @@ +apiVersion: networking.gke.io/v1 +kind: ManagedCertificate +metadata: + name: api-stag01-certificate + namespace: digma +spec: + domains: + - api.stag01.digma.systems + +--- + +apiVersion: networking.gke.io/v1 +kind: ManagedCertificate +metadata: + name: jaeger-stag01-certificate + namespace: digma +spec: + domains: + - jaeger.stag01.digma.systems + +--- + +apiVersion: networking.gke.io/v1 +kind: ManagedCertificate +metadata: + name: collector-grpc-stag01-certificate + namespace: digma +spec: + domains: + - collector-grpc.stag01.digma.systems + +--- + +apiVersion: networking.gke.io/v1 +kind: ManagedCertificate +metadata: + name: collector-http-stag01-certificate + namespace: digma +spec: + domains: + - collector-http.stag01.digma.systems + +--- + +apiVersion: networking.gke.io/v1 +kind: ManagedCertificate +metadata: + name: ui-stag01-certificate + namespace: digma +spec: + domains: + - ui.stag01.digma.systems + \ No newline at end of file diff --git a/charts/digma/templates/collector-api/deployment.yaml b/charts/digma/templates/collector-api/deployment.yaml new file mode 100644 index 00000000..7fa323ce --- /dev/null +++ b/charts/digma/templates/collector-api/deployment.yaml @@ -0,0 +1,63 @@ +apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ include "digma.collector-api" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: collector-api + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.collectorApi.podLabels .Values.commonLabels ) "context" . ) }} + replicas: {{ include "replicas.value" (dict "value" .Values.collectorApi.replicas "context" .) }} + selector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} + app.kubernetes.io/component: collector-api + template: + metadata: + labels: + {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }} + app.kubernetes.io/component: collector-api + annotations: + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 8 }} + {{- end }} + {{- if .Values.collectorApi.podAnnotations }} + {{- include "common.tplvalues.render" (dict "value" .Values.collectorApi.podAnnotations "context" .) | nindent 8 }} + {{- end }} + spec: + {{- include "common.images.pullSecrets" ( dict "images" (list .Values.collectorApi.image) "global" .Values.global) | nindent 6 }} + {{- if .Values.collectorApi.affinity }} + affinity: {{- include "common.tplvalues.render" ( dict "value" .Values.collectorApi.affinity "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.collectorApi.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" ( dict "value" .Values.collectorApi.nodeSelector "context" .) | nindent 8 }} + {{- end }} + {{- if .Values.collectorApi.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.collectorApi.tolerations "context" .) | nindent 8 }} + {{- end }} + containers: + - name: digma-collector-api + image: {{ include "common.images.image" (dict "imageRoot" .Values.collectorApi.image "global" .Values.global "chart" .Chart) }} + imagePullPolicy: {{ .Values.collectorApi.image.pullPolicy }} + resources: {{- toYaml .Values.collectorApi.resources | nindent 12 }} + ports: + - name: internal + containerPort: {{ .Values.collectorApi.service.ports.internal }} + - name: http + containerPort: {{ .Values.collectorApi.service.ports.http }} + - name: grpc + containerPort: {{ .Values.collectorApi.service.ports.grpc }} + env: + {{- include "env.digma.app.common" . | nindent 8 }} + {{- include "env.postgres" . | nindent 8 }} + {{- include "env.redis" . | nindent 8 }} + {{- include "env.kafka" . | nindent 8 }} + {{- include "env.jaeger" . | nindent 8 }} + {{- if .Values.collectorApi.livenessProbe.enabled }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.collectorApi.livenessProbe "enabled") "context" $) | nindent 10 }} + httpGet: + path: /healthz + port: http + scheme: HTTP + {{- end }} \ No newline at end of file diff --git a/charts/digma/templates/collector-api/service.yaml b/charts/digma/templates/collector-api/service.yaml new file mode 100644 index 00000000..19809acc --- /dev/null +++ b/charts/digma/templates/collector-api/service.yaml @@ -0,0 +1,25 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "digma.collector-api" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: collector-api + {{- if or .Values.collectorApi.service.annotations .Values.commonAnnotations }} + {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.collectorApi.service.annotations .Values.commonAnnotations ) "context" . ) }} + annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.collectorApi.service.type }} + ports: + - name: internal + protocol: TCP + port: {{ .Values.collectorApi.service.ports.internal }} + - name: http + protocol: TCP + port: {{ .Values.collectorApi.service.ports.http }} + - name: grpc + protocol: TCP + port: {{ .Values.collectorApi.service.ports.grpc }} + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.collectorApi.podLabels .Values.commonLabels ) "context" . ) }} + selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: collector-api \ No newline at end of file diff --git a/charts/digma/templates/collector-worker/deployment.yaml b/charts/digma/templates/collector-worker/deployment.yaml new file mode 100644 index 00000000..81e902c1 --- /dev/null +++ b/charts/digma/templates/collector-worker/deployment.yaml @@ -0,0 +1,83 @@ +apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ include "digma.collector-worker" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: collector-worker + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.collectorWorker.podLabels .Values.commonLabels ) "context" . ) }} + replicas: {{ include "replicas.value" (dict "value" .Values.collectorWorker.replicas "context" .) }} + selector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} + app.kubernetes.io/component: collector-worker + template: + metadata: + labels: + {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }} + app.kubernetes.io/component: collector-worker + annotations: + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 8 }} + {{- end }} + {{- if .Values.collectorWorker.podAnnotations }} + {{- include "common.tplvalues.render" (dict "value" .Values.collectorWorker.podAnnotations "context" .) | nindent 8 }} + {{- end }} + spec: + {{- include "common.images.pullSecrets" ( dict "images" (list .Values.collectorWorker.image) "global" .Values.global) | nindent 6 }} + {{- if .Values.collectorWorker.affinity }} + affinity: {{- include "common.tplvalues.render" ( dict "value" .Values.collectorWorker.affinity "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.collectorWorker.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" ( dict "value" .Values.collectorWorker.nodeSelector "context" .) | nindent 8 }} + {{- end }} + {{- if .Values.collectorWorker.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.collectorWorker.tolerations "context" .) | nindent 8 }} + {{- end }} + containers: + - name: digma-collector-worker + image: {{ include "common.images.image" (dict "imageRoot" .Values.collectorWorker.image "global" .Values.global "chart" .Chart) }} + imagePullPolicy: {{ .Values.collectorWorker.image.pullPolicy }} + resources: {{- toYaml .Values.collectorWorker.resources | nindent 12 }} + ports: + - name: http + containerPort: {{ .Values.collectorWorker.service.ports.http }} + env: + {{- include "env.digma.app.common" . | nindent 8 }} + {{- include "env.redis" . | nindent 8 }} + {{- include "env.influx" . | nindent 8 }} + {{- include "env.postgres" . | nindent 8 }} + {{- include "env.kafka" . | nindent 8 }} + {{- include "env.jaeger" . | nindent 8 }} + {{- range $index, $element := .Values.collectorWorker.app.ignoreEndpoints }} + - name: Filter__IgnoreEndpoints__{{$index}}__Route + value: {{ $element.Route | quote }} + - name: Filter__IgnoreEndpoints__{{$index}}__RouteRegex + value: {{ $element.RouteRegex | quote }} + - name: Filter__IgnoreEndpoints__{{$index}}__Method + value: {{ $element.Method | quote }} + - name: Filter__IgnoreEndpoints__{{$index}}__Service + value: {{ $element.Service | quote }} + {{- end }} + - name: "Sampling__Enable" + value: {{ .Values.collectorWorker.env.Sampling__Enable | quote }} + - name: "ExtendedObservability__Enable" + value: {{ .Values.collectorWorker.env.ExtendedObservability__Enable | quote }} + - name: "TraceTempStorage__TraceForJaegerExpirationInMinutes" + value: {{ .Values.collectorWorker.env.TraceTempStorage__TraceForJaegerExpirationInMinutes | quote }} + - name: BlockedTrace__TraceSpansLimit + value: {{ .Values.collectorWorker.env.BlockedTrace__TraceSpansLimit | quote }} + - name: ThresholdOptions__RecentActivityUpdateThresholdSeconds + value: {{ .Values.collectorWorker.env.ThresholdOptions__RecentActivityUpdateThresholdSeconds | quote }} + {{- if .Values.collectorWorker.extraEnvVars }} + {{- include "common.tplvalues.render" (dict "value" .Values.collectorWorker.extraEnvVars "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.collectorWorker.livenessProbe.enabled }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.collectorWorker.livenessProbe "enabled") "context" $) | nindent 10 }} + httpGet: + path: /healthz + port: http + scheme: HTTP + {{- end }} \ No newline at end of file diff --git a/charts/digma/templates/grafana/activities-config.yaml b/charts/digma/templates/grafana/activities-config.yaml new file mode 100644 index 00000000..88ec0ad8 --- /dev/null +++ b/charts/digma/templates/grafana/activities-config.yaml @@ -0,0 +1,16 @@ +{{ if .Values.observability.useLocal }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: digma-grafana-activities-dashboards + labels: + {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: digma-grafana-activities-dashboards + {{- if .Values.commonAnnotations }} + annotations: + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +data: + activities.json: | + {{ .Files.Get "files/grafana-dashboards/Activities.json" | nindent 4 }} +{{- end }} \ No newline at end of file diff --git a/charts/digma/templates/grafana/environment-config.yaml b/charts/digma/templates/grafana/environment-config.yaml new file mode 100644 index 00000000..62201879 --- /dev/null +++ b/charts/digma/templates/grafana/environment-config.yaml @@ -0,0 +1,14 @@ +{{ if .Values.observability.useLocal }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: digma-grafana-environment-dashboards + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: digma-grafana-environment-dashboards + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +data: + environment.json: | + {{ .Files.Get "files/grafana-dashboards/Environment.json" | nindent 4 }} +{{- end }} \ No newline at end of file diff --git a/charts/digma/templates/grafana/kafka-config.yaml b/charts/digma/templates/grafana/kafka-config.yaml new file mode 100644 index 00000000..bb322a60 --- /dev/null +++ b/charts/digma/templates/grafana/kafka-config.yaml @@ -0,0 +1,14 @@ +{{ if .Values.observability.useLocal }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: digma-grafana-kafka-dashboards + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: digma-grafana-kafka-dashboards + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +data: + kafka.json: | + {{ .Files.Get "files/grafana-dashboards/Kafka.json" | nindent 4 }} +{{- end }} \ No newline at end of file diff --git a/charts/digma/templates/grafana/secret.yaml b/charts/digma/templates/grafana/secret.yaml new file mode 100644 index 00000000..d27de806 --- /dev/null +++ b/charts/digma/templates/grafana/secret.yaml @@ -0,0 +1,19 @@ +{{ if .Values.observability.useLocal }} +apiVersion: v1 +kind: Secret +metadata: + name: grafana-datasource +type: Opaque +stringData: + prometheus_datasource.yaml: |- + apiVersion: 1 + datasources: + - name: Prometheus + type: prometheus + access: proxy + orgId: 1 + url: {{ include "digma.prometheus.url" .}} + version: 1 + editable: true + isDefault: true +{{- end }} \ No newline at end of file diff --git a/charts/digma/templates/jaeger/collector-service.yaml b/charts/digma/templates/jaeger/collector-service.yaml new file mode 100644 index 00000000..f677de0c --- /dev/null +++ b/charts/digma/templates/jaeger/collector-service.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "digma.jaeger.collector" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: jaeger + {{- if or .Values.jaeger.service.annotations .Values.commonAnnotations }} + {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.jaeger.service.annotations .Values.commonAnnotations ) "context" . ) }} + annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.jaeger.service.type }} + ports: + - name: grpc-internal + protocol: TCP + port: {{ .Values.jaeger.service.ports.grpc_internal }} + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.jaeger.podLabels .Values.commonLabels ) "context" . ) }} + selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: jaeger \ No newline at end of file diff --git a/charts/digma/templates/jaeger/deployment.yaml b/charts/digma/templates/jaeger/deployment.yaml new file mode 100644 index 00000000..e05e8335 --- /dev/null +++ b/charts/digma/templates/jaeger/deployment.yaml @@ -0,0 +1,65 @@ +apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ include "digma.jaeger" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: jaeger + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.jaeger.podLabels .Values.commonLabels ) "context" . ) }} + replicas: {{ include "replicas.value" (dict "value" .Values.jaeger.replicas "context" .) }} + selector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} + app.kubernetes.io/component: jaeger + template: + metadata: + labels: + {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }} + app.kubernetes.io/component: jaeger + annotations: + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 8 }} + {{- end }} + {{- if .Values.jaeger.podAnnotations }} + {{- include "common.tplvalues.render" (dict "value" .Values.jaeger.podAnnotations "context" .) | nindent 8 }} + {{- end }} + spec: + {{- include "common.images.pullSecrets" ( dict "images" (list .Values.jaeger.image) "global" .Values.global) | nindent 6 }} + {{- if .Values.jaeger.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" ( dict "value" .Values.jaeger.nodeSelector "context" .) | nindent 8 }} + {{- end }} + {{- if .Values.jaeger.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.jaeger.tolerations "context" .) | nindent 8 }} + {{- end }} + initContainers: + - name: wait-for-elasticsearch + imagePullPolicy: Always + image: busybox:1.28 + command: [ 'sh', '-c', 'until nc -z {{include "digma.elasticsearch.fullname" .}} {{.Values.elasticsearch.service.ports.restAPI}}; do echo waiting for elasticsearch; sleep 5; done;' ] + containers: + - name: digma-jaeger + image: {{ include "common.images.image" (dict "imageRoot" .Values.jaeger.image "global" .Values.global) }} + imagePullPolicy: {{ .Values.jaeger.image.pullPolicy }} + resources: {{- toYaml .Values.jaeger.resources | nindent 12 }} + args: + - "--query.additional-headers=Access-Control-Allow-Origin: *" # to enable CORS + {{- range .Values.jaeger.args }} + - {{ . }} + {{- end }} + ports: + - containerPort: {{ .Values.jaeger.service.ports.grpc_internal }} + - containerPort: {{ .Values.jaeger.service.ports.http_ui }} + env: + - name: SPAN_STORAGE_TYPE + value: elasticsearch + - name: ES_SERVER_URLS + value: {{include "digma.elasticsearch.url" .}} + - name: ES_INDEX_PREFIX + value: "digma" + - name: COLLECTOR_OTLP_ENABLED + value: "true" + - name: COLLECTOR_OTLP_GRPC_MAX_MESSAGE_SIZE + value: "41943040" + diff --git a/charts/digma/templates/jaeger/nginx-ingress.yaml b/charts/digma/templates/jaeger/nginx-ingress.yaml new file mode 100644 index 00000000..d9da966b --- /dev/null +++ b/charts/digma/templates/jaeger/nginx-ingress.yaml @@ -0,0 +1,33 @@ +{{- if .Values.jaeger.ingress.enabled }} +apiVersion: {{ include "common.capabilities.ingress.apiVersion" . }} +kind: Ingress +metadata: + name: {{ include "digma.jaeger" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: jaeger + {{- if or .Values.jaeger.ingress.annotations .Values.commonAnnotations }} + {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.jaeger.ingress.annotations .Values.commonAnnotations ) "context" . ) }} + annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.jaeger.ingress.ingressClassName (include "common.ingress.supportsIngressClassname" .) }} + ingressClassName: {{ .Values.jaeger.ingress.ingressClassName | quote }} + {{- end }} + rules: + {{- if .Values.jaeger.ingress.hostname }} + - host: {{ tpl .Values.jaeger.ingress.hostname $ | quote }} + http: + paths: + {{- if .Values.jaeger.ingress.extraPaths }} + {{- toYaml .Values.jaeger.ingress.extraPaths | nindent 10 }} + {{- end }} + - path: {{ default "/" .Values.jaeger.ingress.path }} + {{- if eq "true" (include "common.ingress.supportsPathType" .) }} + pathType: {{ .Values.jaeger.ingress.pathType }} + {{- end }} + backend: {{- include "common.ingress.backend" (dict "serviceName" (include "digma.jaeger.ui" $) "servicePort" "http-ui" "context" $) | nindent 14 }} + {{- end }} + {{- if .Values.jaeger.ingress.extraRules }} + {{- include "common.tplvalues.render" (dict "value" .Values.jaeger.ingress.extraRules "context" $) | nindent 4 }} + {{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/digma/templates/jaeger/nginx-service.yaml b/charts/digma/templates/jaeger/nginx-service.yaml new file mode 100644 index 00000000..08ddd96a --- /dev/null +++ b/charts/digma/templates/jaeger/nginx-service.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "digma.jaeger.ui" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: jaeger + {{- if or .Values.jaeger.service.annotations .Values.commonAnnotations }} + {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.jaeger.service.annotations .Values.commonAnnotations ) "context" . ) }} + annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.jaeger.service.type }} + ports: + - name: http-ui + protocol: TCP + port: {{ .Values.jaeger.service.ports.http_ui }} + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.jaeger.podLabels .Values.commonLabels ) "context" . ) }} + selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: nginx \ No newline at end of file diff --git a/charts/digma/templates/jaeger/service.yaml b/charts/digma/templates/jaeger/service.yaml new file mode 100644 index 00000000..426fff8c --- /dev/null +++ b/charts/digma/templates/jaeger/service.yaml @@ -0,0 +1,22 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "digma.jaeger" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: jaeger + {{- if or .Values.jaeger.service.annotations .Values.commonAnnotations }} + {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.jaeger.service.annotations .Values.commonAnnotations ) "context" . ) }} + annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.jaeger.service.type }} + ports: + - name: grpc-internal + protocol: TCP + port: {{ .Values.jaeger.service.ports.grpc_internal }} + - name: http-ui + protocol: TCP + port: {{ .Values.jaeger.service.ports.http_ui }} + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.jaeger.podLabels .Values.commonLabels ) "context" . ) }} + selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: jaeger \ No newline at end of file diff --git a/charts/digma/templates/measurement/deployment.yaml b/charts/digma/templates/measurement/deployment.yaml new file mode 100644 index 00000000..15228757 --- /dev/null +++ b/charts/digma/templates/measurement/deployment.yaml @@ -0,0 +1,73 @@ +apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ include "digma.measurement-analysis" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: measurement-analysis + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.measurementAnalysis.podLabels .Values.commonLabels ) "context" . ) }} + replicas: {{ include "replicas.value" (dict "value" .Values.measurementAnalysis.replicas "context" .) }} + selector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} + app.kubernetes.io/component: measurement-analysis + template: + metadata: + labels: + {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }} + app.kubernetes.io/component: measurement-analysis + annotations: + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 8 }} + {{- end }} + {{- if .Values.measurementAnalysis.podAnnotations }} + {{- include "common.tplvalues.render" (dict "value" .Values.measurementAnalysis.podAnnotations "context" .) | nindent 8 }} + {{- end }} + spec: + {{- include "common.images.pullSecrets" ( dict "images" (list .Values.measurementAnalysis.image) "global" .Values.global) | nindent 6 }} + {{- if .Values.measurementAnalysis.affinity }} + affinity: {{- include "common.tplvalues.render" ( dict "value" .Values.measurementAnalysis.affinity "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.measurementAnalysis.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" ( dict "value" .Values.measurementAnalysis.nodeSelector "context" .) | nindent 8 }} + {{- end }} + {{- if .Values.measurementAnalysis.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.measurementAnalysis.tolerations "context" .) | nindent 8 }} + {{- end }} + containers: + - name: digma-measurement-analysis + image: {{ include "common.images.image" (dict "imageRoot" .Values.measurementAnalysis.image "global" .Values.global "chart" .Chart) }} + imagePullPolicy: {{ .Values.measurementAnalysis.image.pullPolicy }} + resources: {{- toYaml .Values.measurementAnalysis.resources | nindent 12 }} + ports: + - name: http + containerPort: {{ .Values.measurementAnalysis.service.ports.http }} + env: + {{- include "env.digma.app.common" . | nindent 8 }} + {{- include "env.redis" . | nindent 8 }} + {{- include "env.influx" . | nindent 8 }} + {{- include "env.postgres" . | nindent 8 }} + {{- include "env.kafka" . | nindent 8 }} + {{- include "env.jaeger" . | nindent 8 }} + - name: Kafka__SpanUpsertCG__Workers + value: '2' + - name: Kafka__AllMeasurementsCG__Workers + value: '2' + - name: ThresholdOptions__UpsertEndpointThresholdSeconds + value: {{ .Values.measurementAnalysis.env.ThresholdOptions__UpsertEndpointThresholdSeconds | quote }} + - name: ThresholdOptions__UpsertSpansThresholdSeconds + value: {{ .Values.measurementAnalysis.env.ThresholdOptions__UpsertSpansThresholdSeconds | quote }} + - name: ThresholdOptions__UpsertSpanFlowMetadataThresholdSeconds + value: {{ .Values.measurementAnalysis.env.ThresholdOptions__UpsertSpanFlowMetadataThresholdSeconds | quote }} + {{- if .Values.measurementAnalysis.extraEnvVars }} + {{- include "common.tplvalues.render" (dict "value" .Values.measurementAnalysis.extraEnvVars "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.measurementAnalysis.livenessProbe.enabled }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.measurementAnalysis.livenessProbe "enabled") "context" $) | nindent 10 }} + httpGet: + path: /healthz + port: http + scheme: HTTP + {{- end }} \ No newline at end of file diff --git a/charts/digma/templates/metrics-exporter/deployment.yaml b/charts/digma/templates/metrics-exporter/deployment.yaml new file mode 100644 index 00000000..19dcb6b7 --- /dev/null +++ b/charts/digma/templates/metrics-exporter/deployment.yaml @@ -0,0 +1,51 @@ +{{- if eq "true" (include "digma.observability.enabled" .) }} +apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ include "digma.k8s-metrics-exporter" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: k8s-metrics-exporter + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.metricsExporter.podLabels .Values.commonLabels ) "context" . ) }} + replicas: {{ include "replicas.value" (dict "value" .Values.metricsExporter.replicas "context" .) }} + selector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} + app.kubernetes.io/component: k8s-metrics-exporter + template: + metadata: + labels: + {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }} + app.kubernetes.io/component: k8s-metrics-exporter + annotations: + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 8 }} + {{- end }} + {{- if .Values.metricsExporter.podAnnotations }} + {{- include "common.tplvalues.render" (dict "value" .Values.metricsExporter.podAnnotations "context" .) | nindent 8 }} + {{- end }} + spec: + serviceAccountName: {{ include "digma.k8s-metrics-exporter" . }} + {{- include "common.images.pullSecrets" ( dict "images" (list .Values.metricsExporter.image) "global" .Values.global) | nindent 6 }} + {{- if .Values.metricsExporter.affinity }} + affinity: {{- include "common.tplvalues.render" ( dict "value" .Values.metricsExporter.affinity "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.metricsExporter.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" ( dict "value" .Values.metricsExporter.nodeSelector "context" .) | nindent 8 }} + {{- end }} + {{- if .Values.metricsExporter.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.metricsExporter.tolerations "context" .) | nindent 8 }} + {{- end }} + containers: + - name: digma-k8s-metrics-exporter + image: {{ include "common.images.image" (dict "imageRoot" .Values.metricsExporter.image "global" .Values.global) }} + imagePullPolicy: {{ .Values.metricsExporter.image.pullPolicy }} + resources: {{- toYaml .Values.metricsExporter.resources | nindent 12 }} + env: + - name: KUBE_NAMESPACE + value: {{ .Release.Namespace }} + ports: + - containerPort: {{ .Values.metricsExporter.service.ports.http }} +{{- end }} \ No newline at end of file diff --git a/charts/digma/templates/metrics-exporter/rbac.yaml b/charts/digma/templates/metrics-exporter/rbac.yaml new file mode 100644 index 00000000..ada03d7e --- /dev/null +++ b/charts/digma/templates/metrics-exporter/rbac.yaml @@ -0,0 +1,37 @@ +{{- if eq "true" (include "digma.observability.enabled" .) }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: {{ include "digma.k8s-metrics-exporter" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: k8s-metrics-exporter +rules: +- apiGroups: [""] + resources: [pods] + verbs: [list, get] +- apiGroups: [""] + resources: [pods/exec] + verbs: [create, get] +- apiGroups: ["apps"] + resources: [deployments, statefulsets] + verbs: [list] +- apiGroups: ["metrics.k8s.io"] + resources: ["*"] + verbs: [list] +--- + +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: {{ include "digma.k8s-metrics-exporter" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: k8s-metrics-exporter +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: {{ include "digma.k8s-metrics-exporter" . }} +subjects: +- kind: ServiceAccount + name: {{ include "digma.k8s-metrics-exporter" . }} + namespace: {{ include "common.names.namespace" . | quote }} +{{- end }} \ No newline at end of file diff --git a/charts/digma/templates/metrics-exporter/service.yaml b/charts/digma/templates/metrics-exporter/service.yaml new file mode 100644 index 00000000..9c3518a0 --- /dev/null +++ b/charts/digma/templates/metrics-exporter/service.yaml @@ -0,0 +1,21 @@ +{{- if eq "true" (include "digma.observability.enabled" .) }} +apiVersion: v1 +kind: Service +metadata: + name: {{ include "digma.k8s-metrics-exporter" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: k8s-metrics-exporter + {{- if or .Values.metricsExporter.service.annotations .Values.commonAnnotations }} + {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.metricsExporter.service.annotations .Values.commonAnnotations ) "context" . ) }} + annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }} + {{- end }} +spec: + type: ClusterIP + ports: + - name: http + protocol: TCP + port: {{ .Values.metricsExporter.service.ports.http }} + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.metricsExporter.podLabels .Values.commonLabels ) "context" . ) }} + selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: k8s-metrics-exporter +{{- end }} \ No newline at end of file diff --git a/charts/digma/templates/metrics-exporter/serviceaccount.yaml b/charts/digma/templates/metrics-exporter/serviceaccount.yaml new file mode 100644 index 00000000..1c63161e --- /dev/null +++ b/charts/digma/templates/metrics-exporter/serviceaccount.yaml @@ -0,0 +1,11 @@ +{{- if eq "true" (include "digma.observability.enabled" .) }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "digma.k8s-metrics-exporter" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- if or .Values.metricsExporter.serviceAccount.annotations .Values.commonAnnotations }} + {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.metricsExporter.serviceAccount.annotations .Values.commonAnnotations ) "context" . ) }} + annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }} + {{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/digma/templates/nginx/config.yaml b/charts/digma/templates/nginx/config.yaml new file mode 100644 index 00000000..43643da2 --- /dev/null +++ b/charts/digma/templates/nginx/config.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "digma.nginx" . }} + labels: + {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: digma-nginx + {{- if .Values.commonAnnotations }} + annotations: + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +data: + nginx.conf: | + {{ tpl (.Files.Get "files/nginx.conf") $ | nindent 4 }} \ No newline at end of file diff --git a/charts/digma/templates/nginx/deployment.yaml b/charts/digma/templates/nginx/deployment.yaml new file mode 100644 index 00000000..8cb23e41 --- /dev/null +++ b/charts/digma/templates/nginx/deployment.yaml @@ -0,0 +1,71 @@ +apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ include "digma.nginx" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: nginx + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.nginx.podLabels .Values.commonLabels ) "context" . ) }} + replicas: {{ include "replicas.value" (dict "value" .Values.nginx.replicas "context" .) }} + selector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} + app.kubernetes.io/component: nginx + template: + metadata: + labels: + {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }} + app.kubernetes.io/component: nginx + annotations: + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 8 }} + {{- end }} + {{- if .Values.nginx.podAnnotations }} + {{- include "common.tplvalues.render" (dict "value" .Values.nginx.podAnnotations "context" .) | nindent 8 }} + {{- end }} + spec: + {{- include "common.images.pullSecrets" ( dict "images" (list .Values.nginx.image) "global" .Values.global) | nindent 6 }} + {{- if .Values.nginx.affinity }} + affinity: {{- include "common.tplvalues.render" ( dict "value" .Values.nginx.affinity "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.nginx.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" ( dict "value" .Values.nginx.nodeSelector "context" .) | nindent 8 }} + {{- end }} + {{- if .Values.nginx.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.nginx.tolerations "context" .) | nindent 8 }} + {{- end }} + volumes: + - name: conf-volume + configMap: + name: {{ include "digma.nginx" . }} + - name: app-volume + emptyDir: {} + initContainers: + - name: copy-nginx-config + image: busybox:latest #bitnami/nginx:latest + command: + - /bin/sh + - -c + - | + wget -O /tmp/digma-ui.zip "https://github.com/digma-ai/digma-ui/releases/download/v4.0.0/dist-web-v4.0.0.zip" && + unzip -o /tmp/digma-ui.zip -d /app && + rm /tmp/digma-ui.zip + volumeMounts: + - name: app-volume + mountPath: /app + containers: + - name: nginx + image: {{ include "common.images.image" (dict "imageRoot" .Values.nginx.image "global" .Values.global "chart" .Chart) }} + imagePullPolicy: {{ .Values.nginx.image.pullPolicy }} + resources: {{- toYaml .Values.nginx.resources | nindent 12 }} + ports: + - containerPort: {{ .Values.ui.service.ports.http }} + - containerPort: {{ .Values.jaeger.service.ports.http_ui }} + volumeMounts: + - name: conf-volume + mountPath: /etc/nginx/nginx.conf + subPath: nginx.conf + - name: app-volume + mountPath: /app \ No newline at end of file diff --git a/charts/digma/templates/otel-collector-df/configmap.yaml b/charts/digma/templates/otel-collector-df/configmap.yaml new file mode 100644 index 00000000..c789b76d --- /dev/null +++ b/charts/digma/templates/otel-collector-df/configmap.yaml @@ -0,0 +1,71 @@ +{{- if eq "true" (include "digma.observability.enabled" .) }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "digma.otel-collector-df" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: otel-collector-df + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +data: + config.yaml: | + receivers: + otlp: + protocols: + grpc: + kafkametrics: + protocol_version: 2.0.0 + collection_interval: 10s + brokers: [{{include "digma.kafka.client" .}}] + scrapers: + - brokers + - topics + - consumers + prometheus/k8s_metrics: + config: + scrape_configs: + - job_name: k8s-metrics + scrape_interval: 5s + static_configs: + - targets: [{{ include "digma.k8s-metrics-exporter-target" .}}] + + processors: + batch: + attributes/add_source_env: + actions: + - key: source_env + value: {{.Values.observability.environmentName}} + action: insert + + exporters: + logging: + verbosity: detailed + {{- if eq .Values.observability.useLocal true }} + prometheus: + endpoint: 0.0.0.0:{{ .Values.otelCollectorDf.service.ports.prometheus_scraper }} + send_timestamps: true + metric_expiration: 10m + {{- else }} + otlp: + endpoint: {{.Values.observability.otlp.remoteEndpoint}} + {{- end }} + + service: + pipelines: + {{- if eq .Values.observability.useLocal true }} + metrics: + receivers: [otlp, kafkametrics, prometheus/k8s_metrics] + processors: [attributes/add_source_env, batch] + exporters: [prometheus] + {{- else }} + traces: + receivers: [otlp] + processors: [batch] + exporters: [otlp] + metrics: + receivers: [otlp, kafkametrics, prometheus/k8s_metrics] + processors: [attributes/add_source_env, batch] + exporters: [otlp] + {{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/digma/templates/otel-collector-df/deployment.yaml b/charts/digma/templates/otel-collector-df/deployment.yaml new file mode 100644 index 00000000..41c78d2b --- /dev/null +++ b/charts/digma/templates/otel-collector-df/deployment.yaml @@ -0,0 +1,65 @@ +{{- if eq "true" (include "digma.observability.enabled" .) }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "digma.otel-collector-df" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: otel-collector-df + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.otelCollectorDf.podLabels .Values.commonLabels ) "context" . ) }} + replicas: {{ include "replicas.value" (dict "value" .Values.otelCollectorDf.replicas "context" .) }} + selector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} + app.kubernetes.io/component: otel-collector-df + template: + metadata: + labels: + {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }} + app.kubernetes.io/component: otel-collector-df + annotations: + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 8 }} + {{- end }} + {{- if .Values.otelCollectorDf.podAnnotations }} + {{- include "common.tplvalues.render" (dict "value" .Values.otelCollectorDf.podAnnotations "context" .) | nindent 8 }} + {{- end }} + spec: + {{- include "common.images.pullSecrets" ( dict "images" (list .Values.otelCollectorDf.image) "global" .Values.global) | nindent 6 }} + {{- if .Values.otelCollectorDf.affinity }} + affinity: {{- include "common.tplvalues.render" ( dict "value" .Values.otelCollectorDf.affinity "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.otelCollectorDf.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" ( dict "value" .Values.otelCollectorDf.nodeSelector "context" .) | nindent 8 }} + {{- end }} + {{- if .Values.otelCollectorDf.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.otelCollectorDf.tolerations "context" .) | nindent 8 }} + {{- end }} + containers: + - name: otel-collector-df + image: {{ include "common.images.image" ( dict "imageRoot" .Values.otelCollectorDf.image "global" .Values.global) }} + imagePullPolicy: {{ .Values.otelCollectorDf.image.pullPolicy }} + args: + - --config=/conf/collector.yaml + resources: {{- toYaml .Values.otelCollectorDf.resources | nindent 12 }} + env: + - name: K8S_NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + ports: + - containerPort: 4317 + volumeMounts: + - name: vn-config + mountPath: /conf + readOnly: true + volumes: + - name: vn-config # volume name + configMap: + name: {{ include "digma.otel-collector-df" . }} + items: + - key: "config.yaml" + path: "collector.yaml" +{{- end }} \ No newline at end of file diff --git a/charts/digma/templates/otel-collector-df/service.yaml b/charts/digma/templates/otel-collector-df/service.yaml new file mode 100644 index 00000000..51a5840a --- /dev/null +++ b/charts/digma/templates/otel-collector-df/service.yaml @@ -0,0 +1,24 @@ +{{- if eq "true" (include "digma.observability.enabled" .) }} +apiVersion: v1 +kind: Service +metadata: + name: {{ include "digma.otel-collector-df" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: otel-collector-df + {{- if or .Values.otelCollectorDf.service.annotations .Values.commonAnnotations }} + {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.otelCollectorDf.service.annotations .Values.commonAnnotations ) "context" . ) }} + annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }} + {{- end }} +spec: + type: ClusterIP + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.otelCollectorDf.podLabels .Values.commonLabels ) "context" . ) }} + selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: otel-collector-df + ports: + - name: grpc + protocol: TCP + port: {{ .Values.otelCollectorDf.service.ports.grpc }} + - name: prometheus-scraper + protocol: TCP + port: {{ .Values.otelCollectorDf.service.ports.prometheus_scraper }} +{{- end }} \ No newline at end of file diff --git a/charts/digma/templates/otel-collector/configmap.yaml b/charts/digma/templates/otel-collector/configmap.yaml new file mode 100644 index 00000000..f24c8967 --- /dev/null +++ b/charts/digma/templates/otel-collector/configmap.yaml @@ -0,0 +1,41 @@ +{{- if not .Values.otelCollector.existingConfigmap }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "digma.otel-collector" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: otel-collector + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +data: # config.yaml: + config.yaml: |- + extensions: + health_check: + endpoint: "0.0.0.0:13133" + receivers: + otlp: + protocols: + grpc: + endpoint: 0.0.0.0:{{ .Values.otelCollector.service.ports.grpc }} + http: + endpoint: 0.0.0.0:{{ .Values.otelCollector.service.ports.http }} + processors: + batch: + probabilistic_sampler: + sampling_percentage: {{ .Values.otelCollector.samplingPercentage }} + exporters: + logging: + loglevel: debug + otlphttp: + endpoint: http://{{ include "digma.collector-api" . }}:{{ .Values.collectorApi.service.ports.http }} + tls: + insecure: true + service: + extensions: [health_check] + pipelines: + traces: + receivers: [otlp] + processors: [batch, probabilistic_sampler] + exporters: [otlphttp, logging] +{{- end }} \ No newline at end of file diff --git a/charts/digma/templates/otel-collector/deployment.yaml b/charts/digma/templates/otel-collector/deployment.yaml new file mode 100644 index 00000000..d8666086 --- /dev/null +++ b/charts/digma/templates/otel-collector/deployment.yaml @@ -0,0 +1,64 @@ +apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ include "digma.otel-collector" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: otel-collector + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.otelCollector.podLabels .Values.commonLabels ) "context" . ) }} + replicas: {{ include "replicas.value" (dict "value" .Values.otelCollector.replicas "context" .) }} + selector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} + app.kubernetes.io/component: otel-collector + template: + metadata: + labels: + {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }} + app.kubernetes.io/component: otel-collector + annotations: + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 8 }} + {{- end }} + {{- if .Values.otelCollector.podAnnotations }} + {{- include "common.tplvalues.render" (dict "value" .Values.otelCollector.podAnnotations "context" .) | nindent 8 }} + {{- end }} + spec: + {{- include "common.images.pullSecrets" ( dict "images" (list .Values.otelCollector.image) "global" .Values.global) | nindent 6 }} + {{- if .Values.otelCollector.affinity }} + affinity: {{- include "common.tplvalues.render" ( dict "value" .Values.otelCollector.affinity "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.otelCollector.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" ( dict "value" .Values.otelCollector.nodeSelector "context" .) | nindent 8 }} + {{- end }} + {{- if .Values.otelCollector.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.otelCollector.tolerations "context" .) | nindent 8 }} + {{- end }} + containers: + - name: otel-collector + image: {{ include "common.images.image" ( dict "imageRoot" .Values.otelCollector.image "global" .Values.global) }} + imagePullPolicy: {{ .Values.otelCollector.image.pullPolicy }} + args: + - --config=/conf/collector.yaml + resources: {{- toYaml .Values.otelCollector.resources | nindent 12 }} + env: + - name: K8S_NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + + volumeMounts: + - name: config + mountPath: /conf + readOnly: true + volumes: + - name: config # volume name + configMap: + name: {{ include "otel-collector.configmapName" . }} + items: + - key: {{ include "otel-collector.configmapKey" . }} + path: "collector.yaml" + + diff --git a/charts/digma/templates/otel-collector/ingress.grpc.yaml b/charts/digma/templates/otel-collector/ingress.grpc.yaml new file mode 100644 index 00000000..74e44e93 --- /dev/null +++ b/charts/digma/templates/otel-collector/ingress.grpc.yaml @@ -0,0 +1,36 @@ +{{- if .Values.otelCollector.grpc.ingress.enabled }} +apiVersion: {{ include "common.capabilities.ingress.apiVersion" . }} +kind: Ingress +metadata: + name: {{ include "digma.otel-collector" . }}-grpc + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: otel-collector-grpc + {{- if or .Values.otelCollector.grpc.ingress.annotations .Values.commonAnnotations }} + {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.otelCollector.grpc.ingress.annotations .Values.commonAnnotations ) "context" . ) }} + annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.otelCollector.grpc.ingress.ingressClassName (include "common.ingress.supportsIngressClassname" .) }} + ingressClassName: {{ .Values.otelCollector.grpc.ingress.ingressClassName | quote }} + {{- end }} + rules: + {{- if .Values.otelCollector.grpc.ingress.hostname }} + - host: {{ tpl .Values.otelCollector.grpc.ingress.hostname $ | quote }} + http: + paths: + {{- if .Values.otelCollector.grpc.ingress.extraPaths }} + {{- toYaml .Values.otelCollector.grpc.ingress.extraPaths | nindent 10 }} + {{- end }} + - path: /* + {{- if eq "true" (include "common.ingress.supportsPathType" .) }} + pathType: {{ .Values.otelCollector.grpc.ingress.pathType }} + {{- end }} + backend: {{- include "common.ingress.backend" (dict + "serviceName" (include "digma.otel-collector" $) + "servicePort" .Values.otelCollector.service.ports.grpc + "context" $) | nindent 14 }} + {{- end }} + {{- if .Values.otelCollector.grpc.ingress.extraRules }} + {{- include "common.tplvalues.render" (dict "value" .Values.otelCollector.grpc.ingress.extraRules "context" $) | nindent 4 }} + {{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/digma/templates/otel-collector/ingress.http.yaml b/charts/digma/templates/otel-collector/ingress.http.yaml new file mode 100644 index 00000000..ef288aa6 --- /dev/null +++ b/charts/digma/templates/otel-collector/ingress.http.yaml @@ -0,0 +1,36 @@ +{{- if .Values.otelCollector.http.ingress.enabled }} +apiVersion: {{ include "common.capabilities.ingress.apiVersion" . }} +kind: Ingress +metadata: + name: {{ include "digma.otel-collector" . }}-http + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: otel-collector-http + {{- if or .Values.otelCollector.http.ingress.annotations .Values.commonAnnotations }} + {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.otelCollector.http.ingress.annotations .Values.commonAnnotations ) "context" . ) }} + annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.otelCollector.http.ingress.ingressClassName (include "common.ingress.supportsIngressClassname" .) }} + ingressClassName: {{ .Values.otelCollector.http.ingress.ingressClassName | quote }} + {{- end }} + rules: + {{- if .Values.otelCollector.http.ingress.hostname }} + - host: {{ tpl .Values.otelCollector.http.ingress.hostname $ | quote }} + http: + paths: + {{- if .Values.otelCollector.http.ingress.extraPaths }} + {{- toYaml .Values.otelCollector.http.ingress.extraPaths | nindent 10 }} + {{- end }} + - path: /* + {{- if eq "true" (include "common.ingress.supportsPathType" .) }} + pathType: {{ .Values.otelCollector.http.ingress.pathType }} + {{- end }} + backend: {{- include "common.ingress.backend" (dict + "serviceName" (include "digma.otel-collector" $) + "servicePort" .Values.otelCollector.service.ports.http + "context" $) | nindent 14 }} + {{- end }} + {{- if .Values.otelCollector.http.ingress.extraRules }} + {{- include "common.tplvalues.render" (dict "value" .Values.otelCollector.http.ingress.extraRules "context" $) | nindent 4 }} + {{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/digma/templates/otel-collector/service.yaml b/charts/digma/templates/otel-collector/service.yaml new file mode 100644 index 00000000..2c302696 --- /dev/null +++ b/charts/digma/templates/otel-collector/service.yaml @@ -0,0 +1,29 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "digma.otel-collector" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: otel-collector + {{- if or .Values.otelCollector.service.annotations .Values.commonAnnotations }} + {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.otelCollector.service.annotations .Values.commonAnnotations ) "context" . ) }} + annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.otelCollector.service.type }} + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.otelCollector.podLabels .Values.commonLabels ) "context" . ) }} + selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: otel-collector + ports: + - name: health + protocol: TCP + port: {{ .Values.otelCollector.service.ports.health }} + {{- if .Values.otelCollector.service.ports.http }} + - name: http + protocol: TCP + port: {{ .Values.otelCollector.service.ports.http }} + {{- end }} + {{- if .Values.otelCollector.service.ports.grpc }} + - name: grpc + protocol: TCP + port: {{ .Values.otelCollector.service.ports.grpc }} + {{- end }} \ No newline at end of file diff --git a/charts/digma/templates/pipeline-worker/deployment.yaml b/charts/digma/templates/pipeline-worker/deployment.yaml new file mode 100644 index 00000000..6731c65e --- /dev/null +++ b/charts/digma/templates/pipeline-worker/deployment.yaml @@ -0,0 +1,60 @@ +apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ include "digma.pipeline-worker" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: pipeline-worker + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.pipelineWorker.podLabels .Values.commonLabels ) "context" . ) }} + replicas: {{ include "replicas.value" (dict "value" .Values.pipelineWorker.replicas "context" .) }} + selector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} + app.kubernetes.io/component: pipeline-worker + template: + metadata: + labels: + {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }} + app.kubernetes.io/component: pipeline-worker + annotations: + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 8 }} + {{- end }} + {{- if .Values.pipelineWorker.podAnnotations }} + {{- include "common.tplvalues.render" (dict "value" .Values.pipelineWorker.podAnnotations "context" .) | nindent 8 }} + {{- end }} + spec: + {{- include "common.images.pullSecrets" ( dict "images" (list .Values.pipelineWorker.image) "global" .Values.global) | nindent 6 }} + {{- if .Values.pipelineWorker.affinity }} + affinity: {{- include "common.tplvalues.render" ( dict "value" .Values.pipelineWorker.affinity "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.pipelineWorker.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" ( dict "value" .Values.pipelineWorker.nodeSelector "context" .) | nindent 8 }} + {{- end }} + {{- if .Values.pipelineWorker.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.pipelineWorker.tolerations "context" .) | nindent 8 }} + {{- end }} + containers: + - name: digma-collector-worker + image: {{ include "common.images.image" (dict "imageRoot" .Values.pipelineWorker.image "global" .Values.global "chart" .Chart) }} + imagePullPolicy: {{ .Values.pipelineWorker.image.pullPolicy }} + resources: {{- toYaml .Values.pipelineWorker.resources | nindent 12 }} + ports: + - name: http + containerPort: {{ .Values.pipelineWorker.service.ports.http }} + env: + {{- include "env.digma.app.common" . | nindent 8 }} + {{- include "env.redis" . | nindent 8 }} + {{- include "env.influx" . | nindent 8 }} + {{- include "env.postgres" . | nindent 8 }} + {{- include "env.kafka" . | nindent 8 }} + {{- include "env.jaeger" . | nindent 8 }} + {{- if .Values.pipelineWorker.livenessProbe.enabled }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.pipelineWorker.livenessProbe "enabled") "context" $) | nindent 10 }} + httpGet: + path: /healthz + port: http + scheme: HTTP + {{- end }} \ No newline at end of file diff --git a/charts/digma/templates/prometheus/configmap.yaml b/charts/digma/templates/prometheus/configmap.yaml new file mode 100644 index 00000000..2ca03b5a --- /dev/null +++ b/charts/digma/templates/prometheus/configmap.yaml @@ -0,0 +1,21 @@ +{{ if .Values.observability.useLocal }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "digma.prometheus.fullname" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: prometheus + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +data: + prometheus.yaml: |- + global: + scrape_interval: 15s + scrape_timeout: 10s + evaluation_interval: 15s + scrape_configs: + - job_name: otel-collector + static_configs: + - targets: [{{ include "digma.otel-collector-df-prometheus-scraper-url" .}}] +{{- end }} \ No newline at end of file diff --git a/charts/digma/templates/scheduler/deployment.yaml b/charts/digma/templates/scheduler/deployment.yaml new file mode 100644 index 00000000..f48a132c --- /dev/null +++ b/charts/digma/templates/scheduler/deployment.yaml @@ -0,0 +1,91 @@ +apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ include "digma.scheduler" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: scheduler + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.scheduler.podLabels .Values.commonLabels ) "context" . ) }} + replicas: {{ include "replicas.value" (dict "value" .Values.scheduler.replicas "context" .) }} + selector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} + app.kubernetes.io/component: scheduler + template: + metadata: + labels: + {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }} + app.kubernetes.io/component: scheduler + annotations: + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 8 }} + {{- end }} + {{- if .Values.scheduler.podAnnotations }} + {{- include "common.tplvalues.render" (dict "value" .Values.scheduler.podAnnotations "context" .) | nindent 8 }} + {{- end }} + spec: + {{- include "common.images.pullSecrets" ( dict "images" (list .Values.scheduler.image) "global" .Values.global) | nindent 6 }} + {{- if .Values.scheduler.affinity }} + affinity: {{- include "common.tplvalues.render" ( dict "value" .Values.scheduler.affinity "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.scheduler.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" ( dict "value" .Values.scheduler.nodeSelector "context" .) | nindent 8 }} + {{- end }} + {{- if .Values.scheduler.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.scheduler.tolerations "context" .) | nindent 8 }} + {{- end }} + containers: + - name: digma-scheduler + image: {{ include "common.images.image" (dict "imageRoot" .Values.scheduler.image "global" .Values.global "chart" .Chart) }} + imagePullPolicy: {{ .Values.scheduler.image.pullPolicy }} + resources: {{- toYaml .Values.scheduler.resources | nindent 12 }} + ports: + - name: http + containerPort: {{ .Values.scheduler.service.ports.http }} + env: + {{- include "env.digma.app.common" . | nindent 8 }} + {{- include "env.redis" . | nindent 8 }} + {{- include "env.influx" . | nindent 8 }} + {{- include "env.postgres" . | nindent 8 }} + {{- include "env.kafka" . | nindent 8 }} + {{- include "env.elasticsearch" . | nindent 8 }} + {{- if .Values.digma.report.enabled }} + {{- if .Values.digma.report.emailGateway.url }} + - name: "EmailGateway__Url" + value: {{ .Values.digma.report.emailGateway.url | quote}} + {{- end }} + {{- if .Values.digma.report.emailGateway.apiKey }} + - name: "EmailGateway__ApiKey" + value: {{ .Values.digma.report.emailGateway.apiKey | quote}} + {{- end }} + {{- if .Values.digma.report.recipients.to }} + - name: "EmailReport__Recipients__To" + value: {{ .Values.digma.report.recipients.to | quote}} + {{- end }} + {{- if .Values.digma.report.recipients.cc }} + - name: "EmailReport__Recipients__Cc" + value: {{ .Values.digma.report.recipients.cc | quote}} + {{- end }} + {{- if .Values.digma.report.recipients.bcc }} + - name: "EmailReport__Recipients__Bcc" + value: {{ .Values.digma.report.recipients.bcc | quote}} + {{- end }} + {{- if .Values.digma.report.scheduledTimeUtc }} + - name: "EmailReport__ScheduledTime" + value: {{ .Values.digma.report.scheduledTimeUtc | quote}} + {{- end }} + {{- $uiServiceBaseUrl := include "digma.report.uiServiceBaseUrl" . }} + {{- if ne $uiServiceBaseUrl "" }} + - name: "EmailReport__UIServiceBaseUrl" + value: {{ $uiServiceBaseUrl | quote}} + {{- end }} + {{- end }} + {{- if .Values.scheduler.livenessProbe.enabled }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.scheduler.livenessProbe "enabled") "context" $) | nindent 10 }} + httpGet: + path: /healthz + port: http + scheme: HTTP + {{- end }} \ No newline at end of file diff --git a/charts/digma/templates/ui/nginx-ingress.yaml b/charts/digma/templates/ui/nginx-ingress.yaml new file mode 100644 index 00000000..6278bbf9 --- /dev/null +++ b/charts/digma/templates/ui/nginx-ingress.yaml @@ -0,0 +1,44 @@ +{{- if .Values.ui.ingress.enabled }} +apiVersion: {{ include "common.capabilities.ingress.apiVersion" . }} +kind: Ingress +metadata: + name: {{ include "digma.ui" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: ui + {{- if or .Values.ui.ingress.annotations .Values.commonAnnotations }} + {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.ui.ingress.annotations .Values.commonAnnotations ) "context" . ) }} + annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ui.ingress.ingressClassName (include "common.ingress.supportsIngressClassname" .) }} + ingressClassName: {{ .Values.ui.ingress.ingressClassName | quote }} + {{- end }} + rules: + {{- if .Values.ui.ingress.hostname }} + - host: {{ tpl .Values.ui.ingress.hostname $ | quote }} + http: + paths: + {{- if .Values.ui.ingress.extraPaths }} + {{- toYaml .Values.ui.ingress.extraPaths | nindent 10 }} + {{- end }} + - path: {{ default "/" .Values.ui.ingress.path }} + {{- if eq "true" (include "common.ingress.supportsPathType" .) }} + pathType: {{ .Values.ui.ingress.pathType }} + {{- end }} + backend: {{- include "common.ingress.backend" (dict "serviceName" (include "digma.ui" $) "servicePort" "http" "context" $) | nindent 14 }} + {{- end }} + {{- if .Values.ui.ingress.extraRules }} + {{- include "common.tplvalues.render" (dict "value" .Values.ui.ingress.extraRules "context" $) | nindent 4 }} + {{- end }} + {{- if or .Values.ui.ingress.tls .Values.ui.ingress.extraTls }} + tls: + {{- if .Values.ui.ingress.tls }} + - hosts: + - {{ .Values.ui.ingress.hostname | quote }} + secretName: {{ printf "%s-tls" .Values.ingress.hostname }} + {{- end }} + {{- if .Values.ui.ingress.extraTls }} + {{- include "common.tplvalues.render" (dict "value" .Values.ui.ingress.extraTls "context" $) | nindent 4 }} + {{- end }} + {{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/digma/templates/ui/nginx-service.yaml b/charts/digma/templates/ui/nginx-service.yaml new file mode 100644 index 00000000..0735971a --- /dev/null +++ b/charts/digma/templates/ui/nginx-service.yaml @@ -0,0 +1,20 @@ + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "digma.ui" . }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: ui + {{- if or .Values.ui.service.annotations .Values.commonAnnotations }} + {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.ui.service.annotations .Values.commonAnnotations ) "context" . ) }} + annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.ui.service.type }} + ports: + - name: http + protocol: TCP + port: {{ .Values.ui.service.ports.http }} + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.ui.podLabels .Values.commonLabels ) "context" . ) }} + selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: nginx \ No newline at end of file diff --git a/charts/digma/templates/validate-values.yaml b/charts/digma/templates/validate-values.yaml new file mode 100644 index 00000000..047ac8f7 --- /dev/null +++ b/charts/digma/templates/validate-values.yaml @@ -0,0 +1,6 @@ +{{- if and (eq .Values.observability.useLocal true) (not (empty .Values.observability.otlp.remoteEndpoint)) }} +{{ fail "Installation failed: 'observability.useLocal' is true while 'observability.otlp.remoteEndpoint' is set. This combination is not allowed." }} +{{- end }} +{{- if and (eq .Values.analyticsApi.secured true) (.Values.analyticsApi.ingress.enabled) }} +{{ fail "Installation failed: 'analyticsApi.secured' is true while 'analyticsApi.ingress.enabled' is set to true. This combination is not allowed. " }} +{{- end }} \ No newline at end of file diff --git a/src/digma/values.schema.json b/charts/digma/values.schema.json similarity index 100% rename from src/digma/values.schema.json rename to charts/digma/values.schema.json diff --git a/charts/digma/values.yaml b/charts/digma/values.yaml new file mode 100644 index 00000000..ba1ba3b0 --- /dev/null +++ b/charts/digma/values.yaml @@ -0,0 +1,1691 @@ +digma: + deployment: + # -- adjusts the deployment to efficiently handle different scales of workload, and can be either small, medium, or large. + # @section -- Global Digma parameters + size: medium + # -- access token for plugin authentication, and set the same one in the IDE plugin settings. + # @section -- Global Digma parameters + accessToken: + # -- a digma license to use,If you've signed up for a free Digma account you should have received a Digma license to use. You can use this link [https://digma.ai/sign-up/] to sign up + # @section -- Global Digma parameters + licenseKey: + ## daily issues report parameters + ## + report: + # -- daily issues report enabled + # @section -- Global Digma parameters + enabled: false + # -- scheduled time of the report, HH:mm:ss (24-hour format) + # @section -- Global Digma parameters + scheduledTimeUtc: + # -- UI external service URL (automatically detected if not set) + # @section -- Global Digma parameters + uiExternalBaseUrl: + recipients: + # -- email recipients, list of recipients separated by semicolons (;) + # @section -- Global Digma parameters + to: + # -- report email additional recipients, list of recipients separated by semicolons (;) + # @section -- Global Digma parameters + cc: + # -- hidden from other recipients, list of recipients separated by semicolons (;) + # @section -- Global Digma parameters + bcc: + emailGateway: + # -- Email gateway email api key + # @section -- Global Digma parameters + apiKey: + # -- Email gateway URL + # @section -- Global Digma parameters + url: +observability: + # -- Use local observability, Deploys Prometheus and Grafana + # @section -- Observability parameters + useLocal: true + # -- siteName + # @section -- Observability parameters + siteName: undefined + # -- Environments represent different deployment stages or scopes + # @section -- Observability parameters + environmentName: digma + otlp: + # -- Please note this parameter, cannot be set while useLocal is true + # @section -- Observability parameters + remoteEndpoint: + # -- Control the fraction of traces that are sampled + # @section -- Observability parameters + samplerProbability: 0.1 + # -- Export traces + # @section -- Observability parameters + exportTraces: true + # -- Export metrics + # @section -- Observability parameters + exportMetrics: true +## Global Docker image parameters +## Please, note that this will override the image parameters +## +global: + ## E.g. + ## imagePullSecrets: + ## - myRegistryKeySecretName + # -- Global Docker registry secret names as an array + # @section -- Global Docker image parameters + imagePullSecrets: [] + +# -- kubeVersion Override Kubernetes version +# @section -- Common parameters +kubeVersion: "" +# -- commonLabels Labels to add to all deployed objects +# @section -- Common parameters +commonLabels: {} +# -- commonAnnotations Annotations to add to all deployed objects +# @section -- Common parameters +commonAnnotations: {} + + +collectorWorker: + env: + Sampling__Enable: true + ExtendedObservability__Enable: true + TraceTempStorage__TraceForJaegerExpirationInMinutes: 10 + BlockedTrace__TraceSpansLimit: 3000 + ThresholdOptions__RecentActivityUpdateThresholdSeconds: 5 + image: + registry: docker.io + repository: digmatic/digma-collector-worker + # -- image pull policy + # @section -- CollectorWorker parameters + pullPolicy: IfNotPresent + ## Optionally specify an array of imagePullSecrets. + ## Secrets must be manually created in the namespace. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + ## e.g: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + # -- image pull secrets + # @section -- CollectorWorker parameters + pullSecrets: [] + # -- replicas based on a given preset(.Values.digma.deployment.size) Number of replicas to deploy + # @section -- CollectorWorker parameters + replicas: "{{ index .Values.presets .Values.digma.deployment.size \"collectorWorker\" \"replicas\" }}" + resources: + requests: + memory: 300Mi + cpu: 300m + limits: + memory: 600Mi + cpu: 600m + service: + ports: + # -- HTTP service port, health check at /healthz + # @section -- CollectorWorker parameters + http: 5052 + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra labels for pods + # @section -- CollectorWorker parameters + podLabels: {} + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra annotations for pods + # @section -- CollectorWorker parameters + podAnnotations: {} + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ + # -- Node labels for pods assignment + # @section -- CollectorWorker parameters + nodeSelector: {} + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + # -- Tolerations for pods assignment + # @section -- CollectorWorker parameters + tolerations: [] + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `controller.podAffinityPreset`, `controller.podAntiAffinityPreset`, and `controller.nodeAffinityPreset` will be ignored when it's set + # -- Affinity for pods assignment + # @section -- CollectorWorker parameters + affinity: {} + ## e.g: + ## extraEnvVars: + ## - name: FOO + ## value: "bar" + # -- Array with extra environment variables to add + # @section -- CollectorWorker parameters + extraEnvVars: [] + app: + ignoreEndpoints: + - Route: "/health" + RouteRegex: "" + Method: "GET" + Service: "*" + - Route: "/healthcheck" + RouteRegex: "" + Method: "GET" + Service: "*" + - Route: "/metrics" + RouteRegex: "" + Method: "GET" + Service: "*" + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + livenessProbe: + # -- Enable livenessProbe + # @section -- CollectorWorker parameters + enabled: true + # -- Initial delay seconds for livenessProbe + # @section -- CollectorWorker parameters + initialDelaySeconds: 120 + # -- Period seconds for livenessProbe + # @section -- CollectorWorker parameters + periodSeconds: 10 + # -- Timeout seconds for livenessProbe + # @section -- CollectorWorker parameters + timeoutSeconds: 5 + # -- Failure threshold for livenessProbe + # @section -- CollectorWorker parameters + failureThreshold: 3 + # -- Success threshold for livenessProbe + # @section -- CollectorWorker parameters + successThreshold: 1 +otelCollector: + # --telemetry data that should be sampled and sent to the backend + # @section -- Otel Collector parameters + samplingPercentage: 100 + # -- The name of an existing ConfigMap with your custom configuration + # @section -- Otel Collector parameters + existingConfigmap: "" + # -- The name of the key with the config file + # @section -- Otel Collector parameters + existingConfigmapKey: "" + image: + # -- image registry + # @section -- Otel Collector parameters + registry: docker.io + # -- image repository + # @section -- Otel Collector parameters + repository: otel/opentelemetry-collector-contrib + # -- image tag + # @section -- Otel Collector parameters + tag: 0.103.0 + # -- image pull policy + # @section -- Otel Collector parameters + pullPolicy: IfNotPresent + ## Optionally specify an array of imagePullSecrets. + ## Secrets must be manually created in the namespace. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + ## e.g: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + # -- image pull secrets + # @section -- Otel Collector parameters + pullSecrets: [] + # -- Number of replicas to deploy + # @section -- Otel Collector parameters + replicas: 1 + resources: + requests: + cpu: 100m + memory: 100Mi + limits: + cpu: 200m + memory: 300Mi + service: + # -- service type + # @section -- Otel Collector parameters + type: ClusterIP + # -- Additional custom annotations for service + # @section -- Otel Collector parameters + annotations: {} + ports: + # -- health check service port + # @section -- Otel Collector parameters + health: 13133 + # -- gRPC port + # @section -- Otel Collector parameters + grpc: 4317 + # -- HTTP port listen to path: /v1/traces + # @section -- Otel Collector parameters + http: 4318 + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra labels for pods + # @section -- Otel Collector parameters + podLabels: {} + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra annotations for pods + # @section -- Otel Collector parameters + podAnnotations: {} + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ + # -- Node labels for pods assignment + # @section -- Otel Collector parameters + nodeSelector: {} + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + # -- Tolerations for pods assignment + # @section -- Otel Collector parameters + tolerations: [] + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `controller.podAffinityPreset`, `controller.podAntiAffinityPreset`, and `controller.nodeAffinityPreset` will be ignored when it's set + # -- Affinity for pods assignment + # @section -- Otel Collector parameters + affinity: {} + grpc: + ingress: + # -- Enable ingress + # @section -- Otel Collector parameters + enabled: false + # -- Ingress path type + # @section -- Otel Collector parameters + pathType: ImplementationSpecific + # -- Force Ingress API version (automatically detected if not set) + # @section -- Otel Collector parameters + apiVersion: "" + # -- Default host for the ingress record + # @section -- Otel Collector parameters + hostname: + ## This is supported in Kubernetes 1.18+ and required if you have more than one IngressClass marked as the default for your cluster . + ## ref: https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/ + # -- IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+) + # @section -- Otel Collector parameters + ingressClassName: + # -- The Path to otelCollector. You may need to set this to '/*' in order to use this with ALB ingress controllers. + # @section -- Otel Collector parameters + path: / + ## For a full list of possible ingress annotations, please see + ## ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md + ## Use this parameter to set the required annotations for cert-manager, see + ## ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations + ## + ## e.g: + ## annotations: + ## kubernetes.io/ingress.class: nginx + ## cert-manager.io/cluster-issuer: cluster-issuer-name + # -- Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations. + # @section -- Otel Collector parameters + annotations: + ## For example: The ALB ingress controller requires a special rule for handling SSL redirection. + ## extraPaths: + ## - path: /* + ## backend: + ## serviceName: ssl-redirect + ## servicePort: use-annotation + # -- Any additional paths that may need to be added to the ingress under the main host + # @section -- Otel Collector parameters + extraPaths: [] + ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-rules + ## e.g: + ## extraRules: + ## - host: example.local + ## http: + ## path: / + ## backend: + ## service: + ## name: example-svc + ## port: + ## name: http + # -- Additional rules to be covered with this ingress record + # @section -- Otel Collector parameters + extraRules: [] + ## otelCollector HTTP ingress parameters + ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/ + http: + ingress: + # -- Enable ingress + # @section -- Otel Collector parameters + enabled: false + # -- Ingress path type + # @section -- Otel Collector parameters + pathType: ImplementationSpecific + # -- Force Ingress API version (automatically detected if not set) + # @section -- Otel Collector parameters + apiVersion: "" + # -- Default host for the ingress record + # @section -- Otel Collector parameters + hostname: + ## This is supported in Kubernetes 1.18+ and required if you have more than one IngressClass marked as the default for your cluster . + ## ref: https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/ + # -- IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+) + # @section -- Otel Collector parameters + ingressClassName: + # -- The Path to otelCollector. You may need to set this to '/*' in order to use this with ALB ingress controllers. + # @section -- Otel Collector parameters + path: / + ## For a full list of possible ingress annotations, please see + ## ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md + ## Use this parameter to set the required annotations for cert-manager, see + ## ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations + ## + ## e.g: + ## annotations: + ## kubernetes.io/ingress.class: nginx + ## cert-manager.io/cluster-issuer: cluster-issuer-name + # -- Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations. + # @section -- Otel Collector parameters + annotations: + ## For example: The ALB ingress controller requires a special rule for handling SSL redirection. + ## extraPaths: + ## - path: /* + ## backend: + ## serviceName: ssl-redirect + ## servicePort: use-annotation + # -- Any additional paths that may need to be added to the ingress under the main host + # @section -- Otel Collector parameters + extraPaths: [] + ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-rules + ## e.g: + ## extraRules: + ## - host: example.local + ## http: + ## path: / + ## backend: + ## service: + ## name: example-svc + ## port: + ## name: http + # -- Additional rules to be covered with this ingress record + # @section -- Otel Collector parameters + extraRules: [] +collectorApi: + image: + registry: docker.io + repository: digmatic/digma-collector + # -- image pull policy + # @section -- CollectorApi parameters + pullPolicy: IfNotPresent + ## Optionally specify an array of imagePullSecrets. + ## Secrets must be manually created in the namespace. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + ## e.g: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + # -- image pull secrets + # @section -- CollectorApi parameters + pullSecrets: [] + # -- Number of replicas to deploy + # @section -- CollectorApi parameters + replicas: 1 + resources: + requests: + memory: 100Mi + cpu: 200m + limits: + memory: 600Mi + cpu: 800m + service: + # -- service type + # @section -- CollectorApi parameters + type: ClusterIP + # -- Additional custom annotations for service + # @section -- CollectorApi parameters + annotations: {} + ports: + # -- internal service port + # @section -- CollectorApi parameters + internal: 5048 + # -- gRPC service port + # @section -- CollectorApi parameters + grpc: 5050 + # -- HTTP port listen to path: /v1/traces, health check at /healthz + # @section -- CollectorApi parameters + http: 5049 + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra labels for pods + # @section -- CollectorApi parameters + podLabels: {} + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra annotations for pods + # @section -- CollectorApi parameters + podAnnotations: {} + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ + # -- Node labels for pods assignment + # @section -- CollectorApi parameters + nodeSelector: {} + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + # -- Tolerations for pods assignment + # @section -- CollectorApi parameters + tolerations: [] + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `controller.podAffinityPreset`, `controller.podAntiAffinityPreset`, and `controller.nodeAffinityPreset` will be ignored when it's set + # -- Affinity for pods assignment + # @section -- CollectorApi parameters + affinity: {} + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + livenessProbe: + # -- Enable livenessProbe + # @section -- CollectorApi parameters + enabled: true + # -- Initial delay seconds for livenessProbe + # @section -- CollectorApi parameters + initialDelaySeconds: 120 + # -- Period seconds for livenessProbe + # @section -- CollectorApi parameters + periodSeconds: 10 + # -- Timeout seconds for livenessProbe + # @section -- CollectorApi parameters + timeoutSeconds: 5 + # -- Failure threshold for livenessProbe + # @section -- CollectorApi parameters + failureThreshold: 3 + # -- Success threshold for livenessProbe + # @section -- CollectorApi parameters + successThreshold: 1 +analyticsApi: + # -- Indicates whether the analytics API uses a secured HTTPS connection. Set to false if ingress is enabled + # @section -- AnalyticsApi parameters + secured: true + image: + registry: docker.io + repository: digmatic/digma-analytics + # -- image pull policy + # @section -- AnalyticsApi parameters + pullPolicy: IfNotPresent + ## Optionally specify an array of imagePullSecrets. + ## Secrets must be manually created in the namespace. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + ## e.g: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + # -- image pull secrets + # @section -- AnalyticsApi parameters + pullSecrets: [] + # -- Number of replicas to deploy + # @section -- AnalyticsApi parameters + replicas: 1 + resources: + requests: + memory: 300Mi + cpu: 100m + limits: + memory: 800Mi + cpu: 800m + service: + # -- service type + # @section -- AnalyticsApi parameters + type: ClusterIP + # -- Additional custom annotations for service + # @section -- AnalyticsApi parameters + annotations: {} + ports: + # -- HTTP service port, health check at /healthz + # @section -- AnalyticsApi parameters + http: 5051 + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra labels for pods + # @section -- AnalyticsApi parameters + podLabels: {} + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra annotations for pods + # @section -- AnalyticsApi parameters + podAnnotations: {} + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ + # -- Node labels for pods assignment + # @section -- AnalyticsApi parameters + nodeSelector: {} + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + # -- Tolerations for pods assignment + # @section -- AnalyticsApi parameters + tolerations: [] + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `controller.podAffinityPreset`, `controller.podAntiAffinityPreset`, and `controller.nodeAffinityPreset` will be ignored when it's set + # -- Affinity for pods assignment + # @section -- AnalyticsApi parameters + affinity: {} + ## analyticsApi ingress parameters + ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/ + ingress: + # -- Enable ingress + # @section -- AnalyticsApi parameters + enabled: false + # -- Ingress path type + # @section -- AnalyticsApi parameters + pathType: ImplementationSpecific + # -- Force Ingress API version (automatically detected if not set) + # @section -- AnalyticsApi parameters + apiVersion: "" + # -- Default host for the ingress record + # @section -- AnalyticsApi parameters + hostname: + ## This is supported in Kubernetes 1.18+ and required if you have more than one IngressClass marked as the default for your cluster . + ## ref: https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/ + # -- IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+) + # @section -- AnalyticsApi parameters + ingressClassName: + # -- The Path to AnalyticsApi. You may need to set this to '/*' in order to use this with ALB ingress controllers. + # @section -- AnalyticsApi parameters + path: / + ## For a full list of possible ingress annotations, please see + ## ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md + ## Use this parameter to set the required annotations for cert-manager, see + ## ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations + ## + ## e.g: + ## annotations: + ## kubernetes.io/ingress.class: nginx + ## cert-manager.io/cluster-issuer: cluster-issuer-name + # -- Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations. + # @section -- AnalyticsApi parameters + annotations: + ## For example: The ALB ingress controller requires a special rule for handling SSL redirection. + ## extraPaths: + ## - path: /* + ## backend: + ## serviceName: ssl-redirect + ## servicePort: use-annotation + # -- Any additional paths that may need to be added to the ingress under the main host + # @section -- AnalyticsApi parameters + extraPaths: [] + ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-rules + ## e.g: + ## extraRules: + ## - host: example.local + ## http: + ## path: / + ## backend: + ## service: + ## name: example-svc + ## port: + ## name: http + # -- Additional rules to be covered with this ingress record + # @section -- AnalyticsApi parameters + extraRules: [] + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + livenessProbe: + # -- Enable livenessProbe + # @section -- AnalyticsApi parameters + enabled: true + # -- Initial delay seconds for livenessProbe + # @section -- AnalyticsApi parameters + initialDelaySeconds: 120 + # -- Period seconds for livenessProbe + # @section -- AnalyticsApi parameters + periodSeconds: 10 + # -- Timeout seconds for livenessProbe + # @section -- AnalyticsApi parameters + timeoutSeconds: 5 + # -- Failure threshold for livenessProbe + # @section -- AnalyticsApi parameters + failureThreshold: 3 + # -- Success threshold for livenessProbe + # @section -- AnalyticsApi parameters + successThreshold: 1 + # readinessProbe: + # # -- Enable readinessProbe + # # @section -- AnalyticsApi parameters + # enabled: true + # # -- Initial delay seconds for readinessProbe + # # @section -- AnalyticsApi parameters + # initialDelaySeconds: 10 + # # -- Period seconds for readinessProbe + # # @section -- AnalyticsApi parameters + # periodSeconds: 10 + # # -- Timeout seconds for readinessProbe + # # @section -- AnalyticsApi parameters + # timeoutSeconds: 5 + # # -- Failure threshold for readinessProbe + # # @section -- AnalyticsApi parameters + # failureThreshold: 12 + # # -- Success threshold for readinessProbe + # # @section -- AnalyticsApi parameters + # successThreshold: 1 +measurementAnalysis: + env: + ThresholdOptions__UpsertEndpointThresholdSeconds: 5 + ThresholdOptions__UpsertSpansThresholdSeconds: 5 + ThresholdOptions__UpsertSpanFlowMetadataThresholdSeconds: 5 + image: + registry: docker.io + repository: digmatic/digma-measurement-analysis + # -- image pull policy + # @section -- MeasurementAnalysis parameters + pullPolicy: IfNotPresent + ## Optionally specify an array of imagePullSecrets. + ## Secrets must be manually created in the namespace. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + ## e.g: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + # -- image pull secrets + # @section -- MeasurementAnalysis parameters + pullSecrets: [] + # -- replicas based on a given preset(.Values.digma.deployment.size) Number of replicas to deploy + # @section -- MeasurementAnalysis parameters + replicas: "{{ index .Values.presets .Values.digma.deployment.size \"measurementAnalysis\" \"replicas\" }}" + resources: + requests: + memory: 100Mi + cpu: 200m + limits: + memory: 800Mi + cpu: 800m + service: + ports: + # -- HTTP service port, health check at /healthz + # @section -- MeasurementAnalysis parameters + http: 5054 + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra labels for pods + # @section -- MeasurementAnalysis parameters + podLabels: {} + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra annotations for pods + # @section -- MeasurementAnalysis parameters + podAnnotations: {} + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ + # -- Node labels for pods assignment + # @section -- MeasurementAnalysis parameters + nodeSelector: {} + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + # -- Tolerations for pods assignment + # @section -- MeasurementAnalysis parameters + tolerations: [] + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `controller.podAffinityPreset`, `controller.podAntiAffinityPreset`, and `controller.nodeAffinityPreset` will be ignored when it's set + # -- Affinity for pods assignment + # @section -- MeasurementAnalysis parameters + affinity: {} + ## e.g: + ## extraEnvVars: + ## - name: FOO + ## value: "bar" + # -- Array with extra environment variables to add + # @section -- MeasurementAnalysis parameters + extraEnvVars: [] + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + livenessProbe: + # -- Enable livenessProbe + # @section -- MeasurementAnalysis parameters + enabled: true + # -- Initial delay seconds for livenessProbe + # @section -- MeasurementAnalysis parameters + initialDelaySeconds: 120 + # -- Period seconds for livenessProbe + # @section -- MeasurementAnalysis parameters + periodSeconds: 10 + # -- Timeout seconds for livenessProbe + # @section -- MeasurementAnalysis parameters + timeoutSeconds: 5 + # -- Failure threshold for livenessProbe + # @section -- MeasurementAnalysis parameters + failureThreshold: 3 + # -- Success threshold for livenessProbe + # @section -- MeasurementAnalysis parameters + successThreshold: 1 +scheduler: + image: + registry: docker.io + repository: digmatic/digma-scheduler + # -- image pull policy + # @section -- Scheduler parameters + pullPolicy: IfNotPresent + ## Optionally specify an array of imagePullSecrets. + ## Secrets must be manually created in the namespace. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + ## e.g: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + # -- image pull secrets + # @section -- Scheduler parameters + pullSecrets: [] + # -- Number of replicas to deploy + # @section -- Scheduler parameters + replicas: 1 + resources: + requests: + memory: 300Mi + cpu: 200m + limits: + memory: 600Mi + cpu: 500m + service: + ports: + # -- HTTP service port, health check at /healthz + # @section -- Scheduler parameters + http: 5053 + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra labels for pods + # @section -- Scheduler parameters + podLabels: {} + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra annotations for pods + # @section -- Scheduler parameters + podAnnotations: {} + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ + # -- Node labels for pods assignment + # @section -- Scheduler parameters + nodeSelector: {} + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + # -- Tolerations for pods assignment + # @section -- Scheduler parameters + tolerations: [] + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `controller.podAffinityPreset`, `controller.podAntiAffinityPreset`, and `controller.nodeAffinityPreset` will be ignored when it's set + # -- Affinity for pods assignment + # @section -- Scheduler parameters + affinity: {} + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + livenessProbe: + # -- Enable livenessProbe + # @section -- Scheduler parameters + enabled: true + # -- Initial delay seconds for livenessProbe + # @section -- Scheduler parameters + initialDelaySeconds: 120 + # -- Period seconds for livenessProbe + # @section -- Scheduler parameters + periodSeconds: 10 + # -- Timeout seconds for livenessProbe + # @section -- Scheduler parameters + timeoutSeconds: 5 + # -- Failure threshold for livenessProbe + # @section -- Scheduler parameters + failureThreshold: 3 + # -- Success threshold for livenessProbe + # @section -- Scheduler parameters + successThreshold: 1 +pipelineWorker: + image: + registry: docker.io + repository: digmatic/digma-pipeline-worker + # -- image pull policy + # @section -- PipelineWorker parameters + pullPolicy: IfNotPresent + ## Optionally specify an array of imagePullSecrets. + ## Secrets must be manually created in the namespace. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + ## e.g: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + # -- image pull secrets + # @section -- PipelineWorker parameters + pullSecrets: [] + # -- replicas based on a given preset(.Values.digma.deployment.size) Number of replicas to deploy + # @section -- PipelineWorker parameters + replicas: "{{ index .Values.presets .Values.digma.deployment.size \"pipelineWorker\" \"replicas\" }}" + resources: + requests: + memory: 100Mi + cpu: 50m + limits: + memory: 400Mi + cpu: 500m + service: + ports: + # -- HTTP service port, health check at /healthz + # @section -- PipelineWorker parameters + http: 5055 + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra labels for pods + # @section -- PipelineWorker parameters + podLabels: {} + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra annotations for pods + # @section -- PipelineWorker parameters + podAnnotations: {} + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ + # -- Node labels for pods assignment + # @section -- PipelineWorker parameters + nodeSelector: {} + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + # -- Tolerations for pods assignment + # @section -- PipelineWorker parameters + tolerations: [] + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `controller.podAffinityPreset`, `controller.podAntiAffinityPreset`, and `controller.nodeAffinityPreset` will be ignored when it's set + # -- Affinity for pods assignment + # @section -- PipelineWorker parameters + affinity: {} + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + livenessProbe: + # -- Enable livenessProbe + # @section -- PipelineWorker parameters + enabled: true + # -- Initial delay seconds for livenessProbe + # @section -- PipelineWorker parameters + initialDelaySeconds: 120 + # -- Period seconds for livenessProbe + # @section -- PipelineWorker parameters + periodSeconds: 10 + # -- Timeout seconds for livenessProbe + # @section -- PipelineWorker parameters + timeoutSeconds: 5 + # -- Failure threshold for livenessProbe + # @section -- PipelineWorker parameters + failureThreshold: 3 + # -- Success threshold for livenessProbe + # @section -- PipelineWorker parameters + successThreshold: 1 +nginx: + image: + registry: docker.io + repository: nginx + tag: 1.27.3 + # -- image pull policy + # @section -- UI parameters + pullPolicy: IfNotPresent + ## Optionally specify an array of imagePullSecrets. + ## Secrets must be manually created in the namespace. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + ## e.g: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + # -- image pull secrets + # @section -- UI parameters + pullSecrets: [] + # -- Number of replicas to deploy + # @section -- UI parameters + replicas: 1 + resources: + requests: + memory: 100Mi + cpu: 100m + limits: + memory: 200Mi + cpu: 200m + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra labels for pods + # @section -- UI parameters + podLabels: {} + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra annotations for pods + # @section -- UI parameters + podAnnotations: {} + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ + # -- Node labels for pods assignment + # @section -- UI parameters + nodeSelector: {} + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + # -- Tolerations for pods assignment + # @section -- UI parameters + tolerations: [] + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `controller.podAffinityPreset`, `controller.podAntiAffinityPreset`, and `controller.nodeAffinityPreset` will be ignored when it's set + # -- Affinity for pods assignment + # @section -- UI parameters + affinity: {} + +ui: + service: + # -- service type + # @section -- UI parameters + type: ClusterIP + # -- Additional custom annotations for service + # @section -- UI parameters + annotations: {} + ports: + # -- HTTP service port + # @section -- UI parameters + http: 80 + ## ui ingress parameters + ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/ + ingress: + # -- Enable ingress + # @section -- UI parameters + enabled: false + # -- Ingress path type + # @section -- UI parameters + pathType: ImplementationSpecific + # -- Force Ingress API version (automatically detected if not set) + # @section -- UI parameters + apiVersion: "" + # -- Default host for the ingress record + # @section -- UI parameters + hostname: + ## This is supported in Kubernetes 1.18+ and required if you have more than one IngressClass marked as the default for your cluster . + ## ref: https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/ + # -- IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+) + # @section -- UI parameters + ingressClassName: + # -- The Path to UI. You may need to set this to '/*' in order to use this with ALB ingress controllers. + # @section -- UI parameters + path: / + ## For a full list of possible ingress annotations, please see + ## ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md + ## Use this parameter to set the required annotations for cert-manager, see + ## ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations + ## + ## e.g: + ## annotations: + ## kubernetes.io/ingress.class: nginx + ## cert-manager.io/cluster-issuer: cluster-issuer-name + # -- Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations. + # @section -- UI parameters + annotations: + ## For example: The ALB ingress controller requires a special rule for handling SSL redirection. + ## extraPaths: + ## - path: /* + ## backend: + ## serviceName: ssl-redirect + ## servicePort: use-annotation + # -- Any additional paths that may need to be added to the ingress under the main host + # @section -- UI parameters + extraPaths: [] + ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-rules + ## e.g: + ## extraRules: + ## - host: example.local + ## http: + ## path: / + ## backend: + ## service: + ## name: example-svc + ## port: + ## name: http + # -- Additional rules to be covered with this ingress record + # @section -- UI parameters + extraRules: [] + +metricsExporter: + image: + registry: docker.io + repository: digmatic/k8s-metrics-exporter + tag: 0.0.10-alpha.3 + # -- image pull policy + # @section -- MetricsExporter parameters + pullPolicy: IfNotPresent + ## Optionally specify an array of imagePullSecrets. + ## Secrets must be manually created in the namespace. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + ## e.g: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + # -- image pull secrets + # @section -- MetricsExporter parameters + pullSecrets: [] + # -- Number of replicas to deploy + # @section -- MetricsExporter parameters + replicas: 1 + resources: + requests: + memory: 512Mi + cpu: 500m + limits: + memory: 768Mi + cpu: 750m + service: + # -- Additional custom annotations for service + # @section -- MetricsExporter parameters + annotations: {} + ports: + # -- HTTP service port + # @section -- MetricsExporter parameters + http: 9091 + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra labels for pods + # @section -- MetricsExporter parameters + podLabels: {} + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra annotations for pods + # @section -- MetricsExporter parameters + podAnnotations: {} + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ + # -- Node labels for pods assignment + # @section -- MetricsExporter parameters + nodeSelector: {} + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + # -- Tolerations for pods assignment + # @section -- MetricsExporter parameters + tolerations: [] + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `controller.podAffinityPreset`, `controller.podAntiAffinityPreset`, and `controller.nodeAffinityPreset` will be ignored when it's set + # -- Affinity for pods assignment + # @section -- MetricsExporter parameters + affinity: {} + # -- Annotations to add to the ServiceAccount Metadata + # @section -- MetricsExporter parameters + serviceAccount: + annotations: {} + +otelCollectorDf: + fullnameOverride: "digma-otel-collector-df" # because we need to use this name other value in file + image: + # -- image registry + # @section -- Otel CollectorDF parameters + registry: docker.io + # -- image repository + # @section -- Otel CollectorDF parameters + repository: otel/opentelemetry-collector-contrib + # -- image tag + # @section -- Otel CollectorDF parameters + tag: 0.103.0 + # -- image pull policy + # @section -- Otel CollectorDF parameters + pullPolicy: IfNotPresent + ## Optionally specify an array of imagePullSecrets. + ## Secrets must be manually created in the namespace. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + ## e.g: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + # -- image pull secrets + # @section -- Otel CollectorDF parameters + pullSecrets: [] + # -- Number of replicas to deploy + # @section -- Otel CollectorDF parameters + replicas: 1 + resources: + requests: + cpu: 100m + memory: 100Mi + limits: + cpu: 200m + memory: 300Mi + service: + # -- Additional custom annotations for service + # @section -- Otel CollectorDF parameters + annotations: {} + ports: + # -- HTTP gRPC service port + # @section -- Otel CollectorDF parameters + grpc: 4317 + # -- prometheus scraper service port + # @section -- Otel CollectorDF parameters + prometheus_scraper: 8889 + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra labels for pods + # @section -- Otel CollectorDF parameters + podLabels: {} + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra annotations for pods + # @section -- Otel CollectorDF parameters + podAnnotations: {} + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ + # -- Node labels for pods assignment + # @section -- Otel CollectorDF parameters + nodeSelector: {} + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + # -- Tolerations for pods assignment + # @section -- Otel CollectorDF parameters + tolerations: [] + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `controller.podAffinityPreset`, `controller.podAntiAffinityPreset`, and `controller.nodeAffinityPreset` will be ignored when it's set + # -- Affinity for pods assignment + # @section -- Otel CollectorDF parameters + affinity: {} +## influxdb +## ref: https://github.com/bitnami/charts/blob/main/bitnami/influxdb/values.yaml +## +influxdb: + resources: + requests: + memory: 500Mi + cpu: 500m + limits: + memory: 2Gi + cpu: 2000m + auth: + user: + org: digma + username: admin + password: "12345678" + bucket: errors + admin: + org: digma + username: admin + password: "12345678" + token: dc61908e-05bc-411a-9fe2-e3356b8dc7c0 + bucket: errors + retention: 4w + service: + ports: + http: 8086 + persistence: + enabled: true + accessModes: + - ReadWriteOnce + size: 50Gi + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra labels for pods + # @section -- Influxdb parameters + podLabels: {} + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra annotations for pods + # @section -- Influxdb parameters + podAnnotations: {} + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ + # -- Node labels for pods assignment + # @section -- Influxdb parameters + nodeSelector: {} + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + # -- Tolerations for pods assignment + # @section -- Influxdb parameters + tolerations: [] + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `controller.podAffinityPreset`, `controller.podAntiAffinityPreset`, and `controller.nodeAffinityPreset` will be ignored when it's set + # -- Affinity for pods assignment + # @section -- Influxdb parameters + affinity: {} +## postgresql +## ref: https://github.com/bitnami/charts/blob/main/bitnami/postgresql/values.yaml +## +postgresql: + enabled: true + auth: + database: postgres + username: postgres + password: postgres + enablePostgresUser: false + architecture: standalone + containerPorts: + postgresql: 5432 + primary: + resources: + requests: + memory: 1Gi + cpu: 200m + limits: + memory: 2Gi + cpu: 1000m + networkPolicy: + enabled: false + service: + ports: + postgresql: 5432 + persistence: + enabled: true + accessModes: + - ReadWriteOnce + size: 20Gi + extendedConfiguration: | + shared_buffers = '800MB' + logging_collector = on + log_directory ='log' + extraEnvVars: + - name: POSTGRESQL_MAX_CONNECTIONS + value: "400" + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra labels for pods + # @section -- Postgresql parameters + podLabels: {} + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra annotations for pods + # @section -- Postgresql parameters + podAnnotations: {} + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ + # -- Node labels for pods assignment + # @section -- Postgresql parameters + nodeSelector: {} + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + # -- Tolerations for pods assignment + # @section -- Postgresql parameters + tolerations: [] + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `controller.podAffinityPreset`, `controller.podAntiAffinityPreset`, and `controller.nodeAffinityPreset` will be ignored when it's set + # -- Affinity for pods assignment + # @section -- Postgresql parameters + affinity: {} +## redis +## ref: https://github.com/bitnami/charts/blob/main/bitnami/redis/values.yaml +## +redis: + enabled: true + auth: + enabled: false + architecture: standalone + master: + extraFlags: + ## The maxmemory configuration directive is used in order to configure Redis(R) to use a specified + ## amount of memory for the data set. Setting maxmemory to zero results into no memory limits + ## see https://redis.io/topics/lru-cache for more details + ## + - "--maxmemory 2g" + ## The exact behavior Redis(R) follows when the maxmemory limit is reached is configured using the + ## maxmemory-policy configuration directive + ## allkeys-lru: evict keys by trying to remove the less recently used (LRU) keys first, in order + ## to make space for the new data added + ## + - "--maxmemory-policy allkeys-lru" + resources: + requests: + memory: "100Mi" + cpu: "50m" + limits: + memory: "2Gi" + cpu: "400m" + persistence: + enabled: true + accessModes: + - ReadWriteOnce + size: 10Gi + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra labels for pods + # @section -- Redis parameters + podLabels: {} + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra annotations for pods + # @section -- Redis parameters + podAnnotations: {} + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ + # -- Node labels for pods assignment + # @section -- Redis parameters + nodeSelector: {} + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + # -- Tolerations for pods assignment + # @section -- Redis parameters + tolerations: [] + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `controller.podAffinityPreset`, `controller.podAntiAffinityPreset`, and `controller.nodeAffinityPreset` will be ignored when it's set + # -- Affinity for pods assignment + # @section -- Redis parameters + affinity: {} +## jaeger +## ref: https://github.com/bitnami/charts/blob/main/bitnami/jaeger/values.yaml +## +jaeger: + image: + # -- image registry + # @section -- Jaeger parameters + registry: docker.io + # -- image repository + # @section -- Jaeger parameters + repository: jaegertracing/all-in-one + # -- image tag + # @section -- Jaeger parameters + tag: 1.61.0 + # -- image pull policy + # @section -- Jaeger parameters + pullPolicy: IfNotPresent + ## Optionally specify an array of imagePullSecrets. + ## Secrets must be manually created in the namespace. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + ## e.g: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + # -- image pull secrets + # @section -- Jaeger parameters + pullSecrets: [] + # -- Number of replicas to deploy + # @section -- Jaeger parameters + replicas: 1 + resources: + requests: + memory: 512Mi + cpu: 500m + limits: + memory: 768Mi + cpu: 750m + ## jaeger service parameters + ## + service: + # -- service type + # @section -- Jaeger parameters + type: ClusterIP + # -- Additional custom annotations for service + # @section -- Jaeger parameters + annotations: {} + ports: + # -- UI HTTP service port + # @section -- Jaeger parameters + http_ui: 16686 + # -- gRPC collector internal service port + # @section -- Jaeger parameters + grpc_internal: 4317 + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra labels for pods + # @section -- Jaeger parameters + podLabels: {} + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra annotations for pods + # @section -- Jaeger parameters + podAnnotations: {} + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ + # -- Node labels for pods assignment + # @section -- Jaeger parameters + nodeSelector: {} + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + # -- Tolerations for pods assignment + # @section -- Jaeger parameters + tolerations: [] + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `controller.podAffinityPreset`, `controller.podAntiAffinityPreset`, and `controller.nodeAffinityPreset` will be ignored when it's set + # -- Affinity for pods assignment + # @section -- Jaeger parameters + affinity: {} + ## jaeger ingress parameters + ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/ + ingress: + # -- Enable ingress + # @section -- Jaeger parameters + enabled: false + # -- Ingress path type + # @section -- Jaeger parameters + pathType: ImplementationSpecific + # -- Force Ingress API version (automatically detected if not set) + # @section -- Jaeger parameters + apiVersion: "" + # -- Default host for the ingress record + # @section -- Jaeger parameters + hostname: + ## This is supported in Kubernetes 1.18+ and required if you have more than one IngressClass marked as the default for your cluster . + ## ref: https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/ + # -- IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+) + # @section -- Jaeger parameters + ingressClassName: + # -- The Path to UI. You may need to set this to '/*' in order to use this with ALB ingress controllers. + # @section -- Jaeger parameters + path: / + ## For a full list of possible ingress annotations, please see + ## ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md + ## Use this parameter to set the required annotations for cert-manager, see + ## ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations + ## + ## e.g: + ## annotations: + ## kubernetes.io/ingress.class: nginx + ## cert-manager.io/cluster-issuer: cluster-issuer-name + # -- Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations. + # @section -- Jaeger parameters + annotations: + ## For example: The ALB ingress controller requires a special rule for handling SSL redirection. + ## extraPaths: + ## - path: /* + ## backend: + ## serviceName: ssl-redirect + ## servicePort: use-annotation + # -- Any additional paths that may need to be added to the ingress under the main host + # @section -- Jaeger parameters + extraPaths: [] + ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-rules + ## e.g: + ## extraRules: + ## - host: example.local + ## http: + ## path: / + ## backend: + ## service: + ## name: example-svc + ## port: + ## name: http + # -- Additional rules to be covered with this ingress record + # @section -- Jaeger parameters + extraRules: [] + args: [] +## elasticsearch +## ref: https://github.com/bitnami/charts/blob/main/bitnami/elasticsearch/values.yaml +## +elasticsearch: + enabled: true + sysctlImage: + enabled: true + security: + enabled: false + existingSecret: "" + tls: + restEncryption: false + ## Elasticsearch master-eligible node parameters + master: + masterOnly: false + replicaCount: 1 + terminationGracePeriodSeconds: 5 + podSecurityContext: + enabled: true + fsGroup: 1000 + persistence: + enabled: true + size: 80Gi + accessModes: + - ReadWriteOnce + resources: + requests: + memory: 2Gi + cpu: 1 + limits: + memory: 4Gi + cpu: 2 + extraEnvVars: + - name: ES_JAVA_OPTS + value: "-server -Xms1G -Xmx2G" + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra labels for pods + # @section -- Elasticsearch parameters + podLabels: {} + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra annotations for pods + # @section -- Elasticsearch parameters + podAnnotations: {} + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ + # -- Node labels for pods assignment + # @section -- Elasticsearch parameters + nodeSelector: {} + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + # -- Tolerations for pods assignment + # @section -- Elasticsearch parameters + tolerations: [] + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `controller.podAffinityPreset`, `controller.podAntiAffinityPreset`, and `controller.nodeAffinityPreset` will be ignored when it's set + # -- Affinity for pods assignment + # @section -- Elasticsearch parameters + affinity: {} + coordinating: + replicaCount: 0 + data: + replicaCount: 0 + ingest: + replicaCount: 0 + service: + ports: + restAPI: 9200 +## grafana +## ref: https://github.com/bitnami/charts/blob/main/bitnami/grafana/values.yaml +## +grafana: + admin: + user: admin + password: admin + dashboardsProvider: + enabled: true + dashboardsConfigMaps: + - configMapName: digma-grafana-activities-dashboards + fileName: activities.json + - configMapName: digma-grafana-environment-dashboards + fileName: environment.json + - configMapName: digma-grafana-kafka-dashboards + fileName: kafka.json + datasources: + secretName: grafana-datasource + grafana: + resources: + requests: + memory: 512Mi + cpu: 500m + limits: + memory: 768Mi + cpu: 750m + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra labels for pods + # @section -- Grafana parameters + podLabels: {} + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra annotations for pods + # @section -- Grafana parameters + podAnnotations: {} + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ + # -- Node labels for pods assignment + # @section -- Grafana parameters + nodeSelector: {} + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + # -- Tolerations for pods assignment + # @section -- Grafana parameters + tolerations: [] + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `controller.podAffinityPreset`, `controller.podAntiAffinityPreset`, and `controller.nodeAffinityPreset` will be ignored when it's set + # -- Affinity for pods assignment + # @section -- Grafana parameters + affinity: {} +## prometheus +## ref: https://github.com/bitnami/charts/blob/main/bitnami/prometheus/values.yaml +## +prometheus: + enabled: false + fullnameOverride: "digma-prometheus" #todo shay + alertmanager: + enabled: false + server: + existingConfigmap: "digma-prometheus-service" + existingConfigmapKey: "prometheus.yaml" + service: + type: ClusterIP + ports: + http: 9090 + resources: + requests: + memory: 512Mi + cpu: 500m + limits: + memory: 768Mi + cpu: 750m + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra labels for pods + # @section -- Prometheus parameters + podLabels: {} + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra annotations for pods + # @section -- Prometheus parameters + podAnnotations: {} + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ + # -- Node labels for pods assignment + # @section -- Prometheus parameters + nodeSelector: {} + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + # -- Tolerations for pods assignment + # @section -- Prometheus parameters + tolerations: [] + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `controller.podAffinityPreset`, `controller.podAntiAffinityPreset`, and `controller.nodeAffinityPreset` will be ignored when it's set + # -- Affinity for pods assignment + # @section -- Prometheus parameters + affinity: {} + persistence: + enabled: true + accessModes: + - ReadWriteOnce + size: 20Gi +## kafka +## ref: https://github.com/bitnami/charts/blob/main/bitnami/kafka/values.yaml +## +kafka: + kraft: + clusterId: h4U35I9QRnGhbgsEQAlXAw + controller: + resources: + requests: + memory: 400Mi + cpu: 200m + limits: + memory: 3Gi + cpu: 1000m + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra labels for pods + # @section -- Kafka parameters + podLabels: {} + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + # -- Extra annotations for pods + # @section -- Kafka parameters + podAnnotations: {} + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ + # -- Node labels for pods assignment + # @section -- Kafka parameters + nodeSelector: {} + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + # -- Tolerations for pods assignment + # @section -- Kafka parameters + tolerations: [] + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## NOTE: `controller.podAffinityPreset`, `controller.podAntiAffinityPreset`, and `controller.nodeAffinityPreset` will be ignored when it's set + # -- Affinity for pods assignment + # @section -- Kafka parameters + affinity: {} + persistence: + enabled: true + accessModes: + - ReadWriteOnce + size: 80Gi + listeners: + client: + protocol: PLAINTEXT + interbroker: + protocol: PLAINTEXT + external: + protocol: PLAINTEXT + controller: + protocol: PLAINTEXT + extraConfig: | + log.retention.check.interval.ms = 100000 + log.roll.ms = 500000 + log.retention.minutes = 10 + service: + ports: + client: 9092 + controller: 9093 +debug: + enabled: false + pullSecrets: [] + kafkaUi: + image: + registry: docker.io + repository: provectuslabs/kafka-ui + tag: v0.7.1 + ## Specify a imagePullPolicy + ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' + ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images + ## + pullPolicy: IfNotPresent + port: 8080 + + redisCommander: + image: + registry: docker.io + repository: rediscommander/redis-commander + tag: latest + ## Specify a imagePullPolicy + ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' + ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images + ## + pullPolicy: IfNotPresent + port: 8081 + + pgadmin: + image: + registry: docker.io + repository: dpage/pgadmin4 + tag: latest + ## Specify a imagePullPolicy + ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' + ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images + ## + pullPolicy: IfNotPresent + port: 8082 + env: #todo shay + - name: PGADMIN_DEFAULT_EMAIL + value: "admin@admin.com" + - name: PGADMIN_DEFAULT_PASSWORD + value: "admin" + +presets: + small: + collectorWorker: + replicas: 1 + measurementAnalysis: + replicas: 1 + pipelineWorker: + replicas: 1 + medium: + collectorWorker: + replicas: 4 + measurementAnalysis: + replicas: 4 + pipelineWorker: + replicas: 1 + large: + collectorWorker: + replicas: 6 + measurementAnalysis: + replicas: 4 + pipelineWorker: + replicas: 4 + + + diff --git a/scripts/generate-docs.sh b/scripts/generate-docs.sh new file mode 100755 index 00000000..ac563012 --- /dev/null +++ b/scripts/generate-docs.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# Ensure helm-docs is installed +if ! command -v helm-docs &> /dev/null; then + echo "helm-docs not installed. Install it using 'brew install helm-docs'." + exit 1 +fi + +# Set the chart directories (update the path as needed) +CHARTS_DIR="charts" + +# Generate docs for each chart +for chart in $(find $CHARTS_DIR -type f -name "Chart.yaml" -exec dirname {} \;); do + echo "Generating docs for $chart..." + helm-docs --chart-search-root "$chart" -s file --ignore-non-descriptions +done + +echo "Helm docs generation complete." \ No newline at end of file diff --git a/src/deployment_setup.sh b/src/deployment_setup.sh deleted file mode 100755 index 0e658236..00000000 --- a/src/deployment_setup.sh +++ /dev/null @@ -1,10 +0,0 @@ -LICENSE_KEY='' -ANALYTICS_API_SECURED="'true'" -ACCESS_TOKEN='' - -FILE="rendered-deployment.yaml" - -sed -i'' -e "s|\${LICENSE_KEY}|${LICENSE_KEY}|g" "$FILE" -sed -i'' -e "s|\${ANALYTICS_API_SECURED}|${ANALYTICS_API_SECURED}|g" "$FILE" -sed -i'' -e "s|\${ACCESS_TOKEN}|${ACCESS_TOKEN}|g" "$FILE" - diff --git a/src/digma-configs/aws-internal.yaml b/src/digma-configs/aws-internal.yaml deleted file mode 100644 index 02878066..00000000 --- a/src/digma-configs/aws-internal.yaml +++ /dev/null @@ -1,17 +0,0 @@ -digmaAnalytics: - service: - annotations: - service.beta.kubernetes.io/aws-load-balancer-scheme: internal - # any other annotation can be declared here. - -digmaCollectorApi: - service: - annotations: - service.beta.kubernetes.io/aws-load-balancer-scheme: internal - # any other annotation can be declared here. - -embeddedJaeger: - service: - annotations: - service.beta.kubernetes.io/aws-load-balancer-scheme: internal - # any other annotation can be declared here. diff --git a/src/digma-configs/aws-internet.yaml b/src/digma-configs/aws-internet.yaml deleted file mode 100644 index cb6d4caa..00000000 --- a/src/digma-configs/aws-internet.yaml +++ /dev/null @@ -1,17 +0,0 @@ -digmaAnalytics: - service: - annotations: - service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing - # any other annotation can be declared here. - -digmaCollectorApi: - service: - annotations: - service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing - # any other annotation can be declared here. - -embeddedJaeger: - service: - annotations: - service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing - # any other annotation can be declared here. diff --git a/src/digma-configs/gcp-internal.yaml b/src/digma-configs/gcp-internal.yaml deleted file mode 100644 index 5667ec43..00000000 --- a/src/digma-configs/gcp-internal.yaml +++ /dev/null @@ -1,29 +0,0 @@ -digmaAnalytics: - service: - annotations: - # create internal LB. More information: https://cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balancing - # for GKE versions 1.17 and later - networking.gke.io/load-balancer-type: "Internal" - # for earlier versions - # cloud.google.com/load-balancer-type: "Internal" - # any other annotation can be declared here. - -digmaCollectorApi: - service: - annotations: - # create internal LB. More information: https://cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balancing - # for GKE versions 1.17 and later - networking.gke.io/load-balancer-type: "Internal" - # for earlier versions - # cloud.google.com/load-balancer-type: "Internal" - # any other annotation can be declared here. - -embeddedJaeger: - service: - annotations: - # create internal LB. More information: https://cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balancing - # for GKE versions 1.17 and later - networking.gke.io/load-balancer-type: "Internal" - # for earlier versions - # cloud.google.com/load-balancer-type: "Internal" - # any other annotation can be declared here. diff --git a/src/digma-configs/gcp-internet.yaml b/src/digma-configs/gcp-internet.yaml deleted file mode 100644 index c5a95469..00000000 --- a/src/digma-configs/gcp-internet.yaml +++ /dev/null @@ -1,17 +0,0 @@ -digmaAnalytics: - service: - annotations: - networking.gke.io/load-balancer-type: "External" - # any other annotation can be declared here. - -digmaCollectorApi: - service: - annotations: - networking.gke.io/load-balancer-type: "External" - # any other annotation can be declared here. - -embeddedJaeger: - service: - annotations: - networking.gke.io/load-balancer-type: "External" - # any other annotation can be declared here. \ No newline at end of file diff --git a/src/digma/.helmignore b/src/digma/.helmignore deleted file mode 100644 index 0e8a0eb3..00000000 --- a/src/digma/.helmignore +++ /dev/null @@ -1,23 +0,0 @@ -# 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/src/digma/Chart.yaml b/src/digma/Chart.yaml deleted file mode 100644 index 0be7ff36..00000000 --- a/src/digma/Chart.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: v2 -# version: this Chart version -version: 1.0.254 -name: digma -description: A Helm chart containing Digma's services and dbs -home: https://github.com/digma-ai/digma -type: application -# appVersion: digma version (affects image tag) -appVersion: 0.3.153 diff --git a/src/digma/README.md b/src/digma/README.md deleted file mode 100644 index 4b087a1b..00000000 --- a/src/digma/README.md +++ /dev/null @@ -1,2 +0,0 @@ -### Digma-Chart - diff --git a/src/digma/templates/NOTES.txt b/src/digma/templates/NOTES.txt deleted file mode 100644 index 5f77c3e1..00000000 --- a/src/digma/templates/NOTES.txt +++ /dev/null @@ -1,20 +0,0 @@ -Next steps: - -1.1 To get DIGMA API external endpoint address please run command: - run command: "kubectl get service {{.Release.Namespace}}-analytics-service-lb -n {{.Release.Namespace}} -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'" - -1.2 Copy the DIGMA API endpoint "https://:5051" and set it as the url in the Digma's IDE api (IntelliJ) settings. -{{ if .Values.digmaCollectorApi.expose }} -2.1 You configured Digma OTEL Collector with external DNS. To get Collector OTEL external endpoint address please run command: - run command: "kubectl get service {{ .Release.Name }}-collector-api-service-lb -n {{.Release.Namespace}} -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'" - -2.2. Add Digma's collector endpoint "http://>:5050" in your app or OTLP collector config file. -{{ else }} -2. Add Digma's collector endpoint "http://{{ tpl .Values.digmaCollectorApi.host . }}.{{.Release.Namespace}}:5050" in your app or OTLP collector config file. -{{ end }} -{{ if .Values.embeddedJaeger.enabled }} -3.1 To get Jaeger Query external endpoint address please run command: - run command: "kubectl get service {{.Release.Namespace}}-embedded-jaeger-lb -n {{.Release.Namespace}} -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'" - -3.2. Add Jaeger's endpoint "http(or https)://:17686" to Digma's IDE 'Jaeger Query URL(for embedded mode)' settings. -{{ end }} diff --git a/src/digma/templates/_helpers.tpl b/src/digma/templates/_helpers.tpl deleted file mode 100644 index fa43ad26..00000000 --- a/src/digma/templates/_helpers.tpl +++ /dev/null @@ -1,121 +0,0 @@ -{{- define "env.digmaEnv" -}} -- name: DEPLOYMENT_ENV - value: {{ .Values.digma.environmentName }} -{{- end -}} - - -{{- define "env.digmaSite" -}} -- name: Site - value: {{ .Values.digma.siteName }} -{{- end -}} - - -{{- define "env.postgres" -}} -- name: ConnectionStrings__Postgres - value: {{ printf "Server=%s;Port=%v;Database=digma_analytics;User Id=%s;Password=%s;" ( tpl .Values.postgres.host . ) .Values.postgres.port .Values.postgres.username .Values.postgres.password}} -{{- end -}} - - -{{- define "env.kafka" -}} -- name: Kafka__Urls__0 - value: {{ tpl .Values.kafka.host . }}:9092 -{{- end -}} - - -{{- define "env.redis" -}} -- name: CacheSettings__RedisConnection - value: {{ tpl .Values.redis.host . }} -- name: ExternalLogging__ConnectionString - value: {{ tpl .Values.redis.host . }} -{{- end -}} - - -{{- define "env.influx" -}} -- name: influx2__Url - value: {{ printf " http://%s:8086" (tpl .Values.influx.host .)}} -{{- end -}} - -{{- define "env.embeddedJaeger" -}} -{{- if .Values.embeddedJaeger.enabled -}} -- name: Jaeger__OtlpUrl - value: {{ printf " http://%s:4317" (tpl .Values.embeddedJaeger.host .)}} -{{- end -}} -{{- end -}} - -# Digma to meloona -{{- define "env.otlpExporter" -}} -- name: OtlpExporterUrl - value: {{ printf "http://%s-otel-collector:4317" (.Release.Name)}} -{{- end -}} - -{{- define "env.otlpExportTraces" -}} -- name: OtlpExportTraces - value: {{ quote .Values.digmaSelfDiagnosis.otlpExportTraces }} -{{- end -}} - - -{{- define "env.otlpExportMetrics" -}} -- name: OtlpExportMetrics - value: {{ quote .Values.digmaSelfDiagnosis.otlpExportMetrics }} -{{- end -}} - - -{{- define "env.otlpExportLogs" -}} -- name: OtlpExportLogs - value: {{ quote .Values.digmaSelfDiagnosis.otlpExportLogs }} -{{- end -}} - - -{{- define "env.otlpExporter2ElasticApm" -}} -- name: OtlpExporterUrl - value: {{ printf "http://%s:8200" (tpl .Values.elasticApmServer.host .)}} -{{- end -}} - - -{{- define "env.elasticsearch" -}} -- name: ElasticSearch - value: {{ printf " http://%s:9200" (tpl .Values.elasticsearch.host .)}} -{{- end -}} - - -{{- define "env.versions" -}} -- name: ApplicationVersion - value: {{.Chart.AppVersion}} -- name: ChartVersion - value: {{.Chart.Version}} -{{- end -}} - - - -{{- define "env.isCentralize" -}} -- name: IsCentralize - value: {{.Values.digma.isCentralize | quote}} -{{- end -}} - - -{{- define "env.licenseKey" -}} -- name: DIGMA_LICENSE_KEY - value: {{ required "A valid .Values.digma.licenseKey entry is required. If you've signed up for a free Digma account you should have received a Digma license to use. check https://docs.digma.ai/digma-developer-guide/installation/central-on-prem-install" .Values.digma.licenseKey }} -{{- end -}} - -{{- define "env.digmaEnvType" -}} -- name: DIGMA_ENV_TYPE - value: {{ .Values.digma.environmentType }} -{{- end -}} - -{{- define "imagePullSecrets" -}} -{{- if .Values.imagePullSecretName -}} -imagePullSecrets: -- name: {{ .Values.imagePullSecretName }} -{{- end -}} -{{- end -}} - -{{- define "tolerations" -}} -tolerations: - {{- toYaml .Values.tolerations | nindent 8 }} -{{- end -}} - -{{- define "nodeSelector" -}} -nodeSelector: - {{- toYaml .Values.nodeSelector | nindent 8 }} -{{- end -}} \ No newline at end of file diff --git a/src/digma/templates/debug-services.yaml b/src/digma/templates/debug-services.yaml deleted file mode 100644 index ab61228f..00000000 --- a/src/digma/templates/debug-services.yaml +++ /dev/null @@ -1,102 +0,0 @@ -{{ if .Values.debug }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ .Release.Name }}-debug-deployment - labels: - app: digma-debug-services - -spec: - replicas: 1 - selector: - matchLabels: - app: "digma-debug-services" - template: - metadata: - labels: - app: "digma-debug-services" - spec: - {{- include "imagePullSecrets" . | nindent 6 }} - {{- include "tolerations" . | nindent 6 }} - {{- include "nodeSelector" . | nindent 6 }} - containers: - - - name: kafka-ui - image: provectuslabs/kafka-ui:v0.7.1 - imagePullPolicy: Always - env: - - name: KAFKA_CLUSTERS_0_NAME - value: h4U35I9QRnGhbgsEQAlXAw - - name: KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS - value: {{ tpl .Values.kafka.host . }}:9092 - - - name: pgadmin - image: dpage/pgadmin4 - imagePullPolicy: Always - volumeMounts: - - name: pgadmin-data - mountPath: /var/lib/pgadmin - env: - - name: PGADMIN_LISTEN_PORT - value: "8080" - - name: PGADMIN_DEFAULT_EMAIL - value: {{ .Values.pgadmin.email }} - - name: PGADMIN_DEFAULT_PASSWORD - value: {{ .Values.pgadmin.password }} - - - name: redis-commander - image: rediscommander/redis-commander:latest - env: - - name: REDIS_HOSTS - value: {{ tpl .Values.redis.host . }} - - - name: elastic-apm-server - image: docker.elastic.co/apm/apm-server:7.13.0 - securityContext: - capabilities: - add: [CHOWN, DAC_OVERRIDE, SETGID, SETUID] - drop: [ALL] - args: - - apm-server - - -e - - -E - - apm-server.rum.enabled=true - - -E - - setup.kibana.host=localhost:5601 - - -E - - setup.template.settings.index.number_of_replicas=0 - - -E - - apm-server.kibana.enabled=true - - -E - - apm-server.kibana.host=localhost:5601 - - -E - - output.elasticsearch.hosts=[localhost:9200] - - - name: elasticsearch - image: docker.elastic.co/elasticsearch/elasticsearch:7.13.0 - volumeMounts: - - name: elasticsearch-data - mountPath: /usr/share/elasticsearch/data - env: - - name: xpack.monitoring.enabled - value: "true" - - name: xpack.watcher.enabled - value: "false" - - name: ES_JAVA_OPTS - value: -Xms512m -Xmx512m - - name: discovery.type - value: single-node - - - name: kibana - image: docker.elastic.co/kibana/kibana:7.13.0 - env: - - name: ELASTICSEARCH_HOSTS - value: http://localhost:9200 - - name: xpack.apm.enabled - value: "false" - volumes: - - name: pgadmin-data - emptyDir: {} - - name: elasticsearch-data - emptyDir: {} -{{ end }} \ No newline at end of file diff --git a/src/digma/templates/digma-analytics.yaml b/src/digma/templates/digma-analytics.yaml deleted file mode 100644 index 6b427a92..00000000 --- a/src/digma/templates/digma-analytics.yaml +++ /dev/null @@ -1,71 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ .Release.Name }}-analytics-deployment - labels: - app: digma-analytics -spec: - replicas: {{ .Values.digmaAnalytics.replicas }} - selector: - matchLabels: - app: digma-analytics - template: - metadata: - labels: - app: digma-analytics - {{- range $key, $value := .Values.digmaAnalytics.labels }} - {{ $key }}: {{ $value }} - {{- end }} - annotations: - {{- range $key, $value := .Values.digmaAnalytics.annotations }} - {{ $key }}: {{ $value }} - {{- end }} - spec: - {{- include "imagePullSecrets" . | nindent 6 }} - {{- include "tolerations" . | nindent 6 }} - {{- include "nodeSelector" . | nindent 6 }} - containers: - - name: digma-analytics - image: digmatic/digma-analytics:{{ .Chart.AppVersion }} - imagePullPolicy: Always - resources: - requests: - memory: {{ .Values.digmaAnalytics.resources.requests.memory }} - cpu: {{ .Values.digmaAnalytics.resources.requests.cpu }} - limits: - memory: {{ .Values.digmaAnalytics.resources.limits.memory }} - cpu: {{ .Values.digmaAnalytics.resources.limits.cpu }} - ports: - - containerPort: 5051 - env: - {{- include "env.isCentralize" . | nindent 8 }} - {{- include "env.licenseKey" . | nindent 8 }} - {{- include "env.digmaEnv" . | nindent 8 }} - {{- include "env.digmaSite" . | nindent 8 }} - {{- include "env.redis" . | nindent 8 }} - {{- include "env.influx" . | nindent 8 }} - {{- include "env.kafka" . | nindent 8 }} - {{- include "env.postgres" . | nindent 8 }} - {{- include "env.otlpExporter" . | nindent 8 }} - {{- include "env.otlpExportLogs" . | nindent 8 }} - {{- include "env.otlpExportMetrics" . | nindent 8 }} - {{- include "env.otlpExportTraces" . | nindent 8 }} - {{- include "env.versions" . | nindent 8 }} - {{- include "env.digmaEnvType" . | nindent 8 }} -{{ if .Values.debug }} - {{- include "env.elasticsearch" . | nindent 8 }} -{{ end }} - - name: OtlpSamplerProbability - value: {{ .Values.digmaSelfDiagnosis.otlpSamplerProbability| quote }} - - name: BACKEND_DEPLOYMENT_TYPE - value: {{ .Values.deploymentType | quote }} - - name: GlobalExceptionSettings__ExposeInternalDetails - value: {{ .Values.exposeInternalErrorDetails | quote }} - - name: AccessToken - value: {{ .Values.digmaAnalytics.accesstoken | quote }} - - name: Analytics.Endpoints__Default__Secured - value: {{ .Values.digmaAnalytics.secured | quote }} - - name: CollectorUrl - value: {{ printf " http://%s:5048" (tpl .Values.digmaCollectorApi.host .)}} - - diff --git a/src/digma/templates/digma-collector-api.yaml b/src/digma/templates/digma-collector-api.yaml deleted file mode 100644 index 5cb35c68..00000000 --- a/src/digma/templates/digma-collector-api.yaml +++ /dev/null @@ -1,63 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ .Release.Name }}-collector-deployment - labels: - app: digma-collector-api -spec: - replicas: 1 - selector: - matchLabels: - app: digma-collector-api - template: - metadata: - labels: - app: digma-collector-api - {{- range $key, $value := .Values.digmaCollectorApi.labels }} - {{ $key }}: {{ $value }} - {{- end }} - annotations: - {{- range $key, $value := .Values.digmaCollectorApi.annotations }} - {{ $key }}: {{ $value }} - {{- end }} - spec: - {{- include "imagePullSecrets" . | nindent 6 }} - {{- include "tolerations" . | nindent 6 }} - {{- include "nodeSelector" . | nindent 6 }} - containers: - - name: digma-collector-api - image: digmatic/digma-collector:{{ .Chart.AppVersion }} - imagePullPolicy: Always - resources: - requests: - memory: {{ .Values.digmaCollectorApi.resources.requests.memory }} - cpu: {{ .Values.digmaCollectorApi.resources.requests.cpu }} - limits: - memory: {{ .Values.digmaCollectorApi.resources.limits.memory }} - cpu: {{ .Values.digmaCollectorApi.resources.limits.cpu }} - ports: - - containerPort: 5048 - - containerPort: 5049 - - containerPort: 5050 - env: - {{- include "env.isCentralize" . | nindent 8 }} - {{- include "env.licenseKey" . | nindent 8 }} - {{- include "env.digmaEnv" . | nindent 8 }} - {{- include "env.digmaSite" . | nindent 8 }} - {{- include "env.postgres" . | nindent 8 }} - {{- include "env.redis" . | nindent 8 }} - {{- include "env.kafka" . | nindent 8 }} - {{- include "env.otlpExporter" . | nindent 8 }} - {{- include "env.otlpExportLogs" . | nindent 8 }} - {{- include "env.otlpExportMetrics" . | nindent 8 }} - {{- include "env.otlpExportTraces" . | nindent 8 }} - {{- include "env.versions" . | nindent 8 }} - {{- include "env.embeddedJaeger" . | nindent 8 }} - {{- include "env.digmaEnvType" . | nindent 8 }} -{{ if .Values.debug }} - {{- include "env.elasticsearch" . | nindent 8 }} -{{ end }} - - name: OtlpSamplerProbability - value: {{ .Values.digmaSelfDiagnosis.otlpSamplerProbability| quote}} - - name: BACKEND_DEPLOYMENT_TYPE - value: {{ .Values.deploymentType | quote}} diff --git a/src/digma/templates/digma-collector-worker.yaml b/src/digma/templates/digma-collector-worker.yaml deleted file mode 100644 index 2536aa9c..00000000 --- a/src/digma/templates/digma-collector-worker.yaml +++ /dev/null @@ -1,77 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ .Release.Name }}-collector-worker-deployment - labels: - app: digma-collector-worker -spec: - replicas: {{ tpl .Values.digmaCollectorWorker.replicas . }} - selector: - matchLabels: - app: digma-collector-worker - template: - metadata: - labels: - app: digma-collector-worker - {{- range $key, $value := .Values.digmaCollectorWorker.labels }} - {{ $key }}: {{ $value }} - {{- end }} - annotations: - {{- range $key, $value := .Values.digmaCollectorWorker.annotations }} - {{ $key }}: {{ $value }} - {{- end }} - spec: - {{- include "imagePullSecrets" . | nindent 6 }} - {{- include "tolerations" . | nindent 6 }} - {{- include "nodeSelector" . | nindent 6 }} - affinity: - {{- toYaml .Values.digmaCollectorWorker.affinity | nindent 8 }} - containers: - - name: digma-collector-worker - image: digmatic/digma-collector-worker:{{ .Chart.AppVersion }} - imagePullPolicy: Always - resources: - requests: - memory: {{ .Values.digmaCollectorWorker.resources.requests.memory }} - cpu: {{ .Values.digmaCollectorWorker.resources.requests.cpu }} - limits: - memory: {{ .Values.digmaCollectorWorker.resources.limits.memory }} - cpu: {{ .Values.digmaCollectorWorker.resources.limits.cpu }} - env: - {{- include "env.isCentralize" . | nindent 8 }} - {{- include "env.licenseKey" . | nindent 8 }} - {{- include "env.digmaEnv" . | nindent 8 }} - {{- include "env.digmaSite" . | nindent 8 }} - {{- include "env.otlpExporter" . | nindent 8 }} - {{- include "env.otlpExportLogs" . | nindent 8 }} - {{- include "env.otlpExportMetrics" . | nindent 8 }} - {{- include "env.otlpExportTraces" . | nindent 8 }} - {{- include "env.redis" . | nindent 8 }} - {{- include "env.influx" . | nindent 8 }} - {{- include "env.postgres" . | nindent 8 }} - {{- include "env.kafka" . | nindent 8 }} - {{- include "env.versions" . | nindent 8 }} - {{- include "env.embeddedJaeger" . | nindent 8 }} - {{- include "env.digmaEnvType" . | nindent 8 }} - - name: BlockedTrace__TraceSpansLimit - value: "3000" - - name: OtlpSamplerProbability - value: {{ .Values.digmaSelfDiagnosis.otlpSamplerProbability| quote}} - - name: BACKEND_DEPLOYMENT_TYPE - value: {{ .Values.deploymentType | quote}} - - name: TraceTempStorage__TraceForJaegerExpirationInMinutes - value: {{ .Values.digmaCollectorWorker.traceForJaegerTTL | quote }} - - name: ExtendedObservability__Enable - value: {{ .Values.digmaCollectorWorker.extendedObservability.enable | quote }} - - name: Sampling__Enable - value: {{ .Values.digmaCollectorWorker.sampling.enable | quote }} - {{- range $index, $element := .Values.digmaCollectorWorker.ignoreEndpoints }} - - name: Filter__IgnoreEndpoints__{{$index}}__Route - value: {{ $element.Route | quote }} - - name: Filter__IgnoreEndpoints__{{$index}}__RouteRegex - value: {{ $element.RouteRegex | quote }} - - name: Filter__IgnoreEndpoints__{{$index}}__Method - value: {{ $element.Method | quote }} - - name: Filter__IgnoreEndpoints__{{$index}}__Service - value: {{ $element.Service | quote }} - {{- end }} \ No newline at end of file diff --git a/src/digma/templates/digma-elasticsearch.yaml b/src/digma/templates/digma-elasticsearch.yaml deleted file mode 100644 index 1ab767d8..00000000 --- a/src/digma/templates/digma-elasticsearch.yaml +++ /dev/null @@ -1,93 +0,0 @@ -{{- if eq .Values.embeddedJaeger.storage "elasticsearch" }} -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: {{ .Release.Name }}-elasticsearch-stateful-set - labels: - app: {{ .Release.Name }}-elasticsearch -spec: - serviceName: {{ .Release.Name }}-elasticsearch - replicas: 1 - selector: - matchLabels: - app: {{ .Release.Name }}-elasticsearch - template: - metadata: - labels: - app: {{ .Release.Name }}-elasticsearch - {{- range $key, $value := .Values.elastic.labels }} - {{ $key }}: {{ $value }} - {{- end }} - annotations: - {{- range $key, $value := .Values.elastic.annotations }} - {{ $key }}: {{ $value }} - {{- end }} - spec: - terminationGracePeriodSeconds: 5 - {{- include "imagePullSecrets" . | nindent 6 }} - {{- include "tolerations" . | nindent 6 }} - {{- include "nodeSelector" . | nindent 6 }} - securityContext: - fsGroup: 1000 - containers: - - name: elasticsearch - image: "elasticsearch:{{ .Values.elastic.imageTag }}" - imagePullPolicy: Always - args: - {{- range .Values.elastic.args }} - - {{ . }} - {{- end }} - ports: - - containerPort: 9200 - name: http - env: - - name: xpack.security.enabled - value: "false" - - name: xpack.security.transport.ssl.enabled - value: "false" - - name: discovery.type - value: "single-node" - - name: ES_JAVA_OPTS - value: "-server -Xms1G -Xmx2G" - resources: - requests: - memory: "{{ .Values.elastic.resources.requests.memory }}" - cpu: "{{ .Values.elastic.resources.requests.cpu }}" - limits: - memory: "{{ .Values.elastic.resources.limits.memory }}" - cpu: "{{ .Values.elastic.resources.limits.cpu }}" - volumeMounts: - - name: data - mountPath: /usr/share/elasticsearch/data - - name: data - mountPath: /usr/share/elasticsearch/logs - volumeClaimTemplates: - - metadata: - name: data - labels: - app: {{ .Release.Name }}-elasticsearch - spec: - accessModes: [ "ReadWriteOnce" ] - resources: - requests: - storage: {{ .Values.elastic.storage }} - ---- - -apiVersion: v1 -kind: Service -metadata: - name: {{ .Release.Name }}-elasticsearch - labels: - app: {{ .Release.Name }}-elasticsearch -spec: - type: ClusterIP - ports: - - port: 9200 - targetPort: 9200 - protocol: TCP - name: http - selector: - app: {{ .Release.Name }}-elasticsearch - -{{- end }} \ No newline at end of file diff --git a/src/digma/templates/digma-measurement-analysis.yaml b/src/digma/templates/digma-measurement-analysis.yaml deleted file mode 100644 index f33e1681..00000000 --- a/src/digma/templates/digma-measurement-analysis.yaml +++ /dev/null @@ -1,71 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ .Release.Name }}-measurement-analysis-deployment - labels: - app: digma-measurement-analysis -spec: - replicas: {{ tpl .Values.digmaMeasurementAnalysis.replicas . }} - selector: - matchLabels: - app: digma-measurement-analysis - template: - metadata: - labels: - app: digma-measurement-analysis - {{- range $key, $value := .Values.digmaMeasurementAnalysis.labels }} - {{ $key }}: {{ $value }} - {{- end }} - annotations: - {{- range $key, $value := .Values.digmaMeasurementAnalysis.annotations }} - {{ $key }}: {{ $value }} - {{- end }} - spec: - {{- include "imagePullSecrets" . | nindent 6 }} - {{- include "tolerations" . | nindent 6 }} - {{- include "nodeSelector" . | nindent 6 }} - affinity: - {{- toYaml .Values.digmaMeasurementAnalysis.affinity | nindent 8 }} - containers: - - name: digma-measurement-analysis - image: digmatic/digma-measurement-analysis:{{ .Chart.AppVersion }} - imagePullPolicy: Always - resources: - requests: - memory: {{ .Values.digmaMeasurementAnalysis.resources.requests.memory }} - cpu: {{ .Values.digmaMeasurementAnalysis.resources.requests.cpu }} - limits: - memory: {{ .Values.digmaMeasurementAnalysis.resources.limits.memory }} - cpu: {{ .Values.digmaMeasurementAnalysis.resources.limits.cpu }} - env: - {{- include "env.isCentralize" . | nindent 8 }} - {{- include "env.licenseKey" . | nindent 8 }} - {{- include "env.digmaEnv" . | nindent 8 }} - {{- include "env.digmaSite" . | nindent 8 }} - {{- include "env.redis" . | nindent 8 }} - {{- include "env.influx" . | nindent 8 }} - {{- include "env.postgres" . | nindent 8 }} - {{- include "env.kafka" . | nindent 8 }} - {{- include "env.otlpExporter" . | nindent 8 }} - {{- include "env.otlpExportLogs" . | nindent 8 }} - {{- include "env.otlpExportMetrics" . | nindent 8 }} - {{- include "env.otlpExportTraces" . | nindent 8 }} - {{- include "env.versions" . | nindent 8 }} - {{- include "env.embeddedJaeger" . | nindent 8 }} - {{- include "env.digmaEnvType" . | nindent 8 }} - - name: OtlpSamplerProbability - value: {{ .Values.digmaSelfDiagnosis.otlpSamplerProbability| quote}} - - name: BACKEND_DEPLOYMENT_TYPE - value: {{ .Values.deploymentType | quote}} - - name: ThresholdOptions__RecentActivityUpdateThresholdSeconds - value: {{ .Values.traceCollectorThresholds.recentActivityUpdateThresholdSeconds | quote }} - - name: ThresholdOptions__UpsertEndpointThresholdSeconds - value: {{ .Values.traceCollectorThresholds.upsertEndpointThresholdSeconds | quote }} - - name: ThresholdOptions__UpsertSpansThresholdSeconds - value: {{ .Values.traceCollectorThresholds.upsertSpansThresholdSeconds | quote }} - - name: ThresholdOptions__UpsertSpanFlowMetadataThresholdSeconds - value: {{ .Values.traceCollectorThresholds.upsertSpanFlowMetadataThresholdSeconds | quote }} - - name: Kafka__SpanUpsertCG__Workers - value: '2' - - name: Kafka__AllMeasurementsCG__Workers - value: '2' \ No newline at end of file diff --git a/src/digma/templates/digma-pipeline-worker.yaml b/src/digma/templates/digma-pipeline-worker.yaml deleted file mode 100644 index 71ba5257..00000000 --- a/src/digma/templates/digma-pipeline-worker.yaml +++ /dev/null @@ -1,59 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ .Release.Name }}-pipeline-worker-deployment - labels: - app: digma-pipeline-worker -spec: - replicas: {{ tpl .Values.digmaPipelineWorker.replicas . }} - selector: - matchLabels: - app: digma-pipeline-worker - template: - metadata: - labels: - app: digma-pipeline-worker - {{- range $key, $value := .Values.digmaPipelineWorker.labels }} - {{ $key }}: {{ $value }} - {{- end }} - annotations: - {{- range $key, $value := .Values.digmaPipelineWorker.annotations }} - {{ $key }}: {{ $value }} - {{- end }} - spec: - {{- include "imagePullSecrets" . | nindent 6 }} - {{- include "tolerations" . | nindent 6 }} - {{- include "nodeSelector" . | nindent 6 }} - affinity: - {{- toYaml .Values.digmaPipelineWorker.affinity | nindent 8 }} - containers: - - name: digma-pipeline-worker - image: digmatic/digma-pipeline-worker:{{ .Chart.AppVersion }} - imagePullPolicy: Always - resources: - requests: - memory: {{ .Values.digmaPipelineWorker.resources.requests.memory }} - cpu: {{ .Values.digmaPipelineWorker.resources.requests.cpu }} - limits: - memory: {{ .Values.digmaPipelineWorker.resources.limits.memory }} - cpu: {{ .Values.digmaPipelineWorker.resources.limits.cpu }} - env: - {{- include "env.isCentralize" . | nindent 8 }} - {{- include "env.licenseKey" . | nindent 8 }} - {{- include "env.digmaEnv" . | nindent 8 }} - {{- include "env.digmaSite" . | nindent 8 }} - {{- include "env.otlpExporter" . | nindent 8 }} - {{- include "env.otlpExportLogs" . | nindent 8 }} - {{- include "env.otlpExportMetrics" . | nindent 8 }} - {{- include "env.otlpExportTraces" . | nindent 8 }} - {{- include "env.redis" . | nindent 8 }} - {{- include "env.influx" . | nindent 8 }} - {{- include "env.postgres" . | nindent 8 }} - {{- include "env.kafka" . | nindent 8 }} - {{- include "env.versions" . | nindent 8 }} - {{- include "env.embeddedJaeger" . | nindent 8 }} - {{- include "env.digmaEnvType" . | nindent 8 }} - - name: OtlpSamplerProbability - value: {{ .Values.digmaSelfDiagnosis.otlpSamplerProbability| quote}} - - name: BACKEND_DEPLOYMENT_TYPE - value: {{ .Values.deploymentType | quote }} \ No newline at end of file diff --git a/src/digma/templates/digma-scheduler.yaml b/src/digma/templates/digma-scheduler.yaml deleted file mode 100644 index e5f426f4..00000000 --- a/src/digma/templates/digma-scheduler.yaml +++ /dev/null @@ -1,67 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ .Release.Name }}-scheduler-deployment - labels: - app: digma-scheduler -spec: - replicas: 1 - selector: - matchLabels: - app: digma-scheduler - template: - metadata: - labels: - app: digma-scheduler - {{- range $key, $value := .Values.digmaScheduler.labels }} - {{ $key }}: {{ $value }} - {{- end }} - annotations: - {{- range $key, $value := .Values.digmaScheduler.annotations }} - {{ $key }}: {{ $value }} - {{- end }} - spec: - {{- include "imagePullSecrets" . | nindent 6 }} - {{- include "tolerations" . | nindent 6 }} - {{- include "nodeSelector" . | nindent 6 }} - containers: - - name: digma-scheduler - image: digmatic/digma-scheduler:{{ .Chart.AppVersion }} - imagePullPolicy: Always - resources: - requests: - memory: {{ .Values.digmaScheduler.resources.requests.memory }} - cpu: {{ .Values.digmaScheduler.resources.requests.cpu }} - limits: - memory: {{ .Values.digmaScheduler.resources.limits.memory }} - cpu: {{ .Values.digmaScheduler.resources.limits.cpu }} - ports: - - containerPort: 5053 - env: - {{- include "env.isCentralize" . | nindent 8 }} - {{- include "env.licenseKey" . | nindent 8 }} - {{- include "env.digmaEnv" . | nindent 8 }} - {{- include "env.digmaSite" . | nindent 8 }} - {{- include "env.redis" . | nindent 8 }} - {{- include "env.influx" . | nindent 8 }} - {{- include "env.postgres" . | nindent 8 }} - {{- include "env.kafka" . | nindent 8 }} - {{- include "env.otlpExporter" . | nindent 8 }} - {{- include "env.otlpExportLogs" . | nindent 8 }} - {{- include "env.otlpExportMetrics" . | nindent 8 }} - {{- include "env.otlpExportTraces" . | nindent 8 }} - {{- include "env.versions" . | nindent 8 }} - {{- include "env.digmaEnvType" . | nindent 8 }} -{{ if .Values.debug }} - {{- include "env.elasticsearch" . | nindent 8 }} -{{ end }} - - name: OtlpSamplerProbability - value: {{ .Values.digmaSelfDiagnosis.otlpSamplerProbability| quote}} - - name: BACKEND_DEPLOYMENT_TYPE - value: {{ .Values.deploymentType | quote}} -{{- if eq .Values.embeddedJaeger.storage "elasticsearch" }} - - name: ElasticSearch__Uri - value: http://{{ .Release.Name }}-elasticsearch:9200 -{{- end }} - - diff --git a/src/digma/templates/embedded-jaeger.yaml b/src/digma/templates/embedded-jaeger.yaml deleted file mode 100644 index 397b140d..00000000 --- a/src/digma/templates/embedded-jaeger.yaml +++ /dev/null @@ -1,108 +0,0 @@ -{{- if .Values.embeddedJaeger.enabled }} - -{{- if eq .Values.embeddedJaeger.storage "badger" }} -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: {{ .Release.Name }}-embedded-jaeger-stateful-set-persisted - labels: - app: embedded-jaeger -spec: - serviceName: {{ tpl .Values.embeddedJaeger.host . }} - replicas: 1 - selector: - matchLabels: - app: embedded-jaeger - template: - metadata: - labels: - app: embedded-jaeger - {{- range $key, $value := .Values.embeddedJaeger.labels }} - {{ $key }}: {{ $value }} - {{- end }} - annotations: - {{- range $key, $value := .Values.embeddedJaeger.annotations }} - {{ $key }}: {{ $value }} - {{- end }} - spec: - terminationGracePeriodSeconds: 5 - {{- include "imagePullSecrets" . | nindent 6 }} - {{- include "tolerations" . | nindent 6 }} - {{- include "nodeSelector" . | nindent 6 }} - containers: - - name: embedded-jaeger - image: jaegertracing/all-in-one:1.44.0 - imagePullPolicy: Always - args: ["--query.additional-headers", "Access-Control-Allow-Origin: *"] - env: - - name: SPAN_STORAGE_TYPE - value: badger - - name: COLLECTOR_OTLP_ENABLED - value: "true" - - name: BADGER_EPHEMERAL - value: "false" - - name: BADGER_DIRECTORY_VALUE - value: "/badger/data" - - name: BADGER_DIRECTORY_KEY - value: "/badger/key" - - name: BADGER_SPAN_STORE_TTL - value: "336h0m0s" # BADGER store ttl default is 72h - - name: COLLECTOR_OTLP_GRPC_MAX_MESSAGE_SIZE - value: "41943040" - volumeMounts: - - name: badger-data - mountPath: /badger - volumeClaimTemplates: - - metadata: - name: badger-data - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: {{ .Values.embeddedJaeger.volumeSize | default "20Gi" }} -{{- else if eq .Values.embeddedJaeger.storage "elasticsearch" }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ .Release.Name }}-embedded-jaeger - labels: - app: embedded-jaeger -spec: - serviceName: {{ tpl .Values.embeddedJaeger.host . }} - replicas: 1 - selector: - matchLabels: - app: embedded-jaeger - template: - metadata: - labels: - app: embedded-jaeger - spec: - initContainers: - - name: wait-for-elasticsearch - imagePullPolicy: Always - image: busybox:1.28 - command: [ 'sh', '-c', 'until nc -z {{ .Release.Name }}-elasticsearch 9200; do echo waiting for elasticsearch; sleep 5; done;' ] - containers: - - name: embedded-jaeger - image: jaegertracing/all-in-one:{{ .Values.embeddedJaeger.imageTag }} - imagePullPolicy: Always - args: - - "--query.additional-headers Access-Control-Allow-Origin: *" - {{- range .Values.embeddedJaeger.args }} - - {{ . }} - {{- end }} - env: - - name: SPAN_STORAGE_TYPE - value: elasticsearch - - name: ES_SERVER_URLS - value: "http://{{ .Release.Name }}-elasticsearch:9200" - - name: ES_INDEX_PREFIX - value: "digma" - - name: COLLECTOR_OTLP_ENABLED - value: "true" - - name: COLLECTOR_OTLP_GRPC_MAX_MESSAGE_SIZE - value: "41943040" -{{- end }} -{{- end }} diff --git a/src/digma/templates/external-network.yaml b/src/digma/templates/external-network.yaml deleted file mode 100644 index 362b4be2..00000000 --- a/src/digma/templates/external-network.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{ if .Values.digmaAnalytics.loadbalancer }} -kind: Service -apiVersion: v1 -metadata: - name: {{ .Release.Name }}-analytics-service-lb - {{- if and .Values.digmaAnalytics.service .Values.digmaAnalytics.service.annotations }} - annotations: - {{ toYaml .Values.digmaAnalytics.service.annotations | indent 4 }} - {{- end }} -spec: - type: LoadBalancer - selector: - app: "digma-analytics" - ports: - - name: analytics - protocol: TCP - port: 5051 ---- -{{ end }} - -{{ if .Values.digmaCollectorApi.loadbalancer }} -kind: Service -apiVersion: v1 -metadata: - name: {{ .Release.Name }}-collector-api-service-lb - {{- if and .Values.digmaCollectorApi.service .Values.digmaCollectorApi.service.annotations }} - annotations: - {{ toYaml .Values.digmaCollectorApi.service.annotations | indent 4 }} - {{- end }} -spec: - type: LoadBalancer - selector: - app: "digma-collector-api" - ports: - - name: http - protocol: TCP - port: 5049 - - name: grpc - protocol: TCP - port: 5050 ---- -{{ end }} - -{{ if and (eq .Values.embeddedJaeger.enabled true) (eq .Values.embeddedJaeger.loadbalancer true) }} -apiVersion: v1 -kind: Service -metadata: - name: {{ .Release.Name }}-embedded-jaeger-lb - {{- if and .Values.embeddedJaeger.service .Values.embeddedJaeger.service.annotations }} - annotations: - {{ toYaml .Values.embeddedJaeger.service.annotations | indent 4 }} - {{- end }} -spec: - type: LoadBalancer - selector: - app: "embedded-jaeger" - ports: - - name: api - port: 17686 - protocol: TCP - targetPort: 16686 ---- -{{ end }} \ No newline at end of file diff --git a/src/digma/templates/grafana.yaml b/src/digma/templates/grafana.yaml deleted file mode 100644 index 524d4663..00000000 --- a/src/digma/templates/grafana.yaml +++ /dev/null @@ -1,115 +0,0 @@ -{{- if eq .Values.digmaSelfDiagnosis.otlpExporterEndpoint "local" }} - -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-grafana-config -data: - datasources-yml: | - apiVersion: 1 - datasources: - - name: Prometheus - type: prometheus - url: {{ printf "http://%s-prometheus:9090" (.Release.Name)}} - isDefault: true - access: proxy - editable: true - uid: prometheusdatasource - - dashboards-yml: | - apiVersion: 1 - providers: - - name: "Dashboard provider" - orgId: 1 - type: file - disableDeletion: false - updateIntervalSeconds: 10 - allowUiUpdates: true - options: - path: /var/lib/grafana/dashboards - foldersFromFilesStructure: true - -{{ (.Files.Glob "grafana-dashboards/*").AsConfig | indent 2 }} ---- - - -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ .Release.Name }}-grafana-deployment - labels: - app: grafana -spec: - replicas: 1 - selector: - matchLabels: - app: grafana - template: - metadata: - labels: - app: grafana - {{- range $key, $value := .Values.grafana.labels }} - {{ $key }}: {{ $value }} - {{- end }} - annotations: - {{- range $key, $value := .Values.grafana.annotations }} - {{ $key }}: {{ $value }} - {{- end }} - spec: - {{- include "imagePullSecrets" . | nindent 6 }} - {{- include "tolerations" . | nindent 6 }} - {{- include "nodeSelector" . | nindent 6 }} - volumes: - - name: grafana-provisioning - configMap: - name: {{ .Release.Name }}-grafana-config - items: - - key: "datasources-yml" - path: "datasources/main.yml" - - key: "dashboards-yml" - path: "dashboards/main.yml" - - name: grafana-dashboards - configMap: - name: {{ .Release.Name }}-grafana-config - items: - {{- range $path, $_ := .Files.Glob "grafana-dashboards/*" }} - - key: {{ base $path }} - path: {{ base $path }} - {{- end }} - - containers: - - name: grafana - image: grafana/grafana:10.3.3 - imagePullPolicy: Always - args: - {{- range .Values.grafana.args }} - - {{ . }} - {{- end }} - env: - - name: GF_SECURITY_ADMIN_USER - value: admin - - name: GF_SECURITY_ADMIN_PASSWORD - value: admin - - name: GF_USERS_ALLOW_SIGN_UP - value: 'false' - ports: - - containerPort: 9000 - volumeMounts: - - name: grafana-provisioning - mountPath: /etc/grafana/provisioning - - name: grafana-dashboards - mountPath: /var/lib/grafana/dashboards ---- - -apiVersion: v1 -kind: Service -metadata: - name: {{ tpl .Values.grafana.host . }} -spec: - selector: - app: grafana - ports: - - port: 3000 - protocol: TCP - -{{- end }} \ No newline at end of file diff --git a/src/digma/templates/influxdb.yaml b/src/digma/templates/influxdb.yaml deleted file mode 100644 index a21ac692..00000000 --- a/src/digma/templates/influxdb.yaml +++ /dev/null @@ -1,80 +0,0 @@ -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: {{ .Release.Name }}-influxdb-stateful-set - labels: - app: influxdb -spec: - replicas: 1 - selector: - matchLabels: - app: influxdb - serviceName: {{ tpl .Values.influx.host . }} - template: - metadata: - labels: - app: influxdb - {{- range $key, $value := .Values.influx.labels }} - {{ $key }}: {{ $value }} - {{- end }} - annotations: - {{- range $key, $value := .Values.influx.annotations }} - {{ $key }}: {{ $value }} - {{- end }} - spec: - terminationGracePeriodSeconds: 5 - {{- include "imagePullSecrets" . | nindent 6 }} - {{- include "tolerations" . | nindent 6 }} - {{- include "nodeSelector" . | nindent 6 }} - containers: - - name: influxdb - image: influxdb:{{ .Values.influx.imageTag }} - imagePullPolicy: Always - args: - {{- range .Values.influx.args }} - - {{ . }} - {{- end }} - resources: - requests: - memory: {{ .Values.influx.resources.requests.memory }} - cpu: {{ .Values.influx.resources.requests.cpu }} - limits: - memory: {{ .Values.influx.resources.limits.memory }} - cpu: {{ .Values.influx.resources.limits.cpu }} - ports: - - containerPort: 8086 - env: - - name: DOCKER_INFLUXDB_INIT_MODE - value: "setup" - - name: DOCKER_INFLUXDB_INIT_USERNAME - value: "admin" - - name: DOCKER_INFLUXDB_INIT_PASSWORD - value: "12345678" - - name: DOCKER_INFLUXDB_INIT_ORG - value: "digma" - - name: DOCKER_INFLUXDB_INIT_BUCKET - value: "errors" - - name: DOCKER_INFLUXDB_INIT_RETENTION - value: "4w" - - name: DOCKER_INFLUXDB_INIT_ADMIN_TOKEN - value: "dc61908e-05bc-411a-9fe2-e3356b8dc7c0" - - name: INFLUXD_QUERY_CONCURRENCY - value: {{ quote .Values.influx.config.queryConcurrency }} - - name: INFLUXD_QUERY_QUEUE_SIZE - value: {{ quote .Values.influx.config.queryQueueSize }} - volumeMounts: - - name: influxdb-data - mountPath: /var/lib/influxdb2 - - name: influxdb-data - mountPath: /etc/influxdb2 - volumeClaimTemplates: - - metadata: - name: influxdb-data - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 50Gi - # persistentVolumeClaimRetentionPolicy: - # whenDeleted: Retain diff --git a/src/digma/templates/internal-network.yaml b/src/digma/templates/internal-network.yaml deleted file mode 100644 index 6babb2a5..00000000 --- a/src/digma/templates/internal-network.yaml +++ /dev/null @@ -1,194 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ tpl .Values.kafka.host . }} -spec: - type: ClusterIP - selector: - app: kafka - ports: - - port: 9092 - protocol: TCP - ---- - -apiVersion: v1 -kind: Service -metadata: - name: {{ tpl .Values.postgres.host . }} -spec: - type: ClusterIP - selector: - app: "postgres" - ports: - - port: {{ .Values.postgres.port }} - protocol: TCP - ---- - -apiVersion: v1 -kind: Service -metadata: - name: {{ tpl .Values.redis.host . }} -spec: - type: ClusterIP - selector: - app: "redis" - ports: - - port: 6379 - protocol: TCP - ---- - -apiVersion: v1 -kind: Service -metadata: - name: {{ tpl .Values.influx.host . }} -spec: - type: ClusterIP - selector: - app: "influxdb" - ports: - - port: 8086 - protocol: TCP - ---- - -apiVersion: v1 -kind: Service -metadata: - name: {{ tpl .Values.digmaAnalytics.host . }} -spec: - type: ClusterIP - selector: - app: digma-analytics - ports: - - port: 5051 - protocol: TCP - ---- - -apiVersion: v1 -kind: Service -metadata: - name: {{ tpl .Values.digmaScheduler.host . }} -spec: - type: ClusterIP - selector: - app: "digma-scheduler" - ports: - - port: 5053 - protocol: TCP - ---- - -apiVersion: v1 -kind: Service -metadata: - name: {{ tpl .Values.digmaCollectorApi.host . }} -spec: - type: ClusterIP - selector: - app: "digma-collector-api" - ports: - - name: internal - protocol: TCP - port: 5048 - - name: http - protocol: TCP - port: 5049 - - name: grpc - protocol: TCP - port: 5050 - - -{{ if .Values.embeddedJaeger.enabled }} ---- - -apiVersion: v1 -kind: Service -metadata: - name: {{ tpl .Values.embeddedJaeger.host . }} -spec: - type: ClusterIP - selector: - app: "embedded-jaeger" - ports: - - name: grpc - port: 4317 - protocol: TCP - - name: api - port: 16686 - protocol: TCP - -{{ end }} - - -{{ if .Values.debug }} - ---- - -apiVersion: v1 -kind: Service -metadata: - name: {{ tpl .Values.elasticApmServer.host . }} -spec: - selector: - app: "digma-debug-services" - ports: - - port: 8200 - protocol: TCP - ---- - -apiVersion: v1 -kind: Service -metadata: - name: {{ tpl .Values.elasticsearch.host . }} -spec: - selector: - app: "digma-debug-services" - ports: - - port: 9200 - protocol: TCP - ---- - -apiVersion: v1 -kind: Service -metadata: - name: {{ tpl .Values.kibana.host . }} -spec: - selector: - app: "digma-debug-services" - ports: - - port: 5601 - protocol: TCP - ---- - -apiVersion: v1 -kind: Service -metadata: - name: {{ tpl .Values.pgadmin.host . }} -spec: - selector: - app: "digma-debug-services" - ports: - - port: 8080 - protocol: TCP - ---- - -apiVersion: v1 -kind: Service -metadata: - name: {{ tpl .Values.redisCommander.host . }} -spec: - selector: - app: "digma-debug-services" - ports: - - port: 8081 - protocol: TCP - -{{ end }} diff --git a/src/digma/templates/k8s-metrics-exporter.yaml b/src/digma/templates/k8s-metrics-exporter.yaml deleted file mode 100644 index a4aa9239..00000000 --- a/src/digma/templates/k8s-metrics-exporter.yaml +++ /dev/null @@ -1,101 +0,0 @@ -{{- if .Values.digmaSelfDiagnosis.otlpExporterEndpoint }} - -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ .Release.Name }}-k8s-metrics-exporter-deployment - labels: - app: k8s-metrics-exporter -spec: - replicas: 1 - selector: - matchLabels: - app: k8s-metrics-exporter - template: - metadata: - labels: - app: k8s-metrics-exporter - {{- range $key, $value := .Values.k8sMetricsExporter.labels }} - {{ $key }}: {{ $value }} - {{- end }} - annotations: - {{- range $key, $value := .Values.k8sMetricsExporter.annotations }} - {{ $key }}: {{ $value }} - {{- end }} - spec: - serviceAccountName: {{ .Release.Name }}-k8s-metrics-exporter - {{- include "imagePullSecrets" . | nindent 6 }} - {{- include "tolerations" . | nindent 6 }} - {{- include "nodeSelector" . | nindent 6 }} - containers: - - name: k8s-metrics-exporter - image: digmatic/k8s-metrics-exporter:0.0.9 - imagePullPolicy: Always - env: - - name: KUBE_NAMESPACE - value: {{ .Release.Namespace }} - ports: - - name: http - containerPort: 9090 - protocol: TCP ---- - -apiVersion: v1 -kind: Service -metadata: - name: {{ .Release.Name }}-k8s-metrics-exporter -spec: - selector: - app: k8s-metrics-exporter - ports: - - port: 9090 - protocol: TCP - ---- - -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ .Release.Name }}-k8s-metrics-exporter - labels: - app: k8s-metrics-exporter - ---- - -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ .Release.Name }}-k8s-metrics-exporter - labels: - app: k8s-metrics-exporter -rules: -- apiGroups: [""] - resources: [pods] - verbs: [list, get] -- apiGroups: [""] - resources: [pods/exec] - verbs: [create, get] -- apiGroups: ["apps"] - resources: [deployments, statefulsets] - verbs: [list] -- apiGroups: ["metrics.k8s.io"] - resources: ["*"] - verbs: [list] ---- - -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ .Release.Name }}-k8s-metrics-exporter - labels: - app: k8s-metrics-exporter -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ .Release.Name }}-k8s-metrics-exporter -subjects: -- kind: ServiceAccount - name: {{ .Release.Name }}-k8s-metrics-exporter - namespace: {{ .Release.Namespace }} - -{{- end -}} \ No newline at end of file diff --git a/src/digma/templates/kafka.yaml b/src/digma/templates/kafka.yaml deleted file mode 100644 index 1819c0fb..00000000 --- a/src/digma/templates/kafka.yaml +++ /dev/null @@ -1,89 +0,0 @@ -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: {{ .Release.Name }}-kafka - labels: - app: kafka -spec: - replicas: 1 - selector: - matchLabels: - app: kafka - serviceName: {{ tpl .Values.kafka.host . }} - template: - metadata: - labels: - app: kafka - {{- range $key, $value := .Values.kafka.labels }} - {{ $key }}: {{ $value }} - {{- end }} - annotations: - {{- range $key, $value := .Values.kafka.annotations }} - {{ $key }}: {{ $value }} - {{- end }} - spec: - terminationGracePeriodSeconds: 5 - {{- include "imagePullSecrets" . | nindent 6 }} - {{- include "tolerations" . | nindent 6 }} - {{- include "nodeSelector" . | nindent 6 }} - securityContext: - fsGroup: 1001 - containers: - - name: kafka - image: bitnami/kafka:{{ .Values.kafka.imageTag }} - imagePullPolicy: Always - args: - {{- range .Values.kafka.args }} - - {{ . }} - {{- end }} - resources: - requests: - memory: {{ .Values.kafka.resources.requests.memory }} - cpu: {{ .Values.kafka.resources.requests.cpu }} - limits: - memory: {{ .Values.kafka.resources.limits.memory }} - cpu: {{ .Values.kafka.resources.limits.cpu }} - ports: - - containerPort: 9092 - volumeMounts: - - name: kafka-data - mountPath: /bitnami/kafka - env: - # KRaft settings - - name: KAFKA_KRAFT_CLUSTER_ID - value: h4U35I9QRnGhbgsEQAlXAw - - name: KAFKA_CFG_NODE_ID - value: "1" - - name: KAFKA_CFG_PROCESS_ROLES - value: controller,broker - - name: KAFKA_CFG_CONTROLLER_QUORUM_VOTERS - value: 1@127.0.0.1:9093 - # Listeners - - name: KAFKA_CFG_LISTENERS - value: PLAINTEXT://:9092,CONTROLLER://:9093 - - name: KAFKA_CFG_ADVERTISED_LISTENERS - value: PLAINTEXT://{{ tpl .Values.kafka.host . }}:9092 - - name: KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP - value: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,INTERNAL:PLAINTEXT - - name: KAFKA_CFG_CONTROLLER_LISTENER_NAMES - value: CONTROLLER - - name: KAFKA_CFG_INTER_BROKER_LISTENER_NAME - value: PLAINTEXT - # Retention - - name: KAFKA_CFG_LOG_RETENTION_MINUTES - value: "10" - - name: KAFKA_CFG_LOG_RETENTION_CHECK_INTERVAL_MS - value: "100000" # 1 min - - name: KAFKA_CFG_LOG_ROLL_MS - value: "500000" # 5 min - volumeClaimTemplates: - - metadata: - name: kafka-data - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 80Gi - - diff --git a/src/digma/templates/otel-collector-df.yaml b/src/digma/templates/otel-collector-df.yaml deleted file mode 100644 index 1393c872..00000000 --- a/src/digma/templates/otel-collector-df.yaml +++ /dev/null @@ -1,143 +0,0 @@ -{{- if .Values.digmaSelfDiagnosis.otlpExporterEndpoint }} - -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-otel-collector-config -data: - key-collector-yaml: | - receivers: - otlp: - protocols: - grpc: - kafkametrics: - protocol_version: 2.0.0 - collection_interval: 10s - brokers: [{{ printf "%s:9092" (tpl .Values.kafka.host .)}}] - scrapers: - - brokers - - topics - - consumers - prometheus/k8s_metrics: - config: - scrape_configs: - - job_name: k8s-metrics - scrape_interval: 5s - static_configs: - - targets: [{{ printf "%s-k8s-metrics-exporter:9090" (.Release.Name)}}] - - processors: - batch: - attributes/add_source_env: - actions: - - key: source_env - value: {{.Values.digma.environmentName}} - action: insert - - exporters: - logging: - verbosity: detailed - {{- if eq .Values.digmaSelfDiagnosis.otlpExporterEndpoint "local" }} - prometheus: - endpoint: 0.0.0.0:7777 - send_timestamps: true - metric_expiration: 10m - {{- else }} - otlp: - endpoint: {{.Values.digmaSelfDiagnosis.otlpExporterEndpoint}} - {{- end }} - - service: - pipelines: - {{- if eq .Values.digmaSelfDiagnosis.otlpExporterEndpoint "local" }} - metrics: - receivers: [otlp, kafkametrics, prometheus/k8s_metrics] - processors: [attributes/add_source_env, batch] - exporters: [prometheus] - {{- else }} - traces: - receivers: [otlp] - processors: [batch] - exporters: [otlp] - metrics: - receivers: [otlp, kafkametrics, prometheus/k8s_metrics] - processors: [attributes/add_source_env, batch] - exporters: [otlp] - {{- end }} - ---- - -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ .Release.Name }}-otel-collector-df-deployment - labels: - app: otel-collector-df -spec: - replicas: 1 - selector: - matchLabels: - app: otel-collector-df - template: - metadata: - labels: - app: otel-collector-df - {{- range $key, $value := .Values.otelCollectorDf.labels }} - {{ $key }}: {{ $value }} - {{- end }} - annotations: - {{- range $key, $value := .Values.otelCollectorDf.annotations }} - {{ $key }}: {{ $value }} - {{- end }} - spec: - {{- include "imagePullSecrets" . | nindent 6 }} - {{- include "tolerations" . | nindent 6 }} - {{- include "nodeSelector" . | nindent 6 }} - containers: - - name: otel-collector-df - image: otel/opentelemetry-collector-contrib:0.103.0 - imagePullPolicy: Always - env: - - name: K8S_NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName - resources: - requests: - cpu: 100m - memory: 100Mi - limits: - cpu: 200m - memory: 300Mi - ports: - - containerPort: 4317 - args: - - --config=/conf/collector.yaml - volumeMounts: - - name: vn-config - mountPath: /conf - readOnly: true - volumes: - - name: vn-config # volume name - configMap: - name: {{ .Release.Name }}-otel-collector-config # configMap name - items: - - key: "key-collector-yaml" - path: "collector.yaml" ---- - -apiVersion: v1 -kind: Service -metadata: - name: {{ tpl .Values.otelCollectorDf.host . }} -spec: - selector: - app: otel-collector-df - ports: - - name: grpc-port - port: 4317 - protocol: TCP - - name: debug - port: 7777 - -{{- end -}} \ No newline at end of file diff --git a/src/digma/templates/otel-collector-gateway.yaml b/src/digma/templates/otel-collector-gateway.yaml deleted file mode 100644 index 524f9393..00000000 --- a/src/digma/templates/otel-collector-gateway.yaml +++ /dev/null @@ -1,135 +0,0 @@ -{{- if .Values.otelCollectorGateway.enabled }} - -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-otel-collector-gateway-config -data: - key-collector-yaml: | - receivers: - otlp: - protocols: - grpc: - endpoint: 0.0.0.0:5050 - http: - endpoint: 0.0.0.0:5049 - - processors: - batch: - probabilistic_sampler: - sampling_percentage: {{ .Values.otelCollectorGateway.samplingPercentage }} - - exporters: - logging: - verbosity: normal - otlp/digma-collector: - endpoint: {{ printf "http://%s:5050" (tpl .Values.digmaCollectorApi.host .)}} - tls: - insecure: true - - service: - pipelines: - traces: - receivers: [otlp] - processors: [batch, probabilistic_sampler] - exporters: [otlp/digma-collector, logging] - - ---- - -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ .Release.Name }}-otel-collector-gateway-deployment - labels: - app: otel-collector-gateway -spec: - replicas: 1 - selector: - matchLabels: - app: otel-collector-gateway - template: - metadata: - labels: - app: otel-collector-gateway - {{- range $key, $value := .Values.otelCollectorGateway.labels }} - {{ $key }}: {{ $value }} - {{- end }} - annotations: - {{- range $key, $value := .Values.otelCollectorGateway.annotations }} - {{ $key }}: {{ $value }} - {{- end }} - spec: - {{- include "imagePullSecrets" . | nindent 6 }} - {{- include "tolerations" . | nindent 6 }} - {{- include "nodeSelector" . | nindent 6 }} - containers: - - name: otel-collector-gateway - image: otel/opentelemetry-collector-contrib:0.103.0 - imagePullPolicy: Always - args: - - --config=/conf/collector.yaml - env: - - name: K8S_NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName - resources: - requests: - cpu: 100m - memory: 100Mi - limits: - cpu: 200m - memory: 300Mi - volumeMounts: - - name: vn-config - mountPath: /conf - readOnly: true - volumes: - - name: vn-config # volume name - configMap: - name: {{ .Release.Name }}-otel-collector-gateway-config # configMap name - items: - - key: "key-collector-yaml" - path: "collector.yaml" ---- - -apiVersion: v1 -kind: Service -metadata: - name: {{ tpl .Values.otelCollectorGateway.host . }} -spec: - selector: - app: otel-collector-gateway - ports: - - name: http - protocol: TCP - port: 5049 - - name: grpc - protocol: TCP - port: 5050 - -{{ if .Values.otelCollectorGateway.loadbalancer }} ---- -kind: Service -apiVersion: v1 -metadata: - name: {{ .Release.Name }}-otel-collector-gateway-service-lb - {{- if and .Values.otelCollectorGateway.service .Values.otelCollectorGateway.service.annotations }} - annotations: - {{ toYaml .Values.otelCollectorGateway.service.annotations | indent 4 }} - {{- end }} -spec: - type: LoadBalancer - selector: - app: otel-collector-gateway - ports: - - name: http - protocol: TCP - port: 5049 - - name: grpc - protocol: TCP - port: 5050 -{{ end }} - -{{- end -}} \ No newline at end of file diff --git a/src/digma/templates/postgres.yaml b/src/digma/templates/postgres.yaml deleted file mode 100644 index 5e6370d7..00000000 --- a/src/digma/templates/postgres.yaml +++ /dev/null @@ -1,75 +0,0 @@ -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: {{ .Release.Name }}-postgres-stateful-set - labels: - app: postgres -spec: - replicas: 1 - selector: - matchLabels: - app: postgres - serviceName: {{ tpl .Values.postgres.host . }} - template: - metadata: - labels: - app: postgres - {{- range $key, $value := .Values.postgres.labels }} - {{ $key }}: {{ $value }} - {{- end }} - annotations: - {{- range $key, $value := .Values.postgres.annotations }} - {{ $key }}: {{ $value }} - {{- end }} - spec: - terminationGracePeriodSeconds: 5 - {{- include "imagePullSecrets" . | nindent 6 }} - {{- include "tolerations" . | nindent 6 }} - {{- include "nodeSelector" . | nindent 6 }} - containers: - - name: postgres - image: postgres:{{ .Values.postgres.imageTag }} - imagePullPolicy: Always - resources: - requests: - memory: {{ .Values.postgres.resources.requests.memory }} - cpu: {{ .Values.postgres.resources.requests.cpu }} - limits: - memory: {{ .Values.postgres.resources.limits.memory }} - cpu: {{ .Values.postgres.resources.limits.cpu }} - ports: - - containerPort: 5432 - args: - - '-c' - - 'max_connections={{ .Values.postgres.maxConnections }}' - - '-c' - - 'shared_buffers={{ .Values.postgres.maxMemory }}' - - '-c' - - 'logging_collector=on' - - '-c' - - 'log_directory=log' - {{- range .Values.postgres.args }} - - {{ . }} - {{- end }} - env: - - name: POSTGRES_NAME - value: postgres - - name: POSTGRES_USER - value: {{ .Values.postgres.username }} - - name: POSTGRES_PASSWORD - value: {{ .Values.postgres.password }} - volumeMounts: - - name: postgres-data - mountPath: /var/lib/postgresql/data - subPath: postgres - volumeClaimTemplates: - - metadata: - name: postgres-data - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 20Gi - # persistentVolumeClaimRetentionPolicy: - # whenDeleted: Retain diff --git a/src/digma/templates/prometheus.yaml b/src/digma/templates/prometheus.yaml deleted file mode 100644 index c922597d..00000000 --- a/src/digma/templates/prometheus.yaml +++ /dev/null @@ -1,105 +0,0 @@ -{{- if eq .Values.digmaSelfDiagnosis.otlpExporterEndpoint "local" }} - -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-prometheus-config -data: - prometheus-yml: | - global: - scrape_interval: 15s - scrape_timeout: 10s - evaluation_interval: 15s - scrape_configs: - - job_name: otel-collector - static_configs: - - targets: [{{ printf "%s-otel-collector:7777" (.Release.Name)}}] ---- - -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: {{ .Release.Name }}-prometheus-stateful-set - labels: - app: prometheus -spec: - replicas: 1 - selector: - matchLabels: - app: prometheus - serviceName: {{ .Release.Name }}-prometheus - template: - metadata: - labels: - app: prometheus - {{- range $key, $value := .Values.prometheus.labels }} - {{ $key }}: {{ $value }} - {{- end }} - annotations: - {{- range $key, $value := .Values.prometheus.annotations }} - {{ $key }}: {{ $value }} - {{- end }} - spec: - securityContext: - fsGroup: 2000 - {{- include "imagePullSecrets" . | nindent 6 }} - {{- include "tolerations" . | nindent 6 }} - {{- include "nodeSelector" . | nindent 6 }} - containers: - - name: prometheus - image: prom/prometheus:v2.53.0 - imagePullPolicy: Always - args: - - '--storage.tsdb.path=/prometheus' - - '--config.file=/etc/prometheus/prometheus.yml' - - '--web.console.libraries=/etc/prometheus/console_libraries' - - '--web.console.templates=/etc/prometheus/consoles' - - '--web.enable-lifecycle' - {{- range .Values.prometheus.args }} - - {{ . }} - {{- end }} - securityContext: - runAsUser: 1000 - runAsGroup: 3000 - ports: - - containerPort: 9090 - volumeMounts: - - name: prometheus-data - mountPath: /prometheus - subPath: prometheus-db - - name: prometheus-config - mountPath: /etc/prometheus/ - readOnly: true - volumes: - - name: prometheus-config - configMap: - name: {{ .Release.Name }}-prometheus-config - items: - - key: "prometheus-yml" - path: "prometheus.yml" - # - name: prometheus-data - # emptyDir: {} - - volumeClaimTemplates: - - metadata: - name: prometheus-data - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 20Gi ---- - -apiVersion: v1 -kind: Service -metadata: - name: {{ tpl .Values.prometheus.host . }} -spec: - selector: - app: prometheus - ports: - - port: 9090 - protocol: TCP - -{{- end }} \ No newline at end of file diff --git a/src/digma/templates/redis.yaml b/src/digma/templates/redis.yaml deleted file mode 100644 index 374b4a97..00000000 --- a/src/digma/templates/redis.yaml +++ /dev/null @@ -1,64 +0,0 @@ -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: {{ .Release.Name }}-redis-stateful-set - labels: - app: redis -spec: - replicas: 1 - selector: - matchLabels: - app: redis - serviceName: {{ tpl .Values.redis.host . }} - template: - metadata: - labels: - app: redis - {{- range $key, $value := .Values.redis.labels }} - {{ $key }}: {{ $value }} - {{- end }} - annotations: - {{- range $key, $value := .Values.redis.annotations }} - {{ $key }}: {{ $value }} - {{- end }} - spec: - terminationGracePeriodSeconds: 5 - {{- include "imagePullSecrets" . | nindent 6 }} - {{- include "tolerations" . | nindent 6 }} - {{- include "nodeSelector" . | nindent 6 }} - containers: - - name: redis - image: redis:{{ .Values.redis.imageTag }} - imagePullPolicy: Always - args: - - "--maxmemory {{ .Values.redis.config.maxmemory }}" - - "--maxmemory-policy {{ .Values.redis.config.maxmemoryPolicy }}" - {{- range .Values.redis.args }} - - {{ . }} - {{- end }} - resources: - requests: - memory: {{ .Values.redis.resources.requests.memory }} - cpu: {{ .Values.redis.resources.requests.cpu }} - limits: - memory: {{ .Values.redis.resources.limits.memory }} - cpu: {{ .Values.redis.resources.limits.cpu }} - ports: - - containerPort: 6379 - volumeMounts: - - name: redis-data - mountPath: /data - command: - - "redis-server" - - volumeClaimTemplates: - - metadata: - name: redis-data - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 10Gi - # persistentVolumeClaimRetentionPolicy: - # whenDeleted: Retain diff --git a/src/digma/values.yaml b/src/digma/values.yaml deleted file mode 100644 index 92df55e2..00000000 --- a/src/digma/values.yaml +++ /dev/null @@ -1,328 +0,0 @@ -debug: false - -size: medium # small | medium | large -presets: - small: - digmaCollectorWorker: - replicas: 1 - digmaMeasurementAnalysis: - replicas: 1 - digmaPipelineWorker: - replicas: 1 - medium: - digmaCollectorWorker: - replicas: 4 - digmaMeasurementAnalysis: - replicas: 4 - digmaPipelineWorker: - replicas: 1 - large: - digmaCollectorWorker: - replicas: 6 - digmaMeasurementAnalysis: - replicas: 4 - digmaPipelineWorker: - replicas: 4 - -deploymentType: Helm -exposeInternalErrorDetails: true -imagePullSecretName: -tolerations: -nodeSelector: - -traceCollectorThresholds: - recentActivityUpdateThresholdSeconds: 5 - upsertEndpointThresholdSeconds: 5 - upsertSpansThresholdSeconds: 5 - upsertSpanFlowMetadataThresholdSeconds: 5 - -kafka: - host: "{{ .Release.Name }}-kafka" - imageTag: 3.5.1 - resources: { - requests: { - memory: 400Mi, - cpu: 200m - }, - limits: { - memory: 3Gi, - cpu: 1000m - } - } - annotations: {} - labels: {} - args: [] - -redis: - host: "{{ .Release.Name }}-redis" - imageTag: 7.0.5-alpine - resources: - requests: - memory: "100Mi" - cpu: "50m" - limits: - memory: "2Gi" - cpu: "400m" - config: - maxmemory: "2g" - maxmemoryPolicy: "allkeys-lru" - annotations: {} - labels: {} - args: [] - -influx: - host: "{{ .Release.Name }}-influxdb" - imageTag: 2.7.1 - resources: { - requests: { - memory: 500Mi, - cpu: 500m - }, - limits: { - memory: 2Gi, - cpu: 2000m - } - } - config: - queryConcurrency: 30 - queryQueueSize: 200 - annotations: {} - labels: {} - args: [] - -postgres: - host: "{{ .Release.Name }}-postgres" - imageTag: 15.1 - port: 5432 - username: postgres - password: postgres - maxConnections: 400 - maxMemory: 800MB # mapped to shared_buffers - resources: { - requests: { - memory: 1Gi, - cpu: 200m - }, - limits: { - memory: 2Gi, - cpu: 1000m - } - } - annotations: {} - labels: {} - args: [] - -pgadmin: - host: "{{ .Release.Name }}-pgadmin" - email: admin@admin.com - password: admin - -embeddedJaeger: - host: "{{ .Release.Name }}-embedded-jaeger" - imageTag: "1.61.0" - enabled: true - loadbalancer: true - storage: "badger" # can be "badger" or "elasticsearch" - volumeSize: #volumeSize only for badger - service: - annotations: {} - annotations: {} - labels: {} - args: [] - -elastic: - imageTag: "8.15.1" - storage: 80Gi - resources: { - requests: { - memory: 2Gi, - cpu: 1 - }, - limits: { - memory: 4Gi, - cpu: 2 - } - } - annotations: {} - labels: {} - args: [] - -kibana: - host: "{{ .Release.Name }}-kibana" - -redisCommander: - host: "{{ .Release.Name }}-redis-commander" - -elasticApmServer: - host: "{{ .Release.Name }}-apm" - -elasticsearch: - host: "{{ .Release.Name }}-elasticsearch" - -digmaCollectorApi: - host: "{{ .Release.Name }}-collector-api" - loadbalancer: true - resources: { - requests: { - memory: 100Mi, - cpu: 200m - }, - limits: { - memory: 600Mi, - cpu: 800m - } - } - service: - annotations: {} - annotations: {} - labels: {} - -digmaCollectorWorker: - host: "{{ .Release.Name }}-collector-worker" - replicas: "{{ index .Values.presets .Values.size \"digmaCollectorWorker\" \"replicas\" }}" - resources: { - requests: { - memory: 300Mi, - cpu: 300m - }, - limits: { - memory: 600Mi, - cpu: 600m - } - } - sampling: { - enable: true - } - extendedObservability: { - enable: true - } - traceForJaegerTTL: 10 - ignoreEndpoints: - - Route: "/health" - RouteRegex: "" - Method: "GET" - Service: "*" - - Route: "/healthcheck" - RouteRegex: "" - Method: "GET" - Service: "*" - - Route: "/metrics" - RouteRegex: "" - Method: "GET" - Service: "*" - annotations: {} - labels: {} - affinity: - -digmaAnalytics: - host: "{{ .Release.Name }}-analytics" - loadbalancer: true - replicas: 1 - secured: true - resources: { - requests: { - memory: 300Mi, - cpu: 100m - }, - limits: { - memory: 800Mi, - cpu: 800m - } - } - service: - annotations: {} - annotations: {} - labels: {} - -digmaScheduler: - host: "{{ .Release.Name }}-scheduler" - resources: { - requests: { - memory: 300Mi, - cpu: 200m - }, - limits: { - memory: 600Mi, - cpu: 500m - } - } - annotations: {} - labels: {} - -digmaPipelineWorker: - replicas: "{{ index .Values.presets .Values.size \"digmaPipelineWorker\" \"replicas\" }}" - resources: { - requests: { - memory: 100Mi, - cpu: 50m - }, - limits: { - memory: 400Mi, - cpu: 500m - } - } - annotations: {} - labels: {} - affinity: - -digmaMeasurementAnalysis: - replicas: "{{ index .Values.presets .Values.size \"digmaMeasurementAnalysis\" \"replicas\" }}" - resources: { - requests: { - memory: 100Mi, - cpu: 200m - }, - limits: { - memory: 800Mi, - cpu: 800m - } - } - annotations: {} - labels: {} - affinity: - -grafana: - host: "{{ .Release.Name }}-grafana" - annotations: {} - labels: {} - args: [] - -prometheus: - host: "{{ .Release.Name }}-prometheus" - annotations: {} - labels: {} - args: [] - -k8sMetricsExporter: - annotations: {} - labels: {} - -otelCollectorGateway: - host: "{{ .Release.Name }}-otel-collector-gateway" - enabled: false - samplingPercentage: 100 - loadbalancer: false - service: - annotations: {} - annotations: {} - labels: {} - -otelCollectorDf: - host: "{{ .Release.Name }}-otel-collector" - annotations: {} - labels: {} - -digmaSelfDiagnosis: - otlpExportTraces: false - otlpExportMetrics: false - otlpExportLogs: false - otlpExporterEndpoint: # either a url or 'local' - otlpSamplerProbability: "0.1" - - -digma: - environmentName: - environmentType: - siteName: undefined - isCentralize: true - licenseKey: diff --git a/src/rendered-deployment.yaml b/src/rendered-deployment.yaml deleted file mode 100644 index 3ae2bc36..00000000 --- a/src/rendered-deployment.yaml +++ /dev/null @@ -1,868 +0,0 @@ -# Source: digma/templates/external-network.yaml -# Comment the following section to only expose plugin api internally -kind: Service -apiVersion: v1 -metadata: - name: digma-analytics-service-lb -spec: - type: LoadBalancer - selector: - app: digma-analytics - ports: - - name: analytics - protocol: TCP - port: 5051 ---- -# Source: digma/templates/external-network.yaml -# Comment the following section to only expose collector api internally -kind: Service -apiVersion: v1 -metadata: - name: digma-collector-api-service-lb -spec: - type: LoadBalancer - selector: - app: digma-collector-api - ports: - - name: http - protocol: TCP - port: 5049 - - name: grpc - protocol: TCP - port: 5050 ---- -# Source: digma/templates/external-network.yaml -# Comment the following section to only expose jaeger internally -apiVersion: v1 -kind: Service -metadata: - name: digma-embedded-jaeger-lb -spec: - type: LoadBalancer - selector: - app: embedded-jaeger - ports: - - name: api - port: 17686 - protocol: TCP - targetPort: 16686 ---- -# Source: digma/templates/internal-network.yaml -apiVersion: v1 -kind: Service -metadata: - name: digma-kafka -spec: - type: ClusterIP - selector: - app: kafka - ports: - - port: 9092 - protocol: TCP ---- -# Source: digma/templates/internal-network.yaml -apiVersion: v1 -kind: Service -metadata: - name: digma-postgres -spec: - type: ClusterIP - selector: - app: postgres - ports: - - port: 5432 - protocol: TCP ---- -# Source: digma/templates/internal-network.yaml -apiVersion: v1 -kind: Service -metadata: - name: digma-redis -spec: - type: ClusterIP - selector: - app: redis - ports: - - port: 6379 - protocol: TCP ---- -# Source: digma/templates/internal-network.yaml -apiVersion: v1 -kind: Service -metadata: - name: digma-influxdb -spec: - type: ClusterIP - selector: - app: influxdb - ports: - - port: 8086 - protocol: TCP ---- -# Source: digma/templates/internal-network.yaml -apiVersion: v1 -kind: Service -metadata: - name: digma-analytics -spec: - type: ClusterIP - selector: - app: digma-analytics - ports: - - port: 5051 - protocol: TCP ---- -# Source: digma/templates/internal-network.yaml -apiVersion: v1 -kind: Service -metadata: - name: digma-scheduler -spec: - type: ClusterIP - selector: - app: digma-scheduler - ports: - - port: 5053 - protocol: TCP ---- -# Source: digma/templates/internal-network.yaml -apiVersion: v1 -kind: Service -metadata: - name: digma-collector-api -spec: - type: ClusterIP - selector: - app: digma-collector-api - ports: - - name: http - protocol: TCP - port: 5049 - - name: grpc - protocol: TCP - port: 5050 ---- -# Source: digma/templates/internal-network.yaml -apiVersion: v1 -kind: Service -metadata: - name: digma-embedded-jaeger -spec: - type: ClusterIP - selector: - app: embedded-jaeger - ports: - - name: grpc - port: 4317 - protocol: TCP - - name: api - port: 16686 - protocol: TCP ---- -# Source: digma/templates/analytics.yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: digma-analytics-deployment - labels: - app: digma-analytics -spec: - replicas: 1 - selector: - matchLabels: - app: digma-analytics - template: - metadata: - labels: - app: digma-analytics - spec: - containers: - - name: digma-analytics - image: digmatic/digma-analytics:0.3.153 - resources: - requests: - memory: 300Mi - cpu: 100m - limits: - memory: 800Mi - cpu: 800m - ports: - - containerPort: 5051 - env: - - name: DIGMA_LICENSE_KEY - value: ${LICENSE_KEY} - - name: DEPLOYMENT_ENV - value: - - name: IsCentralize - value: 'true' - - name: Site - value: undefined - - name: CacheSettings__RedisConnection - value: digma-redis - - name: ExternalLogging__ConnectionString - value: digma-redis - - name: influx2__Url - value: http://digma-influxdb:8086 - - name: ConnectionStrings__Postgres - value: Server=digma-postgres;Port=5432;Database=digma_analytics;User Id=postgres;Password=postgres; - - name: OtlpExporterUrl - value: - - name: Kafka__Urls__0 - value: digma-kafka:9092 - - name: OtlpExportLogs - value: 'false' - - name: OtlpExportMetrics - value: 'false' - - name: OtlpExportTraces - value: 'false' - - name: ApplicationVersion - value: 0.3.153 - - name: ChartVersion - value: 1.0.254 - - - name: OtlpSamplerProbability - value: '0.3' - - name: BACKEND_DEPLOYMENT_TYPE - value: Helm - - name: GlobalExceptionSettings__ExposeInternalDetails - value: 'false' - - name: AccessToken - value: ${ACCESS_TOKEN} - - name: Analytics.Endpoints__Default__Secured - value: ${ANALYTICS_API_SECURED} - - name: CollectorUrl - value: http://digma-collector-api:5048 ---- -# Source: digma/templates/collector-api.yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: digma-collector-deployment - labels: - app: digma-collector-api -spec: - replicas: 1 - selector: - matchLabels: - app: digma-collector-api - template: - metadata: - labels: - app: digma-collector-api - spec: - containers: - - name: digma-collector-api - image: digmatic/digma-collector:0.3.153 - resources: - requests: - memory: 100Mi - cpu: 50m - limits: - memory: 300Mi - cpu: 200m - ports: - - containerPort: 5049 - - containerPort: 5050 - env: - - name: DIGMA_LICENSE_KEY - value: ${LICENSE_KEY} - - name: DEPLOYMENT_ENV - value: - - name: IsCentralize - value: 'true' - - name: Site - value: undefined - - name: ConnectionStrings__Postgres - value: Server=digma-postgres;Port=5432;Database=digma_analytics;User Id=postgres;Password=postgres; - - name: CacheSettings__RedisConnection - value: digma-redis - - name: ExternalLogging__ConnectionString - value: digma-redis - - name: Kafka__Urls__0 - value: digma-kafka:9092 - - name: OtlpExporterUrl - value: - - name: OtlpExportLogs - value: 'false' - - name: OtlpExportMetrics - value: 'false' - - name: OtlpExportTraces - value: 'false' - - name: ApplicationVersion - value: 0.3.153 - - name: ChartVersion - value: 1.0.254 - - name: Jaeger__OtlpUrl - value: http://digma-embedded-jaeger:4317 - - - name: OtlpSamplerProbability - value: '0.3' - - name: BACKEND_DEPLOYMENT_TYPE - value: Helm ---- -# Source: digma/templates/digma-collector-worker.yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: digma-digma-collector-worker-deployment - labels: - app: digma-collector-worker -spec: - replicas: 4 - selector: - matchLabels: - app: digma-collector-worker - template: - metadata: - labels: - app: digma-collector-worker - spec: - containers: - - name: digma-collector-worker - image: digmatic/digma-collector-worker:0.3.153 - resources: - requests: - memory: 200Mi - cpu: 100m - limits: - memory: 400Mi - cpu: 600m - env: - - name: DIGMA_LICENSE_KEY - value: ${LICENSE_KEY} - - name: DEPLOYMENT_ENV - value: - - name: IsCentralize - value: 'true' - - name: Site - value: undefined - - name: OtlpExporterUrl - value: - - name: OtlpExportLogs - value: 'false' - - name: OtlpExportMetrics - value: 'false' - - name: OtlpExportTraces - value: 'false' - - name: CacheSettings__RedisConnection - value: digma-redis - - name: ExternalLogging__ConnectionString - value: digma-redis - - name: influx2__Url - value: http://digma-influxdb:8086 - - name: ConnectionStrings__Postgres - value: Server=digma-postgres;Port=5432;Database=digma_analytics;User Id=postgres;Password=postgres; - - name: Kafka__Urls__0 - value: digma-kafka:9092 - - name: ApplicationVersion - value: 0.3.153 - - name: ChartVersion - value: 1.0.254 - - name: Jaeger__OtlpUrl - value: http://digma-embedded-jaeger:4317 - - name: OtlpSamplerProbability - value: '0.3' - - name: BACKEND_DEPLOYMENT_TYPE - value: Helm ---- -# Source: digma/templates/digma-measurement-analysis.yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: digma-digma-measurement-analysis-deployment - labels: - app: digma-measurement-analysis -spec: - replicas: 4 - selector: - matchLabels: - app: digma-measurement-analysis - template: - metadata: - labels: - app: digma-measurement-analysis - spec: - containers: - - name: digma-measurement-analysis - image: digmatic/digma-measurement-analysis:0.3.153 - resources: - requests: - memory: 100Mi - cpu: 200m - limits: - memory: 500Mi - cpu: 800m - env: - - name: DIGMA_LICENSE_KEY - value: ${LICENSE_KEY} - - name: DEPLOYMENT_ENV - value: - - name: IsCentralize - value: 'true' - - name: Site - value: undefined - - name: CacheSettings__RedisConnection - value: digma-redis - - name: ExternalLogging__ConnectionString - value: digma-redis - - name: influx2__Url - value: http://digma-influxdb:8086 - - name: ConnectionStrings__Postgres - value: Server=digma-postgres;Port=5432;Database=digma_analytics;User Id=postgres;Password=postgres; - - name: Kafka__Urls__0 - value: digma-kafka:9092 - - name: OtlpExporterUrl - value: - - name: OtlpExportLogs - value: 'false' - - name: OtlpExportMetrics - value: 'false' - - name: OtlpExportTraces - value: 'false' - - name: ApplicationVersion - value: 0.3.153 - - name: ChartVersion - value: 1.0.254 - - name: Jaeger__OtlpUrl - value: http://digma-embedded-jaeger:4317 - - name: OtlpSamplerProbability - value: '0.3' - - name: BACKEND_DEPLOYMENT_TYPE - value: Helm - - name: ThresholdOptions__RecentActivityUpdateThresholdSeconds - value: '5' - - name: ThresholdOptions__UpsertEndpointThresholdSeconds - value: '5' - - name: ThresholdOptions__UpsertSpansThresholdSeconds - value: '5' - - name: ThresholdOptions__UpsertSpanFlowMetadataThresholdSeconds - value: '5' - - name: Kafka__SpanUpsertCG__Workers - value: '2' - - name: Kafka__AllMeasurementsCG__Workers - value: '2' ---- -# Source: digma/templates/digma-pipeline-worker.yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: digma-digma-pipeline-worker-deployment - labels: - app: digma-pipeline-worker -spec: - replicas: 1 - selector: - matchLabels: - app: digma-pipeline-worker - template: - metadata: - labels: - app: digma-pipeline-worker - spec: - containers: - - name: digma-pipeline-worker - image: digmatic/digma-pipeline-worker:0.3.153 - resources: - requests: - memory: 100Mi - cpu: 50m - limits: - memory: 300Mi - cpu: 500m - env: - - name: DIGMA_LICENSE_KEY - value: ${LICENSE_KEY} - - name: DEPLOYMENT_ENV - value: - - name: IsCentralize - value: 'true' - - name: Site - value: undefined - - name: OtlpExporterUrl - value: - - name: OtlpExportLogs - value: 'false' - - name: OtlpExportMetrics - value: 'false' - - name: OtlpExportTraces - value: 'false' - - name: CacheSettings__RedisConnection - value: digma-redis - - name: ExternalLogging__ConnectionString - value: digma-redis - - name: influx2__Url - value: http://digma-influxdb:8086 - - name: ConnectionStrings__Postgres - value: Server=digma-postgres;Port=5432;Database=digma_analytics;User Id=postgres;Password=postgres; - - name: Kafka__Urls__0 - value: digma-kafka:9092 - - name: ApplicationVersion - value: 0.3.153 - - name: ChartVersion - value: 1.0.254 - - name: Jaeger__OtlpUrl - value: http://digma-embedded-jaeger:4317 - - name: OtlpSamplerProbability - value: '0.3' - - name: BACKEND_DEPLOYMENT_TYPE - value: Helm ---- -# Source: digma/templates/digma-scheduler.yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: digma-digma-scheduler-deployment - labels: - app: digma-scheduler -spec: - replicas: 1 - selector: - matchLabels: - app: digma-scheduler - template: - metadata: - labels: - app: digma-scheduler - spec: - containers: - - name: digma-scheduler - image: digmatic/digma-scheduler:0.3.153 - resources: - requests: - memory: 100Mi - cpu: 50m - limits: - memory: 300Mi - cpu: 300m - ports: - - containerPort: 5053 - env: - - name: DIGMA_LICENSE_KEY - value: ${LICENSE_KEY} - - name: DEPLOYMENT_ENV - value: - - name: IsCentralize - value: 'true' - - name: Site - value: undefined - - name: CacheSettings__RedisConnection - value: digma-redis - - name: ExternalLogging__ConnectionString - value: digma-redis - - name: influx2__Url - value: http://digma-influxdb:8086 - - name: ConnectionStrings__Postgres - value: Server=digma-postgres;Port=5432;Database=digma_analytics;User Id=postgres;Password=postgres; - - name: Kafka__Urls__0 - value: digma-kafka:9092 - - name: OtlpExporterUrl - value: - - name: OtlpExportLogs - value: 'false' - - name: OtlpExportMetrics - value: 'false' - - name: OtlpExportTraces - value: 'false' - - name: ApplicationVersion - value: 0.3.153 - - name: ChartVersion - value: 1.0.254 - - - name: OtlpSamplerProbability - value: '0.3' - - name: BACKEND_DEPLOYMENT_TYPE - value: Helm ---- -# Source: digma/templates/embedded-jaeger.yaml -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: digma-embedded-jaeger-stateful-set-persisted - labels: - app: embedded-jaeger -spec: - replicas: 1 - selector: - matchLabels: - app: embedded-jaeger - serviceName: digma-embedded-jaeger - template: - metadata: - labels: - app: embedded-jaeger - spec: - terminationGracePeriodSeconds: 5 - containers: - - name: embedded-jaeger - image: jaegertracing/all-in-one:1.44.0 - args: [--query.additional-headers, 'Access-Control-Allow-Origin: *'] - env: - - name: SPAN_STORAGE_TYPE - value: badger - - name: COLLECTOR_OTLP_ENABLED - value: 'true' # enable OTEL receiver - - name: BADGER_EPHEMERAL - value: 'false' - - name: BADGER_DIRECTORY_VALUE - value: /badger/data - - name: BADGER_DIRECTORY_KEY - value: /badger/key - - name: BADGER_SPAN_STORE_TTL - value: 336h0m0s # BADGER store ttl default is 72h - volumeMounts: - - name: badger-data - mountPath: /badger - volumeClaimTemplates: - - metadata: - name: badger-data - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 20Gi - # persistentVolumeClaimRetentionPolicy: - # whenDeleted: Retain ---- -# Source: digma/templates/influxdb.yaml -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: digma-influxdb-stateful-set - labels: - app: influxdb -spec: - replicas: 1 - selector: - matchLabels: - app: influxdb - serviceName: digma-influxdb - template: - metadata: - labels: - app: influxdb - spec: - terminationGracePeriodSeconds: 5 - containers: - - name: influxdb - image: influxdb:2.7.1 - resources: - requests: - memory: 500Mi - cpu: 500m - limits: - memory: 2Gi - cpu: 2000m - ports: - - containerPort: 8086 - env: - - name: DOCKER_INFLUXDB_INIT_MODE - value: setup - - name: DOCKER_INFLUXDB_INIT_USERNAME - value: admin - - name: DOCKER_INFLUXDB_INIT_PASSWORD - value: '12345678' - - name: DOCKER_INFLUXDB_INIT_ORG - value: digma - - name: DOCKER_INFLUXDB_INIT_BUCKET - value: errors - - name: DOCKER_INFLUXDB_INIT_RETENTION - value: 4w - - name: DOCKER_INFLUXDB_INIT_ADMIN_TOKEN - value: dc61908e-05bc-411a-9fe2-e3356b8dc7c0 - - name: INFLUXD_QUERY_CONCURRENCY - value: '30' - - name: INFLUXD_QUERY_QUEUE_SIZE - value: '200' - volumeMounts: - - name: influxdb-data - mountPath: /var/lib/influxdb2 - - name: influxdb-data - mountPath: /etc/influxdb2 - volumeClaimTemplates: - - metadata: - name: influxdb-data - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 50Gi - # persistentVolumeClaimRetentionPolicy: - # whenDeleted: Retain ---- -# Source: digma/templates/kafka.yaml -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: digma-kafka-stateful-set - labels: - app: kafka -spec: - replicas: 1 - selector: - matchLabels: - app: kafka - serviceName: digma-kafka - template: - metadata: - labels: - app: kafka - spec: - terminationGracePeriodSeconds: 5 - securityContext: - fsGroup: 1001 - containers: - - name: kafka - image: bitnami/kafka:3.5.1 - resources: - requests: - memory: 400Mi - cpu: 200m - limits: - memory: 3Gi - cpu: 1000m - ports: - - containerPort: 9092 - volumeMounts: - - name: kafka-data - mountPath: /bitnami/kafka - env: - # KRaft settings - - name: KAFKA_KRAFT_CLUSTER_ID - value: h4U35I9QRnGhbgsEQAlXAw - - name: KAFKA_CFG_NODE_ID - value: '1' - - name: KAFKA_CFG_PROCESS_ROLES - value: controller,broker - - name: KAFKA_CFG_CONTROLLER_QUORUM_VOTERS - value: 1@127.0.0.1:9093 - # Listeners - - name: KAFKA_CFG_LISTENERS - value: PLAINTEXT://:9092,CONTROLLER://:9093 - - name: KAFKA_CFG_ADVERTISED_LISTENERS - value: PLAINTEXT://digma-kafka:9092 - - name: KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP - value: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,INTERNAL:PLAINTEXT - - name: KAFKA_CFG_CONTROLLER_LISTENER_NAMES - value: CONTROLLER - - name: KAFKA_CFG_INTER_BROKER_LISTENER_NAME - value: PLAINTEXT - # Retention - - name: KAFKA_CFG_LOG_RETENTION_MINUTES - value: '20' - - name: KAFKA_CFG_LOG_RETENTION_CHECK_INTERVAL_MS - value: '100000' # 1 min - - name: KAFKA_CFG_LOG_ROLL_MS - value: '500000' # 5 min - volumeClaimTemplates: - - metadata: - name: kafka-data - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 15Gi ---- -# Source: digma/templates/postgres.yaml -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: digma-postgres-stateful-set - labels: - app: postgres -spec: - replicas: 1 - selector: - matchLabels: - app: postgres - serviceName: digma-postgres - template: - metadata: - labels: - app: postgres - spec: - terminationGracePeriodSeconds: 5 - containers: - - name: postgres - image: postgres:15.1 - resources: - requests: - memory: 1Gi - cpu: 200m - limits: - memory: 2Gi - cpu: 1000m - ports: - - containerPort: 5432 - args: [-c, max_connections=400, -c, shared_buffers=800MB, -c, logging_collector=on, - -c, log_directory=log] - env: - - name: POSTGRES_NAME - value: postgres - - name: POSTGRES_USER - value: postgres - - name: POSTGRES_PASSWORD - value: postgres - volumeMounts: - - name: postgres-data - mountPath: /var/lib/postgresql/data - subPath: postgres - volumeClaimTemplates: - - metadata: - name: postgres-data - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 20Gi - # persistentVolumeClaimRetentionPolicy: - # whenDeleted: Retain ---- -# Source: digma/templates/redis.yaml -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: digma-redis-stateful-set - labels: - app: redis -spec: - replicas: 1 - selector: - matchLabels: - app: redis - serviceName: digma-redis - template: - metadata: - labels: - app: redis - spec: - terminationGracePeriodSeconds: 5 - containers: - - name: redis - image: redis:7.0.5-alpine - resources: - requests: - memory: 100Mi - cpu: 50m - limits: - memory: 2Gi - cpu: 400m - ports: - - containerPort: 6379 - volumeMounts: - - name: redis-data - mountPath: /data - volumeClaimTemplates: - - metadata: - name: redis-data - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 10Gi - # persistentVolumeClaimRetentionPolicy: - # whenDeleted: Retain diff --git a/src/sample-app-go/Chart.yaml b/src/sample-app-go/Chart.yaml deleted file mode 100644 index def6f512..00000000 --- a/src/sample-app-go/Chart.yaml +++ /dev/null @@ -1,24 +0,0 @@ -apiVersion: v2 -name: sample-app-go -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: 1.1.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. -# It is recommended to use it with quotes. -appVersion: "1.1.0" diff --git a/src/sample-app-go/files/go.mod b/src/sample-app-go/files/go.mod deleted file mode 100644 index a3fc4ba3..00000000 --- a/src/sample-app-go/files/go.mod +++ /dev/null @@ -1,40 +0,0 @@ -module github.com/digma-ai/helm-chart/src/sample-app-go - -go 1.17 - -require go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.7.0 - -require ( - github.com/cenkalti/backoff/v4 v4.1.3 // indirect - github.com/go-logr/logr v1.2.3 // indirect - github.com/go-logr/stdr v1.2.2 // indirect - github.com/golang-jwt/jwt v3.2.2+incompatible // indirect - github.com/golang/protobuf v1.5.2 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.7.0 // indirect - go.opentelemetry.io/proto/otlp v0.16.0 // indirect - golang.org/x/time v0.3.0 // indirect - google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1 // indirect - google.golang.org/grpc v1.46.0 // indirect - google.golang.org/protobuf v1.28.0 // indirect -) - -require ( - github.com/digma-ai/otel-go-instrumentation v1.0.8 - github.com/digma-ai/otel-go-instrumentation/echo v1.0.1 - github.com/labstack/echo/v4 v4.10.2 - github.com/labstack/gommon v0.4.0 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.18 // indirect - github.com/valyala/bytebufferpool v1.0.0 // indirect - github.com/valyala/fasttemplate v1.2.2 // indirect - go.opentelemetry.io/contrib/instrumentation/github.com/labstack/echo/otelecho v0.32.0 - go.opentelemetry.io/otel v1.7.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.7.0 - go.opentelemetry.io/otel/sdk v1.7.0 - go.opentelemetry.io/otel/trace v1.7.0 // indirect - golang.org/x/crypto v0.8.0 // indirect - golang.org/x/net v0.9.0 // indirect - golang.org/x/sys v0.7.0 // indirect - golang.org/x/text v0.9.0 // indirect -) diff --git a/src/sample-app-go/files/go.sum b/src/sample-app-go/files/go.sum deleted file mode 100644 index 18e735c9..00000000 --- a/src/sample-app-go/files/go.sum +++ /dev/null @@ -1,524 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= -github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/digma-ai/otel-go-instrumentation v1.0.8 h1:NIcisnTDcFlbbpcBJqMJjcfLUwbLWarl88siB8ajwvA= -github.com/digma-ai/otel-go-instrumentation v1.0.8/go.mod h1:ZjSLSnl1kkk61O7NiU9UF1Wl0ngCHJtuauO+XW86AxM= -github.com/digma-ai/otel-go-instrumentation/echo v1.0.1 h1:7Gz9rqGQHBUFI43iD+/3CLYJRyrtlzQZgvryqpYXAf4= -github.com/digma-ai/otel-go-instrumentation/echo v1.0.1/go.mod h1:Rnly3mLWJene3bknQxBzy1IfWqS1Y90SWoyMGl1E17w= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= -github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= -github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= -github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 h1:BZHcxBETFHIdVyhyEfOvn/RdU/QGdLI4y34qQGjGWO0= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/labstack/echo/v4 v4.7.2 h1:Kv2/p8OaQ+M6Ex4eGimg9b9e6icoxA42JSlOR3msKtI= -github.com/labstack/echo/v4 v4.7.2/go.mod h1:xkCDAdFCIf8jsFQ5NnbK7oqaF/yU1A1X20Ltm0OvSks= -github.com/labstack/echo/v4 v4.10.2 h1:n1jAhnq/elIFTHr1EYpiYtyKgx4RW9ccVgkqByZaN2M= -github.com/labstack/echo/v4 v4.10.2/go.mod h1:OEyqf2//K1DFdE57vw2DRgWY0M7s65IVQO2FzvI4J5k= -github.com/labstack/gommon v0.3.1 h1:OomWaJXm7xR6L1HmEtGyQf26TEn7V6X88mktX9kee9o= -github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= -github.com/labstack/gommon v0.4.0 h1:y7cvthEAEbU0yHOf4axH8ZG2NH8knB9iNSoTO8dyIk8= -github.com/labstack/gommon v0.4.0/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= -github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= -github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= -github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s= -github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= -github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4= -github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo= -github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opentelemetry.io/contrib/instrumentation/github.com/labstack/echo/otelecho v0.32.0 h1:bkyJgifVcPo1w8HYf1K0ExtgdmNgxyVa02o/yFDrSAA= -go.opentelemetry.io/contrib/instrumentation/github.com/labstack/echo/otelecho v0.32.0/go.mod h1:rmdIBqEgyXERsERn9CjVXXPL9qAinIsID+X9AhBnzOQ= -go.opentelemetry.io/contrib/propagators/b3 v1.7.0 h1:oRAenUhj+GFttfIp3gj7HYVzBhPOHgq/dWPDSmLCXSY= -go.opentelemetry.io/contrib/propagators/b3 v1.7.0/go.mod h1:gXx7AhL4xXCF42gpm9dQvdohoDa2qeyEx4eIIxqK+h4= -go.opentelemetry.io/otel v1.7.0 h1:Z2lA3Tdch0iDcrhJXDIlC94XE+bxok1F9B+4Lz/lGsM= -go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.7.0 h1:7Yxsak1q4XrJ5y7XBnNwqWx9amMZvoidCctv62XOQ6Y= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.7.0/go.mod h1:M1hVZHNxcbkAlcvrOMlpQ4YOO3Awf+4N2dxkZL3xm04= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.7.0 h1:cMDtmgJ5FpRvqx9x2Aq+Mm0O6K/zcUkH73SFz20TuBw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.7.0/go.mod h1:ceUgdyfNv4h4gLxHR0WNfDiiVmZFodZhZSbOLhpxqXE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.7.0 h1:MFAyzUPrTwLOwCi+cltN0ZVyy4phU41lwH+lyMyQTS4= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.7.0/go.mod h1:E+/KKhwOSw8yoPxSSuUHG6vKppkvhN+S1Jc7Nib3k3o= -go.opentelemetry.io/otel/sdk v1.7.0 h1:4OmStpcKVOfvDOgCt7UriAPtKolwIhxpnSNI/yK+1B0= -go.opentelemetry.io/otel/sdk v1.7.0/go.mod h1:uTEOTwaqIVuTGiJN7ii13Ibp75wJmYUDe374q6cZwUU= -go.opentelemetry.io/otel/trace v1.7.0 h1:O37Iogk1lEkMRXewVtZ1BBTVn5JEp8GrJvP92bJqC6o= -go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v0.16.0 h1:WHzDWdXUvbc5bG2ObdrGfaNpQz7ft7QN9HHmJlbiB1E= -go.opentelemetry.io/proto/otlp v0.16.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= -go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= -go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d h1:sK3txAijHtOK88l68nt020reeT1ZdKLIYetKl95FzVY= -golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ= -golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220622184535-263ec571b305 h1:dAgbJ2SP4jD6XYfMNLVj0BF21jo2PjChrtGaAvF5M3I= -golang.org/x/net v0.0.0-20220622184535-263ec571b305/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= -golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220622161953-175b2fd9d664 h1:wEZYwx+kK+KlZ0hpvP2Ls1Xr4+RWnlzGFwPP0aiDjIU= -golang.org/x/sys v0.0.0-20220622161953-175b2fd9d664/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= -golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= -golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220609170525-579cf78fd858 h1:Dpdu/EMxGMFgq0CeYMh4fazTD2vtlZRYE7wyynxJb9U= -golang.org/x/time v0.0.0-20220609170525-579cf78fd858/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= -golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1 h1:b9mVrqYfq3P4bCdaLg1qtBnPzUYgglsIdjZkL/fQVOE= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.46.0 h1:oCjezcn6g6A75TGoKYBPgKmVBLexhYLM6MebdrPApP8= -google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= -google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/src/sample-app-go/files/main.go b/src/sample-app-go/files/main.go deleted file mode 100644 index c5829ee7..00000000 --- a/src/sample-app-go/files/main.go +++ /dev/null @@ -1,110 +0,0 @@ -package main - -import ( - "context" - "fmt" - "log" - "net/http" - "os" - "time" - - "github.com/digma-ai/otel-go-instrumentation/detector" - digmaecho "github.com/digma-ai/otel-go-instrumentation/echo" - "github.com/labstack/echo/v4" - "go.opentelemetry.io/contrib/instrumentation/github.com/labstack/echo/otelecho" - "go.opentelemetry.io/otel" - "go.opentelemetry.io/otel/exporters/otlp/otlptrace" - "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc" - "go.opentelemetry.io/otel/propagation" - "go.opentelemetry.io/otel/sdk/resource" - sdktrace "go.opentelemetry.io/otel/sdk/trace" - semconv "go.opentelemetry.io/otel/semconv/v1.10.0" -) - -var ( - port = "8011" - appName = "sample-app" -) - -func index(c echo.Context) error { - return c.JSON(http.StatusOK, "Hello!") -} - -func main() { - shutdown := InitTracer("sample-app", "", "", []string{}) - defer shutdown() - - r := echo.New() - r.Use(otelecho.Middleware(appName)) - r.Use(digmaecho.Middleware()) - r.GET("/go", index) - - fmt.Println("listening on :" + port) - handleErr(r.Start(":"+port), "failed to listen & serve") -} - -func handleErr(err error, message string) { - if err != nil { - log.Fatalf("%s: %v", message, err) - } -} - -func InitTracer(serviceName string, moduleImportPath string, modulePath string, otherImportPaths []string) func() { - otlpAddress, ok := os.LookupEnv("OTEL_EXPORTER_OTLP_ENDPOINT") - if !ok { - otlpAddress = "localhost:5050" - } - - ctx := context.Background() - - res, err := resource.New(ctx, - //resource.WithFromEnv(), - resource.WithProcess(), - resource.WithTelemetrySDK(), - resource.WithHost(), - resource.WithAttributes( - // the service name used to display traces in backends - semconv.ServiceNameKey.String(serviceName), - semconv.TelemetrySDKLanguageGo, - ), - /* - Resources can also be detected automatically through resource.Detector implementations. - These Detectors may discover information about the currently running process, the operating system it is running on, the cloud provider hosting that operating system instance, or any number of other resource attributes. - */ - resource.WithDetectors( - &detector.DigmaDetector{ - DeploymentEnvironment: "HELM-TEST", - CommitId: "", - ModuleImportPath: moduleImportPath, - ModulePath: modulePath, - OtherModulesImportPath: otherImportPaths, - }, - )) - - handleErr(err, "failed to create resource") - - traceClient := otlptracegrpc.NewClient( - otlptracegrpc.WithInsecure(), - otlptracegrpc.WithEndpoint(otlpAddress), - otlptracegrpc.WithReconnectionPeriod(2*time.Second), - //otlptracegrpc.WithDialOption(grpc.WithBlock() - ) - - cancelCtx, cancel := context.WithTimeout(ctx, time.Second*10) - defer cancel() - traceExporter, err := otlptrace.New(cancelCtx, traceClient) - handleErr(err, "failed to create trace exporter") - - tracerProvider := sdktrace.NewTracerProvider( - sdktrace.WithSampler(sdktrace.AlwaysSample()), - sdktrace.WithResource(res), - sdktrace.WithBatcher(traceExporter)) - - otel.SetTracerProvider(tracerProvider) - otel.SetTextMapPropagator(propagation.NewCompositeTextMapPropagator(propagation.TraceContext{}, propagation.Baggage{})) - return func() { - log.Println("TracerProvider: shutting down...") - // Shutdown will flush any remaining spans and shut down the exporter. - handleErr(tracerProvider.Shutdown(context.Background()), "failed to shutdown TracerProvider") - } -} diff --git a/src/sample-app-go/templates/configMap.yaml b/src/sample-app-go/templates/configMap.yaml deleted file mode 100644 index 22ce81e2..00000000 --- a/src/sample-app-go/templates/configMap.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-configmap - namespace: {{ .Release.Namespace }} -data: - go_mod: {{ tpl (.Files.Get "files/go.mod") . | quote }} - go_sum: {{ tpl (.Files.Get "files/go.sum") . | quote }} - main_go: {{ .Files.Get "files/main.go" | quote }} \ No newline at end of file diff --git a/src/sample-app-go/templates/pod.yaml b/src/sample-app-go/templates/pod.yaml deleted file mode 100644 index 5879272f..00000000 --- a/src/sample-app-go/templates/pod.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: v1 -kind: Pod -metadata: - name: {{ .Release.Name }}-pod - namespace: {{ .Release.Namespace }} - labels: - app: sample-app-go -spec: - containers: - - name: sample-app-go - image: golang:1.17 - volumeMounts: - - name: {{ $.Release.Name }}-configmap-volume - mountPath: /app - command: ["/bin/sh"] - args: ["-c", "cd /app; go run ./"] - env: - - name: OTEL_EXPORTER_OTLP_ENDPOINT - value: {{ .Values.otlpExporter.host }}:5050 - - volumes: - - name: {{ $.Release.Name }}-configmap-volume - configMap: - name: {{ .Release.Name }}-configmap - items: - - key: go_mod - path: go.mod - - key: go_sum - path: go.sum - - key: main_go - path: main.go \ No newline at end of file diff --git a/src/sample-app-go/templates/service.yaml b/src/sample-app-go/templates/service.yaml deleted file mode 100644 index 33490bd6..00000000 --- a/src/sample-app-go/templates/service.yaml +++ /dev/null @@ -1,28 +0,0 @@ -{{- if not .Values.expose }} - -kind: Service -apiVersion: v1 -metadata: - name: {{ .Release.Name }}-service-lb -spec: - type: LoadBalancer - selector: - app: sample-app-go - ports: - - protocol: TCP - port: 8011 - -{{- else -}} - -kind: Service -apiVersion: v1 -metadata: - name: {{ .Release.Name }}-service-cip -spec: - selector: - app: sample-app-go - ports: - - protocol: TCP - port: 8011 - -{{- end -}} \ No newline at end of file diff --git a/src/sample-app-go/values.yaml b/src/sample-app-go/values.yaml deleted file mode 100644 index cbb7c7b7..00000000 --- a/src/sample-app-go/values.yaml +++ /dev/null @@ -1,4 +0,0 @@ -otlpExporter: - host: "localhost" - -expose: true diff --git a/src/traefik/digma-ingress-route.yaml b/src/traefik/digma-ingress-route.yaml deleted file mode 100644 index 3ab9ea09..00000000 --- a/src/traefik/digma-ingress-route.yaml +++ /dev/null @@ -1,34 +0,0 @@ -apiVersion: traefik.containo.us/v1alpha1 -kind: IngressRoute -metadata: - name: digma-analytics-ingress-route -spec: - entryPoints: - - web - - websecure - routes: - - kind: Rule - match: Host(`digma`) - services: - - kind: Service - name: digma-analytics # [2] The digma's analytics api service name - port: 5051 - scheme: http -# --- - -# apiVersion: networking.k8s.io/v1 -# kind: Ingress -# metadata: -# name: digma-analytics-ingress -# spec: -# rules: -# - host: "digma" -# http: -# paths: -# - pathType: Prefix -# path: "/" -# backend: -# service: -# name: digma-analytics -# port: -# number: 5051 diff --git a/src/traefik/sample-ingress-route.yaml b/src/traefik/sample-ingress-route.yaml deleted file mode 100644 index adc5e479..00000000 --- a/src/traefik/sample-ingress-route.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: traefik.containo.us/v1alpha1 -kind: IngressRoute -metadata: - name: go-traefik-route -spec: - entryPoints: - - web - routes: - - kind: Rule - match: PathPrefix(`/go`) - services: - - kind: Service - name: go-service-cip - port: 8011 \ No newline at end of file