added repo
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
# 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/
|
||||
doc.yaml
|
||||
README.tpl
|
||||
@@ -0,0 +1,12 @@
|
||||
dependencies:
|
||||
- name: minio
|
||||
repository: https://charts.min.io/
|
||||
version: 4.0.12
|
||||
- name: grafana-agent-operator
|
||||
repository: https://grafana.github.io/helm-charts
|
||||
version: 0.4.0
|
||||
- name: rollout-operator
|
||||
repository: https://grafana.github.io/helm-charts
|
||||
version: 0.16.0
|
||||
digest: sha256:504a9bfa69a6d4130c496ed3382add7679b8aed30c1320a418831bdbea4e0ace
|
||||
generated: "2024-07-02T12:00:59.197303-04:00"
|
||||
@@ -0,0 +1,39 @@
|
||||
apiVersion: v2
|
||||
appVersion: 2.5.0
|
||||
dependencies:
|
||||
- alias: minio
|
||||
condition: minio.enabled
|
||||
name: minio
|
||||
repository: https://charts.min.io/
|
||||
version: 4.0.12
|
||||
- alias: grafana-agent-operator
|
||||
condition: metaMonitoring.grafanaAgent.installOperator
|
||||
name: grafana-agent-operator
|
||||
repository: https://grafana.github.io/helm-charts
|
||||
version: 0.4.0
|
||||
- alias: rollout_operator
|
||||
condition: rollout_operator.enabled
|
||||
name: rollout-operator
|
||||
repository: https://grafana.github.io/helm-charts
|
||||
version: 0.16.0
|
||||
description: Grafana Tempo in MicroService mode
|
||||
home: https://grafana.com/docs/tempo/latest/
|
||||
icon: https://raw.githubusercontent.com/grafana/tempo/master/docs/tempo/website/logo_and_name.png
|
||||
maintainers:
|
||||
- email: number101010@gmail.com
|
||||
name: joe-elliott
|
||||
- email: 9215868@gmail.com
|
||||
name: swartz-k
|
||||
- name: annanay25
|
||||
- name: mdisibio
|
||||
- name: mapno
|
||||
- name: BitProcessor
|
||||
- name: faustodavid
|
||||
- name: zalegrala
|
||||
- email: sheikhabubaker761@gmail.com
|
||||
name: Sheikh-Abubaker
|
||||
name: tempo-distributed
|
||||
sources:
|
||||
- https://github.com/grafana/tempo
|
||||
type: application
|
||||
version: 1.15.3
|
||||
@@ -0,0 +1,973 @@
|
||||
# tempo-distributed
|
||||
|
||||
  
|
||||
|
||||
Grafana Tempo in MicroService mode
|
||||
|
||||
## Source Code
|
||||
|
||||
* <https://github.com/grafana/tempo>
|
||||
|
||||
## Requirements
|
||||
|
||||
| Repository | Name | Version |
|
||||
|------------|------|---------|
|
||||
| https://charts.min.io/ | minio(minio) | 4.0.12 |
|
||||
| https://grafana.github.io/helm-charts | grafana-agent-operator(grafana-agent-operator) | 0.4.0 |
|
||||
| https://grafana.github.io/helm-charts | rollout_operator(rollout-operator) | 0.16.0 |
|
||||
|
||||
## Chart Repo
|
||||
|
||||
Add the following repo to use the chart:
|
||||
|
||||
```console
|
||||
helm repo add grafana https://grafana.github.io/helm-charts
|
||||
```
|
||||
|
||||
## Installing the Chart
|
||||
|
||||
To install the chart with the release name `my-release`:
|
||||
|
||||
```console
|
||||
helm install my-release grafana/tempo-distributed
|
||||
```
|
||||
|
||||
## Uninstalling the Chart
|
||||
|
||||
To uninstall/delete the my-release deployment:
|
||||
|
||||
```console
|
||||
helm delete my-release
|
||||
```
|
||||
|
||||
The command removes all the Kubernetes components associated with the chart and deletes the release.
|
||||
|
||||
## Upgrading
|
||||
|
||||
A major chart version change indicates that there is an incompatible breaking change needing manual actions.
|
||||
|
||||
### From Chart versions < 1.15.2
|
||||
|
||||
Switch to new overrides format, see https://grafana.com/docs/tempo/latest/configuration/#overrides.
|
||||
|
||||
### From Chart versions < 1.13.0
|
||||
|
||||
EXPERIMENTAL: Zone Aware Replication has been added to the ingester statefulset.
|
||||
Attention, the calculation of the pods per AZ is as follows ```(.values.ingester.replicas + numberOfZones -1)/numberOfZones```
|
||||
|
||||
### From Chart versions < 1.6.0
|
||||
|
||||
The metrics generator component in the chart has been disabled by default, but the configuration for the processors was not empty, resulting error sin the distributor log. Here we align the default metrics generator config settings to both disable the generator and remove processors. Users who wish to keep the their processors enabled, will need to update their values.
|
||||
|
||||
### From Chart versions < 1.5.0
|
||||
|
||||
Please be aware that we've updated the minor version to Tempo 2.2, which includes breaking changes.
|
||||
We recommend reviewing the [release notes](https://github.com/grafana/tempo/releases/tag/v2.2.0) before upgrading.
|
||||
|
||||
### From Chart versions < 1.3.0
|
||||
|
||||
Please be aware that we've updated the minor version to Tempo 2.1, which includes breaking changes.
|
||||
We recommend reviewing the [release notes](https://github.com/grafana/tempo/releases/tag/v2.1.0/) before upgrading.
|
||||
|
||||
### From Chart versions < 1.0.0
|
||||
|
||||
Please note that we've incremented the major version when upgrading to Tempo 2.0. There were a large number of
|
||||
changes in this release (breaking and otherwise). It is encouraged to review the [release notes](https://grafana.com/docs/tempo/latest/release-notes/v2-0/)
|
||||
and [1.5 -> 2.0 upgrade guide](https://grafana.com/docs/tempo/latest/setup/upgrade/) before upgrading.
|
||||
|
||||
### From chart version < 0.27.0
|
||||
|
||||
Version 0.27.0:
|
||||
|
||||
Many changes have been introduced, including some breaking changes.
|
||||
|
||||
The [PR](https://github.com/grafana/helm-charts/pull/1759) includes additional details.
|
||||
|
||||
* **BREAKING CHANGE** centralize selector label handling -- users who wish to keep old values should still be able to use the `nameOverride` and `fullNameOverride` top level keys in their values.
|
||||
|
||||
* **BREAKING CHANGE** serviceMonitor has been nested under metaMonitoring -- metamonitoring can be used scrape services as well as install the operator with the following values. Note also that the port names have changed from `http` to `http-metrics`.
|
||||
```yaml
|
||||
metaMonitoring:
|
||||
serviceMonitor:
|
||||
enabled: true
|
||||
grafanaAgent:
|
||||
enabled: true
|
||||
installOperator: true
|
||||
```
|
||||
* minio can now be enabled as part of this chart using the following values
|
||||
```yaml
|
||||
minio:
|
||||
enabled: true
|
||||
```
|
||||
* allow configuration to be stored in a secret. See the documentation for `useExternalConfig` and `configStorageType` in the values file for more details.
|
||||
|
||||
### From chart version < 0.26.0
|
||||
|
||||
Version 0.26.0
|
||||
|
||||
* Moves metricsGenerator.config.storage_remote_write to metricsGenerator.config.storage.remote_write
|
||||
* Moves metricsGenerator.config.service_graphs_max_items to metricsGenerator.config.processor.service_graphs.max_items
|
||||
|
||||
### From chart version < 0.23.0
|
||||
|
||||
Version 0.23.0:
|
||||
|
||||
* Adds /var/tempo emptyDir mount for querier, queryfrontend, distributor and compactor. Previously, /var/tempo was directory inside container.
|
||||
|
||||
* Sets queryFrontend.query.enabled to false. tempo-query is only required for grafana version <7.5 for compatibility with jaeger-ui. Please also note that tempo-query is incompatible with securityContext readOnlyRootFilesystem set to true.
|
||||
|
||||
* Sets stricter default securityContext:
|
||||
```yaml
|
||||
tempo:
|
||||
securityContext:
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
readOnlyRootFilesystem: true
|
||||
runAsNonRoot: true
|
||||
runAsUser: 1000
|
||||
runAsGroup: 1000
|
||||
allowPrivilegeEscalation: false
|
||||
podSecurityContext:
|
||||
fsGroup: 1000
|
||||
```
|
||||
If you had ingester persistence enabled, you might need to manually change ownership of files in your PV if your CSI doesn't support fsGroup
|
||||
|
||||
### From Chart version >= 0.22.0
|
||||
Align Istio GRPC named port syntax. For example,
|
||||
|
||||
- otlp-grpc -> grpc-otlp
|
||||
- distributor-otlp-grpc -> grpc-distributor-otlp
|
||||
- jaeger-grpc -> grpc-jaeger
|
||||
- distributor-jaeger-grpc -> grpc-distributor-jaeger
|
||||
|
||||
In case you need to rollback, please search the right hand side pattern and replace with left hand side pattern.
|
||||
|
||||
### From Chart version < 0.20.0
|
||||
The image's attributes must be set under the `image` key for the Memcached service.
|
||||
```yaml
|
||||
memcached:
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: memcached
|
||||
tag: "1.5.17-alpine"
|
||||
pullPolicy: "IfNotPresent"
|
||||
```
|
||||
|
||||
### From Chart version < 0.18.0
|
||||
Trace ingestion must now be enabled with the `enabled` key:
|
||||
```yaml
|
||||
traces:
|
||||
otlp:
|
||||
grpc:
|
||||
enabled: true
|
||||
http:
|
||||
enabled: true
|
||||
zipkin:
|
||||
enabled: true
|
||||
jaeger:
|
||||
thriftHttp:
|
||||
enabled: true
|
||||
opencensus:
|
||||
enabled: true
|
||||
```
|
||||
|
||||
### From Chart versions < 0.9.0
|
||||
|
||||
This release the component label was shortened to be more aligned with the Loki-distributed chart and the [mixin](https://github.com/grafana/tempo/tree/master/operations/tempo-mixin) dashboards.
|
||||
|
||||
Due to the label changes, an existing installation cannot be upgraded without manual interaction. There are basically two options:
|
||||
|
||||
Option 1
|
||||
Uninstall the old release and re-install the new one. There will be no data loss, as the collectors/agents can cache for a short period.
|
||||
|
||||
Option 2
|
||||
Add new selector labels to the existing pods. This option will make your pods also temporarely unavailable, option 1 is faster:
|
||||
|
||||
```
|
||||
kubectl label pod -n <namespace> -l app.kubernetes.io/component=<release-name>-tempo-distributed-<component>,app.kubernetes.io/instance=<instance-name> app.kubernetes.io/component=<component> --overwrite
|
||||
```
|
||||
|
||||
Perform a non-cascading deletion of the Deployments and Statefulsets which will keep the pods running:
|
||||
|
||||
```
|
||||
kubectl delete <deployment/statefulset> -n <namespace> -l app.kubernetes.io/component=<release-name>-tempo-distributed-<component>,app.kubernetes.io/instance=<instance-name> --cascade=false
|
||||
```
|
||||
|
||||
Perform a regular Helm upgrade on the existing release. The new Deployment/Statefulset will pick up the existing pods and perform a rolling upgrade.
|
||||
|
||||
### From Chart versions < 0.8.0
|
||||
|
||||
By default all tracing protocols are disabled and you need to specify which protocols to enable for ingestion.
|
||||
|
||||
For example to enable Jaeger grpc thrift http and zipkin protocols:
|
||||
```yaml
|
||||
traces:
|
||||
jaeger:
|
||||
grpc: true
|
||||
thriftHttp: true
|
||||
zipkin: true
|
||||
```
|
||||
|
||||
The distributor service is now called {{tempo.fullname}}-distributor. That could impact your ingestion towards this service.
|
||||
|
||||
### From Chart Versions < 0.7.0
|
||||
|
||||
The memcached default args are removed and should be provided manually. The settings for the `memcached.exporter` moved to `memcachedExporter`
|
||||
|
||||
## Values
|
||||
|
||||
| Key | Type | Default | Description |
|
||||
|-----|------|---------|-------------|
|
||||
| adminApi.affinity | string | Soft node and soft zone anti-affinity | Affinity for admin-api pods. Passed through `tpl` and, thus, to be configured as string |
|
||||
| adminApi.annotations | object | `{}` | |
|
||||
| adminApi.containerSecurityContext | object | `{"readOnlyRootFilesystem":true}` | The SecurityContext for admin_api containers |
|
||||
| adminApi.env | list | `[]` | |
|
||||
| adminApi.extraArgs | object | `{}` | |
|
||||
| adminApi.extraContainers | list | `[]` | |
|
||||
| adminApi.extraEnvFrom | list | `[]` | |
|
||||
| adminApi.extraVolumeMounts | list | `[]` | |
|
||||
| adminApi.extraVolumes | list | `[]` | |
|
||||
| adminApi.hostAliases | list | `[]` | hostAliases to add |
|
||||
| adminApi.image.pullSecrets | list | `[]` | Optional list of imagePullSecrets. Overrides `tempo.image.pullSecrets` |
|
||||
| adminApi.image.registry | string | `nil` | The Docker registry for the adminApi image. Overrides `tempo.image.registry` |
|
||||
| adminApi.image.repository | string | `nil` | Docker image repository for the adminApi image. Overrides `tempo.image.repository` |
|
||||
| adminApi.image.tag | string | `nil` | Docker image tag for the adminApi image. Overrides `tempo.image.tag` |
|
||||
| adminApi.initContainers | list | `[]` | |
|
||||
| adminApi.nodeSelector | object | `{}` | |
|
||||
| adminApi.persistence.subPath | string | `nil` | |
|
||||
| adminApi.podAnnotations | object | `{}` | |
|
||||
| adminApi.podDisruptionBudget | object | `{}` | |
|
||||
| adminApi.podLabels | object | `{}` | |
|
||||
| adminApi.readinessProbe.httpGet.path | string | `"/ready"` | |
|
||||
| adminApi.readinessProbe.httpGet.port | string | `"http-metrics"` | |
|
||||
| adminApi.readinessProbe.initialDelaySeconds | int | `45` | |
|
||||
| adminApi.replicas | int | `1` | |
|
||||
| adminApi.resources.requests.cpu | string | `"10m"` | |
|
||||
| adminApi.resources.requests.memory | string | `"32Mi"` | |
|
||||
| adminApi.securityContext | object | `{}` | |
|
||||
| adminApi.service.annotations | object | `{}` | |
|
||||
| adminApi.service.labels | object | `{}` | |
|
||||
| adminApi.strategy.rollingUpdate.maxSurge | int | `0` | |
|
||||
| adminApi.strategy.rollingUpdate.maxUnavailable | int | `1` | |
|
||||
| adminApi.strategy.type | string | `"RollingUpdate"` | |
|
||||
| adminApi.terminationGracePeriodSeconds | int | `60` | |
|
||||
| adminApi.tolerations | list | `[]` | |
|
||||
| adminApi.topologySpreadConstraints | string | Defaults to allow skew no more then 1 node per AZ | topologySpread for admin-api pods. Passed through `tpl` and, thus, to be configured as string |
|
||||
| cache.caches[0].memcached.consistent_hash | bool | `true` | |
|
||||
| cache.caches[0].memcached.host | string | `"{{ include \"tempo.fullname\" . }}-memcached"` | |
|
||||
| cache.caches[0].memcached.service | string | `"memcached-client"` | |
|
||||
| cache.caches[0].memcached.timeout | string | `"500ms"` | |
|
||||
| cache.caches[0].roles[0] | string | `"parquet-footer"` | |
|
||||
| cache.caches[0].roles[1] | string | `"bloom"` | |
|
||||
| cache.caches[0].roles[2] | string | `"frontend-search"` | |
|
||||
| compactor.config.compaction.block_retention | string | `"48h"` | Duration to keep blocks |
|
||||
| compactor.config.compaction.compacted_block_retention | string | `"1h"` | |
|
||||
| compactor.config.compaction.compaction_cycle | string | `"30s"` | The time between compaction cycles |
|
||||
| compactor.config.compaction.compaction_window | string | `"1h"` | Blocks in this time window will be compacted together |
|
||||
| compactor.config.compaction.max_block_bytes | int | `107374182400` | Maximum size of a compacted block in bytes |
|
||||
| compactor.config.compaction.max_compaction_objects | int | `6000000` | Maximum number of traces in a compacted block. WARNING: Deprecated. Use max_block_bytes instead. |
|
||||
| compactor.config.compaction.max_time_per_tenant | string | `"5m"` | The maximum amount of time to spend compacting a single tenant before moving to the next |
|
||||
| compactor.config.compaction.retention_concurrency | int | `10` | Number of tenants to process in parallel during retention |
|
||||
| compactor.config.compaction.v2_in_buffer_bytes | int | `5242880` | Amount of data to buffer from input blocks |
|
||||
| compactor.config.compaction.v2_out_buffer_bytes | int | `20971520` | Flush data to backend when buffer is this large |
|
||||
| compactor.config.compaction.v2_prefetch_traces_count | int | `1000` | Number of traces to buffer in memory during compaction |
|
||||
| compactor.dnsConfigOverides.dnsConfig.options[0].name | string | `"ndots"` | |
|
||||
| compactor.dnsConfigOverides.dnsConfig.options[0].value | string | `"3"` | |
|
||||
| compactor.dnsConfigOverides.enabled | bool | `false` | |
|
||||
| compactor.extraArgs | list | `[]` | Additional CLI args for the compactor |
|
||||
| compactor.extraEnv | list | `[]` | Environment variables to add to the compactor pods |
|
||||
| compactor.extraEnvFrom | list | `[]` | Environment variables from secrets or configmaps to add to the compactor pods |
|
||||
| compactor.extraVolumeMounts | list | `[]` | Extra volumes for compactor pods |
|
||||
| compactor.extraVolumes | list | `[]` | Extra volumes for compactor deployment |
|
||||
| compactor.hostAliases | list | `[]` | hostAliases to add |
|
||||
| compactor.image.pullSecrets | list | `[]` | Optional list of imagePullSecrets. Overrides `tempo.image.pullSecrets` |
|
||||
| compactor.image.registry | string | `nil` | The Docker registry for the compactor image. Overrides `tempo.image.registry` |
|
||||
| compactor.image.repository | string | `nil` | Docker image repository for the compactor image. Overrides `tempo.image.repository` |
|
||||
| compactor.image.tag | string | `nil` | Docker image tag for the compactor image. Overrides `tempo.image.tag` |
|
||||
| compactor.nodeSelector | object | `{}` | Node selector for compactor pods |
|
||||
| compactor.podAnnotations | object | `{}` | Annotations for compactor pods |
|
||||
| compactor.podLabels | object | `{}` | Labels for compactor pods |
|
||||
| compactor.priorityClassName | string | `nil` | The name of the PriorityClass for compactor pods |
|
||||
| compactor.replicas | int | `1` | Number of replicas for the compactor |
|
||||
| compactor.resources | object | `{}` | Resource requests and limits for the compactor |
|
||||
| compactor.service.annotations | object | `{}` | Annotations for compactor service |
|
||||
| compactor.terminationGracePeriodSeconds | int | `30` | Grace period to allow the compactor to shutdown before it is killed |
|
||||
| compactor.tolerations | list | `[]` | Tolerations for compactor pods |
|
||||
| config | string | See values.yaml | Config file contents for Tempo distributed. Passed through the `tpl` function to allow templating |
|
||||
| configStorageType | string | `"ConfigMap"` | Defines what kind of object stores the configuration, a ConfigMap or a Secret. In order to move sensitive information (such as credentials) from the ConfigMap/Secret to a more secure location (e.g. vault), it is possible to use [environment variables in the configuration](https://grafana.com/docs/mimir/latest/operators-guide/configuring/reference-configuration-parameters/#use-environment-variables-in-the-configuration). Such environment variables can be then stored in a separate Secret and injected via the global.extraEnvFrom value. For details about environment injection from a Secret please see [Secrets](https://kubernetes.io/docs/concepts/configuration/secret/#use-case-as-container-environment-variables). |
|
||||
| distributor.affinity | string | Hard node and soft zone anti-affinity | Affinity for distributor pods. Passed through `tpl` and, thus, to be configured as string |
|
||||
| distributor.appProtocol | object | `{"grpc":null}` | Adds the appProtocol field to the distributor service. This allows distributor to work with istio protocol selection. |
|
||||
| distributor.appProtocol.grpc | string | `nil` | Set the optional grpc service protocol. Ex: "grpc", "http2" or "https" |
|
||||
| distributor.autoscaling.behavior | object | `{}` | Autoscaling behavior configuration for the distributor |
|
||||
| distributor.autoscaling.enabled | bool | `false` | Enable autoscaling for the distributor |
|
||||
| distributor.autoscaling.maxReplicas | int | `3` | Maximum autoscaling replicas for the distributor |
|
||||
| distributor.autoscaling.minReplicas | int | `1` | Minimum autoscaling replicas for the distributor |
|
||||
| distributor.autoscaling.targetCPUUtilizationPercentage | int | `60` | Target CPU utilisation percentage for the distributor |
|
||||
| distributor.autoscaling.targetMemoryUtilizationPercentage | string | `nil` | Target memory utilisation percentage for the distributor |
|
||||
| distributor.config.extend_writes | string | `nil` | Disables write extension with inactive ingesters |
|
||||
| distributor.config.log_received_spans | object | `{"enabled":false,"filter_by_status_error":false,"include_all_attributes":false}` | Enable to log every received span to help debug ingestion or calculate span error distributions using the logs |
|
||||
| distributor.config.log_received_traces | string | `nil` | WARNING: Deprecated. Use log_received_spans instead. |
|
||||
| distributor.extraArgs | list | `[]` | Additional CLI args for the distributor |
|
||||
| distributor.extraEnv | list | `[]` | Environment variables to add to the distributor pods |
|
||||
| distributor.extraEnvFrom | list | `[]` | Environment variables from secrets or configmaps to add to the distributor pods |
|
||||
| distributor.extraVolumeMounts | list | `[]` | Extra volumes for distributor pods |
|
||||
| distributor.extraVolumes | list | `[]` | Extra volumes for distributor deployment |
|
||||
| distributor.hostAliases | list | `[]` | hostAliases to add |
|
||||
| distributor.image.pullSecrets | list | `[]` | Optional list of imagePullSecrets. Overrides `tempo.image.pullSecrets` |
|
||||
| distributor.image.registry | string | `nil` | The Docker registry for the ingester image. Overrides `tempo.image.registry` |
|
||||
| distributor.image.repository | string | `nil` | Docker image repository for the ingester image. Overrides `tempo.image.repository` |
|
||||
| distributor.image.tag | string | `nil` | Docker image tag for the ingester image. Overrides `tempo.image.tag` |
|
||||
| distributor.nodeSelector | object | `{}` | Node selector for distributor pods |
|
||||
| distributor.podAnnotations | object | `{}` | Annotations for distributor pods |
|
||||
| distributor.podLabels | object | `{}` | Labels for distributor pods |
|
||||
| distributor.priorityClassName | string | `nil` | The name of the PriorityClass for distributor pods |
|
||||
| distributor.replicas | int | `1` | Number of replicas for the distributor |
|
||||
| distributor.resources | object | `{}` | Resource requests and limits for the distributor |
|
||||
| distributor.service.annotations | object | `{}` | Annotations for distributor service |
|
||||
| distributor.service.externalTrafficPolicy | string | `nil` | If type is LoadBalancer you can set it to 'Local' [preserve the client source IP](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip) |
|
||||
| distributor.service.labels | object | `{}` | Labels for distributor service |
|
||||
| distributor.service.loadBalancerIP | string | `""` | If type is LoadBalancer you can assign the IP to the LoadBalancer |
|
||||
| distributor.service.loadBalancerSourceRanges | list | `[]` | If type is LoadBalancer limit incoming traffic from IPs. |
|
||||
| distributor.service.type | string | `"ClusterIP"` | Type of service for the distributor |
|
||||
| distributor.serviceDiscovery.annotations | object | `{}` | Annotations for distributorDiscovery service |
|
||||
| distributor.serviceDiscovery.labels | object | `{}` | Labels for distributorDiscovery service |
|
||||
| distributor.terminationGracePeriodSeconds | int | `30` | Grace period to allow the distributor to shutdown before it is killed |
|
||||
| distributor.tolerations | list | `[]` | Tolerations for distributor pods |
|
||||
| distributor.topologySpreadConstraints | string | Defaults to allow skew no more then 1 node per AZ | topologySpread for distributor pods. Passed through `tpl` and, thus, to be configured as string |
|
||||
| enterprise.enabled | bool | `false` | |
|
||||
| enterprise.image.repository | string | `"grafana/enterprise-traces"` | Grafana Enterprise Metrics container image repository. Note: for Grafana Tempo use the value 'image.repository' |
|
||||
| enterprise.image.tag | string | `"v2.4.0"` | Grafana Enterprise Metrics container image tag. Note: for Grafana Tempo use the value 'image.tag' |
|
||||
| enterpriseFederationFrontend.affinity | string | Hard node and soft zone anti-affinity | Affinity for federation-frontend pods. Passed through `tpl` and, thus, to be configured as string |
|
||||
| enterpriseFederationFrontend.autoscaling.enabled | bool | `false` | Enable autoscaling for the federation-frontend |
|
||||
| enterpriseFederationFrontend.autoscaling.maxReplicas | int | `3` | Maximum autoscaling replicas for the federation-frontend |
|
||||
| enterpriseFederationFrontend.autoscaling.minReplicas | int | `1` | Minimum autoscaling replicas for the federation-frontend |
|
||||
| enterpriseFederationFrontend.autoscaling.targetCPUUtilizationPercentage | int | `60` | Target CPU utilisation percentage for the federation-frontend |
|
||||
| enterpriseFederationFrontend.autoscaling.targetMemoryUtilizationPercentage | string | `nil` | Target memory utilisation percentage for the federation-frontend |
|
||||
| enterpriseFederationFrontend.enabled | bool | `false` | Specifies whether a federation-frontend should be deployed |
|
||||
| enterpriseFederationFrontend.extraArgs | list | `[]` | Additional CLI args for the federation-frontend |
|
||||
| enterpriseFederationFrontend.extraEnv | list | `[]` | Environment variables to add to the federation-frontend pods |
|
||||
| enterpriseFederationFrontend.extraEnvFrom | list | `[]` | Environment variables from secrets or configmaps to add to the federation-frontend pods |
|
||||
| enterpriseFederationFrontend.extraVolumeMounts | list | `[]` | Extra volumes for federation-frontend pods |
|
||||
| enterpriseFederationFrontend.extraVolumes | list | `[]` | Extra volumes for federation-frontend deployment |
|
||||
| enterpriseFederationFrontend.hostAliases | list | `[]` | hostAliases to add |
|
||||
| enterpriseFederationFrontend.image.pullSecrets | list | `[]` | Optional list of imagePullSecrets. Overrides `tempo.image.pullSecrets` |
|
||||
| enterpriseFederationFrontend.image.registry | string | `nil` | The Docker registry for the federation-frontend image. Overrides `tempo.image.registry` |
|
||||
| enterpriseFederationFrontend.image.repository | string | `nil` | Docker image repository for the federation-frontend image. Overrides `tempo.image.repository` |
|
||||
| enterpriseFederationFrontend.image.tag | string | `nil` | Docker image tag for the federation-frontend image. Overrides `tempo.image.tag` |
|
||||
| enterpriseFederationFrontend.nodeSelector | object | `{}` | Node selector for federation-frontend pods |
|
||||
| enterpriseFederationFrontend.podAnnotations | object | `{}` | Annotations for federation-frontend pods |
|
||||
| enterpriseFederationFrontend.podLabels | object | `{}` | Labels for enterpriseFederationFrontend pods |
|
||||
| enterpriseFederationFrontend.priorityClassName | string | `nil` | The name of the PriorityClass for federation-frontend pods |
|
||||
| enterpriseFederationFrontend.proxy_targets | list | `[]` | |
|
||||
| enterpriseFederationFrontend.replicas | int | `1` | Number of replicas for the federation-frontend |
|
||||
| enterpriseFederationFrontend.resources | object | `{}` | Resource requests and limits for the federation-frontend |
|
||||
| enterpriseFederationFrontend.service.annotations | object | `{}` | Annotations for enterpriseFederationFrontend service |
|
||||
| enterpriseFederationFrontend.service.loadBalancerIP | string | `""` | If type is LoadBalancer you can assign the IP to the LoadBalancer |
|
||||
| enterpriseFederationFrontend.service.loadBalancerSourceRanges | list | `[]` | If type is LoadBalancer limit incoming traffic from IPs. |
|
||||
| enterpriseFederationFrontend.service.port | int | `3100` | Port of the federation-frontend service |
|
||||
| enterpriseFederationFrontend.service.type | string | `"ClusterIP"` | Type of service for the enterpriseFederationFrontend |
|
||||
| enterpriseFederationFrontend.terminationGracePeriodSeconds | int | `30` | Grace period to allow the federation-frontend to shutdown before it is killed |
|
||||
| enterpriseFederationFrontend.tolerations | list | `[]` | Tolerations for federation-frontend pods |
|
||||
| enterpriseFederationFrontend.topologySpreadConstraints | string | Defaults to allow skew no more then 1 node per AZ | topologySpread for federation-frontend pods. Passed through `tpl` and, thus, to be configured as string |
|
||||
| enterpriseGateway.affinity | string | Soft node and soft zone anti-affinity | Affinity for enterprise-gateway pods. Passed through `tpl` and, thus, to be configured as string |
|
||||
| enterpriseGateway.annotations | object | `{}` | |
|
||||
| enterpriseGateway.containerSecurityContext | object | `{"readOnlyRootFilesystem":true}` | The SecurityContext for gateway containers |
|
||||
| enterpriseGateway.env | list | `[]` | |
|
||||
| enterpriseGateway.extraArgs | object | `{}` | |
|
||||
| enterpriseGateway.extraContainers | list | `[]` | |
|
||||
| enterpriseGateway.extraEnvFrom | list | `[]` | |
|
||||
| enterpriseGateway.extraVolumeMounts | list | `[]` | |
|
||||
| enterpriseGateway.extraVolumes | list | `[]` | |
|
||||
| enterpriseGateway.hostAliases | list | `[]` | hostAliases to add |
|
||||
| enterpriseGateway.image.pullSecrets | list | `[]` | Optional list of imagePullSecrets. Overrides `tempo.image.pullSecrets` |
|
||||
| enterpriseGateway.image.registry | string | `nil` | The Docker registry for the enterpriseGateway image. Overrides `tempo.image.registry` |
|
||||
| enterpriseGateway.image.repository | string | `nil` | Docker image repository for the enterpriseGateway image. Overrides `tempo.image.repository` |
|
||||
| enterpriseGateway.image.tag | string | `nil` | Docker image tag for the enterpriseGateway image. Overrides `tempo.image.tag` |
|
||||
| enterpriseGateway.ingress.annotations | object | `{}` | Annotations for the gateway ingress |
|
||||
| enterpriseGateway.ingress.enabled | bool | `false` | Specifies whether an ingress for the gateway should be created |
|
||||
| enterpriseGateway.ingress.hosts | list | `[{"host":"gateway.gem.example.com","paths":[{"path":"/"}]}]` | Hosts configuration for the gateway ingress |
|
||||
| enterpriseGateway.ingress.tls | list | `[{"hosts":["gateway.gem.example.com"],"secretName":"gem-gateway-tls"}]` | TLS configuration for the gateway ingress |
|
||||
| enterpriseGateway.initContainers | list | `[]` | |
|
||||
| enterpriseGateway.nodeSelector | object | `{}` | |
|
||||
| enterpriseGateway.persistence.subPath | string | `nil` | |
|
||||
| enterpriseGateway.podAnnotations | object | `{}` | |
|
||||
| enterpriseGateway.podDisruptionBudget | object | `{}` | |
|
||||
| enterpriseGateway.podLabels | object | `{}` | |
|
||||
| enterpriseGateway.proxy | object | `{}` | Proxy URLs defined in this object will be used if useDefaultProxyURLs is set to false. |
|
||||
| enterpriseGateway.readinessProbe.httpGet.path | string | `"/ready"` | |
|
||||
| enterpriseGateway.readinessProbe.httpGet.port | string | `"http-metrics"` | |
|
||||
| enterpriseGateway.readinessProbe.initialDelaySeconds | int | `45` | |
|
||||
| enterpriseGateway.replicas | int | `1` | |
|
||||
| enterpriseGateway.resources.requests.cpu | string | `"10m"` | |
|
||||
| enterpriseGateway.resources.requests.memory | string | `"32Mi"` | |
|
||||
| enterpriseGateway.securityContext | object | `{}` | |
|
||||
| enterpriseGateway.service.annotations | object | `{}` | Annotations for the enterprise gateway service |
|
||||
| enterpriseGateway.service.clusterIP | string | `nil` | ClusterIP of the enterprise gateway service |
|
||||
| enterpriseGateway.service.labels | object | `{}` | Labels for enterprise gateway service |
|
||||
| enterpriseGateway.service.loadBalancerIP | string | `nil` | Load balancer IPO address if service type is LoadBalancer for enterprise gateway service |
|
||||
| enterpriseGateway.service.port | string | `nil` | Port of the enterprise gateway service; if left undefined, the service will listen on the same port as the pod |
|
||||
| enterpriseGateway.service.type | string | `"ClusterIP"` | Type of the enterprise gateway service |
|
||||
| enterpriseGateway.strategy.rollingUpdate.maxSurge | int | `0` | |
|
||||
| enterpriseGateway.strategy.rollingUpdate.maxUnavailable | int | `1` | |
|
||||
| enterpriseGateway.strategy.type | string | `"RollingUpdate"` | |
|
||||
| enterpriseGateway.terminationGracePeriodSeconds | int | `60` | |
|
||||
| enterpriseGateway.tolerations | list | `[]` | |
|
||||
| enterpriseGateway.topologySpreadConstraints | string | Defaults to allow skew no more then 1 node per AZ | topologySpread for enterprise-gateway pods. Passed through `tpl` and, thus, to be configured as string |
|
||||
| enterpriseGateway.useDefaultProxyURLs | bool | `true` | If you want to use your own proxy URLs, set this to false. |
|
||||
| externalConfigSecretName | string | `"{{ include \"tempo.resourceName\" (dict \"ctx\" . \"component\" \"config\") }}"` | Name of the Secret or ConfigMap that contains the configuration (used for naming even if config is internal). |
|
||||
| externalConfigVersion | string | `"0"` | When 'useExternalConfig' is true, then changing 'externalConfigVersion' triggers restart of services - otherwise changes to the configuration cause a restart. |
|
||||
| externalRuntimeConfigName | string | `"{{ include \"tempo.resourceName\" (dict \"ctx\" . \"component\" \"runtime\") }}"` | Name of the Secret or ConfigMap that contains the runtime configuration (used for naming even if config is internal). |
|
||||
| extraObjects | list | `[]` | Create extra manifests via values. |
|
||||
| fullnameOverride | string | `""` | |
|
||||
| gateway.affinity | string | Hard node and soft zone anti-affinity | Affinity for gateway pods. Passed through `tpl` and, thus, to be configured as string |
|
||||
| gateway.autoscaling.behavior | object | `{}` | Autoscaling behavior configuration for the gateway |
|
||||
| gateway.autoscaling.enabled | bool | `false` | Enable autoscaling for the gateway |
|
||||
| gateway.autoscaling.maxReplicas | int | `3` | Maximum autoscaling replicas for the gateway |
|
||||
| gateway.autoscaling.minReplicas | int | `1` | Minimum autoscaling replicas for the gateway |
|
||||
| gateway.autoscaling.targetCPUUtilizationPercentage | int | `60` | Target CPU utilisation percentage for the gateway |
|
||||
| gateway.autoscaling.targetMemoryUtilizationPercentage | string | `nil` | Target memory utilisation percentage for the gateway |
|
||||
| gateway.basicAuth.enabled | bool | `false` | Enables basic authentication for the gateway |
|
||||
| gateway.basicAuth.existingSecret | string | `nil` | Existing basic auth secret to use. Must contain '.htpasswd' |
|
||||
| gateway.basicAuth.htpasswd | string | `"{{ htpasswd (required \"'gateway.basicAuth.username' is required\" .Values.gateway.basicAuth.username) (required \"'gateway.basicAuth.password' is required\" .Values.gateway.basicAuth.password) }}"` | Uses the specified username and password to compute a htpasswd using Sprig's `htpasswd` function. The value is templated using `tpl`. Override this to use a custom htpasswd, e.g. in case the default causes high CPU load. |
|
||||
| gateway.basicAuth.password | string | `nil` | The basic auth password for the gateway |
|
||||
| gateway.basicAuth.username | string | `nil` | The basic auth username for the gateway |
|
||||
| gateway.enabled | bool | `false` | Specifies whether the gateway should be enabled |
|
||||
| gateway.extraArgs | list | `[]` | Additional CLI args for the gateway |
|
||||
| gateway.extraEnv | list | `[]` | Environment variables to add to the gateway pods |
|
||||
| gateway.extraEnvFrom | list | `[]` | Environment variables from secrets or configmaps to add to the gateway pods |
|
||||
| gateway.extraVolumeMounts | list | `[]` | Volume mounts to add to the gateway pods |
|
||||
| gateway.extraVolumes | list | `[]` | Volumes to add to the gateway pods |
|
||||
| gateway.hostAliases | list | `[]` | hostAliases to add |
|
||||
| gateway.image.pullPolicy | string | `"IfNotPresent"` | The gateway image pull policy |
|
||||
| gateway.image.pullSecrets | list | `[]` | Optional list of imagePullSecrets. Overrides `global.image.pullSecrets` |
|
||||
| gateway.image.registry | string | `nil` | The Docker registry for the gateway image. Overrides `global.image.registry` |
|
||||
| gateway.image.repository | string | `"nginxinc/nginx-unprivileged"` | The gateway image repository |
|
||||
| gateway.image.tag | string | `"1.19-alpine"` | The gateway image tag |
|
||||
| gateway.ingress.annotations | object | `{}` | Annotations for the gateway ingress |
|
||||
| gateway.ingress.enabled | bool | `false` | Specifies whether an ingress for the gateway should be created |
|
||||
| gateway.ingress.hosts | list | `[{"host":"gateway.tempo.example.com","paths":[{"path":"/"}]}]` | Hosts configuration for the gateway ingress |
|
||||
| gateway.ingress.labels | object | `{}` | Labels for the gateway ingress |
|
||||
| gateway.ingress.tls | list | `[{"hosts":["gateway.tempo.example.com"],"secretName":"tempo-gateway-tls"}]` | TLS configuration for the gateway ingress |
|
||||
| gateway.nginxConfig.file | string | See values.yaml | Config file contents for Nginx. Passed through the `tpl` function to allow templating |
|
||||
| gateway.nginxConfig.httpSnippet | string | `""` | Allows appending custom configuration to the http block |
|
||||
| gateway.nginxConfig.logFormat | string | `"main '$remote_addr - $remote_user [$time_local] $status '\n '\"$request\" $body_bytes_sent \"$http_referer\" '\n '\"$http_user_agent\" \"$http_x_forwarded_for\"';"` | NGINX log format |
|
||||
| gateway.nginxConfig.resolver | string | `""` | Allows overriding the DNS resolver address nginx will use |
|
||||
| gateway.nginxConfig.serverSnippet | string | `""` | Allows appending custom configuration to the server block |
|
||||
| gateway.nodeSelector | object | `{}` | Node selector for gateway pods |
|
||||
| gateway.podAnnotations | object | `{}` | Annotations for gateway pods |
|
||||
| gateway.podLabels | object | `{}` | Labels for gateway pods |
|
||||
| gateway.priorityClassName | string | `nil` | The name of the PriorityClass for gateway pods |
|
||||
| gateway.readinessProbe.httpGet.path | string | `"/"` | |
|
||||
| gateway.readinessProbe.httpGet.port | string | `"http-metrics"` | |
|
||||
| gateway.readinessProbe.initialDelaySeconds | int | `15` | |
|
||||
| gateway.readinessProbe.timeoutSeconds | int | `1` | |
|
||||
| gateway.replicas | int | `1` | Number of replicas for the gateway |
|
||||
| gateway.resources | object | `{}` | Resource requests and limits for the gateway |
|
||||
| gateway.service.additionalPorts | list | `[]` | Additional ports to be opneed on gateway service (e.g. for RPC connections) |
|
||||
| gateway.service.annotations | object | `{}` | Annotations for the gateway service |
|
||||
| gateway.service.clusterIP | string | `nil` | ClusterIP of the gateway service |
|
||||
| gateway.service.labels | object | `{}` | Labels for gateway service |
|
||||
| gateway.service.loadBalancerIP | string | `nil` | Load balancer IPO address if service type is LoadBalancer |
|
||||
| gateway.service.nodePort | string | `nil` | Node port if service type is NodePort |
|
||||
| gateway.service.port | int | `80` | Port of the gateway service |
|
||||
| gateway.service.type | string | `"ClusterIP"` | Type of the gateway service |
|
||||
| gateway.terminationGracePeriodSeconds | int | `30` | Grace period to allow the gateway to shutdown before it is killed |
|
||||
| gateway.tolerations | list | `[]` | Tolerations for gateway pods |
|
||||
| gateway.topologySpreadConstraints | string | Defaults to allow skew no more then 1 node per AZ | topologySpread for gateway pods. Passed through `tpl` and, thus, to be configured as string |
|
||||
| gateway.verboseLogging | bool | `true` | Enable logging of 2xx and 3xx HTTP requests |
|
||||
| global.clusterDomain | string | `"cluster.local"` | configures cluster domain ("cluster.local" by default) |
|
||||
| global.dnsNamespace | string | `"kube-system"` | configures DNS service namespace |
|
||||
| global.dnsService | string | `"kube-dns"` | configures DNS service name |
|
||||
| global.image.pullSecrets | list | `[]` | Optional list of imagePullSecrets for all images, excluding enterprise. Names of existing secrets with private container registry credentials. Ref: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod Example: pullSecrets: [ my-dockerconfigjson-secret ] |
|
||||
| global.image.registry | string | `"docker.io"` | Overrides the Docker registry globally for all images, excluding enterprise. |
|
||||
| global.priorityClassName | string | `nil` | Overrides the priorityClassName for all pods |
|
||||
| global_overrides.per_tenant_override_config | string | `"/runtime-config/overrides.yaml"` | |
|
||||
| ingester.affinity | string | Soft node and soft zone anti-affinity | Affinity for ingester pods. Passed through `tpl` and, thus, to be configured as string |
|
||||
| ingester.annotations | object | `{}` | Annotations for the ingester StatefulSet |
|
||||
| ingester.appProtocol | object | `{"grpc":null}` | Adds the appProtocol field to the ingester service. This allows ingester to work with istio protocol selection. |
|
||||
| ingester.appProtocol.grpc | string | `nil` | Set the optional grpc service protocol. Ex: "grpc", "http2" or "https" |
|
||||
| ingester.autoscaling.behavior | object | `{}` | Autoscaling behavior configuration for the ingester |
|
||||
| ingester.autoscaling.enabled | bool | `false` | Enable autoscaling for the ingester. WARNING: Autoscaling ingesters can result in lost data. Only do this if you know what you're doing. |
|
||||
| ingester.autoscaling.maxReplicas | int | `3` | Maximum autoscaling replicas for the ingester |
|
||||
| ingester.autoscaling.minReplicas | int | `2` | Minimum autoscaling replicas for the ingester |
|
||||
| ingester.autoscaling.targetCPUUtilizationPercentage | int | `60` | Target CPU utilisation percentage for the ingester |
|
||||
| ingester.autoscaling.targetMemoryUtilizationPercentage | string | `nil` | Target memory utilisation percentage for the ingester |
|
||||
| ingester.config.complete_block_timeout | string | `nil` | Duration to keep blocks in the ingester after they have been flushed |
|
||||
| ingester.config.flush_all_on_shutdown | bool | `false` | Flush all traces to backend when ingester is stopped |
|
||||
| ingester.config.flush_check_period | string | `nil` | How often to sweep all tenants and move traces from live -> wal -> completed blocks. |
|
||||
| ingester.config.max_block_bytes | string | `nil` | Maximum size of a block before cutting it |
|
||||
| ingester.config.max_block_duration | string | `nil` | Maximum length of time before cutting a block |
|
||||
| ingester.config.replication_factor | int | `3` | Number of copies of spans to store in the ingester ring |
|
||||
| ingester.config.trace_idle_period | string | `nil` | Amount of time a trace must be idle before flushing it to the wal. |
|
||||
| ingester.extraArgs | list | `[]` | Additional CLI args for the ingester |
|
||||
| ingester.extraEnv | list | `[]` | Environment variables to add to the ingester pods |
|
||||
| ingester.extraEnvFrom | list | `[]` | Environment variables from secrets or configmaps to add to the ingester pods |
|
||||
| ingester.extraVolumeMounts | list | `[]` | Extra volumes for ingester pods |
|
||||
| ingester.extraVolumes | list | `[]` | Extra volumes for ingester deployment |
|
||||
| ingester.hostAliases | list | `[]` | hostAliases to add |
|
||||
| ingester.image.pullSecrets | list | `[]` | Optional list of imagePullSecrets. Overrides `tempo.image.pullSecrets` |
|
||||
| ingester.image.registry | string | `nil` | The Docker registry for the ingester image. Overrides `tempo.image.registry` |
|
||||
| ingester.image.repository | string | `nil` | Docker image repository for the ingester image. Overrides `tempo.image.repository` |
|
||||
| ingester.image.tag | string | `nil` | Docker image tag for the ingester image. Overrides `tempo.image.tag` |
|
||||
| ingester.initContainers | list | `[]` | |
|
||||
| ingester.nodeSelector | object | `{}` | Node selector for ingester pods |
|
||||
| ingester.persistence.annotations | object | `{}` | Annotations for ingester's persist volume claim |
|
||||
| ingester.persistence.enabled | bool | `false` | Enable creating PVCs which is required when using boltdb-shipper |
|
||||
| ingester.persistence.inMemory | bool | `false` | use emptyDir with ramdisk instead of PVC. **Please note that all data in ingester will be lost on pod restart** |
|
||||
| ingester.persistence.size | string | `"10Gi"` | Size of persistent or memory disk |
|
||||
| ingester.persistence.storageClass | string | `nil` | Storage class to be used. If defined, storageClassName: <storageClass>. If set to "-", storageClassName: "", which disables dynamic provisioning. If empty or set to null, no storageClassName spec is set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack). |
|
||||
| ingester.podAnnotations | object | `{}` | Annotations for ingester pods |
|
||||
| ingester.podLabels | object | `{}` | Labels for ingester pods |
|
||||
| ingester.priorityClassName | string | `nil` | The name of the PriorityClass for ingester pods |
|
||||
| ingester.replicas | int | `3` | Number of replicas for the ingester |
|
||||
| ingester.resources | object | `{}` | Resource requests and limits for the ingester |
|
||||
| ingester.service.annotations | object | `{}` | Annotations for ingester service |
|
||||
| ingester.terminationGracePeriodSeconds | int | `300` | Grace period to allow the ingester to shutdown before it is killed. Especially for the ingestor, this must be increased. It must be long enough so ingesters can be gracefully shutdown flushing/transferring all data and to successfully leave the member ring on shutdown. |
|
||||
| ingester.tolerations | list | `[]` | Tolerations for ingester pods |
|
||||
| ingester.topologySpreadConstraints | string | Defaults to allow skew no more then 1 node per AZ | topologySpread for ingester pods. Passed through `tpl` and, thus, to be configured as string |
|
||||
| ingester.zoneAwareReplication | object | `{"enabled":false,"maxUnavailable":50,"topologyKey":null,"zones":[{"extraAffinity":{},"name":"zone-a","nodeSelector":null,"storageClass":null},{"extraAffinity":{},"name":"zone-b","nodeSelector":null,"storageClass":null},{"extraAffinity":{},"name":"zone-c","nodeSelector":null,"storageClass":null}]}` | EXPERIMENTAL Feature, disabled by default |
|
||||
| ingester.zoneAwareReplication.enabled | bool | `false` | Enable zone-aware replication for ingester |
|
||||
| ingester.zoneAwareReplication.maxUnavailable | int | `50` | Maximum number of ingesters that can be unavailable per zone during rollout |
|
||||
| ingester.zoneAwareReplication.topologyKey | string | `nil` | topologyKey to use in pod anti-affinity. If unset, no anti-affinity rules are generated. If set, the generated anti-affinity rule makes sure that pods from different zones do not mix. E.g.: topologyKey: 'kubernetes.io/hostname' |
|
||||
| ingester.zoneAwareReplication.zones | list | `[{"extraAffinity":{},"name":"zone-a","nodeSelector":null,"storageClass":null},{"extraAffinity":{},"name":"zone-b","nodeSelector":null,"storageClass":null},{"extraAffinity":{},"name":"zone-c","nodeSelector":null,"storageClass":null}]` | Zone definitions for ingester zones. Note: you have to redefine the whole list to change parts as YAML does not allow to modify parts of a list. |
|
||||
| ingester.zoneAwareReplication.zones[0] | object | `{"extraAffinity":{},"name":"zone-a","nodeSelector":null,"storageClass":null}` | Name of the zone, used in labels and selectors. Must follow Kubernetes naming restrictions: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ |
|
||||
| ingester.zoneAwareReplication.zones[0].extraAffinity | object | `{}` | extraAffinity adds user defined custom affinity rules (merged with generated rules) |
|
||||
| ingester.zoneAwareReplication.zones[0].nodeSelector | string | `nil` | nodeselector to restrict where pods of this zone can be placed. E.g.: nodeSelector: topology.kubernetes.io/zone: zone-a |
|
||||
| ingester.zoneAwareReplication.zones[0].storageClass | string | `nil` | Ingester data Persistent Volume Storage Class If defined, storageClassName: <storageClass> If set to "-", then use `storageClassName: ""`, which disables dynamic provisioning If undefined or set to null (the default), then fall back to the value of `ingester.persistentVolume.storageClass`. |
|
||||
| ingester.zoneAwareReplication.zones[1] | object | `{"extraAffinity":{},"name":"zone-b","nodeSelector":null,"storageClass":null}` | Name of the zone, used in labels and selectors. Must follow Kubernetes naming restrictions: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ |
|
||||
| ingester.zoneAwareReplication.zones[1].extraAffinity | object | `{}` | extraAffinity adds user defined custom affinity rules (merged with generated rules) |
|
||||
| ingester.zoneAwareReplication.zones[1].nodeSelector | string | `nil` | nodeselector to restrict where pods of this zone can be placed. E.g.: nodeSelector: topology.kubernetes.io/zone: zone-b |
|
||||
| ingester.zoneAwareReplication.zones[1].storageClass | string | `nil` | Ingester data Persistent Volume Storage Class If defined, storageClassName: <storageClass> If set to "-", then use `storageClassName: ""`, which disables dynamic provisioning If undefined or set to null (the default), then fall back to the value of `ingester.persistentVolume.storageClass`. |
|
||||
| ingester.zoneAwareReplication.zones[2] | object | `{"extraAffinity":{},"name":"zone-c","nodeSelector":null,"storageClass":null}` | Name of the zone, used in labels and selectors. Must follow Kubernetes naming restrictions: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ |
|
||||
| ingester.zoneAwareReplication.zones[2].extraAffinity | object | `{}` | extraAffinity adds user defined custom affinity rules (merged with generated rules) |
|
||||
| ingester.zoneAwareReplication.zones[2].nodeSelector | string | `nil` | nodeselector to restrict where pods of this zone can be placed. E.g.: nodeSelector: topology.kubernetes.io/zone: zone-c |
|
||||
| ingester.zoneAwareReplication.zones[2].storageClass | string | `nil` | Ingester data Persistent Volume Storage Class If defined, storageClassName: <storageClass> If set to "-", then use `storageClassName: ""`, which disables dynamic provisioning If undefined or set to null (the default), then fall back to the value of `ingester.persistentVolume.storageClass`. |
|
||||
| license.contents | string | `"NOTAVALIDLICENSE"` | |
|
||||
| license.external | bool | `false` | |
|
||||
| license.secretName | string | `"{{ include \"tempo.resourceName\" (dict \"ctx\" . \"component\" \"license\") }}"` | |
|
||||
| memberlist | object | `{"abort_if_cluster_join_fails":false,"bind_addr":[],"bind_port":7946,"gossip_interval":"1s","gossip_nodes":2,"gossip_to_dead_nodes_time":"30s","leave_timeout":"5s","left_ingesters_timeout":"5m","max_join_backoff":"1m","max_join_retries":10,"min_join_backoff":"1s","node_name":"","packet_dial_timeout":"5s","packet_write_timeout":"5s","pull_push_interval":"30s","randomize_node_name":true,"rejoin_interval":"0s","retransmit_factor":2,"stream_timeout":"10s"}` | Memberlist configuration. Please refer to https://grafana.com/docs/tempo/latest/configuration/#memberlist |
|
||||
| memcached.affinity | string | Hard node and soft zone anti-affinity | Affinity for memcached pods. Passed through `tpl` and, thus, to be configured as string |
|
||||
| memcached.enabled | bool | `true` | Specified whether the memcached cachce should be enabled |
|
||||
| memcached.extraArgs | list | `[]` | Additional CLI args for memcached |
|
||||
| memcached.extraEnv | list | `[]` | Environment variables to add to memcached pods |
|
||||
| memcached.extraEnvFrom | list | `[]` | Environment variables from secrets or configmaps to add to memcached pods |
|
||||
| memcached.host | string | `"memcached"` | |
|
||||
| memcached.image.pullPolicy | string | `"IfNotPresent"` | Memcached Docker image pull policy |
|
||||
| memcached.image.pullSecrets | list | `[]` | Optional list of imagePullSecrets. Overrides `global.image.pullSecrets` |
|
||||
| memcached.image.registry | string | `nil` | The Docker registry for the Memcached image. Overrides `global.image.registry` |
|
||||
| memcached.image.repository | string | `"memcached"` | Memcached Docker image repository |
|
||||
| memcached.image.tag | string | `"1.6.23-alpine"` | Memcached Docker image tag |
|
||||
| memcached.podAnnotations | object | `{}` | Annotations for memcached pods |
|
||||
| memcached.podLabels | object | `{}` | Labels for memcached pods |
|
||||
| memcached.replicas | int | `1` | |
|
||||
| memcached.resources | object | `{}` | Resource requests and limits for memcached |
|
||||
| memcached.service.annotations | object | `{}` | Annotations for memcached service |
|
||||
| memcached.topologySpreadConstraints | string | Defaults to allow skew no more then 1 node per AZ | topologySpread for memcached pods. Passed through `tpl` and, thus, to be configured as string |
|
||||
| memcachedExporter.enabled | bool | `false` | Specifies whether the Memcached Exporter should be enabled |
|
||||
| memcachedExporter.hostAliases | list | `[]` | hostAliases to add |
|
||||
| memcachedExporter.image.pullPolicy | string | `"IfNotPresent"` | Memcached Exporter Docker image pull policy |
|
||||
| memcachedExporter.image.pullSecrets | list | `[]` | Optional list of imagePullSecrets. Overrides `global.image.pullSecrets` |
|
||||
| memcachedExporter.image.registry | string | `nil` | The Docker registry for the Memcached Exporter image. Overrides `global.image.registry` |
|
||||
| memcachedExporter.image.repository | string | `"prom/memcached-exporter"` | Memcached Exporter Docker image repository |
|
||||
| memcachedExporter.image.tag | string | `"v0.8.0"` | Memcached Exporter Docker image tag |
|
||||
| memcachedExporter.resources | object | `{}` | |
|
||||
| metaMonitoring.grafanaAgent.annotations | object | `{}` | Annotations to add to all monitoring.grafana.com custom resources. Does not affect the ServiceMonitors for kubernetes metrics; use serviceMonitor.annotations for that. |
|
||||
| metaMonitoring.grafanaAgent.enabled | bool | `false` | Controls whether to create PodLogs, MetricsInstance, LogsInstance, and GrafanaAgent CRs to scrape the ServiceMonitors of the chart and ship metrics and logs to the remote endpoints below. Note that you need to configure serviceMonitor in order to have some metrics available. |
|
||||
| metaMonitoring.grafanaAgent.installOperator | bool | `false` | Controls whether to install the Grafana Agent Operator and its CRDs. Note that helm will not install CRDs if this flag is enabled during an upgrade. In that case install the CRDs manually from https://github.com/grafana/agent/tree/main/production/operator/crds |
|
||||
| metaMonitoring.grafanaAgent.labels | object | `{}` | Labels to add to all monitoring.grafana.com custom resources. Does not affect the ServiceMonitors for kubernetes metrics; use serviceMonitor.labels for that. |
|
||||
| metaMonitoring.grafanaAgent.logs.additionalClientConfigs | list | `[]` | Client configurations for the LogsInstance that will scrape Mimir pods. Follows the format of .remote. |
|
||||
| metaMonitoring.grafanaAgent.logs.remote | object | `{"auth":{"passwordSecretKey":"","passwordSecretName":"","tenantId":"","username":""},"url":""}` | Default destination for logs. The config here is translated to Promtail client configuration to write logs to this Loki-compatible remote. Optional. |
|
||||
| metaMonitoring.grafanaAgent.logs.remote.auth.passwordSecretKey | string | `""` | The value under this key in passwordSecretName will be used as the basic authentication password. Required only if passwordSecretName is set. |
|
||||
| metaMonitoring.grafanaAgent.logs.remote.auth.passwordSecretName | string | `""` | The value under key passwordSecretKey in this secret will be used as the basic authentication password. Required only if passwordSecretKey is set. |
|
||||
| metaMonitoring.grafanaAgent.logs.remote.auth.tenantId | string | `""` | Used to set X-Scope-OrgID header on requests. Usually not used in combination with username and password. |
|
||||
| metaMonitoring.grafanaAgent.logs.remote.auth.username | string | `""` | Basic authentication username. Optional. |
|
||||
| metaMonitoring.grafanaAgent.logs.remote.url | string | `""` | Full URL for Loki push endpoint. Usually ends in /loki/api/v1/push |
|
||||
| metaMonitoring.grafanaAgent.metrics.additionalRemoteWriteConfigs | list | `[]` | Additional remote-write for the MetricsInstance that will scrape Mimir pods. Follows the format of .remote. |
|
||||
| metaMonitoring.grafanaAgent.metrics.remote | object | `{"auth":{"passwordSecretKey":"","passwordSecretName":"","username":""},"headers":{},"url":""}` | Default destination for metrics. The config here is translated to remote_write configuration to push metrics to this Prometheus-compatible remote. Optional. Note that you need to configure serviceMonitor in order to have some metrics available. |
|
||||
| metaMonitoring.grafanaAgent.metrics.remote.auth.passwordSecretKey | string | `""` | The value under this key in passwordSecretName will be used as the basic authentication password. Required only if passwordSecretName is set. |
|
||||
| metaMonitoring.grafanaAgent.metrics.remote.auth.passwordSecretName | string | `""` | The value under key passwordSecretKey in this secret will be used as the basic authentication password. Required only if passwordSecretKey is set. |
|
||||
| metaMonitoring.grafanaAgent.metrics.remote.auth.username | string | `""` | Basic authentication username. Optional. |
|
||||
| metaMonitoring.grafanaAgent.metrics.remote.headers | object | `{}` | Used to add HTTP headers to remote-write requests. |
|
||||
| metaMonitoring.grafanaAgent.metrics.remote.url | string | `""` | Full URL for Prometheus remote-write. Usually ends in /push |
|
||||
| metaMonitoring.grafanaAgent.metrics.scrapeK8s.enabled | bool | `true` | When grafanaAgent.enabled and serviceMonitor.enabled, controls whether to create ServiceMonitors CRs for cadvisor, kubelet, and kube-state-metrics. The scraped metrics are reduced to those pertaining to Mimir pods only. |
|
||||
| metaMonitoring.grafanaAgent.metrics.scrapeK8s.kubeStateMetrics | object | `{"labelSelectors":{"app.kubernetes.io/name":"kube-state-metrics"},"namespace":"kube-system"}` | Controls service discovery of kube-state-metrics. |
|
||||
| metaMonitoring.grafanaAgent.namespace | string | `""` | Sets the namespace of the resources. Leave empty or unset to use the same namespace as the Helm release. |
|
||||
| metaMonitoring.serviceMonitor.annotations | object | `{}` | ServiceMonitor annotations |
|
||||
| metaMonitoring.serviceMonitor.enabled | bool | `false` | If enabled, ServiceMonitor resources for Prometheus Operator are created |
|
||||
| metaMonitoring.serviceMonitor.interval | string | `nil` | ServiceMonitor scrape interval |
|
||||
| metaMonitoring.serviceMonitor.labels | object | `{}` | Additional ServiceMonitor labels |
|
||||
| metaMonitoring.serviceMonitor.metricRelabelings | list | `[]` | ServiceMonitor metric relabel configs to apply to samples before ingestion https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint |
|
||||
| metaMonitoring.serviceMonitor.namespace | string | `nil` | Alternative namespace for ServiceMonitor resources |
|
||||
| metaMonitoring.serviceMonitor.namespaceSelector | object | `{}` | Namespace selector for ServiceMonitor resources |
|
||||
| metaMonitoring.serviceMonitor.relabelings | list | `[]` | ServiceMonitor relabel configs to apply to samples before scraping https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#relabelconfig |
|
||||
| metaMonitoring.serviceMonitor.scheme | string | `"http"` | ServiceMonitor will use http by default, but you can pick https as well |
|
||||
| metaMonitoring.serviceMonitor.scrapeTimeout | string | `nil` | ServiceMonitor scrape timeout in Go duration format (e.g. 15s) |
|
||||
| metaMonitoring.serviceMonitor.tlsConfig | string | `nil` | ServiceMonitor will use these tlsConfig settings to make the health check requests |
|
||||
| metricsGenerator.affinity | string | Hard node and soft zone anti-affinity | Affinity for metrics-generator pods. Passed through `tpl` and, thus, to be configured as string |
|
||||
| metricsGenerator.annotations | object | `{}` | Annotations for the metrics-generator StatefulSet |
|
||||
| metricsGenerator.appProtocol | object | `{"grpc":null}` | Adds the appProtocol field to the metricsGenerator service. This allows metricsGenerator to work with istio protocol selection. |
|
||||
| metricsGenerator.appProtocol.grpc | string | `nil` | Set the optional grpc service protocol. Ex: "grpc", "http2" or "https" |
|
||||
| metricsGenerator.config | object | `{"metrics_ingestion_time_range_slack":"30s","processor":{"service_graphs":{"dimensions":[],"histogram_buckets":[0.1,0.2,0.4,0.8,1.6,3.2,6.4,12.8],"max_items":10000,"wait":"10s","workers":10},"span_metrics":{"dimensions":[],"histogram_buckets":[0.002,0.004,0.008,0.016,0.032,0.064,0.128,0.256,0.512,1.02,2.05,4.1]}},"registry":{"collection_interval":"15s","external_labels":{},"stale_duration":"15m"},"storage":{"path":"/var/tempo/wal","remote_write":[],"remote_write_add_org_id_header":true,"remote_write_flush_deadline":"1m","wal":null},"traces_storage":{"path":"/var/tempo/traces"}}` | More information on configuration: https://grafana.com/docs/tempo/latest/configuration/#metrics-generator |
|
||||
| metricsGenerator.config.processor.service_graphs | object | `{"dimensions":[],"histogram_buckets":[0.1,0.2,0.4,0.8,1.6,3.2,6.4,12.8],"max_items":10000,"wait":"10s","workers":10}` | For processors to be enabled and generate metrics, pass the names of the processors to overrides.metrics_generator_processors value like [service-graphs, span-metrics] |
|
||||
| metricsGenerator.config.processor.service_graphs.dimensions | list | `[]` | resource and span attributes and are added to the metrics if present. |
|
||||
| metricsGenerator.config.processor.span_metrics.dimensions | list | `[]` | Dimensions are searched for in the resource and span attributes and are added to the metrics if present. |
|
||||
| metricsGenerator.config.storage.remote_write | list | `[]` | https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write |
|
||||
| metricsGenerator.config.traces_storage | object | `{"path":"/var/tempo/traces"}` | Used by the local blocks processor to store a wal for traces. |
|
||||
| metricsGenerator.enabled | bool | `false` | Specifies whether a metrics-generator should be deployed |
|
||||
| metricsGenerator.extraArgs | list | `[]` | Additional CLI args for the metrics-generator |
|
||||
| metricsGenerator.extraEnv | list | `[]` | Environment variables to add to the metrics-generator pods |
|
||||
| metricsGenerator.extraEnvFrom | list | `[]` | Environment variables from secrets or configmaps to add to the metrics-generator pods |
|
||||
| metricsGenerator.extraVolumeMounts | list | `[]` | Extra volumes for metrics-generator pods |
|
||||
| metricsGenerator.extraVolumes | list | `[]` | Extra volumes for metrics-generator deployment |
|
||||
| metricsGenerator.hostAliases | list | `[]` | hostAliases to add |
|
||||
| metricsGenerator.image.pullSecrets | list | `[]` | Optional list of imagePullSecrets. Overrides `tempo.image.pullSecrets` |
|
||||
| metricsGenerator.image.registry | string | `nil` | The Docker registry for the metrics-generator image. Overrides `tempo.image.registry` |
|
||||
| metricsGenerator.image.repository | string | `nil` | Docker image repository for the metrics-generator image. Overrides `tempo.image.repository` |
|
||||
| metricsGenerator.image.tag | string | `nil` | Docker image tag for the metrics-generator image. Overrides `tempo.image.tag` |
|
||||
| metricsGenerator.initContainers | list | `[]` | |
|
||||
| metricsGenerator.kind | string | `"Deployment"` | Kind of deployment [StatefulSet/Deployment] |
|
||||
| metricsGenerator.nodeSelector | object | `{}` | Node selector for metrics-generator pods |
|
||||
| metricsGenerator.persistence | object | `{"annotations":{},"enabled":false,"size":"10Gi","storageClass":null}` | Persistence configuration for metrics-generator |
|
||||
| metricsGenerator.persistence.annotations | object | `{}` | Annotations for metrics generator PVCs |
|
||||
| metricsGenerator.persistence.enabled | bool | `false` | Enable creating PVCs if you have kind set to StatefulSet. This disables using local disk or memory configured in walEmptyDir |
|
||||
| metricsGenerator.persistence.storageClass | string | `nil` | Storage class to be used. If defined, storageClassName: <storageClass>. If set to "-", storageClassName: "", which disables dynamic provisioning. If empty or set to null, no storageClassName spec is set, choosing the default provisioner (gp2 on AWS, standard on GKE, AWS, and OpenStack). |
|
||||
| metricsGenerator.podAnnotations | object | `{}` | Annotations for metrics-generator pods |
|
||||
| metricsGenerator.podLabels | object | `{}` | Labels for metrics-generator pods |
|
||||
| metricsGenerator.ports | list | `[{"name":"grpc","port":9095,"service":true},{"name":"http-memberlist","port":7946,"service":false},{"name":"http-metrics","port":3100,"service":true}]` | Default ports |
|
||||
| metricsGenerator.priorityClassName | string | `nil` | The name of the PriorityClass for metrics-generator pods |
|
||||
| metricsGenerator.replicas | int | `1` | Number of replicas for the metrics-generator |
|
||||
| metricsGenerator.resources | object | `{}` | Resource requests and limits for the metrics-generator |
|
||||
| metricsGenerator.service.annotations | object | `{}` | Annotations for Metrics Generator service |
|
||||
| metricsGenerator.terminationGracePeriodSeconds | int | `300` | Grace period to allow the metrics-generator to shutdown before it is killed. Especially for the ingestor, this must be increased. It must be long enough so metrics-generators can be gracefully shutdown flushing/transferring all data and to successfully leave the member ring on shutdown. |
|
||||
| metricsGenerator.tolerations | list | `[]` | Tolerations for metrics-generator pods |
|
||||
| metricsGenerator.topologySpreadConstraints | string | Defaults to allow skew no more then 1 node per AZ | topologySpread for metrics-generator pods. Passed through `tpl` and, thus, to be configured as string |
|
||||
| metricsGenerator.walEmptyDir | object | `{}` | The EmptyDir location where the /var/tempo will be mounted on. Defaults to local disk, can be set to memory. |
|
||||
| minio.buckets[0].name | string | `"tempo-traces"` | |
|
||||
| minio.buckets[0].policy | string | `"none"` | |
|
||||
| minio.buckets[0].purge | bool | `false` | |
|
||||
| minio.buckets[1].name | string | `"enterprise-traces"` | |
|
||||
| minio.buckets[1].policy | string | `"none"` | |
|
||||
| minio.buckets[1].purge | bool | `false` | |
|
||||
| minio.buckets[2].name | string | `"enterprise-traces-admin"` | |
|
||||
| minio.buckets[2].policy | string | `"none"` | |
|
||||
| minio.buckets[2].purge | bool | `false` | |
|
||||
| minio.configPathmc | string | `"/tmp/minio/mc/"` | |
|
||||
| minio.enabled | bool | `false` | |
|
||||
| minio.mode | string | `"standalone"` | |
|
||||
| minio.persistence.size | string | `"5Gi"` | |
|
||||
| minio.resources.requests.cpu | string | `"100m"` | |
|
||||
| minio.resources.requests.memory | string | `"128Mi"` | |
|
||||
| minio.rootPassword | string | `"supersecret"` | |
|
||||
| minio.rootUser | string | `"grafana-tempo"` | |
|
||||
| multitenancyEnabled | bool | `false` | |
|
||||
| overrides | object | `{}` | |
|
||||
| prometheusRule.annotations | object | `{}` | PrometheusRule annotations |
|
||||
| prometheusRule.enabled | bool | `false` | If enabled, a PrometheusRule resource for Prometheus Operator is created |
|
||||
| prometheusRule.groups | list | `[]` | Contents of Prometheus rules file |
|
||||
| prometheusRule.labels | object | `{}` | Additional PrometheusRule labels |
|
||||
| prometheusRule.namespace | string | `nil` | Alternative namespace for the PrometheusRule resource |
|
||||
| querier.affinity | string | Hard node and soft zone anti-affinity | Affinity for querier pods. Passed through `tpl` and, thus, to be configured as string |
|
||||
| querier.appProtocol | object | `{"grpc":null}` | Adds the appProtocol field to the querier service. This allows querier to work with istio protocol selection. |
|
||||
| querier.appProtocol.grpc | string | `nil` | Set the optional grpc service protocol. Ex: "grpc", "http2" or "https" |
|
||||
| querier.autoscaling.behavior | object | `{}` | Autoscaling behavior configuration for the querier |
|
||||
| querier.autoscaling.enabled | bool | `false` | Enable autoscaling for the querier |
|
||||
| querier.autoscaling.maxReplicas | int | `3` | Maximum autoscaling replicas for the querier |
|
||||
| querier.autoscaling.minReplicas | int | `1` | Minimum autoscaling replicas for the querier |
|
||||
| querier.autoscaling.targetCPUUtilizationPercentage | int | `60` | Target CPU utilisation percentage for the querier |
|
||||
| querier.autoscaling.targetMemoryUtilizationPercentage | string | `nil` | Target memory utilisation percentage for the querier |
|
||||
| querier.config.frontend_worker.grpc_client_config | object | `{}` | grpc client configuration |
|
||||
| querier.config.max_concurrent_queries | int | `20` | This value controls the overall number of simultaneous subqueries that the querier will service at once. It does not distinguish between the types of queries. |
|
||||
| querier.config.search.external_backend | string | `""` | credentials when querying the external backend. |
|
||||
| querier.config.search.external_endpoints | list | `[]` | A list of external endpoints that the querier will use to offload backend search requests |
|
||||
| querier.config.search.external_hedge_requests_at | string | `"8s"` | If set to a non-zero value a second request will be issued at the provided duration. Recommended to be set to p99 of external search requests to reduce long tail latency. |
|
||||
| querier.config.search.external_hedge_requests_up_to | int | `2` | The maximum number of requests to execute when hedging. Requires hedge_requests_at to be set. |
|
||||
| querier.config.search.google_cloud_run | object | `{}` | external_backend is "google_cloud_run". |
|
||||
| querier.config.search.prefer_self | int | `10` | If search_external_endpoints is set then the querier will primarily act as a proxy for whatever serverless backend you have configured. This setting allows the operator to have the querier prefer itself for a configurable number of subqueries. |
|
||||
| querier.config.search.query_timeout | string | `"30s"` | Timeout for search requests |
|
||||
| querier.config.trace_by_id.query_timeout | string | `"10s"` | Timeout for trace lookup requests |
|
||||
| querier.extraArgs | list | `[]` | Additional CLI args for the querier |
|
||||
| querier.extraEnv | list | `[]` | Environment variables to add to the querier pods |
|
||||
| querier.extraEnvFrom | list | `[]` | Environment variables from secrets or configmaps to add to the querier pods |
|
||||
| querier.extraVolumeMounts | list | `[]` | Extra volumes for querier pods |
|
||||
| querier.extraVolumes | list | `[]` | Extra volumes for querier deployment |
|
||||
| querier.hostAliases | list | `[]` | hostAliases to add |
|
||||
| querier.image.pullSecrets | list | `[]` | Optional list of imagePullSecrets. Overrides `tempo.image.pullSecrets` |
|
||||
| querier.image.registry | string | `nil` | The Docker registry for the querier image. Overrides `tempo.image.registry` |
|
||||
| querier.image.repository | string | `nil` | Docker image repository for the querier image. Overrides `tempo.image.repository` |
|
||||
| querier.image.tag | string | `nil` | Docker image tag for the querier image. Overrides `tempo.image.tag` |
|
||||
| querier.nodeSelector | object | `{}` | Node selector for querier pods |
|
||||
| querier.podAnnotations | object | `{}` | Annotations for querier pods |
|
||||
| querier.podLabels | object | `{}` | Labels for querier pods |
|
||||
| querier.priorityClassName | string | `nil` | The name of the PriorityClass for querier pods |
|
||||
| querier.replicas | int | `1` | Number of replicas for the querier |
|
||||
| querier.resources | object | `{}` | Resource requests and limits for the querier |
|
||||
| querier.service.annotations | object | `{}` | Annotations for querier service |
|
||||
| querier.terminationGracePeriodSeconds | int | `30` | Grace period to allow the querier to shutdown before it is killed |
|
||||
| querier.tolerations | list | `[]` | Tolerations for querier pods |
|
||||
| querier.topologySpreadConstraints | string | Defaults to allow skew no more then 1 node per AZ | topologySpread for querier pods. Passed through `tpl` and, thus, to be configured as string |
|
||||
| queryFrontend.affinity | string | Hard node and soft zone anti-affinity | Affinity for query-frontend pods. Passed through `tpl` and, thus, to be configured as string |
|
||||
| queryFrontend.appProtocol | object | `{"grpc":null}` | Adds the appProtocol field to the queryFrontend service. This allows queryFrontend to work with istio protocol selection. |
|
||||
| queryFrontend.appProtocol.grpc | string | `nil` | Set the optional grpc service protocol. Ex: "grpc", "http2" or "https" |
|
||||
| queryFrontend.autoscaling.behavior | object | `{}` | Autoscaling behavior configuration for the query-frontend |
|
||||
| queryFrontend.autoscaling.enabled | bool | `false` | Enable autoscaling for the query-frontend |
|
||||
| queryFrontend.autoscaling.maxReplicas | int | `3` | Maximum autoscaling replicas for the query-frontend |
|
||||
| queryFrontend.autoscaling.minReplicas | int | `1` | Minimum autoscaling replicas for the query-frontend |
|
||||
| queryFrontend.autoscaling.targetCPUUtilizationPercentage | int | `60` | Target CPU utilisation percentage for the query-frontend |
|
||||
| queryFrontend.autoscaling.targetMemoryUtilizationPercentage | string | `nil` | Target memory utilisation percentage for the query-frontend |
|
||||
| queryFrontend.config.max_outstanding_per_tenant | int | `2000` | Maximum number of outstanding requests per tenant per frontend; requests beyond this error with HTTP 429. |
|
||||
| queryFrontend.config.max_retries | int | `2` | Number of times to retry a request sent to a querier |
|
||||
| queryFrontend.config.search.concurrent_jobs | int | `1000` | The number of concurrent jobs to execute when searching the backend |
|
||||
| queryFrontend.config.search.target_bytes_per_job | int | `104857600` | The target number of bytes for each job to handle when performing a backend search |
|
||||
| queryFrontend.config.trace_by_id | object | `{"query_shards":50}` | Trace by ID lookup configuration |
|
||||
| queryFrontend.config.trace_by_id.query_shards | int | `50` | The number of shards to split a trace by id query into. |
|
||||
| queryFrontend.extraArgs | list | `[]` | Additional CLI args for the query-frontend |
|
||||
| queryFrontend.extraEnv | list | `[]` | Environment variables to add to the query-frontend pods |
|
||||
| queryFrontend.extraEnvFrom | list | `[]` | Environment variables from secrets or configmaps to add to the query-frontend pods |
|
||||
| queryFrontend.extraVolumeMounts | list | `[]` | Extra volumes for query-frontend pods |
|
||||
| queryFrontend.extraVolumes | list | `[]` | Extra volumes for query-frontend deployment |
|
||||
| queryFrontend.hostAliases | list | `[]` | hostAliases to add |
|
||||
| queryFrontend.image.pullSecrets | list | `[]` | Optional list of imagePullSecrets. Overrides `tempo.image.pullSecrets` |
|
||||
| queryFrontend.image.registry | string | `nil` | The Docker registry for the query-frontend image. Overrides `tempo.image.registry` |
|
||||
| queryFrontend.image.repository | string | `nil` | Docker image repository for the query-frontend image. Overrides `tempo.image.repository` |
|
||||
| queryFrontend.image.tag | string | `nil` | Docker image tag for the query-frontend image. Overrides `tempo.image.tag` |
|
||||
| queryFrontend.ingress.annotations | object | `{}` | Annotations for the Jaeger ingress |
|
||||
| queryFrontend.ingress.enabled | bool | `false` | Specifies whether an ingress for the Jaeger should be created |
|
||||
| queryFrontend.ingress.hosts | list | `[{"host":"query.tempo.example.com","paths":[{"path":"/"}]}]` | Hosts configuration for the Jaeger ingress |
|
||||
| queryFrontend.ingress.tls | list | `[{"hosts":["query.tempo.example.com"],"secretName":"tempo-query-tls"}]` | TLS configuration for the Jaeger ingress |
|
||||
| queryFrontend.nodeSelector | object | `{}` | Node selector for query-frontend pods |
|
||||
| queryFrontend.podAnnotations | object | `{}` | Annotations for query-frontend pods |
|
||||
| queryFrontend.podLabels | object | `{}` | Labels for queryFrontend pods |
|
||||
| queryFrontend.priorityClassName | string | `nil` | The name of the PriorityClass for query-frontend pods |
|
||||
| queryFrontend.query.config | string | `"backend: 127.0.0.1:3100\n"` | |
|
||||
| queryFrontend.query.enabled | bool | `false` | Required for grafana version <7.5 for compatibility with jaeger-ui. Doesn't work on ARM arch |
|
||||
| queryFrontend.query.extraArgs | list | `[]` | Additional CLI args for tempo-query pods |
|
||||
| queryFrontend.query.extraEnv | list | `[]` | Environment variables to add to the tempo-query pods |
|
||||
| queryFrontend.query.extraEnvFrom | list | `[]` | Environment variables from secrets or configmaps to add to the tempo-query pods |
|
||||
| queryFrontend.query.extraVolumeMounts | list | `[]` | Extra volumes for tempo-query pods |
|
||||
| queryFrontend.query.extraVolumes | list | `[]` | Extra volumes for tempo-query deployment |
|
||||
| queryFrontend.query.image.pullSecrets | list | `[]` | Optional list of imagePullSecrets. Overrides `tempo.image.pullSecrets` |
|
||||
| queryFrontend.query.image.registry | string | `nil` | The Docker registry for the query-frontend image. Overrides `tempo.image.registry` |
|
||||
| queryFrontend.query.image.repository | string | `"grafana/tempo-query"` | Docker image repository for the query-frontend image. Overrides `tempo.image.repository` |
|
||||
| queryFrontend.query.image.tag | string | `nil` | Docker image tag for the query-frontend image. Overrides `tempo.image.tag` |
|
||||
| queryFrontend.query.resources | object | `{}` | Resource requests and limits for the query |
|
||||
| queryFrontend.replicas | int | `1` | Number of replicas for the query-frontend |
|
||||
| queryFrontend.resources | object | `{}` | Resource requests and limits for the query-frontend |
|
||||
| queryFrontend.service.annotations | object | `{}` | Annotations for queryFrontend service |
|
||||
| queryFrontend.service.labels | object | `{}` | Labels for queryFrontend service |
|
||||
| queryFrontend.service.loadBalancerIP | string | `""` | If type is LoadBalancer you can assign the IP to the LoadBalancer |
|
||||
| queryFrontend.service.loadBalancerSourceRanges | list | `[]` | If type is LoadBalancer limit incoming traffic from IPs. |
|
||||
| queryFrontend.service.port | int | `16686` | Port of the query-frontend service |
|
||||
| queryFrontend.service.type | string | `"ClusterIP"` | Type of service for the queryFrontend |
|
||||
| queryFrontend.serviceDiscovery.annotations | object | `{}` | Annotations for queryFrontendDiscovery service |
|
||||
| queryFrontend.serviceDiscovery.labels | object | `{}` | Labels for queryFrontendDiscovery service |
|
||||
| queryFrontend.terminationGracePeriodSeconds | int | `30` | Grace period to allow the query-frontend to shutdown before it is killed |
|
||||
| queryFrontend.tolerations | list | `[]` | Tolerations for query-frontend pods |
|
||||
| queryFrontend.topologySpreadConstraints | string | Defaults to allow skew no more then 1 node per AZ | topologySpread for query-frontend pods. Passed through `tpl` and, thus, to be configured as string |
|
||||
| rbac.create | bool | `false` | Specifies whether RBAC manifests should be created |
|
||||
| rbac.pspEnabled | bool | `false` | Specifies whether a PodSecurityPolicy should be created |
|
||||
| reportingEnabled | bool | `true` | If true, Tempo will report anonymous usage data about the shape of a deployment to Grafana Labs |
|
||||
| rollout_operator.enabled | bool | `false` | Enable rollout-operator. It must be enabled when using Zone Aware Replication. |
|
||||
| rollout_operator.podSecurityContext.fsGroup | int | `10001` | |
|
||||
| rollout_operator.podSecurityContext.runAsGroup | int | `10001` | |
|
||||
| rollout_operator.podSecurityContext.runAsNonRoot | bool | `true` | |
|
||||
| rollout_operator.podSecurityContext.runAsUser | int | `10001` | |
|
||||
| rollout_operator.podSecurityContext.seccompProfile.type | string | `"RuntimeDefault"` | |
|
||||
| rollout_operator.securityContext.allowPrivilegeEscalation | bool | `false` | |
|
||||
| rollout_operator.securityContext.capabilities.drop[0] | string | `"ALL"` | |
|
||||
| rollout_operator.securityContext.readOnlyRootFilesystem | bool | `true` | |
|
||||
| server.grpc_server_max_recv_msg_size | int | `4194304` | Max gRPC message size that can be received |
|
||||
| server.grpc_server_max_send_msg_size | int | `4194304` | Max gRPC message size that can be sent |
|
||||
| server.httpListenPort | int | `3100` | HTTP server listen host |
|
||||
| server.http_server_read_timeout | string | `"30s"` | Read timeout for HTTP server |
|
||||
| server.http_server_write_timeout | string | `"30s"` | Write timeout for HTTP server |
|
||||
| server.logFormat | string | `"logfmt"` | Log format. Can be set to logfmt (default) or json. |
|
||||
| server.logLevel | string | `"info"` | Log level. Can be set to trace, debug, info (default), warn, error, fatal, panic |
|
||||
| serviceAccount.annotations | object | `{}` | Annotations for the service account |
|
||||
| serviceAccount.automountServiceAccountToken | bool | `false` | |
|
||||
| serviceAccount.create | bool | `true` | Specifies whether a ServiceAccount should be created |
|
||||
| serviceAccount.imagePullSecrets | list | `[]` | Image pull secrets for the service account |
|
||||
| serviceAccount.name | string | `nil` | The name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname template |
|
||||
| storage.admin.backend | string | `"filesystem"` | The supported storage backends are gcs, s3 and azure, as specified in https://grafana.com/docs/enterprise-traces/latest/config/reference/#admin_client_config |
|
||||
| storage.trace.backend | string | `"local"` | The supported storage backends are gcs, s3 and azure, as specified in https://grafana.com/docs/tempo/latest/configuration/#storage |
|
||||
| storage.trace.block.dedicated_columns | list | `[]` | Lis with dedicated attribute columns (only for vParquet3 or later) |
|
||||
| storage.trace.block.version | string | `nil` | The supported block versions are specified here https://grafana.com/docs/tempo/latest/configuration/parquet/ |
|
||||
| storage.trace.pool.max_workers | int | `400` | Total number of workers pulling jobs from the queue |
|
||||
| storage.trace.pool.queue_depth | int | `20000` | Length of job queue. imporatant for querier as it queues a job for every block it has to search |
|
||||
| tempo.image.pullPolicy | string | `"IfNotPresent"` | |
|
||||
| tempo.image.pullSecrets | list | `[]` | Optional list of imagePullSecrets. Overrides `global.image.pullSecrets` |
|
||||
| tempo.image.registry | string | `"docker.io"` | The Docker registry |
|
||||
| tempo.image.repository | string | `"grafana/tempo"` | Docker image repository |
|
||||
| tempo.image.tag | string | `nil` | Overrides the image tag whose default is the chart's appVersion |
|
||||
| tempo.memberlist | object | `{"appProtocol":null}` | Memberlist service configuration. |
|
||||
| tempo.memberlist.appProtocol | string | `nil` | Adds the appProtocol field to the memberlist service. This allows memberlist to work with istio protocol selection. Set the optional service protocol. Ex: "tcp", "http" or "https". |
|
||||
| tempo.podAnnotations | object | `{}` | Common annotations for all pods |
|
||||
| tempo.podLabels | object | `{}` | Global labels for all tempo pods |
|
||||
| tempo.podSecurityContext | object | `{"fsGroup":1000}` | podSecurityContext holds pod-level security attributes and common container settings |
|
||||
| tempo.readinessProbe.httpGet.path | string | `"/ready"` | |
|
||||
| tempo.readinessProbe.httpGet.port | string | `"http-metrics"` | |
|
||||
| tempo.readinessProbe.initialDelaySeconds | int | `30` | |
|
||||
| tempo.readinessProbe.timeoutSeconds | int | `1` | |
|
||||
| tempo.securityContext | object | `{"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]},"readOnlyRootFilesystem":true,"runAsGroup":1000,"runAsNonRoot":true,"runAsUser":1000}` | SecurityContext holds container-level security attributes and common container settings |
|
||||
| tempo.structuredConfig | object | `{}` | Structured tempo configuration |
|
||||
| tokengenJob.annotations | object | `{}` | |
|
||||
| tokengenJob.containerSecurityContext | object | `{"readOnlyRootFilesystem":true}` | The SecurityContext for tokenjobgen containers |
|
||||
| tokengenJob.enable | bool | `true` | |
|
||||
| tokengenJob.env | list | `[]` | |
|
||||
| tokengenJob.extraArgs | object | `{}` | |
|
||||
| tokengenJob.extraEnvFrom | list | `[]` | |
|
||||
| tokengenJob.hostAliases | list | `[]` | hostAliases to add |
|
||||
| tokengenJob.image.pullSecrets | list | `[]` | Optional list of imagePullSecrets. Overrides `tempo.image.pullSecrets` |
|
||||
| tokengenJob.image.registry | string | `nil` | The Docker registry for the tokengenJob image. Overrides `tempo.image.registry` |
|
||||
| tokengenJob.image.repository | string | `nil` | Docker image repository for the tokengenJob image. Overrides `tempo.image.repository` |
|
||||
| tokengenJob.image.tag | string | `nil` | Docker image tag for the tokengenJob image. Overrides `tempo.image.tag` |
|
||||
| tokengenJob.initContainers | list | `[]` | |
|
||||
| traces.jaeger.grpc.enabled | bool | `false` | Enable Tempo to ingest Jaeger GRPC traces |
|
||||
| traces.jaeger.grpc.receiverConfig | object | `{}` | Jaeger GRPC receiver config |
|
||||
| traces.jaeger.thriftBinary.enabled | bool | `false` | Enable Tempo to ingest Jaeger Thrift Binary traces |
|
||||
| traces.jaeger.thriftBinary.receiverConfig | object | `{}` | Jaeger Thrift Binary receiver config |
|
||||
| traces.jaeger.thriftCompact.enabled | bool | `false` | Enable Tempo to ingest Jaeger Thrift Compact traces |
|
||||
| traces.jaeger.thriftCompact.receiverConfig | object | `{}` | Jaeger Thrift Compact receiver config |
|
||||
| traces.jaeger.thriftHttp.enabled | bool | `false` | Enable Tempo to ingest Jaeger Thrift HTTP traces |
|
||||
| traces.jaeger.thriftHttp.receiverConfig | object | `{}` | Jaeger Thrift HTTP receiver config |
|
||||
| traces.kafka | object | `{}` | Enable Tempo to ingest traces from Kafka. Reference: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/kafkareceiver |
|
||||
| traces.opencensus.enabled | bool | `false` | Enable Tempo to ingest Open Census traces |
|
||||
| traces.opencensus.receiverConfig | object | `{}` | Open Census receiver config |
|
||||
| traces.otlp.grpc.enabled | bool | `false` | Enable Tempo to ingest Open Telemetry GRPC traces |
|
||||
| traces.otlp.grpc.receiverConfig | object | `{}` | GRPC receiver advanced config |
|
||||
| traces.otlp.http.enabled | bool | `false` | Enable Tempo to ingest Open Telemetry HTTP traces |
|
||||
| traces.otlp.http.receiverConfig | object | `{}` | HTTP receiver advanced config |
|
||||
| traces.zipkin.enabled | bool | `false` | Enable Tempo to ingest Zipkin traces |
|
||||
| traces.zipkin.receiverConfig | object | `{}` | Zipkin receiver config |
|
||||
| useExternalConfig | bool | `false` | Configuration is loaded from the secret called 'externalConfigSecretName'. If 'useExternalConfig' is true, then the configuration is not generated, just consumed. Top level keys for `tempo.yaml` and `overrides.yaml` are to be provided by the user. |
|
||||
|
||||
## Components
|
||||
|
||||
The chart supports the components shown in the following table.
|
||||
Ingester, distributor, querier, query-frontend, and compactor are always installed.
|
||||
The other components are optional and must be explicitly enabled.
|
||||
|
||||
| Component | Optional |
|
||||
| --- | --- |
|
||||
| ingester | no |
|
||||
| distributor | no |
|
||||
| querier | no |
|
||||
| query-frontend | no |
|
||||
| compactor | no |
|
||||
| metrics-generator | yes |
|
||||
| memcached | yes |
|
||||
| gateway | yes |
|
||||
|
||||
## [Configuration](https://grafana.com/docs/tempo/latest/configuration/)
|
||||
|
||||
This chart configures Tempo in microservices mode.
|
||||
|
||||
**NOTE:**
|
||||
In its default configuration, the chart uses `local` filesystem as storage.
|
||||
The reason for this is that the chart can be validated and installed in a CI pipeline.
|
||||
However, this setup is not fully functional.
|
||||
The recommendation is to use object storage, such as S3, GCS, MinIO, etc., or one of the other options documented at https://grafana.com/docs/tempo/latest/configuration/#storage.
|
||||
|
||||
Alternatively, in order to quickly test Tempo using the filestore, the [single binary chart](https://github.com/grafana/helm-charts/tree/main/charts/tempo) can be used.
|
||||
|
||||
### Overriding configuration variables with structuredConfig
|
||||
|
||||
tempo.structuredConfig variable can be used to alter individual values in the configuration and it's structured YAML instead of text. It takes precedence over all other variable adjustments inside tempo.yaml config file, ie s3 storage settings.
|
||||
|
||||
Example:
|
||||
|
||||
```yaml
|
||||
tempo:
|
||||
structuredConfig:
|
||||
query_frontend:
|
||||
search:
|
||||
max_duration: 12h0m0s
|
||||
```
|
||||
|
||||
### Activate metrics generator
|
||||
|
||||
Metrics-generator is disabled by default and can be activated by configuring the following values:
|
||||
|
||||
```yaml
|
||||
metricsGenerator:
|
||||
enabled: true
|
||||
config:
|
||||
storage:
|
||||
remote_write:
|
||||
- url: http://cortex/api/v1/push
|
||||
send_exemplars: true
|
||||
# headers:
|
||||
# x-scope-orgid: operations
|
||||
# Global overrides
|
||||
global_overrides:
|
||||
defaults:
|
||||
metrics_generator:
|
||||
processors:
|
||||
- service-graphs
|
||||
- span-metrics
|
||||
```
|
||||
|
||||
----
|
||||
|
||||
### Directory and File Locations
|
||||
|
||||
* Volumes are mounted to `/var/tempo`. The various directories Tempo needs should be configured as subdirectories (e. g. `/var/tempo/wal`, `/var/tempo/traces`). Tempo will create the directories automatically.
|
||||
* The config file is mounted to `/conf/tempo-query.yaml` and passed as CLI arg.
|
||||
|
||||
### Example configuration using S3 for storage
|
||||
|
||||
```yaml
|
||||
config: |
|
||||
multitenancy_enabled: false
|
||||
compactor:
|
||||
compaction:
|
||||
block_retention: 48h
|
||||
ring:
|
||||
kvstore:
|
||||
store: memberlist
|
||||
distributor:
|
||||
receivers:
|
||||
jaeger:
|
||||
protocols:
|
||||
grpc:
|
||||
endpoint: 0.0.0.0:14250
|
||||
thrift_binary:
|
||||
endpoint: 0.0.0.0:6832
|
||||
thrift_compact:
|
||||
endpoint: 0.0.0.0:6831
|
||||
thrift_http:
|
||||
endpoint: 0.0.0.0:14268
|
||||
querier:
|
||||
frontend_worker:
|
||||
frontend_address: {{ include "tempo.resourceName" (dict "ctx" . "component" "query-frontend") }}:9095
|
||||
ingester:
|
||||
lifecycler:
|
||||
ring:
|
||||
replication_factor: 1
|
||||
memberlist:
|
||||
abort_if_cluster_join_fails: false
|
||||
join_members:
|
||||
- {{ include "tempo.fullname" . }}-memberlist
|
||||
overrides:
|
||||
per_tenant_override_config: /runtime-config/overrides.yaml
|
||||
server:
|
||||
http_listen_port: 3100
|
||||
storage:
|
||||
trace:
|
||||
backend: s3
|
||||
s3:
|
||||
access_key: tempo
|
||||
bucket: <your s3 bucket>
|
||||
endpoint: minio:9000
|
||||
insecure: true
|
||||
secret_key: supersecret
|
||||
pool:
|
||||
queue_depth: 2000
|
||||
wal:
|
||||
path: /var/tempo/wal
|
||||
memcached:
|
||||
consistent_hash: true
|
||||
host: a-tempo-distributed-memcached
|
||||
service: memcached-client
|
||||
timeout: 500ms
|
||||
```
|
||||
@@ -0,0 +1,345 @@
|
||||
{{ template "chart.header" . }}
|
||||
|
||||
{{ template "chart.versionBadge" . }}{{ template "chart.typeBadge" . }}{{ template "chart.appVersionBadge" . }}
|
||||
|
||||
{{ template "chart.description" . }}
|
||||
|
||||
{{ template "chart.sourcesSection" . }}
|
||||
|
||||
{{ template "chart.requirementsSection" . }}
|
||||
|
||||
## Chart Repo
|
||||
|
||||
Add the following repo to use the chart:
|
||||
|
||||
```console
|
||||
helm repo add grafana https://grafana.github.io/helm-charts
|
||||
```
|
||||
|
||||
## Installing the Chart
|
||||
|
||||
To install the chart with the release name `my-release`:
|
||||
|
||||
```console
|
||||
helm install my-release grafana/tempo-distributed
|
||||
```
|
||||
|
||||
## Uninstalling the Chart
|
||||
|
||||
To uninstall/delete the my-release deployment:
|
||||
|
||||
```console
|
||||
helm delete my-release
|
||||
```
|
||||
|
||||
The command removes all the Kubernetes components associated with the chart and deletes the release.
|
||||
|
||||
|
||||
## Upgrading
|
||||
|
||||
A major chart version change indicates that there is an incompatible breaking change needing manual actions.
|
||||
|
||||
### From Chart versions < 1.15.2
|
||||
|
||||
Switch to new overrides format, see https://grafana.com/docs/tempo/latest/configuration/#overrides.
|
||||
|
||||
### From Chart versions < 1.13.0
|
||||
|
||||
EXPERIMENTAL: Zone Aware Replication has been added to the ingester statefulset.
|
||||
Attention, the calculation of the pods per AZ is as follows ```(.values.ingester.replicas + numberOfZones -1)/numberOfZones```
|
||||
|
||||
### From Chart versions < 1.6.0
|
||||
|
||||
The metrics generator component in the chart has been disabled by default, but the configuration for the processors was not empty, resulting error sin the distributor log. Here we align the default metrics generator config settings to both disable the generator and remove processors. Users who wish to keep the their processors enabled, will need to update their values.
|
||||
|
||||
### From Chart versions < 1.5.0
|
||||
|
||||
Please be aware that we've updated the minor version to Tempo 2.2, which includes breaking changes.
|
||||
We recommend reviewing the [release notes](https://github.com/grafana/tempo/releases/tag/v2.2.0) before upgrading.
|
||||
|
||||
### From Chart versions < 1.3.0
|
||||
|
||||
Please be aware that we've updated the minor version to Tempo 2.1, which includes breaking changes.
|
||||
We recommend reviewing the [release notes](https://github.com/grafana/tempo/releases/tag/v2.1.0/) before upgrading.
|
||||
|
||||
### From Chart versions < 1.0.0
|
||||
|
||||
Please note that we've incremented the major version when upgrading to Tempo 2.0. There were a large number of
|
||||
changes in this release (breaking and otherwise). It is encouraged to review the [release notes](https://grafana.com/docs/tempo/latest/release-notes/v2-0/)
|
||||
and [1.5 -> 2.0 upgrade guide](https://grafana.com/docs/tempo/latest/setup/upgrade/) before upgrading.
|
||||
|
||||
### From chart version < 0.27.0
|
||||
|
||||
Version 0.27.0:
|
||||
|
||||
Many changes have been introduced, including some breaking changes.
|
||||
|
||||
The [PR](https://github.com/grafana/helm-charts/pull/1759) includes additional details.
|
||||
|
||||
* **BREAKING CHANGE** centralize selector label handling -- users who wish to keep old values should still be able to use the `nameOverride` and `fullNameOverride` top level keys in their values.
|
||||
|
||||
* **BREAKING CHANGE** serviceMonitor has been nested under metaMonitoring -- metamonitoring can be used scrape services as well as install the operator with the following values. Note also that the port names have changed from `http` to `http-metrics`.
|
||||
```yaml
|
||||
metaMonitoring:
|
||||
serviceMonitor:
|
||||
enabled: true
|
||||
grafanaAgent:
|
||||
enabled: true
|
||||
installOperator: true
|
||||
```
|
||||
* minio can now be enabled as part of this chart using the following values
|
||||
```yaml
|
||||
minio:
|
||||
enabled: true
|
||||
```
|
||||
* allow configuration to be stored in a secret. See the documentation for `useExternalConfig` and `configStorageType` in the values file for more details.
|
||||
|
||||
|
||||
### From chart version < 0.26.0
|
||||
|
||||
Version 0.26.0
|
||||
|
||||
* Moves metricsGenerator.config.storage_remote_write to metricsGenerator.config.storage.remote_write
|
||||
* Moves metricsGenerator.config.service_graphs_max_items to metricsGenerator.config.processor.service_graphs.max_items
|
||||
|
||||
### From chart version < 0.23.0
|
||||
|
||||
Version 0.23.0:
|
||||
|
||||
* Adds /var/tempo emptyDir mount for querier, queryfrontend, distributor and compactor. Previously, /var/tempo was directory inside container.
|
||||
|
||||
* Sets queryFrontend.query.enabled to false. tempo-query is only required for grafana version <7.5 for compatibility with jaeger-ui. Please also note that tempo-query is incompatible with securityContext readOnlyRootFilesystem set to true.
|
||||
|
||||
* Sets stricter default securityContext:
|
||||
```yaml
|
||||
tempo:
|
||||
securityContext:
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
readOnlyRootFilesystem: true
|
||||
runAsNonRoot: true
|
||||
runAsUser: 1000
|
||||
runAsGroup: 1000
|
||||
allowPrivilegeEscalation: false
|
||||
podSecurityContext:
|
||||
fsGroup: 1000
|
||||
```
|
||||
If you had ingester persistence enabled, you might need to manually change ownership of files in your PV if your CSI doesn't support fsGroup
|
||||
|
||||
### From Chart version >= 0.22.0
|
||||
Align Istio GRPC named port syntax. For example,
|
||||
|
||||
- otlp-grpc -> grpc-otlp
|
||||
- distributor-otlp-grpc -> grpc-distributor-otlp
|
||||
- jaeger-grpc -> grpc-jaeger
|
||||
- distributor-jaeger-grpc -> grpc-distributor-jaeger
|
||||
|
||||
In case you need to rollback, please search the right hand side pattern and replace with left hand side pattern.
|
||||
|
||||
### From Chart version < 0.20.0
|
||||
The image's attributes must be set under the `image` key for the Memcached service.
|
||||
```yaml
|
||||
memcached:
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: memcached
|
||||
tag: "1.5.17-alpine"
|
||||
pullPolicy: "IfNotPresent"
|
||||
```
|
||||
|
||||
### From Chart version < 0.18.0
|
||||
Trace ingestion must now be enabled with the `enabled` key:
|
||||
```yaml
|
||||
traces:
|
||||
otlp:
|
||||
grpc:
|
||||
enabled: true
|
||||
http:
|
||||
enabled: true
|
||||
zipkin:
|
||||
enabled: true
|
||||
jaeger:
|
||||
thriftHttp:
|
||||
enabled: true
|
||||
opencensus:
|
||||
enabled: true
|
||||
```
|
||||
|
||||
### From Chart versions < 0.9.0
|
||||
|
||||
This release the component label was shortened to be more aligned with the Loki-distributed chart and the [mixin](https://github.com/grafana/tempo/tree/master/operations/tempo-mixin) dashboards.
|
||||
|
||||
Due to the label changes, an existing installation cannot be upgraded without manual interaction. There are basically two options:
|
||||
|
||||
Option 1
|
||||
Uninstall the old release and re-install the new one. There will be no data loss, as the collectors/agents can cache for a short period.
|
||||
|
||||
Option 2
|
||||
Add new selector labels to the existing pods. This option will make your pods also temporarely unavailable, option 1 is faster:
|
||||
|
||||
```
|
||||
kubectl label pod -n <namespace> -l app.kubernetes.io/component=<release-name>-tempo-distributed-<component>,app.kubernetes.io/instance=<instance-name> app.kubernetes.io/component=<component> --overwrite
|
||||
```
|
||||
|
||||
Perform a non-cascading deletion of the Deployments and Statefulsets which will keep the pods running:
|
||||
|
||||
```
|
||||
kubectl delete <deployment/statefulset> -n <namespace> -l app.kubernetes.io/component=<release-name>-tempo-distributed-<component>,app.kubernetes.io/instance=<instance-name> --cascade=false
|
||||
```
|
||||
|
||||
Perform a regular Helm upgrade on the existing release. The new Deployment/Statefulset will pick up the existing pods and perform a rolling upgrade.
|
||||
|
||||
### From Chart versions < 0.8.0
|
||||
|
||||
By default all tracing protocols are disabled and you need to specify which protocols to enable for ingestion.
|
||||
|
||||
For example to enable Jaeger grpc thrift http and zipkin protocols:
|
||||
```yaml
|
||||
traces:
|
||||
jaeger:
|
||||
grpc: true
|
||||
thriftHttp: true
|
||||
zipkin: true
|
||||
```
|
||||
|
||||
The distributor service is now called {{"{{"}}tempo.fullname{{"}}"}}-distributor. That could impact your ingestion towards this service.
|
||||
|
||||
### From Chart Versions < 0.7.0
|
||||
|
||||
The memcached default args are removed and should be provided manually. The settings for the `memcached.exporter` moved to `memcachedExporter`
|
||||
|
||||
{{ template "chart.valuesSection" . }}
|
||||
|
||||
## Components
|
||||
|
||||
The chart supports the components shown in the following table.
|
||||
Ingester, distributor, querier, query-frontend, and compactor are always installed.
|
||||
The other components are optional and must be explicitly enabled.
|
||||
|
||||
| Component | Optional |
|
||||
| --- | --- |
|
||||
| ingester | no |
|
||||
| distributor | no |
|
||||
| querier | no |
|
||||
| query-frontend | no |
|
||||
| compactor | no |
|
||||
| metrics-generator | yes |
|
||||
| memcached | yes |
|
||||
| gateway | yes |
|
||||
|
||||
|
||||
## [Configuration](https://grafana.com/docs/tempo/latest/configuration/)
|
||||
|
||||
This chart configures Tempo in microservices mode.
|
||||
|
||||
**NOTE:**
|
||||
In its default configuration, the chart uses `local` filesystem as storage.
|
||||
The reason for this is that the chart can be validated and installed in a CI pipeline.
|
||||
However, this setup is not fully functional.
|
||||
The recommendation is to use object storage, such as S3, GCS, MinIO, etc., or one of the other options documented at https://grafana.com/docs/tempo/latest/configuration/#storage.
|
||||
|
||||
Alternatively, in order to quickly test Tempo using the filestore, the [single binary chart](https://github.com/grafana/helm-charts/tree/main/charts/tempo) can be used.
|
||||
|
||||
### Overriding configuration variables with structuredConfig
|
||||
|
||||
tempo.structuredConfig variable can be used to alter individual values in the configuration and it's structured YAML instead of text. It takes precedence over all other variable adjustments inside tempo.yaml config file, ie s3 storage settings.
|
||||
|
||||
Example:
|
||||
|
||||
```yaml
|
||||
tempo:
|
||||
structuredConfig:
|
||||
query_frontend:
|
||||
search:
|
||||
max_duration: 12h0m0s
|
||||
```
|
||||
|
||||
### Activate metrics generator
|
||||
|
||||
Metrics-generator is disabled by default and can be activated by configuring the following values:
|
||||
|
||||
```yaml
|
||||
metricsGenerator:
|
||||
enabled: true
|
||||
config:
|
||||
storage:
|
||||
remote_write:
|
||||
- url: http://cortex/api/v1/push
|
||||
send_exemplars: true
|
||||
# headers:
|
||||
# x-scope-orgid: operations
|
||||
# Global overrides
|
||||
global_overrides:
|
||||
defaults:
|
||||
metrics_generator:
|
||||
processors:
|
||||
- service-graphs
|
||||
- span-metrics
|
||||
```
|
||||
|
||||
----
|
||||
|
||||
### Directory and File Locations
|
||||
|
||||
* Volumes are mounted to `/var/tempo`. The various directories Tempo needs should be configured as subdirectories (e. g. `/var/tempo/wal`, `/var/tempo/traces`). Tempo will create the directories automatically.
|
||||
* The config file is mounted to `/conf/tempo-query.yaml` and passed as CLI arg.
|
||||
|
||||
|
||||
### Example configuration using S3 for storage
|
||||
|
||||
```yaml
|
||||
config: |
|
||||
multitenancy_enabled: false
|
||||
compactor:
|
||||
compaction:
|
||||
block_retention: 48h
|
||||
ring:
|
||||
kvstore:
|
||||
store: memberlist
|
||||
distributor:
|
||||
receivers:
|
||||
jaeger:
|
||||
protocols:
|
||||
grpc:
|
||||
endpoint: 0.0.0.0:14250
|
||||
thrift_binary:
|
||||
endpoint: 0.0.0.0:6832
|
||||
thrift_compact:
|
||||
endpoint: 0.0.0.0:6831
|
||||
thrift_http:
|
||||
endpoint: 0.0.0.0:14268
|
||||
querier:
|
||||
frontend_worker:
|
||||
frontend_address: {{"{{"}} include "tempo.resourceName" (dict "ctx" . "component" "query-frontend") {{"}}"}}:9095
|
||||
ingester:
|
||||
lifecycler:
|
||||
ring:
|
||||
replication_factor: 1
|
||||
memberlist:
|
||||
abort_if_cluster_join_fails: false
|
||||
join_members:
|
||||
- {{"{{"}} include "tempo.fullname" . {{"}}"}}-memberlist
|
||||
overrides:
|
||||
per_tenant_override_config: /runtime-config/overrides.yaml
|
||||
server:
|
||||
http_listen_port: 3100
|
||||
storage:
|
||||
trace:
|
||||
backend: s3
|
||||
s3:
|
||||
access_key: tempo
|
||||
bucket: <your s3 bucket>
|
||||
endpoint: minio:9000
|
||||
insecure: true
|
||||
secret_key: supersecret
|
||||
pool:
|
||||
queue_depth: 2000
|
||||
wal:
|
||||
path: /var/tempo/wal
|
||||
memcached:
|
||||
consistent_hash: true
|
||||
host: a-tempo-distributed-memcached
|
||||
service: memcached-client
|
||||
timeout: 500ms
|
||||
```
|
||||
@@ -0,0 +1,22 @@
|
||||
# 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
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
||||
.vscode/
|
||||
@@ -0,0 +1,13 @@
|
||||
apiVersion: v2
|
||||
appVersion: 0.41.1
|
||||
description: A Helm chart for Grafana Agent Operator
|
||||
home: https://grafana.com/docs/agent/v0.41/
|
||||
icon: https://raw.githubusercontent.com/grafana/agent/v0.41.0/docs/sources/assets/logo_and_name.png
|
||||
maintainers:
|
||||
- email: grafana-agent-team@googlegroups.com
|
||||
name: Grafana Agent Team
|
||||
name: grafana-agent-operator
|
||||
sources:
|
||||
- https://github.com/grafana/agent/tree/v0.41.1/pkg/operator
|
||||
type: application
|
||||
version: 0.4.0
|
||||
@@ -0,0 +1,81 @@
|
||||
# grafana-agent-operator
|
||||
|
||||
  
|
||||
|
||||
A Helm chart for Grafana Agent Operator
|
||||
|
||||
⚠️ **Please create issues relating to this Helm chart in the [Agent](https://github.com/grafana/agent/issues) repo.**
|
||||
|
||||
## Source Code
|
||||
|
||||
* <https://github.com/grafana/agent/tree/v0.41.1/pkg/operator>
|
||||
|
||||
Note that this chart does not provision custom resources like `GrafanaAgent` and `MetricsInstance` (formerly `PrometheusInstance`) or any `*Monitor` resources.
|
||||
|
||||
To learn how to deploy these resources, please see Grafana's [Agent Operator getting started guide](https://grafana.com/docs/agent/latest/operator/getting-started/).
|
||||
|
||||
## CRDs
|
||||
|
||||
The CRDs are synced into this chart manually (for now) from the Grafana Agent [GitHub repo](https://github.com/grafana/agent/tree/main/operations/agent-static-operator/crds). To learn more about how Helm manages CRDs, please see [Custom Resource Definitions](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/) from the Helm docs.
|
||||
|
||||
## Get Repo Info
|
||||
|
||||
```console
|
||||
helm repo add grafana https://grafana.github.io/helm-charts
|
||||
helm repo update
|
||||
```
|
||||
|
||||
_See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._
|
||||
|
||||
## Installing the Chart
|
||||
|
||||
To install the chart with the release name `my-release`:
|
||||
|
||||
```console
|
||||
helm install my-release grafana/grafana-agent-operator
|
||||
```
|
||||
|
||||
## Uninstalling the Chart
|
||||
|
||||
To uninstall/delete the my-release deployment:
|
||||
|
||||
```console
|
||||
helm delete my-release
|
||||
```
|
||||
|
||||
The command removes all the Kubernetes components associated with the chart and deletes the release.
|
||||
|
||||
## Upgrading an existing Release to a new major version
|
||||
|
||||
A major chart version change (like v1.2.3 -> v2.0.0) indicates that there is an incompatible breaking change needing manual actions. Until this chart's version reaches `v1.0`, there are no promises of backwards compatibility.
|
||||
|
||||
## Values
|
||||
|
||||
| Key | Type | Default | Description |
|
||||
|-----|------|---------|-------------|
|
||||
| affinity | object | `{}` | Pod affinity configuration |
|
||||
| annotations | object | `{}` | Annotations for the Deployment |
|
||||
| containerSecurityContext | object | `{}` | Container security context (allowPrivilegeEscalation, etc.) |
|
||||
| extraArgs | list | `[]` | List of additional cli arguments to configure agent-operator (example: `--log.level`) |
|
||||
| fullnameOverride | string | `""` | Overrides the chart's computed fullname |
|
||||
| hostAliases | list | `[]` | hostAliases to add |
|
||||
| image.pullPolicy | string | `"IfNotPresent"` | Image pull policy |
|
||||
| image.pullSecrets | list | `[]` | Image pull secrets |
|
||||
| image.registry | string | `"docker.io"` | Image registry |
|
||||
| image.repository | string | `"grafana/agent-operator"` | Image repo |
|
||||
| image.tag | string | `"v0.41.1"` | Image tag |
|
||||
| kubeletService | object | `{"namespace":"default","serviceName":"kubelet"}` | If both are set, Agent Operator will create and maintain a service for scraping kubelets https://grafana.com/docs/agent/latest/operator/getting-started/#monitor-kubelets |
|
||||
| nameOverride | string | `""` | Overrides the chart's name |
|
||||
| nodeSelector | object | `{}` | nodeSelector configuration |
|
||||
| podAnnotations | object | `{}` | Annotations for the Deployment Pods |
|
||||
| podLabels | object | `{}` | Annotations for the Deployment Pods |
|
||||
| podSecurityContext | object | `{}` | Pod security context (runAsUser, etc.) |
|
||||
| rbac.create | bool | `true` | Toggle to create ClusterRole and ClusterRoleBinding |
|
||||
| rbac.podSecurityPolicyName | string | `""` | Name of a PodSecurityPolicy to use in the ClusterRole. If unset, no PodSecurityPolicy is used. |
|
||||
| resources | object | `{}` | Resource limits and requests config |
|
||||
| serviceAccount.create | bool | `true` | Toggle to create ServiceAccount |
|
||||
| serviceAccount.name | string | `nil` | Service account name |
|
||||
| test.image.registry | string | `"docker.io"` | Test image registry |
|
||||
| test.image.repository | string | `"library/busybox"` | Test image repo |
|
||||
| test.image.tag | string | `"latest"` | Test image tag |
|
||||
| tolerations | list | `[]` | Tolerations applied to Pods |
|
||||
@@ -0,0 +1,52 @@
|
||||
{{ template "chart.header" . }}
|
||||
|
||||
{{ template "chart.versionBadge" . }}{{ template "chart.typeBadge" . }}{{ template "chart.appVersionBadge" . }}
|
||||
|
||||
{{ template "chart.description" . }}
|
||||
|
||||
⚠️ **Please create issues relating to this Helm chart in the [Agent](https://github.com/grafana/agent/issues) repo.**
|
||||
|
||||
{{ template "chart.sourcesSection" . }}
|
||||
|
||||
{{ template "chart.requirementsSection" . }}
|
||||
|
||||
Note that this chart does not provision custom resources like `GrafanaAgent` and `MetricsInstance` (formerly `PrometheusInstance`) or any `*Monitor` resources.
|
||||
|
||||
To learn how to deploy these resources, please see Grafana's [Agent Operator getting started guide](https://grafana.com/docs/agent/latest/operator/getting-started/).
|
||||
|
||||
## CRDs
|
||||
|
||||
The CRDs are synced into this chart manually (for now) from the Grafana Agent [GitHub repo](https://github.com/grafana/agent/tree/main/operations/agent-static-operator/crds). To learn more about how Helm manages CRDs, please see [Custom Resource Definitions](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/) from the Helm docs.
|
||||
|
||||
## Get Repo Info
|
||||
|
||||
```console
|
||||
helm repo add grafana https://grafana.github.io/helm-charts
|
||||
helm repo update
|
||||
```
|
||||
|
||||
_See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._
|
||||
|
||||
## Installing the Chart
|
||||
|
||||
To install the chart with the release name `my-release`:
|
||||
|
||||
```console
|
||||
helm install my-release grafana/grafana-agent-operator
|
||||
```
|
||||
|
||||
## Uninstalling the Chart
|
||||
|
||||
To uninstall/delete the my-release deployment:
|
||||
|
||||
```console
|
||||
helm delete my-release
|
||||
```
|
||||
|
||||
The command removes all the Kubernetes components associated with the chart and deletes the release.
|
||||
|
||||
## Upgrading an existing Release to a new major version
|
||||
|
||||
A major chart version change (like v1.2.3 -> v2.0.0) indicates that there is an incompatible breaking change needing manual actions. Until this chart's version reaches `v1.0`, there are no promises of backwards compatibility.
|
||||
|
||||
{{ template "chart.valuesSection" . }}
|
||||
+424
@@ -0,0 +1,424 @@
|
||||
---
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.9.2
|
||||
creationTimestamp: null
|
||||
name: podmonitors.monitoring.coreos.com
|
||||
spec:
|
||||
group: monitoring.coreos.com
|
||||
names:
|
||||
categories:
|
||||
- prometheus-operator
|
||||
kind: PodMonitor
|
||||
listKind: PodMonitorList
|
||||
plural: podmonitors
|
||||
shortNames:
|
||||
- pmon
|
||||
singular: podmonitor
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- name: v1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
properties:
|
||||
apiVersion:
|
||||
type: string
|
||||
kind:
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
properties:
|
||||
attachMetadata:
|
||||
properties:
|
||||
node:
|
||||
type: boolean
|
||||
type: object
|
||||
jobLabel:
|
||||
type: string
|
||||
labelLimit:
|
||||
format: int64
|
||||
type: integer
|
||||
labelNameLengthLimit:
|
||||
format: int64
|
||||
type: integer
|
||||
labelValueLengthLimit:
|
||||
format: int64
|
||||
type: integer
|
||||
namespaceSelector:
|
||||
properties:
|
||||
any:
|
||||
type: boolean
|
||||
matchNames:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
type: object
|
||||
podMetricsEndpoints:
|
||||
items:
|
||||
properties:
|
||||
authorization:
|
||||
properties:
|
||||
credentials:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type:
|
||||
type: string
|
||||
type: object
|
||||
basicAuth:
|
||||
properties:
|
||||
password:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
username:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
bearerTokenSecret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
enableHttp2:
|
||||
type: boolean
|
||||
filterRunning:
|
||||
type: boolean
|
||||
followRedirects:
|
||||
type: boolean
|
||||
honorLabels:
|
||||
type: boolean
|
||||
honorTimestamps:
|
||||
type: boolean
|
||||
interval:
|
||||
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
||||
type: string
|
||||
metricRelabelings:
|
||||
items:
|
||||
properties:
|
||||
action:
|
||||
default: replace
|
||||
enum:
|
||||
- replace
|
||||
- Replace
|
||||
- keep
|
||||
- Keep
|
||||
- drop
|
||||
- Drop
|
||||
- hashmod
|
||||
- HashMod
|
||||
- labelmap
|
||||
- LabelMap
|
||||
- labeldrop
|
||||
- LabelDrop
|
||||
- labelkeep
|
||||
- LabelKeep
|
||||
- lowercase
|
||||
- Lowercase
|
||||
- uppercase
|
||||
- Uppercase
|
||||
- keepequal
|
||||
- KeepEqual
|
||||
- dropequal
|
||||
- DropEqual
|
||||
type: string
|
||||
modulus:
|
||||
format: int64
|
||||
type: integer
|
||||
regex:
|
||||
type: string
|
||||
replacement:
|
||||
type: string
|
||||
separator:
|
||||
type: string
|
||||
sourceLabels:
|
||||
items:
|
||||
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
|
||||
type: string
|
||||
type: array
|
||||
targetLabel:
|
||||
type: string
|
||||
type: object
|
||||
type: array
|
||||
oauth2:
|
||||
properties:
|
||||
clientId:
|
||||
properties:
|
||||
configMap:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
secret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
clientSecret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
endpointParams:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
scopes:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
tokenUrl:
|
||||
minLength: 1
|
||||
type: string
|
||||
required:
|
||||
- clientId
|
||||
- clientSecret
|
||||
- tokenUrl
|
||||
type: object
|
||||
params:
|
||||
additionalProperties:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
type: object
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
type: string
|
||||
proxyUrl:
|
||||
type: string
|
||||
relabelings:
|
||||
items:
|
||||
properties:
|
||||
action:
|
||||
default: replace
|
||||
enum:
|
||||
- replace
|
||||
- Replace
|
||||
- keep
|
||||
- Keep
|
||||
- drop
|
||||
- Drop
|
||||
- hashmod
|
||||
- HashMod
|
||||
- labelmap
|
||||
- LabelMap
|
||||
- labeldrop
|
||||
- LabelDrop
|
||||
- labelkeep
|
||||
- LabelKeep
|
||||
- lowercase
|
||||
- Lowercase
|
||||
- uppercase
|
||||
- Uppercase
|
||||
- keepequal
|
||||
- KeepEqual
|
||||
- dropequal
|
||||
- DropEqual
|
||||
type: string
|
||||
modulus:
|
||||
format: int64
|
||||
type: integer
|
||||
regex:
|
||||
type: string
|
||||
replacement:
|
||||
type: string
|
||||
separator:
|
||||
type: string
|
||||
sourceLabels:
|
||||
items:
|
||||
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
|
||||
type: string
|
||||
type: array
|
||||
targetLabel:
|
||||
type: string
|
||||
type: object
|
||||
type: array
|
||||
scheme:
|
||||
enum:
|
||||
- http
|
||||
- https
|
||||
type: string
|
||||
scrapeTimeout:
|
||||
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
||||
type: string
|
||||
targetPort:
|
||||
anyOf:
|
||||
- type: integer
|
||||
- type: string
|
||||
x-kubernetes-int-or-string: true
|
||||
tlsConfig:
|
||||
properties:
|
||||
ca:
|
||||
properties:
|
||||
configMap:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
secret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
cert:
|
||||
properties:
|
||||
configMap:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
secret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
insecureSkipVerify:
|
||||
type: boolean
|
||||
keySecret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
serverName:
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
type: array
|
||||
podTargetLabels:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
sampleLimit:
|
||||
format: int64
|
||||
type: integer
|
||||
selector:
|
||||
properties:
|
||||
matchExpressions:
|
||||
items:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
operator:
|
||||
type: string
|
||||
values:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
targetLimit:
|
||||
format: int64
|
||||
type: integer
|
||||
required:
|
||||
- podMetricsEndpoints
|
||||
- selector
|
||||
type: object
|
||||
required:
|
||||
- spec
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
+458
@@ -0,0 +1,458 @@
|
||||
---
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.9.2
|
||||
creationTimestamp: null
|
||||
name: probes.monitoring.coreos.com
|
||||
spec:
|
||||
group: monitoring.coreos.com
|
||||
names:
|
||||
categories:
|
||||
- prometheus-operator
|
||||
kind: Probe
|
||||
listKind: ProbeList
|
||||
plural: probes
|
||||
shortNames:
|
||||
- prb
|
||||
singular: probe
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- name: v1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
properties:
|
||||
apiVersion:
|
||||
type: string
|
||||
kind:
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
properties:
|
||||
authorization:
|
||||
properties:
|
||||
credentials:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type:
|
||||
type: string
|
||||
type: object
|
||||
basicAuth:
|
||||
properties:
|
||||
password:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
username:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
bearerTokenSecret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
interval:
|
||||
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
||||
type: string
|
||||
jobName:
|
||||
type: string
|
||||
labelLimit:
|
||||
format: int64
|
||||
type: integer
|
||||
labelNameLengthLimit:
|
||||
format: int64
|
||||
type: integer
|
||||
labelValueLengthLimit:
|
||||
format: int64
|
||||
type: integer
|
||||
metricRelabelings:
|
||||
items:
|
||||
properties:
|
||||
action:
|
||||
default: replace
|
||||
enum:
|
||||
- replace
|
||||
- Replace
|
||||
- keep
|
||||
- Keep
|
||||
- drop
|
||||
- Drop
|
||||
- hashmod
|
||||
- HashMod
|
||||
- labelmap
|
||||
- LabelMap
|
||||
- labeldrop
|
||||
- LabelDrop
|
||||
- labelkeep
|
||||
- LabelKeep
|
||||
- lowercase
|
||||
- Lowercase
|
||||
- uppercase
|
||||
- Uppercase
|
||||
- keepequal
|
||||
- KeepEqual
|
||||
- dropequal
|
||||
- DropEqual
|
||||
type: string
|
||||
modulus:
|
||||
format: int64
|
||||
type: integer
|
||||
regex:
|
||||
type: string
|
||||
replacement:
|
||||
type: string
|
||||
separator:
|
||||
type: string
|
||||
sourceLabels:
|
||||
items:
|
||||
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
|
||||
type: string
|
||||
type: array
|
||||
targetLabel:
|
||||
type: string
|
||||
type: object
|
||||
type: array
|
||||
module:
|
||||
type: string
|
||||
oauth2:
|
||||
properties:
|
||||
clientId:
|
||||
properties:
|
||||
configMap:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
secret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
clientSecret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
endpointParams:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
scopes:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
tokenUrl:
|
||||
minLength: 1
|
||||
type: string
|
||||
required:
|
||||
- clientId
|
||||
- clientSecret
|
||||
- tokenUrl
|
||||
type: object
|
||||
prober:
|
||||
properties:
|
||||
path:
|
||||
default: /probe
|
||||
type: string
|
||||
proxyUrl:
|
||||
type: string
|
||||
scheme:
|
||||
enum:
|
||||
- http
|
||||
- https
|
||||
type: string
|
||||
url:
|
||||
type: string
|
||||
required:
|
||||
- url
|
||||
type: object
|
||||
sampleLimit:
|
||||
format: int64
|
||||
type: integer
|
||||
scrapeTimeout:
|
||||
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
||||
type: string
|
||||
targetLimit:
|
||||
format: int64
|
||||
type: integer
|
||||
targets:
|
||||
properties:
|
||||
ingress:
|
||||
properties:
|
||||
namespaceSelector:
|
||||
properties:
|
||||
any:
|
||||
type: boolean
|
||||
matchNames:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
type: object
|
||||
relabelingConfigs:
|
||||
items:
|
||||
properties:
|
||||
action:
|
||||
default: replace
|
||||
enum:
|
||||
- replace
|
||||
- Replace
|
||||
- keep
|
||||
- Keep
|
||||
- drop
|
||||
- Drop
|
||||
- hashmod
|
||||
- HashMod
|
||||
- labelmap
|
||||
- LabelMap
|
||||
- labeldrop
|
||||
- LabelDrop
|
||||
- labelkeep
|
||||
- LabelKeep
|
||||
- lowercase
|
||||
- Lowercase
|
||||
- uppercase
|
||||
- Uppercase
|
||||
- keepequal
|
||||
- KeepEqual
|
||||
- dropequal
|
||||
- DropEqual
|
||||
type: string
|
||||
modulus:
|
||||
format: int64
|
||||
type: integer
|
||||
regex:
|
||||
type: string
|
||||
replacement:
|
||||
type: string
|
||||
separator:
|
||||
type: string
|
||||
sourceLabels:
|
||||
items:
|
||||
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
|
||||
type: string
|
||||
type: array
|
||||
targetLabel:
|
||||
type: string
|
||||
type: object
|
||||
type: array
|
||||
selector:
|
||||
properties:
|
||||
matchExpressions:
|
||||
items:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
operator:
|
||||
type: string
|
||||
values:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
staticConfig:
|
||||
properties:
|
||||
labels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
relabelingConfigs:
|
||||
items:
|
||||
properties:
|
||||
action:
|
||||
default: replace
|
||||
enum:
|
||||
- replace
|
||||
- Replace
|
||||
- keep
|
||||
- Keep
|
||||
- drop
|
||||
- Drop
|
||||
- hashmod
|
||||
- HashMod
|
||||
- labelmap
|
||||
- LabelMap
|
||||
- labeldrop
|
||||
- LabelDrop
|
||||
- labelkeep
|
||||
- LabelKeep
|
||||
- lowercase
|
||||
- Lowercase
|
||||
- uppercase
|
||||
- Uppercase
|
||||
- keepequal
|
||||
- KeepEqual
|
||||
- dropequal
|
||||
- DropEqual
|
||||
type: string
|
||||
modulus:
|
||||
format: int64
|
||||
type: integer
|
||||
regex:
|
||||
type: string
|
||||
replacement:
|
||||
type: string
|
||||
separator:
|
||||
type: string
|
||||
sourceLabels:
|
||||
items:
|
||||
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
|
||||
type: string
|
||||
type: array
|
||||
targetLabel:
|
||||
type: string
|
||||
type: object
|
||||
type: array
|
||||
static:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
type: object
|
||||
type: object
|
||||
tlsConfig:
|
||||
properties:
|
||||
ca:
|
||||
properties:
|
||||
configMap:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
secret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
cert:
|
||||
properties:
|
||||
configMap:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
secret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
insecureSkipVerify:
|
||||
type: boolean
|
||||
keySecret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
serverName:
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
required:
|
||||
- spec
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
+436
@@ -0,0 +1,436 @@
|
||||
---
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.9.2
|
||||
creationTimestamp: null
|
||||
name: servicemonitors.monitoring.coreos.com
|
||||
spec:
|
||||
group: monitoring.coreos.com
|
||||
names:
|
||||
categories:
|
||||
- prometheus-operator
|
||||
kind: ServiceMonitor
|
||||
listKind: ServiceMonitorList
|
||||
plural: servicemonitors
|
||||
shortNames:
|
||||
- smon
|
||||
singular: servicemonitor
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- name: v1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
properties:
|
||||
apiVersion:
|
||||
type: string
|
||||
kind:
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
properties:
|
||||
attachMetadata:
|
||||
properties:
|
||||
node:
|
||||
type: boolean
|
||||
type: object
|
||||
endpoints:
|
||||
items:
|
||||
properties:
|
||||
authorization:
|
||||
properties:
|
||||
credentials:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type:
|
||||
type: string
|
||||
type: object
|
||||
basicAuth:
|
||||
properties:
|
||||
password:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
username:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
bearerTokenFile:
|
||||
type: string
|
||||
bearerTokenSecret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
enableHttp2:
|
||||
type: boolean
|
||||
filterRunning:
|
||||
type: boolean
|
||||
followRedirects:
|
||||
type: boolean
|
||||
honorLabels:
|
||||
type: boolean
|
||||
honorTimestamps:
|
||||
type: boolean
|
||||
interval:
|
||||
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
||||
type: string
|
||||
metricRelabelings:
|
||||
items:
|
||||
properties:
|
||||
action:
|
||||
default: replace
|
||||
enum:
|
||||
- replace
|
||||
- Replace
|
||||
- keep
|
||||
- Keep
|
||||
- drop
|
||||
- Drop
|
||||
- hashmod
|
||||
- HashMod
|
||||
- labelmap
|
||||
- LabelMap
|
||||
- labeldrop
|
||||
- LabelDrop
|
||||
- labelkeep
|
||||
- LabelKeep
|
||||
- lowercase
|
||||
- Lowercase
|
||||
- uppercase
|
||||
- Uppercase
|
||||
- keepequal
|
||||
- KeepEqual
|
||||
- dropequal
|
||||
- DropEqual
|
||||
type: string
|
||||
modulus:
|
||||
format: int64
|
||||
type: integer
|
||||
regex:
|
||||
type: string
|
||||
replacement:
|
||||
type: string
|
||||
separator:
|
||||
type: string
|
||||
sourceLabels:
|
||||
items:
|
||||
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
|
||||
type: string
|
||||
type: array
|
||||
targetLabel:
|
||||
type: string
|
||||
type: object
|
||||
type: array
|
||||
oauth2:
|
||||
properties:
|
||||
clientId:
|
||||
properties:
|
||||
configMap:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
secret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
clientSecret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
endpointParams:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
scopes:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
tokenUrl:
|
||||
minLength: 1
|
||||
type: string
|
||||
required:
|
||||
- clientId
|
||||
- clientSecret
|
||||
- tokenUrl
|
||||
type: object
|
||||
params:
|
||||
additionalProperties:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
type: object
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
type: string
|
||||
proxyUrl:
|
||||
type: string
|
||||
relabelings:
|
||||
items:
|
||||
properties:
|
||||
action:
|
||||
default: replace
|
||||
enum:
|
||||
- replace
|
||||
- Replace
|
||||
- keep
|
||||
- Keep
|
||||
- drop
|
||||
- Drop
|
||||
- hashmod
|
||||
- HashMod
|
||||
- labelmap
|
||||
- LabelMap
|
||||
- labeldrop
|
||||
- LabelDrop
|
||||
- labelkeep
|
||||
- LabelKeep
|
||||
- lowercase
|
||||
- Lowercase
|
||||
- uppercase
|
||||
- Uppercase
|
||||
- keepequal
|
||||
- KeepEqual
|
||||
- dropequal
|
||||
- DropEqual
|
||||
type: string
|
||||
modulus:
|
||||
format: int64
|
||||
type: integer
|
||||
regex:
|
||||
type: string
|
||||
replacement:
|
||||
type: string
|
||||
separator:
|
||||
type: string
|
||||
sourceLabels:
|
||||
items:
|
||||
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
|
||||
type: string
|
||||
type: array
|
||||
targetLabel:
|
||||
type: string
|
||||
type: object
|
||||
type: array
|
||||
scheme:
|
||||
enum:
|
||||
- http
|
||||
- https
|
||||
type: string
|
||||
scrapeTimeout:
|
||||
pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$
|
||||
type: string
|
||||
targetPort:
|
||||
anyOf:
|
||||
- type: integer
|
||||
- type: string
|
||||
x-kubernetes-int-or-string: true
|
||||
tlsConfig:
|
||||
properties:
|
||||
ca:
|
||||
properties:
|
||||
configMap:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
secret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
caFile:
|
||||
type: string
|
||||
cert:
|
||||
properties:
|
||||
configMap:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
secret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
certFile:
|
||||
type: string
|
||||
insecureSkipVerify:
|
||||
type: boolean
|
||||
keyFile:
|
||||
type: string
|
||||
keySecret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
serverName:
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
type: array
|
||||
jobLabel:
|
||||
type: string
|
||||
labelLimit:
|
||||
format: int64
|
||||
type: integer
|
||||
labelNameLengthLimit:
|
||||
format: int64
|
||||
type: integer
|
||||
labelValueLengthLimit:
|
||||
format: int64
|
||||
type: integer
|
||||
namespaceSelector:
|
||||
properties:
|
||||
any:
|
||||
type: boolean
|
||||
matchNames:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
type: object
|
||||
podTargetLabels:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
sampleLimit:
|
||||
format: int64
|
||||
type: integer
|
||||
selector:
|
||||
properties:
|
||||
matchExpressions:
|
||||
items:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
operator:
|
||||
type: string
|
||||
values:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
targetLabels:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
targetLimit:
|
||||
format: int64
|
||||
type: integer
|
||||
required:
|
||||
- endpoints
|
||||
- selector
|
||||
type: object
|
||||
required:
|
||||
- spec
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
+3711
File diff suppressed because it is too large
Load Diff
+810
@@ -0,0 +1,810 @@
|
||||
---
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.9.2
|
||||
creationTimestamp: null
|
||||
name: integrations.monitoring.grafana.com
|
||||
spec:
|
||||
group: monitoring.grafana.com
|
||||
names:
|
||||
categories:
|
||||
- agent-operator
|
||||
kind: Integration
|
||||
listKind: IntegrationList
|
||||
plural: integrations
|
||||
singular: integration
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- name: v1alpha1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
properties:
|
||||
apiVersion:
|
||||
type: string
|
||||
kind:
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
properties:
|
||||
config:
|
||||
type: object
|
||||
x-kubernetes-preserve-unknown-fields: true
|
||||
configMaps:
|
||||
items:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: array
|
||||
name:
|
||||
type: string
|
||||
secrets:
|
||||
items:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: array
|
||||
type:
|
||||
properties:
|
||||
allNodes:
|
||||
type: boolean
|
||||
unique:
|
||||
type: boolean
|
||||
type: object
|
||||
volumeMounts:
|
||||
items:
|
||||
properties:
|
||||
mountPath:
|
||||
type: string
|
||||
mountPropagation:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
subPath:
|
||||
type: string
|
||||
subPathExpr:
|
||||
type: string
|
||||
required:
|
||||
- mountPath
|
||||
- name
|
||||
type: object
|
||||
type: array
|
||||
volumes:
|
||||
items:
|
||||
properties:
|
||||
awsElasticBlockStore:
|
||||
properties:
|
||||
fsType:
|
||||
type: string
|
||||
partition:
|
||||
format: int32
|
||||
type: integer
|
||||
readOnly:
|
||||
type: boolean
|
||||
volumeID:
|
||||
type: string
|
||||
required:
|
||||
- volumeID
|
||||
type: object
|
||||
azureDisk:
|
||||
properties:
|
||||
cachingMode:
|
||||
type: string
|
||||
diskName:
|
||||
type: string
|
||||
diskURI:
|
||||
type: string
|
||||
fsType:
|
||||
type: string
|
||||
kind:
|
||||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
required:
|
||||
- diskName
|
||||
- diskURI
|
||||
type: object
|
||||
azureFile:
|
||||
properties:
|
||||
readOnly:
|
||||
type: boolean
|
||||
secretName:
|
||||
type: string
|
||||
shareName:
|
||||
type: string
|
||||
required:
|
||||
- secretName
|
||||
- shareName
|
||||
type: object
|
||||
cephfs:
|
||||
properties:
|
||||
monitors:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
path:
|
||||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
secretFile:
|
||||
type: string
|
||||
secretRef:
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
user:
|
||||
type: string
|
||||
required:
|
||||
- monitors
|
||||
type: object
|
||||
cinder:
|
||||
properties:
|
||||
fsType:
|
||||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
secretRef:
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
volumeID:
|
||||
type: string
|
||||
required:
|
||||
- volumeID
|
||||
type: object
|
||||
configMap:
|
||||
properties:
|
||||
defaultMode:
|
||||
format: int32
|
||||
type: integer
|
||||
items:
|
||||
items:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
mode:
|
||||
format: int32
|
||||
type: integer
|
||||
path:
|
||||
type: string
|
||||
required:
|
||||
- key
|
||||
- path
|
||||
type: object
|
||||
type: array
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
csi:
|
||||
properties:
|
||||
driver:
|
||||
type: string
|
||||
fsType:
|
||||
type: string
|
||||
nodePublishSecretRef:
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
readOnly:
|
||||
type: boolean
|
||||
volumeAttributes:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
required:
|
||||
- driver
|
||||
type: object
|
||||
downwardAPI:
|
||||
properties:
|
||||
defaultMode:
|
||||
format: int32
|
||||
type: integer
|
||||
items:
|
||||
items:
|
||||
properties:
|
||||
fieldRef:
|
||||
properties:
|
||||
apiVersion:
|
||||
type: string
|
||||
fieldPath:
|
||||
type: string
|
||||
required:
|
||||
- fieldPath
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
mode:
|
||||
format: int32
|
||||
type: integer
|
||||
path:
|
||||
type: string
|
||||
resourceFieldRef:
|
||||
properties:
|
||||
containerName:
|
||||
type: string
|
||||
divisor:
|
||||
anyOf:
|
||||
- type: integer
|
||||
- type: string
|
||||
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
||||
x-kubernetes-int-or-string: true
|
||||
resource:
|
||||
type: string
|
||||
required:
|
||||
- resource
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
required:
|
||||
- path
|
||||
type: object
|
||||
type: array
|
||||
type: object
|
||||
emptyDir:
|
||||
properties:
|
||||
medium:
|
||||
type: string
|
||||
sizeLimit:
|
||||
anyOf:
|
||||
- type: integer
|
||||
- type: string
|
||||
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
||||
x-kubernetes-int-or-string: true
|
||||
type: object
|
||||
ephemeral:
|
||||
properties:
|
||||
volumeClaimTemplate:
|
||||
properties:
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
properties:
|
||||
accessModes:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
dataSource:
|
||||
properties:
|
||||
apiGroup:
|
||||
type: string
|
||||
kind:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
required:
|
||||
- kind
|
||||
- name
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
dataSourceRef:
|
||||
properties:
|
||||
apiGroup:
|
||||
type: string
|
||||
kind:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
namespace:
|
||||
type: string
|
||||
required:
|
||||
- kind
|
||||
- name
|
||||
type: object
|
||||
resources:
|
||||
properties:
|
||||
claims:
|
||||
items:
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
limits:
|
||||
additionalProperties:
|
||||
anyOf:
|
||||
- type: integer
|
||||
- type: string
|
||||
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
||||
x-kubernetes-int-or-string: true
|
||||
type: object
|
||||
requests:
|
||||
additionalProperties:
|
||||
anyOf:
|
||||
- type: integer
|
||||
- type: string
|
||||
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
||||
x-kubernetes-int-or-string: true
|
||||
type: object
|
||||
type: object
|
||||
selector:
|
||||
properties:
|
||||
matchExpressions:
|
||||
items:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
operator:
|
||||
type: string
|
||||
values:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
storageClassName:
|
||||
type: string
|
||||
volumeMode:
|
||||
type: string
|
||||
volumeName:
|
||||
type: string
|
||||
type: object
|
||||
required:
|
||||
- spec
|
||||
type: object
|
||||
type: object
|
||||
fc:
|
||||
properties:
|
||||
fsType:
|
||||
type: string
|
||||
lun:
|
||||
format: int32
|
||||
type: integer
|
||||
readOnly:
|
||||
type: boolean
|
||||
targetWWNs:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
wwids:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
type: object
|
||||
flexVolume:
|
||||
properties:
|
||||
driver:
|
||||
type: string
|
||||
fsType:
|
||||
type: string
|
||||
options:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
readOnly:
|
||||
type: boolean
|
||||
secretRef:
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
required:
|
||||
- driver
|
||||
type: object
|
||||
flocker:
|
||||
properties:
|
||||
datasetName:
|
||||
type: string
|
||||
datasetUUID:
|
||||
type: string
|
||||
type: object
|
||||
gcePersistentDisk:
|
||||
properties:
|
||||
fsType:
|
||||
type: string
|
||||
partition:
|
||||
format: int32
|
||||
type: integer
|
||||
pdName:
|
||||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
required:
|
||||
- pdName
|
||||
type: object
|
||||
gitRepo:
|
||||
properties:
|
||||
directory:
|
||||
type: string
|
||||
repository:
|
||||
type: string
|
||||
revision:
|
||||
type: string
|
||||
required:
|
||||
- repository
|
||||
type: object
|
||||
glusterfs:
|
||||
properties:
|
||||
endpoints:
|
||||
type: string
|
||||
path:
|
||||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
required:
|
||||
- endpoints
|
||||
- path
|
||||
type: object
|
||||
hostPath:
|
||||
properties:
|
||||
path:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
required:
|
||||
- path
|
||||
type: object
|
||||
iscsi:
|
||||
properties:
|
||||
chapAuthDiscovery:
|
||||
type: boolean
|
||||
chapAuthSession:
|
||||
type: boolean
|
||||
fsType:
|
||||
type: string
|
||||
initiatorName:
|
||||
type: string
|
||||
iqn:
|
||||
type: string
|
||||
iscsiInterface:
|
||||
type: string
|
||||
lun:
|
||||
format: int32
|
||||
type: integer
|
||||
portals:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
readOnly:
|
||||
type: boolean
|
||||
secretRef:
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
targetPortal:
|
||||
type: string
|
||||
required:
|
||||
- iqn
|
||||
- lun
|
||||
- targetPortal
|
||||
type: object
|
||||
name:
|
||||
type: string
|
||||
nfs:
|
||||
properties:
|
||||
path:
|
||||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
server:
|
||||
type: string
|
||||
required:
|
||||
- path
|
||||
- server
|
||||
type: object
|
||||
persistentVolumeClaim:
|
||||
properties:
|
||||
claimName:
|
||||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
required:
|
||||
- claimName
|
||||
type: object
|
||||
photonPersistentDisk:
|
||||
properties:
|
||||
fsType:
|
||||
type: string
|
||||
pdID:
|
||||
type: string
|
||||
required:
|
||||
- pdID
|
||||
type: object
|
||||
portworxVolume:
|
||||
properties:
|
||||
fsType:
|
||||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
volumeID:
|
||||
type: string
|
||||
required:
|
||||
- volumeID
|
||||
type: object
|
||||
projected:
|
||||
properties:
|
||||
defaultMode:
|
||||
format: int32
|
||||
type: integer
|
||||
sources:
|
||||
items:
|
||||
properties:
|
||||
configMap:
|
||||
properties:
|
||||
items:
|
||||
items:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
mode:
|
||||
format: int32
|
||||
type: integer
|
||||
path:
|
||||
type: string
|
||||
required:
|
||||
- key
|
||||
- path
|
||||
type: object
|
||||
type: array
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
downwardAPI:
|
||||
properties:
|
||||
items:
|
||||
items:
|
||||
properties:
|
||||
fieldRef:
|
||||
properties:
|
||||
apiVersion:
|
||||
type: string
|
||||
fieldPath:
|
||||
type: string
|
||||
required:
|
||||
- fieldPath
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
mode:
|
||||
format: int32
|
||||
type: integer
|
||||
path:
|
||||
type: string
|
||||
resourceFieldRef:
|
||||
properties:
|
||||
containerName:
|
||||
type: string
|
||||
divisor:
|
||||
anyOf:
|
||||
- type: integer
|
||||
- type: string
|
||||
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
||||
x-kubernetes-int-or-string: true
|
||||
resource:
|
||||
type: string
|
||||
required:
|
||||
- resource
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
required:
|
||||
- path
|
||||
type: object
|
||||
type: array
|
||||
type: object
|
||||
secret:
|
||||
properties:
|
||||
items:
|
||||
items:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
mode:
|
||||
format: int32
|
||||
type: integer
|
||||
path:
|
||||
type: string
|
||||
required:
|
||||
- key
|
||||
- path
|
||||
type: object
|
||||
type: array
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
serviceAccountToken:
|
||||
properties:
|
||||
audience:
|
||||
type: string
|
||||
expirationSeconds:
|
||||
format: int64
|
||||
type: integer
|
||||
path:
|
||||
type: string
|
||||
required:
|
||||
- path
|
||||
type: object
|
||||
type: object
|
||||
type: array
|
||||
type: object
|
||||
quobyte:
|
||||
properties:
|
||||
group:
|
||||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
registry:
|
||||
type: string
|
||||
tenant:
|
||||
type: string
|
||||
user:
|
||||
type: string
|
||||
volume:
|
||||
type: string
|
||||
required:
|
||||
- registry
|
||||
- volume
|
||||
type: object
|
||||
rbd:
|
||||
properties:
|
||||
fsType:
|
||||
type: string
|
||||
image:
|
||||
type: string
|
||||
keyring:
|
||||
type: string
|
||||
monitors:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
pool:
|
||||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
secretRef:
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
user:
|
||||
type: string
|
||||
required:
|
||||
- image
|
||||
- monitors
|
||||
type: object
|
||||
scaleIO:
|
||||
properties:
|
||||
fsType:
|
||||
type: string
|
||||
gateway:
|
||||
type: string
|
||||
protectionDomain:
|
||||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
secretRef:
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
sslEnabled:
|
||||
type: boolean
|
||||
storageMode:
|
||||
type: string
|
||||
storagePool:
|
||||
type: string
|
||||
system:
|
||||
type: string
|
||||
volumeName:
|
||||
type: string
|
||||
required:
|
||||
- gateway
|
||||
- secretRef
|
||||
- system
|
||||
type: object
|
||||
secret:
|
||||
properties:
|
||||
defaultMode:
|
||||
format: int32
|
||||
type: integer
|
||||
items:
|
||||
items:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
mode:
|
||||
format: int32
|
||||
type: integer
|
||||
path:
|
||||
type: string
|
||||
required:
|
||||
- key
|
||||
- path
|
||||
type: object
|
||||
type: array
|
||||
optional:
|
||||
type: boolean
|
||||
secretName:
|
||||
type: string
|
||||
type: object
|
||||
storageos:
|
||||
properties:
|
||||
fsType:
|
||||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
secretRef:
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
volumeName:
|
||||
type: string
|
||||
volumeNamespace:
|
||||
type: string
|
||||
type: object
|
||||
vsphereVolume:
|
||||
properties:
|
||||
fsType:
|
||||
type: string
|
||||
storagePolicyID:
|
||||
type: string
|
||||
storagePolicyName:
|
||||
type: string
|
||||
volumePath:
|
||||
type: string
|
||||
required:
|
||||
- volumePath
|
||||
type: object
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
type: array
|
||||
required:
|
||||
- config
|
||||
- name
|
||||
- type
|
||||
type: object
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
+299
@@ -0,0 +1,299 @@
|
||||
---
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.9.2
|
||||
creationTimestamp: null
|
||||
name: logsinstances.monitoring.grafana.com
|
||||
spec:
|
||||
group: monitoring.grafana.com
|
||||
names:
|
||||
categories:
|
||||
- agent-operator
|
||||
kind: LogsInstance
|
||||
listKind: LogsInstanceList
|
||||
plural: logsinstances
|
||||
singular: logsinstance
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- name: v1alpha1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
properties:
|
||||
apiVersion:
|
||||
type: string
|
||||
kind:
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
properties:
|
||||
additionalScrapeConfigs:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
clients:
|
||||
items:
|
||||
properties:
|
||||
backoffConfig:
|
||||
properties:
|
||||
maxPeriod:
|
||||
type: string
|
||||
maxRetries:
|
||||
type: integer
|
||||
minPeriod:
|
||||
type: string
|
||||
type: object
|
||||
basicAuth:
|
||||
properties:
|
||||
password:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
username:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
batchSize:
|
||||
type: integer
|
||||
batchWait:
|
||||
type: string
|
||||
bearerToken:
|
||||
type: string
|
||||
bearerTokenFile:
|
||||
type: string
|
||||
externalLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
oauth2:
|
||||
properties:
|
||||
clientId:
|
||||
properties:
|
||||
configMap:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
secret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
clientSecret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
endpointParams:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
scopes:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
tokenUrl:
|
||||
minLength: 1
|
||||
type: string
|
||||
required:
|
||||
- clientId
|
||||
- clientSecret
|
||||
- tokenUrl
|
||||
type: object
|
||||
proxyUrl:
|
||||
type: string
|
||||
tenantId:
|
||||
type: string
|
||||
timeout:
|
||||
type: string
|
||||
tlsConfig:
|
||||
properties:
|
||||
ca:
|
||||
properties:
|
||||
configMap:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
secret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
caFile:
|
||||
type: string
|
||||
cert:
|
||||
properties:
|
||||
configMap:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
secret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
certFile:
|
||||
type: string
|
||||
insecureSkipVerify:
|
||||
type: boolean
|
||||
keyFile:
|
||||
type: string
|
||||
keySecret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
serverName:
|
||||
type: string
|
||||
type: object
|
||||
url:
|
||||
type: string
|
||||
required:
|
||||
- url
|
||||
type: object
|
||||
type: array
|
||||
podLogsNamespaceSelector:
|
||||
properties:
|
||||
matchExpressions:
|
||||
items:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
operator:
|
||||
type: string
|
||||
values:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
podLogsSelector:
|
||||
properties:
|
||||
matchExpressions:
|
||||
items:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
operator:
|
||||
type: string
|
||||
values:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
targetConfig:
|
||||
properties:
|
||||
syncPeriod:
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
+495
@@ -0,0 +1,495 @@
|
||||
---
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.9.2
|
||||
creationTimestamp: null
|
||||
name: metricsinstances.monitoring.grafana.com
|
||||
spec:
|
||||
group: monitoring.grafana.com
|
||||
names:
|
||||
categories:
|
||||
- agent-operator
|
||||
kind: MetricsInstance
|
||||
listKind: MetricsInstanceList
|
||||
plural: metricsinstances
|
||||
singular: metricsinstance
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- name: v1alpha1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
properties:
|
||||
apiVersion:
|
||||
type: string
|
||||
kind:
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
properties:
|
||||
additionalScrapeConfigs:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
maxWALTime:
|
||||
type: string
|
||||
minWALTime:
|
||||
type: string
|
||||
podMonitorNamespaceSelector:
|
||||
properties:
|
||||
matchExpressions:
|
||||
items:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
operator:
|
||||
type: string
|
||||
values:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
podMonitorSelector:
|
||||
properties:
|
||||
matchExpressions:
|
||||
items:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
operator:
|
||||
type: string
|
||||
values:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
probeNamespaceSelector:
|
||||
properties:
|
||||
matchExpressions:
|
||||
items:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
operator:
|
||||
type: string
|
||||
values:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
probeSelector:
|
||||
properties:
|
||||
matchExpressions:
|
||||
items:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
operator:
|
||||
type: string
|
||||
values:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
remoteFlushDeadline:
|
||||
type: string
|
||||
remoteWrite:
|
||||
items:
|
||||
properties:
|
||||
basicAuth:
|
||||
properties:
|
||||
password:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
username:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
bearerToken:
|
||||
type: string
|
||||
bearerTokenFile:
|
||||
type: string
|
||||
headers:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
metadataConfig:
|
||||
properties:
|
||||
send:
|
||||
type: boolean
|
||||
sendInterval:
|
||||
type: string
|
||||
type: object
|
||||
name:
|
||||
type: string
|
||||
oauth2:
|
||||
properties:
|
||||
clientId:
|
||||
properties:
|
||||
configMap:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
secret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
clientSecret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
endpointParams:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
scopes:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
tokenUrl:
|
||||
minLength: 1
|
||||
type: string
|
||||
required:
|
||||
- clientId
|
||||
- clientSecret
|
||||
- tokenUrl
|
||||
type: object
|
||||
proxyUrl:
|
||||
type: string
|
||||
queueConfig:
|
||||
properties:
|
||||
batchSendDeadline:
|
||||
type: string
|
||||
capacity:
|
||||
type: integer
|
||||
maxBackoff:
|
||||
type: string
|
||||
maxRetries:
|
||||
type: integer
|
||||
maxSamplesPerSend:
|
||||
type: integer
|
||||
maxShards:
|
||||
type: integer
|
||||
minBackoff:
|
||||
type: string
|
||||
minShards:
|
||||
type: integer
|
||||
retryOnRateLimit:
|
||||
type: boolean
|
||||
type: object
|
||||
remoteTimeout:
|
||||
type: string
|
||||
sigv4:
|
||||
properties:
|
||||
accessKey:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
profile:
|
||||
type: string
|
||||
region:
|
||||
type: string
|
||||
roleARN:
|
||||
type: string
|
||||
secretKey:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
tlsConfig:
|
||||
properties:
|
||||
ca:
|
||||
properties:
|
||||
configMap:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
secret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
caFile:
|
||||
type: string
|
||||
cert:
|
||||
properties:
|
||||
configMap:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
secret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
certFile:
|
||||
type: string
|
||||
insecureSkipVerify:
|
||||
type: boolean
|
||||
keyFile:
|
||||
type: string
|
||||
keySecret:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
required:
|
||||
- key
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
serverName:
|
||||
type: string
|
||||
type: object
|
||||
url:
|
||||
type: string
|
||||
writeRelabelConfigs:
|
||||
items:
|
||||
properties:
|
||||
action:
|
||||
default: replace
|
||||
enum:
|
||||
- replace
|
||||
- Replace
|
||||
- keep
|
||||
- Keep
|
||||
- drop
|
||||
- Drop
|
||||
- hashmod
|
||||
- HashMod
|
||||
- labelmap
|
||||
- LabelMap
|
||||
- labeldrop
|
||||
- LabelDrop
|
||||
- labelkeep
|
||||
- LabelKeep
|
||||
- lowercase
|
||||
- Lowercase
|
||||
- uppercase
|
||||
- Uppercase
|
||||
- keepequal
|
||||
- KeepEqual
|
||||
- dropequal
|
||||
- DropEqual
|
||||
type: string
|
||||
modulus:
|
||||
format: int64
|
||||
type: integer
|
||||
regex:
|
||||
type: string
|
||||
replacement:
|
||||
type: string
|
||||
separator:
|
||||
type: string
|
||||
sourceLabels:
|
||||
items:
|
||||
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
|
||||
type: string
|
||||
type: array
|
||||
targetLabel:
|
||||
type: string
|
||||
type: object
|
||||
type: array
|
||||
required:
|
||||
- url
|
||||
type: object
|
||||
type: array
|
||||
serviceMonitorNamespaceSelector:
|
||||
properties:
|
||||
matchExpressions:
|
||||
items:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
operator:
|
||||
type: string
|
||||
values:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
serviceMonitorSelector:
|
||||
properties:
|
||||
matchExpressions:
|
||||
items:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
operator:
|
||||
type: string
|
||||
values:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
walTruncateFrequency:
|
||||
type: string
|
||||
writeStaleOnShutdown:
|
||||
type: boolean
|
||||
type: object
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
+308
@@ -0,0 +1,308 @@
|
||||
---
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.9.2
|
||||
creationTimestamp: null
|
||||
name: podlogs.monitoring.grafana.com
|
||||
spec:
|
||||
group: monitoring.grafana.com
|
||||
names:
|
||||
categories:
|
||||
- agent-operator
|
||||
kind: PodLogs
|
||||
listKind: PodLogsList
|
||||
plural: podlogs
|
||||
singular: podlogs
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- name: v1alpha1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
properties:
|
||||
apiVersion:
|
||||
type: string
|
||||
kind:
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
properties:
|
||||
jobLabel:
|
||||
type: string
|
||||
namespaceSelector:
|
||||
properties:
|
||||
any:
|
||||
type: boolean
|
||||
matchNames:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
type: object
|
||||
pipelineStages:
|
||||
items:
|
||||
properties:
|
||||
cri:
|
||||
type: object
|
||||
docker:
|
||||
type: object
|
||||
drop:
|
||||
properties:
|
||||
dropCounterReason:
|
||||
type: string
|
||||
expression:
|
||||
type: string
|
||||
longerThan:
|
||||
type: string
|
||||
olderThan:
|
||||
type: string
|
||||
source:
|
||||
type: string
|
||||
value:
|
||||
type: string
|
||||
type: object
|
||||
json:
|
||||
properties:
|
||||
expressions:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
source:
|
||||
type: string
|
||||
type: object
|
||||
labelAllow:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
labelDrop:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
labels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
limit:
|
||||
properties:
|
||||
burst:
|
||||
type: integer
|
||||
drop:
|
||||
type: boolean
|
||||
rate:
|
||||
type: integer
|
||||
type: object
|
||||
match:
|
||||
properties:
|
||||
action:
|
||||
type: string
|
||||
dropCounterReason:
|
||||
type: string
|
||||
pipelineName:
|
||||
type: string
|
||||
selector:
|
||||
type: string
|
||||
stages:
|
||||
type: string
|
||||
required:
|
||||
- selector
|
||||
type: object
|
||||
metrics:
|
||||
additionalProperties:
|
||||
properties:
|
||||
action:
|
||||
type: string
|
||||
buckets:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
countEntryBytes:
|
||||
type: boolean
|
||||
description:
|
||||
type: string
|
||||
matchAll:
|
||||
type: boolean
|
||||
maxIdleDuration:
|
||||
type: string
|
||||
prefix:
|
||||
type: string
|
||||
source:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
value:
|
||||
type: string
|
||||
required:
|
||||
- action
|
||||
- type
|
||||
type: object
|
||||
type: object
|
||||
multiline:
|
||||
properties:
|
||||
firstLine:
|
||||
type: string
|
||||
maxLines:
|
||||
type: integer
|
||||
maxWaitTime:
|
||||
type: string
|
||||
required:
|
||||
- firstLine
|
||||
type: object
|
||||
output:
|
||||
properties:
|
||||
source:
|
||||
type: string
|
||||
required:
|
||||
- source
|
||||
type: object
|
||||
pack:
|
||||
properties:
|
||||
ingestTimestamp:
|
||||
type: boolean
|
||||
labels:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
required:
|
||||
- labels
|
||||
type: object
|
||||
regex:
|
||||
properties:
|
||||
expression:
|
||||
type: string
|
||||
source:
|
||||
type: string
|
||||
required:
|
||||
- expression
|
||||
type: object
|
||||
replace:
|
||||
properties:
|
||||
expression:
|
||||
type: string
|
||||
replace:
|
||||
type: string
|
||||
source:
|
||||
type: string
|
||||
required:
|
||||
- expression
|
||||
type: object
|
||||
template:
|
||||
properties:
|
||||
source:
|
||||
type: string
|
||||
template:
|
||||
type: string
|
||||
required:
|
||||
- source
|
||||
- template
|
||||
type: object
|
||||
tenant:
|
||||
properties:
|
||||
label:
|
||||
type: string
|
||||
source:
|
||||
type: string
|
||||
value:
|
||||
type: string
|
||||
type: object
|
||||
timestamp:
|
||||
properties:
|
||||
actionOnFailure:
|
||||
type: string
|
||||
fallbackFormats:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
format:
|
||||
type: string
|
||||
location:
|
||||
type: string
|
||||
source:
|
||||
type: string
|
||||
required:
|
||||
- format
|
||||
- source
|
||||
type: object
|
||||
type: object
|
||||
type: array
|
||||
podTargetLabels:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
relabelings:
|
||||
items:
|
||||
properties:
|
||||
action:
|
||||
default: replace
|
||||
enum:
|
||||
- replace
|
||||
- Replace
|
||||
- keep
|
||||
- Keep
|
||||
- drop
|
||||
- Drop
|
||||
- hashmod
|
||||
- HashMod
|
||||
- labelmap
|
||||
- LabelMap
|
||||
- labeldrop
|
||||
- LabelDrop
|
||||
- labelkeep
|
||||
- LabelKeep
|
||||
- lowercase
|
||||
- Lowercase
|
||||
- uppercase
|
||||
- Uppercase
|
||||
- keepequal
|
||||
- KeepEqual
|
||||
- dropequal
|
||||
- DropEqual
|
||||
type: string
|
||||
modulus:
|
||||
format: int64
|
||||
type: integer
|
||||
regex:
|
||||
type: string
|
||||
replacement:
|
||||
type: string
|
||||
separator:
|
||||
type: string
|
||||
sourceLabels:
|
||||
items:
|
||||
pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
|
||||
type: string
|
||||
type: array
|
||||
targetLabel:
|
||||
type: string
|
||||
type: object
|
||||
type: array
|
||||
selector:
|
||||
properties:
|
||||
matchExpressions:
|
||||
items:
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
operator:
|
||||
type: string
|
||||
values:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
required:
|
||||
- selector
|
||||
type: object
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
@@ -0,0 +1,67 @@
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "ga-operator.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "ga-operator.fullname" -}}
|
||||
{{- if .Values.fullnameOverride }}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||
{{- if contains $name .Release.Name }}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "ga-operator.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
{{- define "ga-operator.labels" -}}
|
||||
{{ include "ga-operator.selectorLabels" . }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
app.kubernetes.io/component: operator
|
||||
helm.sh/chart: {{ include "ga-operator.chart" . }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
{{- end }}
|
||||
{{- if .Values.customLabels }}
|
||||
{{ toYaml .Values.customLabels }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Selector labels
|
||||
*/}}
|
||||
{{- define "ga-operator.selectorLabels" -}}
|
||||
app.kubernetes.io/name: {{ include "ga-operator.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "ga-operator.serviceAccountName" -}}
|
||||
{{- if .Values.serviceAccount.create }}
|
||||
{{- default (include "ga-operator.fullname" .) .Values.serviceAccount.name }}
|
||||
{{- else }}
|
||||
{{- default "default" .Values.serviceAccount.name }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
{{- if .Values.rbac.create -}}
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: {{ include "ga-operator.fullname" . }}
|
||||
labels:
|
||||
{{ include "ga-operator.labels" . | indent 4 }}
|
||||
rules:
|
||||
- apiGroups: [monitoring.grafana.com]
|
||||
resources:
|
||||
- grafanaagents
|
||||
- metricsinstances
|
||||
- logsinstances
|
||||
- podlogs
|
||||
- integrations
|
||||
verbs: [get, list, watch]
|
||||
- apiGroups: [monitoring.grafana.com]
|
||||
resources:
|
||||
- grafanaagents/finalizers
|
||||
- metricsinstances/finalizers
|
||||
- logsinstances/finalizers
|
||||
- podlogs/finalizers
|
||||
- integrations/finalizers
|
||||
verbs: [get, list, watch, update]
|
||||
- apiGroups: [monitoring.coreos.com]
|
||||
resources:
|
||||
- podmonitors
|
||||
- probes
|
||||
- servicemonitors
|
||||
verbs: [get, list, watch]
|
||||
- apiGroups: [monitoring.coreos.com]
|
||||
resources:
|
||||
- podmonitors/finalizers
|
||||
- probes/finalizers
|
||||
- servicemonitors/finalizers
|
||||
verbs: [get, list, watch, update]
|
||||
- apiGroups: [""]
|
||||
resources:
|
||||
- namespaces
|
||||
- nodes
|
||||
verbs: [get, list, watch]
|
||||
- apiGroups: [""]
|
||||
resources:
|
||||
- secrets
|
||||
- services
|
||||
- configmaps
|
||||
- endpoints
|
||||
verbs: [get, list, watch, create, update, patch, delete]
|
||||
- apiGroups: ["apps"]
|
||||
resources:
|
||||
- statefulsets
|
||||
- daemonsets
|
||||
- deployments
|
||||
verbs: [get, list, watch, create, update, patch, delete]
|
||||
{{- with .Values.rbac.podSecurityPolicyName }}
|
||||
- apiGroups: [policy]
|
||||
resources:
|
||||
- podsecuritypolicies
|
||||
verbs: [use]
|
||||
resourceNames: [ {{ . }} ]
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
{{- if .Values.rbac.create -}}
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: {{ include "ga-operator.fullname" . }}
|
||||
labels:
|
||||
{{ include "ga-operator.labels" . | indent 4 }}
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: {{ include "ga-operator.fullname" . }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ template "ga-operator.serviceAccountName" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{- end -}}
|
||||
|
||||
+79
@@ -0,0 +1,79 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "ga-operator.fullname" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{ include "ga-operator.labels" . | indent 4 }}
|
||||
{{- with .Values.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
{{ include "ga-operator.selectorLabels" . | indent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
{{ include "ga-operator.selectorLabels" . | indent 8 }}
|
||||
{{- with .Values.podLabels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.priorityClassName }}
|
||||
priorityClassName: {{ . }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ template "ga-operator.serviceAccountName" . }}
|
||||
{{- with .Values.podSecurityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ include "ga-operator.name" . }}
|
||||
image: "{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
{{- with .Values.containerSecurityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
{{- with .Values.resources }}
|
||||
resources:
|
||||
{{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
{{- if or (and .Values.kubeletService.namespace .Values.kubeletService.serviceName) (.Values.extraArgs) }}
|
||||
args:
|
||||
{{- if and .Values.kubeletService.namespace .Values.kubeletService.serviceName }}
|
||||
- --kubelet-service={{ .Values.kubeletService.namespace }}/{{ .Values.kubeletService.serviceName }}
|
||||
{{- end }}
|
||||
{{- if .Values.extraArgs }}
|
||||
{{- range .Values.extraArgs }}
|
||||
- {{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with .Values.image.pullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.hostAliases }}
|
||||
hostAliases:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
{{- if .Values.serviceAccount.create -}}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ template "ga-operator.serviceAccountName" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{ include "ga-operator.labels" . | indent 4 }}
|
||||
{{- end -}}
|
||||
|
||||
+118
@@ -0,0 +1,118 @@
|
||||
apiVersion: monitoring.grafana.com/v1alpha1
|
||||
kind: GrafanaAgent
|
||||
metadata:
|
||||
name: grafana-agent-test
|
||||
labels:
|
||||
app: grafana-agent-test
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded,hook-failed
|
||||
spec:
|
||||
image: "{{ .Values.image.registry }}/grafana/agent:{{ .Values.image.tag }}"
|
||||
logLevel: info
|
||||
serviceAccountName: grafana-agent-test-sa
|
||||
metrics:
|
||||
instanceSelector:
|
||||
matchLabels:
|
||||
agent: grafana-agent-test
|
||||
|
||||
---
|
||||
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: grafana-agent-test-sa
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded,hook-failed
|
||||
|
||||
---
|
||||
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: grafana-agent-test-cr
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded,hook-failed
|
||||
rules:
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- nodes
|
||||
- nodes/proxy
|
||||
- nodes/metrics
|
||||
- services
|
||||
- endpoints
|
||||
- pods
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- networking.k8s.io
|
||||
resources:
|
||||
- ingresses
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- nonResourceURLs:
|
||||
- /metrics
|
||||
- /metrics/cadvisor
|
||||
verbs:
|
||||
- get
|
||||
|
||||
---
|
||||
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: grafana-agent-test-crb
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded,hook-failed
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: grafana-agent-test-cr
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: grafana-agent-test-sa
|
||||
namespace: {{ .Release.Namespace }}
|
||||
|
||||
---
|
||||
|
||||
apiVersion: monitoring.grafana.com/v1alpha1
|
||||
kind: MetricsInstance
|
||||
metadata:
|
||||
name: primary-test
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded,hook-failed
|
||||
labels:
|
||||
agent: grafana-agent-test
|
||||
spec: {}
|
||||
|
||||
---
|
||||
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: grafana-agent-test-probe
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-weight": "1"
|
||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded,hook-failed
|
||||
spec:
|
||||
containers:
|
||||
- name: busybox
|
||||
image: "{{ .Values.test.image.registry }}/{{ .Values.test.image.repository }}:{{ .Values.test.image.tag }}"
|
||||
command: ['wget']
|
||||
args: ['grafana-agent-test-operated:8080/-/healthy']
|
||||
# Wait for GrafanaAgent CR
|
||||
initContainers:
|
||||
- name: sleep
|
||||
image: "{{ .Values.test.image.registry }}/{{ .Values.test.image.repository }}:{{ .Values.test.image.tag }}"
|
||||
command: ['sleep', '60']
|
||||
restartPolicy: Never
|
||||
@@ -0,0 +1,80 @@
|
||||
# -- Overrides the chart's name
|
||||
nameOverride: ""
|
||||
|
||||
# -- Overrides the chart's computed fullname
|
||||
fullnameOverride: ""
|
||||
|
||||
# -- Annotations for the Deployment
|
||||
annotations: {}
|
||||
|
||||
# -- Annotations for the Deployment Pods
|
||||
podAnnotations: {}
|
||||
|
||||
# -- Annotations for the Deployment Pods
|
||||
podLabels: {}
|
||||
|
||||
# -- Pod security context (runAsUser, etc.)
|
||||
podSecurityContext: {}
|
||||
|
||||
# -- Container security context (allowPrivilegeEscalation, etc.)
|
||||
containerSecurityContext: {}
|
||||
|
||||
rbac:
|
||||
# -- Toggle to create ClusterRole and ClusterRoleBinding
|
||||
create: true
|
||||
# -- Name of a PodSecurityPolicy to use in the ClusterRole. If unset, no PodSecurityPolicy is used.
|
||||
podSecurityPolicyName: ''
|
||||
|
||||
serviceAccount:
|
||||
# -- Toggle to create ServiceAccount
|
||||
create: true
|
||||
# -- Service account name
|
||||
name:
|
||||
|
||||
image:
|
||||
# -- Image registry
|
||||
registry: docker.io
|
||||
# -- Image repo
|
||||
repository: grafana/agent-operator
|
||||
# -- Image tag
|
||||
tag: v0.41.1
|
||||
# -- Image pull policy
|
||||
pullPolicy: IfNotPresent
|
||||
# -- Image pull secrets
|
||||
pullSecrets: []
|
||||
|
||||
test:
|
||||
image:
|
||||
# -- Test image registry
|
||||
registry: docker.io
|
||||
# -- Test image repo
|
||||
repository: library/busybox
|
||||
# -- Test image tag
|
||||
tag: latest
|
||||
|
||||
# -- hostAliases to add
|
||||
hostAliases: []
|
||||
# - ip: 1.2.3.4
|
||||
# hostnames:
|
||||
# - domain.tld
|
||||
|
||||
# -- If both are set, Agent Operator will create and maintain a service for scraping kubelets
|
||||
# https://grafana.com/docs/agent/latest/operator/getting-started/#monitor-kubelets
|
||||
kubeletService:
|
||||
namespace: default
|
||||
serviceName: kubelet
|
||||
|
||||
# -- List of additional cli arguments to configure agent-operator (example: `--log.level`)
|
||||
extraArgs: []
|
||||
|
||||
# -- Resource limits and requests config
|
||||
resources: {}
|
||||
|
||||
# -- nodeSelector configuration
|
||||
nodeSelector: {}
|
||||
|
||||
# -- Tolerations applied to Pods
|
||||
tolerations: []
|
||||
|
||||
# -- Pod affinity configuration
|
||||
affinity: {}
|
||||
@@ -0,0 +1,23 @@
|
||||
# Patterns to ignore when building packages.
|
||||
# This supports shell glob matching, relative path matching, and
|
||||
# negation (prefixed with !). Only one pattern per line.
|
||||
.DS_Store
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
||||
# OWNERS file for Kubernetes
|
||||
OWNERS
|
||||
@@ -0,0 +1,18 @@
|
||||
apiVersion: v1
|
||||
appVersion: RELEASE.2022-08-13T21-54-44Z
|
||||
description: Multi-Cloud Object Storage
|
||||
home: https://min.io
|
||||
icon: https://min.io/resources/img/logo/MINIO_wordmark.png
|
||||
keywords:
|
||||
- minio
|
||||
- storage
|
||||
- object-storage
|
||||
- s3
|
||||
- cluster
|
||||
maintainers:
|
||||
- email: dev@minio.io
|
||||
name: MinIO, Inc
|
||||
name: minio
|
||||
sources:
|
||||
- https://github.com/minio/minio
|
||||
version: 4.0.12
|
||||
@@ -0,0 +1,236 @@
|
||||
# MinIO Helm Chart
|
||||
|
||||
[](https://slack.min.io) [](https://github.com/minio/minio/blob/master/LICENSE)
|
||||
|
||||
MinIO is a High Performance Object Storage released under GNU Affero General Public License v3.0. It is API compatible with Amazon S3 cloud storage service. Use MinIO to build high performance infrastructure for machine learning, analytics and application data workloads.
|
||||
|
||||
For more detailed documentation please visit [here](https://docs.minio.io/)
|
||||
|
||||
## Introduction
|
||||
|
||||
This chart bootstraps MinIO Cluster on [Kubernetes](http://kubernetes.io) using the [Helm](https://helm.sh) package manager.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Helm cli with Kubernetes cluster configured.
|
||||
- PV provisioner support in the underlying infrastructure. (We recommend using <https://github.com/minio/direct-csi>)
|
||||
- Use Kubernetes version v1.19 and later for best experience.
|
||||
|
||||
## Configure MinIO Helm repo
|
||||
|
||||
```bash
|
||||
helm repo add minio https://charts.min.io/
|
||||
```
|
||||
|
||||
### Installing the Chart
|
||||
|
||||
Install this chart using:
|
||||
|
||||
```bash
|
||||
helm install --namespace minio --set rootUser=rootuser,rootPassword=rootpass123 --generate-name minio/minio
|
||||
```
|
||||
|
||||
The command deploys MinIO on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation.
|
||||
|
||||
### Upgrading the Chart
|
||||
|
||||
You can use Helm to update MinIO version in a live release. Assuming your release is named as `my-release`, get the values using the command:
|
||||
|
||||
```bash
|
||||
helm get values my-release > old_values.yaml
|
||||
```
|
||||
|
||||
Then change the field `image.tag` in `old_values.yaml` file with MinIO image tag you want to use. Now update the chart using
|
||||
|
||||
```bash
|
||||
helm upgrade -f old_values.yaml my-release minio/minio
|
||||
```
|
||||
|
||||
Default upgrade strategies are specified in the `values.yaml` file. Update these fields if you'd like to use a different strategy.
|
||||
|
||||
### Configuration
|
||||
|
||||
Refer the [Values file](./values.yaml) for all the possible config fields.
|
||||
|
||||
You can specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
|
||||
|
||||
```bash
|
||||
helm install --name my-release --set persistence.size=1Ti minio/minio
|
||||
```
|
||||
|
||||
The above command deploys MinIO server with a 1Ti backing persistent volume.
|
||||
|
||||
Alternately, you can provide a YAML file that specifies parameter values while installing the chart. For example,
|
||||
|
||||
```bash
|
||||
helm install --name my-release -f values.yaml minio/minio
|
||||
```
|
||||
|
||||
### Persistence
|
||||
|
||||
This chart provisions a PersistentVolumeClaim and mounts corresponding persistent volume to default location `/export`. You'll need physical storage available in the Kubernetes cluster for this to work. If you'd rather use `emptyDir`, disable PersistentVolumeClaim by:
|
||||
|
||||
```bash
|
||||
helm install --set persistence.enabled=false minio/minio
|
||||
```
|
||||
|
||||
> *"An emptyDir volume is first created when a Pod is assigned to a Node, and exists as long as that Pod is running on that node. When a Pod is removed from a node for any reason, the data in the emptyDir is deleted forever."*
|
||||
|
||||
### Existing PersistentVolumeClaim
|
||||
|
||||
If a Persistent Volume Claim already exists, specify it during installation.
|
||||
|
||||
1. Create the PersistentVolume
|
||||
2. Create the PersistentVolumeClaim
|
||||
3. Install the chart
|
||||
|
||||
```bash
|
||||
helm install --set persistence.existingClaim=PVC_NAME minio/minio
|
||||
```
|
||||
|
||||
### NetworkPolicy
|
||||
|
||||
To enable network policy for MinIO,
|
||||
install [a networking plugin that implements the Kubernetes
|
||||
NetworkPolicy spec](https://kubernetes.io/docs/tasks/administer-cluster/declare-network-policy#before-you-begin),
|
||||
and set `networkPolicy.enabled` to `true`.
|
||||
|
||||
For Kubernetes v1.5 & v1.6, you must also turn on NetworkPolicy by setting
|
||||
the DefaultDeny namespace annotation. Note: this will enforce policy for *all* pods in the namespace:
|
||||
|
||||
```
|
||||
kubectl annotate namespace default "net.beta.kubernetes.io/network-policy={\"ingress\":{\"isolation\":\"DefaultDeny\"}}"
|
||||
```
|
||||
|
||||
With NetworkPolicy enabled, traffic will be limited to just port 9000.
|
||||
|
||||
For more precise policy, set `networkPolicy.allowExternal=true`. This will
|
||||
only allow pods with the generated client label to connect to MinIO.
|
||||
This label will be displayed in the output of a successful install.
|
||||
|
||||
### Existing secret
|
||||
|
||||
Instead of having this chart create the secret for you, you can supply a preexisting secret, much
|
||||
like an existing PersistentVolumeClaim.
|
||||
|
||||
First, create the secret:
|
||||
|
||||
```bash
|
||||
kubectl create secret generic my-minio-secret --from-literal=rootUser=foobarbaz --from-literal=rootPassword=foobarbazqux
|
||||
```
|
||||
|
||||
Then install the chart, specifying that you want to use an existing secret:
|
||||
|
||||
```bash
|
||||
helm install --set existingSecret=my-minio-secret minio/minio
|
||||
```
|
||||
|
||||
The following fields are expected in the secret:
|
||||
|
||||
| .data.\<key\> in Secret | Corresponding variable | Description | Required |
|
||||
|:------------------------|:-----------------------|:---------------|:---------|
|
||||
| `rootUser` | `rootUser` | Root user. | yes |
|
||||
| `rootPassword` | `rootPassword` | Root password. | yes |
|
||||
|
||||
All corresponding variables will be ignored in values file.
|
||||
|
||||
### Configure TLS
|
||||
|
||||
To enable TLS for MinIO containers, acquire TLS certificates from a CA or create self-signed certificates. While creating / acquiring certificates ensure the corresponding domain names are set as per the standard [DNS naming conventions](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-identity) in a Kubernetes StatefulSet (for a distributed MinIO setup). Then create a secret using
|
||||
|
||||
```bash
|
||||
kubectl create secret generic tls-ssl-minio --from-file=path/to/private.key --from-file=path/to/public.crt
|
||||
```
|
||||
|
||||
Then install the chart, specifying that you want to use the TLS secret:
|
||||
|
||||
```bash
|
||||
helm install --set tls.enabled=true,tls.certSecret=tls-ssl-minio minio/minio
|
||||
```
|
||||
|
||||
### Installing certificates from third party CAs
|
||||
|
||||
MinIO can connect to other servers, including MinIO nodes or other server types such as NATs and Redis. If these servers use certificates that were not registered with a known CA, add trust for these certificates to MinIO Server by bundling these certificates into a Kubernetes secret and providing it to Helm via the `trustedCertsSecret` value. If `.Values.tls.enabled` is `true` and you're installing certificates for third party CAs, remember to include MinIO's own certificate with key `public.crt`, if it also needs to be trusted.
|
||||
|
||||
For instance, given that TLS is enabled and you need to add trust for MinIO's own CA and for the CA of a Keycloak server, a Kubernetes secret can be created from the certificate files using `kubectl`:
|
||||
|
||||
```
|
||||
kubectl -n minio create secret generic minio-trusted-certs --from-file=public.crt --from-file=keycloak.crt
|
||||
```
|
||||
|
||||
If TLS is not enabled, you would need only the third party CA:
|
||||
|
||||
```
|
||||
kubectl -n minio create secret generic minio-trusted-certs --from-file=keycloak.crt
|
||||
```
|
||||
|
||||
The name of the generated secret can then be passed to Helm using a values file or the `--set` parameter:
|
||||
|
||||
```
|
||||
trustedCertsSecret: "minio-trusted-certs"
|
||||
|
||||
or
|
||||
|
||||
--set trustedCertsSecret=minio-trusted-certs
|
||||
```
|
||||
|
||||
### Create buckets after install
|
||||
|
||||
Install the chart, specifying the buckets you want to create after install:
|
||||
|
||||
```bash
|
||||
helm install --set buckets[0].name=bucket1,buckets[0].policy=none,buckets[0].purge=false minio/minio
|
||||
```
|
||||
|
||||
Description of the configuration parameters used above -
|
||||
|
||||
- `buckets[].name` - name of the bucket to create, must be a string with length > 0
|
||||
- `buckets[].policy` - can be one of none|download|upload|public
|
||||
- `buckets[].purge` - purge if bucket exists already
|
||||
|
||||
### Create policies after install
|
||||
|
||||
Install the chart, specifying the policies you want to create after install:
|
||||
|
||||
```bash
|
||||
helm install --set policies[0].name=mypolicy,policies[0].statements[0].resources[0]='arn:aws:s3:::bucket1',policies[0].statements[0].actions[0]='s3:ListBucket',policies[0].statements[0].actions[1]='s3:GetObject' minio/minio
|
||||
```
|
||||
|
||||
Description of the configuration parameters used above -
|
||||
|
||||
- `policies[].name` - name of the policy to create, must be a string with length > 0
|
||||
- `policies[].statements[]` - list of statements, includes actions and resources
|
||||
- `policies[].statements[].resources[]` - list of resources that applies the statement
|
||||
- `policies[].statements[].actions[]` - list of actions granted
|
||||
|
||||
### Create user after install
|
||||
|
||||
Install the chart, specifying the users you want to create after install:
|
||||
|
||||
```bash
|
||||
helm install --set users[0].accessKey=accessKey,users[0].secretKey=secretKey,users[0].policy=none,users[1].accessKey=accessKey2,users[1].secretRef=existingSecret,users[1].secretKey=password,users[1].policy=none minio/minio
|
||||
```
|
||||
|
||||
Description of the configuration parameters used above -
|
||||
|
||||
- `users[].accessKey` - accessKey of user
|
||||
- `users[].secretKey` - secretKey of usersecretRef
|
||||
- `users[].existingSecret` - secret name that contains the secretKey of user
|
||||
- `users[].existingSecretKey` - data key in existingSecret secret containing the secretKey
|
||||
- `users[].policy` - name of the policy to assign to user
|
||||
|
||||
## Uninstalling the Chart
|
||||
|
||||
Assuming your release is named as `my-release`, delete it using the command:
|
||||
|
||||
```bash
|
||||
helm delete my-release
|
||||
```
|
||||
|
||||
or
|
||||
|
||||
```bash
|
||||
helm uninstall my-release
|
||||
```
|
||||
|
||||
The command removes all the Kubernetes components associated with the chart and deletes the release.
|
||||
@@ -0,0 +1,43 @@
|
||||
{{- if eq .Values.service.type "ClusterIP" "NodePort" }}
|
||||
MinIO can be accessed via port {{ .Values.service.port }} on the following DNS name from within your cluster:
|
||||
{{ template "minio.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local
|
||||
|
||||
To access MinIO from localhost, run the below commands:
|
||||
|
||||
1. export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||
|
||||
2. kubectl port-forward $POD_NAME 9000 --namespace {{ .Release.Namespace }}
|
||||
|
||||
Read more about port forwarding here: http://kubernetes.io/docs/user-guide/kubectl/kubectl_port-forward/
|
||||
|
||||
You can now access MinIO server on http://localhost:9000. Follow the below steps to connect to MinIO server with mc client:
|
||||
|
||||
1. Download the MinIO mc client - https://docs.minio.io/docs/minio-client-quickstart-guide
|
||||
|
||||
2. export MC_HOST_{{ template "minio.fullname" . }}-local=http://$(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "minio.secretName" . }} -o jsonpath="{.data.rootUser}" | base64 --decode):$(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "minio.secretName" . }} -o jsonpath="{.data.rootPassword}" | base64 --decode)@localhost:{{ .Values.service.port }}
|
||||
|
||||
3. mc ls {{ template "minio.fullname" . }}-local
|
||||
|
||||
{{- end }}
|
||||
{{- if eq .Values.service.type "LoadBalancer" }}
|
||||
MinIO can be accessed via port {{ .Values.service.port }} on an external IP address. Get the service external IP address by:
|
||||
kubectl get svc --namespace {{ .Release.Namespace }} -l app={{ template "minio.fullname" . }}
|
||||
|
||||
Note that the public IP may take a couple of minutes to be available.
|
||||
|
||||
You can now access MinIO server on http://<External-IP>:9000. Follow the below steps to connect to MinIO server with mc client:
|
||||
|
||||
1. Download the MinIO mc client - https://docs.minio.io/docs/minio-client-quickstart-guide
|
||||
|
||||
2. export MC_HOST_{{ template "minio.fullname" . }}-local=http://$(kubectl get secret {{ template "minio.secretName" . }} --namespace {{ .Release.Namespace }} -o jsonpath="{.data.rootUser}" | base64 --decode):$(kubectl get secret {{ template "minio.secretName" . }} -o jsonpath="{.data.rootPassword}" | base64 --decode)@<External-IP>:{{ .Values.service.port }}
|
||||
|
||||
3. mc ls {{ template "minio.fullname" . }}
|
||||
|
||||
Alternately, you can use your browser or the MinIO SDK to access the server - https://docs.minio.io/categories/17
|
||||
{{- end }}
|
||||
|
||||
{{ if and (.Values.networkPolicy.enabled) (not .Values.networkPolicy.allowExternal) }}
|
||||
Note: Since NetworkPolicy is enabled, only pods with label
|
||||
{{ template "minio.fullname" . }}-client=true"
|
||||
will be able to connect to this minio cluster.
|
||||
{{- end }}
|
||||
@@ -0,0 +1,123 @@
|
||||
#!/bin/sh
|
||||
set -e ; # Have script exit in the event of a failed command.
|
||||
|
||||
{{- if .Values.configPathmc }}
|
||||
MC_CONFIG_DIR="{{ .Values.configPathmc }}"
|
||||
MC="/usr/bin/mc --insecure --config-dir ${MC_CONFIG_DIR}"
|
||||
{{- else }}
|
||||
MC="/usr/bin/mc --insecure"
|
||||
{{- end }}
|
||||
|
||||
# connectToMinio
|
||||
# Use a check-sleep-check loop to wait for MinIO service to be available
|
||||
connectToMinio() {
|
||||
SCHEME=$1
|
||||
ATTEMPTS=0 ; LIMIT=29 ; # Allow 30 attempts
|
||||
set -e ; # fail if we can't read the keys.
|
||||
ACCESS=$(cat /config/rootUser) ; SECRET=$(cat /config/rootPassword) ;
|
||||
set +e ; # The connections to minio are allowed to fail.
|
||||
echo "Connecting to MinIO server: $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT" ;
|
||||
MC_COMMAND="${MC} alias set myminio $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT $ACCESS $SECRET" ;
|
||||
$MC_COMMAND ;
|
||||
STATUS=$? ;
|
||||
until [ $STATUS = 0 ]
|
||||
do
|
||||
ATTEMPTS=`expr $ATTEMPTS + 1` ;
|
||||
echo \"Failed attempts: $ATTEMPTS\" ;
|
||||
if [ $ATTEMPTS -gt $LIMIT ]; then
|
||||
exit 1 ;
|
||||
fi ;
|
||||
sleep 2 ; # 1 second intervals between attempts
|
||||
$MC_COMMAND ;
|
||||
STATUS=$? ;
|
||||
done ;
|
||||
set -e ; # reset `e` as active
|
||||
return 0
|
||||
}
|
||||
|
||||
# checkBucketExists ($bucket)
|
||||
# Check if the bucket exists, by using the exit code of `mc ls`
|
||||
checkBucketExists() {
|
||||
BUCKET=$1
|
||||
CMD=$(${MC} ls myminio/$BUCKET > /dev/null 2>&1)
|
||||
return $?
|
||||
}
|
||||
|
||||
# createBucket ($bucket, $policy, $purge)
|
||||
# Ensure bucket exists, purging if asked to
|
||||
createBucket() {
|
||||
BUCKET=$1
|
||||
POLICY=$2
|
||||
PURGE=$3
|
||||
VERSIONING=$4
|
||||
OBJECTLOCKING=$5
|
||||
|
||||
# Purge the bucket, if set & exists
|
||||
# Since PURGE is user input, check explicitly for `true`
|
||||
if [ $PURGE = true ]; then
|
||||
if checkBucketExists $BUCKET ; then
|
||||
echo "Purging bucket '$BUCKET'."
|
||||
set +e ; # don't exit if this fails
|
||||
${MC} rm -r --force myminio/$BUCKET
|
||||
set -e ; # reset `e` as active
|
||||
else
|
||||
echo "Bucket '$BUCKET' does not exist, skipping purge."
|
||||
fi
|
||||
fi
|
||||
|
||||
# Create the bucket if it does not exist and set objectlocking if enabled (NOTE: versioning will be not changed if OBJECTLOCKING is set because it enables versioning to the Buckets created)
|
||||
if ! checkBucketExists $BUCKET ; then
|
||||
if [ ! -z $OBJECTLOCKING ] ; then
|
||||
if [ $OBJECTLOCKING = true ] ; then
|
||||
echo "Creating bucket with OBJECTLOCKING '$BUCKET'"
|
||||
${MC} mb --with-lock myminio/$BUCKET
|
||||
elif [ $OBJECTLOCKING = false ] ; then
|
||||
echo "Creating bucket '$BUCKET'"
|
||||
${MC} mb myminio/$BUCKET
|
||||
fi
|
||||
elif [ -z $OBJECTLOCKING ] ; then
|
||||
echo "Creating bucket '$BUCKET'"
|
||||
${MC} mb myminio/$BUCKET
|
||||
else
|
||||
echo "Bucket '$BUCKET' already exists."
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
# set versioning for bucket if objectlocking is disabled or not set
|
||||
if [ -z $OBJECTLOCKING ] ; then
|
||||
if [ ! -z $VERSIONING ] ; then
|
||||
if [ $VERSIONING = true ] ; then
|
||||
echo "Enabling versioning for '$BUCKET'"
|
||||
${MC} version enable myminio/$BUCKET
|
||||
elif [ $VERSIONING = false ] ; then
|
||||
echo "Suspending versioning for '$BUCKET'"
|
||||
${MC} version suspend myminio/$BUCKET
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo "Bucket '$BUCKET' versioning unchanged."
|
||||
fi
|
||||
|
||||
|
||||
# At this point, the bucket should exist, skip checking for existence
|
||||
# Set policy on the bucket
|
||||
echo "Setting policy of bucket '$BUCKET' to '$POLICY'."
|
||||
${MC} policy set $POLICY myminio/$BUCKET
|
||||
}
|
||||
|
||||
# Try connecting to MinIO instance
|
||||
{{- if .Values.tls.enabled }}
|
||||
scheme=https
|
||||
{{- else }}
|
||||
scheme=http
|
||||
{{- end }}
|
||||
connectToMinio $scheme
|
||||
|
||||
{{ if .Values.buckets }}
|
||||
{{ $global := . }}
|
||||
# Create the buckets
|
||||
{{- range .Values.buckets }}
|
||||
createBucket {{ tpl .name $global }} {{ .policy }} {{ .purge }} {{ .versioning }} {{ .objectlocking }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,75 @@
|
||||
#!/bin/sh
|
||||
set -e ; # Have script exit in the event of a failed command.
|
||||
|
||||
{{- if .Values.configPathmc }}
|
||||
MC_CONFIG_DIR="{{ .Values.configPathmc }}"
|
||||
MC="/usr/bin/mc --insecure --config-dir ${MC_CONFIG_DIR}"
|
||||
{{- else }}
|
||||
MC="/usr/bin/mc --insecure"
|
||||
{{- end }}
|
||||
|
||||
# connectToMinio
|
||||
# Use a check-sleep-check loop to wait for MinIO service to be available
|
||||
connectToMinio() {
|
||||
SCHEME=$1
|
||||
ATTEMPTS=0 ; LIMIT=29 ; # Allow 30 attempts
|
||||
set -e ; # fail if we can't read the keys.
|
||||
ACCESS=$(cat /config/rootUser) ; SECRET=$(cat /config/rootPassword) ;
|
||||
set +e ; # The connections to minio are allowed to fail.
|
||||
echo "Connecting to MinIO server: $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT" ;
|
||||
MC_COMMAND="${MC} alias set myminio $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT $ACCESS $SECRET" ;
|
||||
$MC_COMMAND ;
|
||||
STATUS=$? ;
|
||||
until [ $STATUS = 0 ]
|
||||
do
|
||||
ATTEMPTS=`expr $ATTEMPTS + 1` ;
|
||||
echo \"Failed attempts: $ATTEMPTS\" ;
|
||||
if [ $ATTEMPTS -gt $LIMIT ]; then
|
||||
exit 1 ;
|
||||
fi ;
|
||||
sleep 2 ; # 1 second intervals between attempts
|
||||
$MC_COMMAND ;
|
||||
STATUS=$? ;
|
||||
done ;
|
||||
set -e ; # reset `e` as active
|
||||
return 0
|
||||
}
|
||||
|
||||
# checkPolicyExists ($policy)
|
||||
# Check if the policy exists, by using the exit code of `mc admin policy info`
|
||||
checkPolicyExists() {
|
||||
POLICY=$1
|
||||
CMD=$(${MC} admin policy info myminio $POLICY > /dev/null 2>&1)
|
||||
return $?
|
||||
}
|
||||
|
||||
# createPolicy($name, $filename)
|
||||
createPolicy () {
|
||||
NAME=$1
|
||||
FILENAME=$2
|
||||
|
||||
# Create the name if it does not exist
|
||||
echo "Checking policy: $NAME (in /config/$FILENAME.json)"
|
||||
if ! checkPolicyExists $NAME ; then
|
||||
echo "Creating policy '$NAME'"
|
||||
else
|
||||
echo "Policy '$NAME' already exists."
|
||||
fi
|
||||
${MC} admin policy add myminio $NAME /config/$FILENAME.json
|
||||
|
||||
}
|
||||
|
||||
# Try connecting to MinIO instance
|
||||
{{- if .Values.tls.enabled }}
|
||||
scheme=https
|
||||
{{- else }}
|
||||
scheme=http
|
||||
{{- end }}
|
||||
connectToMinio $scheme
|
||||
|
||||
{{ if .Values.policies }}
|
||||
# Create the policies
|
||||
{{- range $idx, $policy := .Values.policies }}
|
||||
createPolicy {{ $policy.name }} policy_{{ $idx }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,105 @@
|
||||
#!/bin/sh
|
||||
set -e ; # Have script exit in the event of a failed command.
|
||||
|
||||
{{- if .Values.configPathmc }}
|
||||
MC_CONFIG_DIR="{{ .Values.configPathmc }}"
|
||||
MC="/usr/bin/mc --insecure --config-dir ${MC_CONFIG_DIR}"
|
||||
{{- else }}
|
||||
MC="/usr/bin/mc --insecure"
|
||||
{{- end }}
|
||||
|
||||
# AccessKey and secretkey credentials file are added to prevent shell execution errors caused by special characters.
|
||||
# Special characters for example : ',",<,>,{,}
|
||||
MINIO_ACCESSKEY_SECRETKEY_TMP="/tmp/accessKey_and_secretKey_tmp"
|
||||
|
||||
# connectToMinio
|
||||
# Use a check-sleep-check loop to wait for MinIO service to be available
|
||||
connectToMinio() {
|
||||
SCHEME=$1
|
||||
ATTEMPTS=0 ; LIMIT=29 ; # Allow 30 attempts
|
||||
set -e ; # fail if we can't read the keys.
|
||||
ACCESS=$(cat /config/rootUser) ; SECRET=$(cat /config/rootPassword) ;
|
||||
set +e ; # The connections to minio are allowed to fail.
|
||||
echo "Connecting to MinIO server: $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT" ;
|
||||
MC_COMMAND="${MC} alias set myminio $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT $ACCESS $SECRET" ;
|
||||
$MC_COMMAND ;
|
||||
STATUS=$? ;
|
||||
until [ $STATUS = 0 ]
|
||||
do
|
||||
ATTEMPTS=`expr $ATTEMPTS + 1` ;
|
||||
echo \"Failed attempts: $ATTEMPTS\" ;
|
||||
if [ $ATTEMPTS -gt $LIMIT ]; then
|
||||
exit 1 ;
|
||||
fi ;
|
||||
sleep 2 ; # 1 second intervals between attempts
|
||||
$MC_COMMAND ;
|
||||
STATUS=$? ;
|
||||
done ;
|
||||
set -e ; # reset `e` as active
|
||||
return 0
|
||||
}
|
||||
|
||||
# checkUserExists ()
|
||||
# Check if the user exists, by using the exit code of `mc admin user info`
|
||||
checkUserExists() {
|
||||
CMD=$(${MC} admin user info myminio $(head -1 $MINIO_ACCESSKEY_SECRETKEY_TMP) > /dev/null 2>&1)
|
||||
return $?
|
||||
}
|
||||
|
||||
# createUser ($policy)
|
||||
createUser() {
|
||||
POLICY=$1
|
||||
#check accessKey_and_secretKey_tmp file
|
||||
if [[ ! -f $MINIO_ACCESSKEY_SECRETKEY_TMP ]];then
|
||||
echo "credentials file does not exist"
|
||||
return 1
|
||||
fi
|
||||
if [[ $(cat $MINIO_ACCESSKEY_SECRETKEY_TMP|wc -l) -ne 2 ]];then
|
||||
echo "credentials file is invalid"
|
||||
rm -f $MINIO_ACCESSKEY_SECRETKEY_TMP
|
||||
return 1
|
||||
fi
|
||||
USER=$(head -1 $MINIO_ACCESSKEY_SECRETKEY_TMP)
|
||||
# Create the user if it does not exist
|
||||
if ! checkUserExists ; then
|
||||
echo "Creating user '$USER'"
|
||||
cat $MINIO_ACCESSKEY_SECRETKEY_TMP | ${MC} admin user add myminio
|
||||
else
|
||||
echo "User '$USER' already exists."
|
||||
fi
|
||||
#clean up credentials files.
|
||||
rm -f $MINIO_ACCESSKEY_SECRETKEY_TMP
|
||||
|
||||
# set policy for user
|
||||
if [ ! -z $POLICY -a $POLICY != " " ] ; then
|
||||
echo "Adding policy '$POLICY' for '$USER'"
|
||||
${MC} admin policy set myminio $POLICY user=$USER
|
||||
else
|
||||
echo "User '$USER' has no policy attached."
|
||||
fi
|
||||
}
|
||||
|
||||
# Try connecting to MinIO instance
|
||||
{{- if .Values.tls.enabled }}
|
||||
scheme=https
|
||||
{{- else }}
|
||||
scheme=http
|
||||
{{- end }}
|
||||
connectToMinio $scheme
|
||||
|
||||
{{ if .Values.users }}
|
||||
{{ $global := . }}
|
||||
# Create the users
|
||||
{{- range .Values.users }}
|
||||
echo {{ tpl .accessKey $global }} > $MINIO_ACCESSKEY_SECRETKEY_TMP
|
||||
{{- if .existingSecret }}
|
||||
cat /config/secrets/{{ tpl .existingSecretKey $global }} >> $MINIO_ACCESSKEY_SECRETKEY_TMP
|
||||
# Add a new line if it doesn't exist
|
||||
sed -i '$a\' $MINIO_ACCESSKEY_SECRETKEY_TMP
|
||||
createUser {{ .policy }}
|
||||
{{ else }}
|
||||
echo {{ .secretKey }} >> $MINIO_ACCESSKEY_SECRETKEY_TMP
|
||||
createUser {{ .policy }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,58 @@
|
||||
#!/bin/sh
|
||||
set -e ; # Have script exit in the event of a failed command.
|
||||
|
||||
{{- if .Values.configPathmc }}
|
||||
MC_CONFIG_DIR="{{ .Values.configPathmc }}"
|
||||
MC="/usr/bin/mc --insecure --config-dir ${MC_CONFIG_DIR}"
|
||||
{{- else }}
|
||||
MC="/usr/bin/mc --insecure"
|
||||
{{- end }}
|
||||
|
||||
# connectToMinio
|
||||
# Use a check-sleep-check loop to wait for MinIO service to be available
|
||||
connectToMinio() {
|
||||
SCHEME=$1
|
||||
ATTEMPTS=0 ; LIMIT=29 ; # Allow 30 attempts
|
||||
set -e ; # fail if we can't read the keys.
|
||||
ACCESS=$(cat /config/rootUser) ; SECRET=$(cat /config/rootPassword) ;
|
||||
set +e ; # The connections to minio are allowed to fail.
|
||||
echo "Connecting to MinIO server: $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT" ;
|
||||
MC_COMMAND="${MC} alias set myminio $SCHEME://$MINIO_ENDPOINT:$MINIO_PORT $ACCESS $SECRET" ;
|
||||
$MC_COMMAND ;
|
||||
STATUS=$? ;
|
||||
until [ $STATUS = 0 ]
|
||||
do
|
||||
ATTEMPTS=`expr $ATTEMPTS + 1` ;
|
||||
echo \"Failed attempts: $ATTEMPTS\" ;
|
||||
if [ $ATTEMPTS -gt $LIMIT ]; then
|
||||
exit 1 ;
|
||||
fi ;
|
||||
sleep 2 ; # 1 second intervals between attempts
|
||||
$MC_COMMAND ;
|
||||
STATUS=$? ;
|
||||
done ;
|
||||
set -e ; # reset `e` as active
|
||||
return 0
|
||||
}
|
||||
|
||||
# runCommand ($@)
|
||||
# Run custom mc command
|
||||
runCommand() {
|
||||
${MC} "$@"
|
||||
return $?
|
||||
}
|
||||
|
||||
# Try connecting to MinIO instance
|
||||
{{- if .Values.tls.enabled }}
|
||||
scheme=https
|
||||
{{- else }}
|
||||
scheme=http
|
||||
{{- end }}
|
||||
connectToMinio $scheme
|
||||
|
||||
{{ if .Values.customCommands }}
|
||||
# Run custom commands
|
||||
{{- range .Values.customCommands }}
|
||||
runCommand {{ .command }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,18 @@
|
||||
{{- $statements_length := len .statements -}}
|
||||
{{- $statements_length := sub $statements_length 1 -}}
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
"Statement": [
|
||||
{{- range $i, $statement := .statements }}
|
||||
{
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"{{ $statement.actions | join "\",\n\"" }}"
|
||||
]{{ if $statement.resources }},
|
||||
"Resource": [
|
||||
"{{ $statement.resources | join "\",\n\"" }}"
|
||||
]{{ end }}
|
||||
}{{ if lt $i $statements_length }},{{end }}
|
||||
{{- end }}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,218 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "minio.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "minio.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "minio.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return the appropriate apiVersion for networkpolicy.
|
||||
*/}}
|
||||
{{- define "minio.networkPolicy.apiVersion" -}}
|
||||
{{- if semverCompare ">=1.4-0, <1.7-0" .Capabilities.KubeVersion.Version -}}
|
||||
{{- print "extensions/v1beta1" -}}
|
||||
{{- else if semverCompare ">=1.7-0, <1.16-0" .Capabilities.KubeVersion.Version -}}
|
||||
{{- print "networking.k8s.io/v1beta1" -}}
|
||||
{{- else if semverCompare "^1.16-0" .Capabilities.KubeVersion.Version -}}
|
||||
{{- print "networking.k8s.io/v1" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return the appropriate apiVersion for deployment.
|
||||
*/}}
|
||||
{{- define "minio.deployment.apiVersion" -}}
|
||||
{{- if semverCompare "<1.9-0" .Capabilities.KubeVersion.Version -}}
|
||||
{{- print "apps/v1beta2" -}}
|
||||
{{- else -}}
|
||||
{{- print "apps/v1" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return the appropriate apiVersion for statefulset.
|
||||
*/}}
|
||||
{{- define "minio.statefulset.apiVersion" -}}
|
||||
{{- if semverCompare "<1.16-0" .Capabilities.KubeVersion.Version -}}
|
||||
{{- print "apps/v1beta2" -}}
|
||||
{{- else -}}
|
||||
{{- print "apps/v1" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return the appropriate apiVersion for ingress.
|
||||
*/}}
|
||||
{{- define "minio.ingress.apiVersion" -}}
|
||||
{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
{{- print "extensions/v1beta1" -}}
|
||||
{{- else if semverCompare "<1.19-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
{{- print "networking.k8s.io/v1beta1" -}}
|
||||
{{- else -}}
|
||||
{{- print "networking.k8s.io/v1" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return the appropriate apiVersion for console ingress.
|
||||
*/}}
|
||||
{{- define "minio.consoleIngress.apiVersion" -}}
|
||||
{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
{{- print "extensions/v1beta1" -}}
|
||||
{{- else if semverCompare "<1.19-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
{{- print "networking.k8s.io/v1beta1" -}}
|
||||
{{- else -}}
|
||||
{{- print "networking.k8s.io/v1" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Determine secret name.
|
||||
*/}}
|
||||
{{- define "minio.secretName" -}}
|
||||
{{- if .Values.existingSecret -}}
|
||||
{{- .Values.existingSecret }}
|
||||
{{- else -}}
|
||||
{{- include "minio.fullname" . -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Determine name for scc role and rolebinding
|
||||
*/}}
|
||||
{{- define "minio.sccRoleName" -}}
|
||||
{{- printf "%s-%s" "scc" (include "minio.fullname" .) | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Properly format optional additional arguments to MinIO binary
|
||||
*/}}
|
||||
{{- define "minio.extraArgs" -}}
|
||||
{{- range .Values.extraArgs -}}
|
||||
{{ " " }}{{ . }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return the proper Docker Image Registry Secret Names
|
||||
*/}}
|
||||
{{- define "minio.imagePullSecrets" -}}
|
||||
{{/*
|
||||
Helm 2.11 supports the assignment of a value to a variable defined in a different scope,
|
||||
but Helm 2.9 and 2.10 does not support it, so we need to implement this if-else logic.
|
||||
Also, we can not use a single if because lazy evaluation is not an option
|
||||
*/}}
|
||||
{{- if .Values.global }}
|
||||
{{- if .Values.global.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.global.imagePullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- else if .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{ toYaml .Values.imagePullSecrets }}
|
||||
{{- end -}}
|
||||
{{- else if .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{ toYaml .Values.imagePullSecrets }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Formats volumeMount for MinIO TLS keys and trusted certs
|
||||
*/}}
|
||||
{{- define "minio.tlsKeysVolumeMount" -}}
|
||||
{{- if .Values.tls.enabled }}
|
||||
- name: cert-secret-volume
|
||||
mountPath: {{ .Values.certsPath }}
|
||||
{{- end }}
|
||||
{{- if or .Values.tls.enabled (ne .Values.trustedCertsSecret "") }}
|
||||
{{- $casPath := printf "%s/CAs" .Values.certsPath | clean }}
|
||||
- name: trusted-cert-secret-volume
|
||||
mountPath: {{ $casPath }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Formats volume for MinIO TLS keys and trusted certs
|
||||
*/}}
|
||||
{{- define "minio.tlsKeysVolume" -}}
|
||||
{{- if .Values.tls.enabled }}
|
||||
- name: cert-secret-volume
|
||||
secret:
|
||||
secretName: {{ .Values.tls.certSecret }}
|
||||
items:
|
||||
- key: {{ .Values.tls.publicCrt }}
|
||||
path: public.crt
|
||||
- key: {{ .Values.tls.privateKey }}
|
||||
path: private.key
|
||||
{{- end }}
|
||||
{{- if or .Values.tls.enabled (ne .Values.trustedCertsSecret "") }}
|
||||
{{- $certSecret := eq .Values.trustedCertsSecret "" | ternary .Values.tls.certSecret .Values.trustedCertsSecret }}
|
||||
{{- $publicCrt := eq .Values.trustedCertsSecret "" | ternary .Values.tls.publicCrt "" }}
|
||||
- name: trusted-cert-secret-volume
|
||||
secret:
|
||||
secretName: {{ $certSecret }}
|
||||
{{- if ne $publicCrt "" }}
|
||||
items:
|
||||
- key: {{ $publicCrt }}
|
||||
path: public.crt
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Returns the available value for certain key in an existing secret (if it exists),
|
||||
otherwise it generates a random value.
|
||||
*/}}
|
||||
{{- define "minio.getValueFromSecret" }}
|
||||
{{- $len := (default 16 .Length) | int -}}
|
||||
{{- $obj := (lookup "v1" "Secret" .Namespace .Name).data -}}
|
||||
{{- if $obj }}
|
||||
{{- index $obj .Key | b64dec -}}
|
||||
{{- else -}}
|
||||
{{- randAlphaNum $len -}}
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
|
||||
{{- define "minio.root.username" -}}
|
||||
{{- if .Values.rootUser }}
|
||||
{{- .Values.rootUser | toString }}
|
||||
{{- else }}
|
||||
{{- include "minio.getValueFromSecret" (dict "Namespace" .Release.Namespace "Name" (include "minio.fullname" .) "Length" 20 "Key" "rootUser") }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "minio.root.password" -}}
|
||||
{{- if .Values.rootPassword }}
|
||||
{{- .Values.rootPassword | toString }}
|
||||
{{- else }}
|
||||
{{- include "minio.getValueFromSecret" (dict "Namespace" .Release.Namespace "Name" (include "minio.fullname" .) "Length" 40 "Key" "rootPassword") }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,24 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ template "minio.fullname" . }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}
|
||||
chart: {{ template "minio.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
data:
|
||||
initialize: |-
|
||||
{{ include (print $.Template.BasePath "/_helper_create_bucket.txt") . | indent 4 }}
|
||||
add-user: |-
|
||||
{{ include (print $.Template.BasePath "/_helper_create_user.txt") . | indent 4 }}
|
||||
add-policy: |-
|
||||
{{ include (print $.Template.BasePath "/_helper_create_policy.txt") . | indent 4 }}
|
||||
{{- range $idx, $policy := .Values.policies }}
|
||||
# {{ $policy.name }}
|
||||
policy_{{ $idx }}.json: |-
|
||||
{{ include (print $.Template.BasePath "/_helper_policy.tpl") . | indent 4 }}
|
||||
{{ end }}
|
||||
custom-command: |-
|
||||
{{ include (print $.Template.BasePath "/_helper_custom_command.txt") . | indent 4 }}
|
||||
@@ -0,0 +1,58 @@
|
||||
{{- if .Values.consoleIngress.enabled -}}
|
||||
{{- $fullName := printf "%s-console" (include "minio.fullname" .) -}}
|
||||
{{- $servicePort := .Values.consoleService.port -}}
|
||||
{{- $ingressPath := .Values.consoleIngress.path -}}
|
||||
apiVersion: {{ template "minio.consoleIngress.apiVersion" . }}
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ $fullName }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}
|
||||
chart: {{ template "minio.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
{{- with .Values.consoleIngress.labels }}
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
|
||||
{{- with .Values.consoleIngress.annotations }}
|
||||
annotations:
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if .Values.consoleIngress.ingressClassName }}
|
||||
ingressClassName: {{ .Values.consoleIngress.ingressClassName }}
|
||||
{{- end }}
|
||||
{{- if .Values.consoleIngress.tls }}
|
||||
tls:
|
||||
{{- range .Values.consoleIngress.tls }}
|
||||
- hosts:
|
||||
{{- range .hosts }}
|
||||
- {{ . | quote }}
|
||||
{{- end }}
|
||||
secretName: {{ .secretName }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
rules:
|
||||
{{- range .Values.consoleIngress.hosts }}
|
||||
- http:
|
||||
paths:
|
||||
- path: {{ $ingressPath }}
|
||||
{{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: {{ $fullName }}
|
||||
port:
|
||||
number: {{ $servicePort }}
|
||||
{{- else }}
|
||||
backend:
|
||||
serviceName: {{ $fullName }}
|
||||
servicePort: {{ $servicePort }}
|
||||
{{- end }}
|
||||
{{- if . }}
|
||||
host: {{ . | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,48 @@
|
||||
{{ $scheme := "http" }}
|
||||
{{- if .Values.tls.enabled }}
|
||||
{{ $scheme = "https" }}
|
||||
{{ end }}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ template "minio.fullname" . }}-console
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}
|
||||
chart: {{ template "minio.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
{{- if .Values.consoleService.annotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.consoleService.annotations | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if (or (eq .Values.consoleService.type "ClusterIP" "") (empty .Values.consoleService.type)) }}
|
||||
type: ClusterIP
|
||||
{{- if not (empty .Values.consoleService.clusterIP) }}
|
||||
clusterIP: {{ .Values.consoleService.clusterIP }}
|
||||
{{end}}
|
||||
{{- else if eq .Values.consoleService.type "LoadBalancer" }}
|
||||
type: {{ .Values.consoleService.type }}
|
||||
loadBalancerIP: {{ default "" .Values.consoleService.loadBalancerIP }}
|
||||
{{- else }}
|
||||
type: {{ .Values.consoleService.type }}
|
||||
{{- end }}
|
||||
ports:
|
||||
- name: {{ $scheme }}
|
||||
port: {{ .Values.consoleService.port }}
|
||||
protocol: TCP
|
||||
{{- if (and (eq .Values.consoleService.type "NodePort") ( .Values.consoleService.nodePort)) }}
|
||||
nodePort: {{ .Values.consoleService.nodePort }}
|
||||
{{- else }}
|
||||
targetPort: {{ .Values.minioConsolePort }}
|
||||
{{- end}}
|
||||
{{- if .Values.consoleService.externalIPs }}
|
||||
externalIPs:
|
||||
{{- range $i , $ip := .Values.consoleService.externalIPs }}
|
||||
- {{ $ip }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
selector:
|
||||
app: {{ template "minio.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
@@ -0,0 +1,195 @@
|
||||
{{- if eq .Values.mode "standalone" }}
|
||||
{{ $scheme := "http" }}
|
||||
{{- if .Values.tls.enabled }}
|
||||
{{ $scheme = "https" }}
|
||||
{{ end }}
|
||||
{{ $bucketRoot := or ($.Values.bucketRoot) ($.Values.mountPath) }}
|
||||
apiVersion: {{ template "minio.deployment.apiVersion" . }}
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ template "minio.fullname" . }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}
|
||||
chart: {{ template "minio.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
{{- if .Values.additionalLabels }}
|
||||
{{ toYaml .Values.additionalLabels | trimSuffix "\n" | indent 4 }}
|
||||
{{- end }}
|
||||
{{- if .Values.additionalAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.additionalAnnotations | trimSuffix "\n" | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
strategy:
|
||||
type: {{ .Values.DeploymentUpdate.type }}
|
||||
{{- if eq .Values.DeploymentUpdate.type "RollingUpdate" }}
|
||||
rollingUpdate:
|
||||
maxSurge: {{ .Values.DeploymentUpdate.maxSurge }}
|
||||
maxUnavailable: {{ .Values.DeploymentUpdate.maxUnavailable }}
|
||||
{{- end}}
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ template "minio.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
template:
|
||||
metadata:
|
||||
name: {{ template "minio.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
{{- if .Values.podLabels }}
|
||||
{{ toYaml .Values.podLabels | indent 8 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
{{- if not .Values.ignoreChartChecksums }}
|
||||
checksum/secrets: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }}
|
||||
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
|
||||
{{- end }}
|
||||
{{- if .Values.podAnnotations }}
|
||||
{{ toYaml .Values.podAnnotations | trimSuffix "\n" | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if .Values.priorityClassName }}
|
||||
priorityClassName: "{{ .Values.priorityClassName }}"
|
||||
{{- end }}
|
||||
{{- if .Values.runtimeClassName }}
|
||||
runtimeClassName: "{{ .Values.runtimeClassName }}"
|
||||
{{- end }}
|
||||
{{- if and .Values.securityContext.enabled .Values.persistence.enabled }}
|
||||
securityContext:
|
||||
runAsUser: {{ .Values.securityContext.runAsUser }}
|
||||
runAsGroup: {{ .Values.securityContext.runAsGroup }}
|
||||
fsGroup: {{ .Values.securityContext.fsGroup }}
|
||||
{{- if and (ge .Capabilities.KubeVersion.Major "1") (ge .Capabilities.KubeVersion.Minor "20") }}
|
||||
fsGroupChangePolicy: {{ .Values.securityContext.fsGroupChangePolicy }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{ if .Values.serviceAccount.create }}
|
||||
serviceAccountName: {{ .Values.serviceAccount.name }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
command:
|
||||
- "/bin/sh"
|
||||
- "-ce"
|
||||
- "/usr/bin/docker-entrypoint.sh minio server {{ $bucketRoot }} -S {{ .Values.certsPath }} --address :{{ .Values.minioAPIPort }} --console-address :{{ .Values.minioConsolePort }} {{- template "minio.extraArgs" . }}"
|
||||
volumeMounts:
|
||||
- name: minio-user
|
||||
mountPath: "/tmp/credentials"
|
||||
readOnly: true
|
||||
{{- if .Values.persistence.enabled }}
|
||||
- name: export
|
||||
mountPath: {{ .Values.mountPath }}
|
||||
{{- if .Values.persistence.subPath }}
|
||||
subPath: "{{ .Values.persistence.subPath }}"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.extraSecret }}
|
||||
- name: extra-secret
|
||||
mountPath: "/tmp/minio-config-env"
|
||||
{{- end }}
|
||||
{{- include "minio.tlsKeysVolumeMount" . | indent 12 }}
|
||||
ports:
|
||||
- name: {{ $scheme }}
|
||||
containerPort: {{ .Values.minioAPIPort }}
|
||||
- name: {{ $scheme }}-console
|
||||
containerPort: {{ .Values.minioConsolePort }}
|
||||
env:
|
||||
- name: MINIO_ROOT_USER
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "minio.secretName" . }}
|
||||
key: rootUser
|
||||
- name: MINIO_ROOT_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "minio.secretName" . }}
|
||||
key: rootPassword
|
||||
{{- if .Values.extraSecret }}
|
||||
- name: MINIO_CONFIG_ENV_FILE
|
||||
value: "/tmp/minio-config-env/config.env"
|
||||
{{- end}}
|
||||
{{- if .Values.metrics.serviceMonitor.public }}
|
||||
- name: MINIO_PROMETHEUS_AUTH_TYPE
|
||||
value: "public"
|
||||
{{- end}}
|
||||
{{- if .Values.oidc.enabled }}
|
||||
- name: MINIO_IDENTITY_OPENID_CONFIG_URL
|
||||
value: {{ .Values.oidc.configUrl }}
|
||||
- name: MINIO_IDENTITY_OPENID_CLIENT_ID
|
||||
value: {{ .Values.oidc.clientId }}
|
||||
- name: MINIO_IDENTITY_OPENID_CLIENTs_SECRET
|
||||
value: {{ .Values.oidc.clientSecret }}
|
||||
- name: MINIO_IDENTITY_OPENID_CLAIM_NAME
|
||||
value: {{ .Values.oidc.claimName }}
|
||||
- name: MINIO_IDENTITY_OPENID_CLAIM_PREFIX
|
||||
value: {{ .Values.oidc.claimPrefix }}
|
||||
- name: MINIO_IDENTITY_OPENID_SCOPES
|
||||
value: {{ .Values.oidc.scopes }}
|
||||
- name: MINIO_IDENTITY_OPENID_REDIRECT_URI
|
||||
value: {{ .Values.oidc.redirectUri }}
|
||||
- name: MINIO_IDENTITY_OPENID_COMMENT
|
||||
value: {{ .Values.oidc.comment }}
|
||||
{{- end}}
|
||||
{{- if .Values.etcd.endpoints }}
|
||||
- name: MINIO_ETCD_ENDPOINTS
|
||||
value: {{ join "," .Values.etcd.endpoints | quote }}
|
||||
{{- if .Values.etcd.clientCert }}
|
||||
- name: MINIO_ETCD_CLIENT_CERT
|
||||
value: "/tmp/credentials/etcd_client_cert.pem"
|
||||
{{- end }}
|
||||
{{- if .Values.etcd.clientCertKey }}
|
||||
- name: MINIO_ETCD_CLIENT_CERT_KEY
|
||||
value: "/tmp/credentials/etcd_client_cert_key.pem"
|
||||
{{- end }}
|
||||
{{- if .Values.etcd.pathPrefix }}
|
||||
- name: MINIO_ETCD_PATH_PREFIX
|
||||
value: {{ .Values.etcd.pathPrefix }}
|
||||
{{- end }}
|
||||
{{- if .Values.etcd.corednsPathPrefix }}
|
||||
- name: MINIO_ETCD_COREDNS_PATH
|
||||
value: {{ .Values.etcd.corednsPathPrefix }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- range $key, $val := .Values.environment }}
|
||||
- name: {{ $key }}
|
||||
value: {{ $val | quote }}
|
||||
{{- end}}
|
||||
resources:
|
||||
{{ toYaml .Values.resources | indent 12 }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- include "minio.imagePullSecrets" . | indent 6 }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: export
|
||||
{{- if .Values.persistence.enabled }}
|
||||
persistentVolumeClaim:
|
||||
claimName: {{ .Values.persistence.existingClaim | default (include "minio.fullname" .) }}
|
||||
{{- else }}
|
||||
emptyDir: {}
|
||||
{{- end }}
|
||||
{{- if .Values.extraSecret }}
|
||||
- name: extra-secret
|
||||
secret:
|
||||
secretName: {{ .Values.extraSecret }}
|
||||
{{- end }}
|
||||
- name: minio-user
|
||||
secret:
|
||||
secretName: {{ template "minio.secretName" . }}
|
||||
{{- include "minio.tlsKeysVolume" . | indent 8 }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,173 @@
|
||||
{{- if eq .Values.mode "gateway" }}
|
||||
{{ $scheme := "http" }}
|
||||
{{- if .Values.tls.enabled }}
|
||||
{{ $scheme = "https" }}
|
||||
{{ end }}
|
||||
{{ $bucketRoot := or ($.Values.bucketRoot) ($.Values.mountPath) }}
|
||||
apiVersion: {{ template "minio.deployment.apiVersion" . }}
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ template "minio.fullname" . }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}
|
||||
chart: {{ template "minio.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
{{- if .Values.additionalLabels }}
|
||||
{{ toYaml .Values.additionalLabels | trimSuffix "\n" | indent 4 }}
|
||||
{{- end }}
|
||||
{{- if .Values.additionalAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.additionalAnnotations | trimSuffix "\n" | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
strategy:
|
||||
type: {{ .Values.DeploymentUpdate.type }}
|
||||
{{- if eq .Values.DeploymentUpdate.type "RollingUpdate" }}
|
||||
rollingUpdate:
|
||||
maxSurge: {{ .Values.DeploymentUpdate.maxSurge }}
|
||||
maxUnavailable: {{ .Values.DeploymentUpdate.maxUnavailable }}
|
||||
{{- end}}
|
||||
replicas: {{ .Values.gateway.replicas }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ template "minio.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
template:
|
||||
metadata:
|
||||
name: {{ template "minio.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
{{- if .Values.podLabels }}
|
||||
{{ toYaml .Values.podLabels | indent 8 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
{{- if not .Values.ignoreChartChecksums }}
|
||||
checksum/secrets: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }}
|
||||
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
|
||||
{{- end }}
|
||||
{{- if .Values.podAnnotations }}
|
||||
{{ toYaml .Values.podAnnotations | trimSuffix "\n" | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if .Values.priorityClassName }}
|
||||
priorityClassName: "{{ .Values.priorityClassName }}"
|
||||
{{- end }}
|
||||
{{- if and .Values.securityContext.enabled .Values.persistence.enabled }}
|
||||
securityContext:
|
||||
runAsUser: {{ .Values.securityContext.runAsUser }}
|
||||
runAsGroup: {{ .Values.securityContext.runAsGroup }}
|
||||
fsGroup: {{ .Values.securityContext.fsGroup }}
|
||||
{{- end }}
|
||||
{{ if .Values.serviceAccount.create }}
|
||||
serviceAccountName: {{ .Values.serviceAccount.name }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
command:
|
||||
- "/bin/sh"
|
||||
- "-ce"
|
||||
{{- if eq .Values.gateway.type "nas" }}
|
||||
- "/usr/bin/docker-entrypoint.sh minio gateway nas {{ $bucketRoot }} -S {{ .Values.certsPath }} --address :{{ .Values.minioAPIPort }} --console-address :{{ .Values.minioConsolePort }} {{- template "minio.extraArgs" . }} "
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- name: minio-user
|
||||
mountPath: "/tmp/credentials"
|
||||
readOnly: true
|
||||
{{- if .Values.persistence.enabled }}
|
||||
- name: export
|
||||
mountPath: {{ .Values.mountPath }}
|
||||
{{- if .Values.persistence.subPath }}
|
||||
subPath: "{{ .Values.persistence.subPath }}"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.extraSecret }}
|
||||
- name: extra-secret
|
||||
mountPath: "/tmp/minio-config-env"
|
||||
{{- end }}
|
||||
{{- include "minio.tlsKeysVolumeMount" . | indent 12 }}
|
||||
ports:
|
||||
- name: {{ $scheme }}
|
||||
containerPort: {{ .Values.minioAPIPort }}
|
||||
- name: {{ $scheme }}-console
|
||||
containerPort: {{ .Values.minioConsolePort }}
|
||||
env:
|
||||
- name: MINIO_ROOT_USER
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "minio.secretName" . }}
|
||||
key: rootUser
|
||||
- name: MINIO_ROOT_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "minio.secretName" . }}
|
||||
key: rootPassword
|
||||
{{- if .Values.extraSecret }}
|
||||
- name: MINIO_CONFIG_ENV_FILE
|
||||
value: "/tmp/minio-config-env/config.env"
|
||||
{{- end}}
|
||||
{{- if .Values.metrics.serviceMonitor.public }}
|
||||
- name: MINIO_PROMETHEUS_AUTH_TYPE
|
||||
value: "public"
|
||||
{{- end}}
|
||||
{{- if .Values.etcd.endpoints }}
|
||||
- name: MINIO_ETCD_ENDPOINTS
|
||||
value: {{ join "," .Values.etcd.endpoints | quote }}
|
||||
{{- if .Values.etcd.clientCert }}
|
||||
- name: MINIO_ETCD_CLIENT_CERT
|
||||
value: "/tmp/credentials/etcd_client.crt"
|
||||
{{- end }}
|
||||
{{- if .Values.etcd.clientCertKey }}
|
||||
- name: MINIO_ETCD_CLIENT_CERT_KEY
|
||||
value: "/tmp/credentials/etcd_client.key"
|
||||
{{- end }}
|
||||
{{- if .Values.etcd.pathPrefix }}
|
||||
- name: MINIO_ETCD_PATH_PREFIX
|
||||
value: {{ .Values.etcd.pathPrefix }}
|
||||
{{- end }}
|
||||
{{- if .Values.etcd.corednsPathPrefix }}
|
||||
- name: MINIO_ETCD_COREDNS_PATH
|
||||
value: {{ .Values.etcd.corednsPathPrefix }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- range $key, $val := .Values.environment }}
|
||||
- name: {{ $key }}
|
||||
value: {{ $val | quote }}
|
||||
{{- end}}
|
||||
resources:
|
||||
{{ toYaml .Values.resources | indent 12 }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- include "minio.imagePullSecrets" . | indent 6 }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: export
|
||||
{{- if .Values.persistence.enabled }}
|
||||
persistentVolumeClaim:
|
||||
claimName: {{ .Values.persistence.existingClaim | default (include "minio.fullname" .) }}
|
||||
{{- else }}
|
||||
emptyDir: {}
|
||||
{{- end }}
|
||||
- name: minio-user
|
||||
secret:
|
||||
secretName: {{ template "minio.secretName" . }}
|
||||
{{- if .Values.extraSecret }}
|
||||
- name: extra-secret
|
||||
secret:
|
||||
secretName: {{ .Values.extraSecret }}
|
||||
{{- end }}
|
||||
{{- include "minio.tlsKeysVolume" . | indent 8 }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,58 @@
|
||||
{{- if .Values.ingress.enabled -}}
|
||||
{{- $fullName := include "minio.fullname" . -}}
|
||||
{{- $servicePort := .Values.service.port -}}
|
||||
{{- $ingressPath := .Values.ingress.path -}}
|
||||
apiVersion: {{ template "minio.ingress.apiVersion" . }}
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ $fullName }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}
|
||||
chart: {{ template "minio.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
{{- with .Values.ingress.labels }}
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
|
||||
{{- with .Values.ingress.annotations }}
|
||||
annotations:
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if .Values.ingress.ingressClassName }}
|
||||
ingressClassName: {{ .Values.ingress.ingressClassName }}
|
||||
{{- end }}
|
||||
{{- if .Values.ingress.tls }}
|
||||
tls:
|
||||
{{- range .Values.ingress.tls }}
|
||||
- hosts:
|
||||
{{- range .hosts }}
|
||||
- {{ . | quote }}
|
||||
{{- end }}
|
||||
secretName: {{ .secretName }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
rules:
|
||||
{{- range .Values.ingress.hosts }}
|
||||
- http:
|
||||
paths:
|
||||
- path: {{ $ingressPath }}
|
||||
{{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: {{ $fullName }}
|
||||
port:
|
||||
number: {{ $servicePort }}
|
||||
{{- else }}
|
||||
backend:
|
||||
serviceName: {{ $fullName }}
|
||||
servicePort: {{ $servicePort }}
|
||||
{{- end }}
|
||||
{{- if . }}
|
||||
host: {{ . | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,27 @@
|
||||
{{- if .Values.networkPolicy.enabled }}
|
||||
kind: NetworkPolicy
|
||||
apiVersion: {{ template "minio.networkPolicy.apiVersion" . }}
|
||||
metadata:
|
||||
name: {{ template "minio.fullname" . }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}
|
||||
chart: {{ template "minio.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
spec:
|
||||
podSelector:
|
||||
matchLabels:
|
||||
app: {{ template "minio.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
ingress:
|
||||
- ports:
|
||||
- port: {{ .Values.minioAPIPort }}
|
||||
- port: {{ .Values.minioConsolePort }}
|
||||
{{- if not .Values.networkPolicy.allowExternal }}
|
||||
from:
|
||||
- podSelector:
|
||||
matchLabels:
|
||||
{{ template "minio.name" . }}-client: "true"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,14 @@
|
||||
{{- if .Values.podDisruptionBudget.enabled }}
|
||||
apiVersion: policy/v1beta1
|
||||
kind: PodDisruptionBudget
|
||||
metadata:
|
||||
name: minio
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}
|
||||
spec:
|
||||
maxUnavailable: {{ .Values.podDisruptionBudget.maxUnavailable }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ template "minio.name" . }}
|
||||
{{- end }}
|
||||
+92
@@ -0,0 +1,92 @@
|
||||
{{- if .Values.buckets }}
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
name: {{ template "minio.fullname" . }}-make-bucket-job
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}-make-bucket-job
|
||||
chart: {{ template "minio.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
annotations:
|
||||
"helm.sh/hook": post-install,post-upgrade
|
||||
"helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation
|
||||
{{- with .Values.makeBucketJob.annotations }}
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}-job
|
||||
release: {{ .Release.Name }}
|
||||
{{- if .Values.podLabels }}
|
||||
{{ toYaml .Values.podLabels | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.makeBucketJob.podAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.makeBucketJob.podAnnotations | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
restartPolicy: OnFailure
|
||||
{{- include "minio.imagePullSecrets" . | indent 6 }}
|
||||
{{- if .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{ toYaml .Values.makeBucketJob.nodeSelector | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.makeBucketJob.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.makeBucketJob.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.makeBucketJob.securityContext.enabled }}
|
||||
securityContext:
|
||||
runAsUser: {{ .Values.makeBucketJob.securityContext.runAsUser }}
|
||||
runAsGroup: {{ .Values.makeBucketJob.securityContext.runAsGroup }}
|
||||
fsGroup: {{ .Values.makeBucketJob.securityContext.fsGroup }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: minio-configuration
|
||||
projected:
|
||||
sources:
|
||||
- configMap:
|
||||
name: {{ template "minio.fullname" . }}
|
||||
- secret:
|
||||
name: {{ template "minio.secretName" . }}
|
||||
{{- if .Values.tls.enabled }}
|
||||
- name: cert-secret-volume-mc
|
||||
secret:
|
||||
secretName: {{ .Values.tls.certSecret }}
|
||||
items:
|
||||
- key: {{ .Values.tls.publicCrt }}
|
||||
path: CAs/public.crt
|
||||
{{ end }}
|
||||
containers:
|
||||
- name: minio-mc
|
||||
image: "{{ .Values.mcImage.repository }}:{{ .Values.mcImage.tag }}"
|
||||
imagePullPolicy: {{ .Values.mcImage.pullPolicy }}
|
||||
{{- if .Values.makeBucketJob.exitCommand }}
|
||||
command: ["/bin/sh", "-c"]
|
||||
args: ["/bin/sh /config/initialize; x=$(echo $?); {{ .Values.makeBucketJob.exitCommand }} && exit $x" ]
|
||||
{{- else }}
|
||||
command: ["/bin/sh", "/config/initialize"]
|
||||
{{- end }}
|
||||
env:
|
||||
- name: MINIO_ENDPOINT
|
||||
value: {{ template "minio.fullname" . }}
|
||||
- name: MINIO_PORT
|
||||
value: {{ .Values.service.port | quote }}
|
||||
volumeMounts:
|
||||
- name: minio-configuration
|
||||
mountPath: /config
|
||||
{{- if .Values.tls.enabled }}
|
||||
- name: cert-secret-volume-mc
|
||||
mountPath: {{ .Values.configPathmc }}certs
|
||||
{{ end }}
|
||||
resources:
|
||||
{{ toYaml .Values.makeBucketJob.resources | indent 10 }}
|
||||
{{- end }}
|
||||
+92
@@ -0,0 +1,92 @@
|
||||
{{- if .Values.policies }}
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
name: {{ template "minio.fullname" . }}-make-policies-job
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}-make-policies-job
|
||||
chart: {{ template "minio.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
annotations:
|
||||
"helm.sh/hook": post-install,post-upgrade
|
||||
"helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation
|
||||
{{- with .Values.makePolicyJob.annotations }}
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}-job
|
||||
release: {{ .Release.Name }}
|
||||
{{- if .Values.podLabels }}
|
||||
{{ toYaml .Values.podLabels | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.makePolicyJob.podAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.makePolicyJob.podAnnotations | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
restartPolicy: OnFailure
|
||||
{{- include "minio.imagePullSecrets" . | indent 6 }}
|
||||
{{- if .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{ toYaml .Values.makePolicyJob.nodeSelector | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.makePolicyJob.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.makePolicyJob.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.makePolicyJob.securityContext.enabled }}
|
||||
securityContext:
|
||||
runAsUser: {{ .Values.makePolicyJob.securityContext.runAsUser }}
|
||||
runAsGroup: {{ .Values.makePolicyJob.securityContext.runAsGroup }}
|
||||
fsGroup: {{ .Values.makePolicyJob.securityContext.fsGroup }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: minio-configuration
|
||||
projected:
|
||||
sources:
|
||||
- configMap:
|
||||
name: {{ template "minio.fullname" . }}
|
||||
- secret:
|
||||
name: {{ template "minio.secretName" . }}
|
||||
{{- if .Values.tls.enabled }}
|
||||
- name: cert-secret-volume-mc
|
||||
secret:
|
||||
secretName: {{ .Values.tls.certSecret }}
|
||||
items:
|
||||
- key: {{ .Values.tls.publicCrt }}
|
||||
path: CAs/public.crt
|
||||
{{ end }}
|
||||
containers:
|
||||
- name: minio-mc
|
||||
image: "{{ .Values.mcImage.repository }}:{{ .Values.mcImage.tag }}"
|
||||
imagePullPolicy: {{ .Values.mcImage.pullPolicy }}
|
||||
{{- if .Values.makePolicyJob.exitCommand }}
|
||||
command: ["/bin/sh", "-c"]
|
||||
args: ["/bin/sh /config/add-policy; x=$(echo $?); {{ .Values.makePolicyJob.exitCommand }} && exit $x" ]
|
||||
{{- else }}
|
||||
command: ["/bin/sh", "/config/add-policy"]
|
||||
{{- end }}
|
||||
env:
|
||||
- name: MINIO_ENDPOINT
|
||||
value: {{ template "minio.fullname" . }}
|
||||
- name: MINIO_PORT
|
||||
value: {{ .Values.service.port | quote }}
|
||||
volumeMounts:
|
||||
- name: minio-configuration
|
||||
mountPath: /config
|
||||
{{- if .Values.tls.enabled }}
|
||||
- name: cert-secret-volume-mc
|
||||
mountPath: {{ .Values.configPathmc }}certs
|
||||
{{ end }}
|
||||
resources:
|
||||
{{ toYaml .Values.makePolicyJob.resources | indent 10 }}
|
||||
{{- end }}
|
||||
+102
@@ -0,0 +1,102 @@
|
||||
{{- $global := . -}}
|
||||
{{- if .Values.users }}
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
name: {{ template "minio.fullname" . }}-make-user-job
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}-make-user-job
|
||||
chart: {{ template "minio.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
annotations:
|
||||
"helm.sh/hook": post-install,post-upgrade
|
||||
"helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation
|
||||
{{- with .Values.makeUserJob.annotations }}
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}-job
|
||||
release: {{ .Release.Name }}
|
||||
{{- if .Values.podLabels }}
|
||||
{{ toYaml .Values.podLabels | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.makeUserJob.podAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.makeUserJob.podAnnotations | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
restartPolicy: OnFailure
|
||||
{{- include "minio.imagePullSecrets" . | indent 6 }}
|
||||
{{- if .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{ toYaml .Values.makeUserJob.nodeSelector | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.makeUserJob.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.makeUserJob.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.makeUserJob.securityContext.enabled }}
|
||||
securityContext:
|
||||
runAsUser: {{ .Values.makeUserJob.securityContext.runAsUser }}
|
||||
runAsGroup: {{ .Values.makeUserJob.securityContext.runAsGroup }}
|
||||
fsGroup: {{ .Values.makeUserJob.securityContext.fsGroup }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: minio-configuration
|
||||
projected:
|
||||
sources:
|
||||
- configMap:
|
||||
name: {{ template "minio.fullname" . }}
|
||||
- secret:
|
||||
name: {{ template "minio.secretName" . }}
|
||||
{{- range .Values.users }}
|
||||
{{- if .existingSecret }}
|
||||
- secret:
|
||||
name: {{ tpl .existingSecret $global }}
|
||||
items:
|
||||
- key: {{ .existingSecretKey }}
|
||||
path: secrets/{{ tpl .existingSecretKey $global }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.tls.enabled }}
|
||||
- name: cert-secret-volume-mc
|
||||
secret:
|
||||
secretName: {{ .Values.tls.certSecret }}
|
||||
items:
|
||||
- key: {{ .Values.tls.publicCrt }}
|
||||
path: CAs/public.crt
|
||||
{{ end }}
|
||||
containers:
|
||||
- name: minio-mc
|
||||
image: "{{ .Values.mcImage.repository }}:{{ .Values.mcImage.tag }}"
|
||||
imagePullPolicy: {{ .Values.mcImage.pullPolicy }}
|
||||
{{- if .Values.makeUserJob.exitCommand }}
|
||||
command: ["/bin/sh", "-c"]
|
||||
args: ["/bin/sh /config/add-user; x=$(echo $?); {{ .Values.makeUserJob.exitCommand }} && exit $x" ]
|
||||
{{- else }}
|
||||
command: ["/bin/sh", "/config/add-user"]
|
||||
{{- end }}
|
||||
env:
|
||||
- name: MINIO_ENDPOINT
|
||||
value: {{ template "minio.fullname" . }}
|
||||
- name: MINIO_PORT
|
||||
value: {{ .Values.service.port | quote }}
|
||||
volumeMounts:
|
||||
- name: minio-configuration
|
||||
mountPath: /config
|
||||
{{- if .Values.tls.enabled }}
|
||||
- name: cert-secret-volume-mc
|
||||
mountPath: {{ .Values.configPathmc }}certs
|
||||
{{ end }}
|
||||
resources:
|
||||
{{ toYaml .Values.makeUserJob.resources | indent 10 }}
|
||||
{{- end }}
|
||||
+92
@@ -0,0 +1,92 @@
|
||||
{{- if .Values.customCommands }}
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
name: {{ template "minio.fullname" . }}-custom-command-job
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}-custom-command-job
|
||||
chart: {{ template "minio.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
annotations:
|
||||
"helm.sh/hook": post-install,post-upgrade
|
||||
"helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation
|
||||
{{- with .Values.customCommandJob.annotations }}
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}-job
|
||||
release: {{ .Release.Name }}
|
||||
{{- if .Values.podLabels }}
|
||||
{{ toYaml .Values.podLabels | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.customCommandJob.podAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.customCommandJob.podAnnotations | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
restartPolicy: OnFailure
|
||||
{{- include "minio.imagePullSecrets" . | indent 6 }}
|
||||
{{- if .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{ toYaml .Values.customCommandJob.nodeSelector | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.customCommandJob.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.customCommandJob.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.customCommandJob.securityContext.enabled }}
|
||||
securityContext:
|
||||
runAsUser: {{ .Values.customCommandJob.securityContext.runAsUser }}
|
||||
runAsGroup: {{ .Values.customCommandJob.securityContext.runAsGroup }}
|
||||
fsGroup: {{ .Values.customCommandJob.securityContext.fsGroup }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: minio-configuration
|
||||
projected:
|
||||
sources:
|
||||
- configMap:
|
||||
name: {{ template "minio.fullname" . }}
|
||||
- secret:
|
||||
name: {{ template "minio.secretName" . }}
|
||||
{{- if .Values.tls.enabled }}
|
||||
- name: cert-secret-volume-mc
|
||||
secret:
|
||||
secretName: {{ .Values.tls.certSecret }}
|
||||
items:
|
||||
- key: {{ .Values.tls.publicCrt }}
|
||||
path: CAs/public.crt
|
||||
{{ end }}
|
||||
containers:
|
||||
- name: minio-mc
|
||||
image: "{{ .Values.mcImage.repository }}:{{ .Values.mcImage.tag }}"
|
||||
imagePullPolicy: {{ .Values.mcImage.pullPolicy }}
|
||||
{{- if .Values.customCommandJob.exitCommand }}
|
||||
command: ["/bin/sh", "-c"]
|
||||
args: ["/bin/sh /config/custom-command; x=$(echo $?); {{ .Values.customCommandJob.exitCommand }} && exit $x" ]
|
||||
{{- else }}
|
||||
command: ["/bin/sh", "/config/custom-command"]
|
||||
{{- end }}
|
||||
env:
|
||||
- name: MINIO_ENDPOINT
|
||||
value: {{ template "minio.fullname" . }}
|
||||
- name: MINIO_PORT
|
||||
value: {{ .Values.service.port | quote }}
|
||||
volumeMounts:
|
||||
- name: minio-configuration
|
||||
mountPath: /config
|
||||
{{- if .Values.tls.enabled }}
|
||||
- name: cert-secret-volume-mc
|
||||
mountPath: {{ .Values.configPathmc }}certs
|
||||
{{ end }}
|
||||
resources:
|
||||
{{ toYaml .Values.customCommandJob.resources | indent 10 }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,35 @@
|
||||
{{- if eq .Values.mode "standalone" }}
|
||||
{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }}
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: {{ template "minio.fullname" . }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}
|
||||
chart: {{ template "minio.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
{{- if .Values.persistence.annotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.persistence.annotations | trimSuffix "\n" | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
accessModes:
|
||||
- {{ .Values.persistence.accessMode | quote }}
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ .Values.persistence.size | quote }}
|
||||
|
||||
{{- if .Values.persistence.storageClass }}
|
||||
{{- if (eq "-" .Values.persistence.storageClass) }}
|
||||
storageClassName: ""
|
||||
{{- else }}
|
||||
storageClassName: "{{ .Values.persistence.storageClass }}"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.persistence.VolumeName }}
|
||||
volumeName: "{{ .Values.persistence.VolumeName }}"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,22 @@
|
||||
{{- if not .Values.existingSecret }}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: {{ template "minio.secretName" . }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}
|
||||
chart: {{ template "minio.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
type: Opaque
|
||||
data:
|
||||
rootUser: {{ include "minio.root.username" . | b64enc | quote }}
|
||||
rootPassword: {{ include "minio.root.password" . | b64enc | quote }}
|
||||
{{- if .Values.etcd.clientCert }}
|
||||
etcd_client.crt: {{ .Values.etcd.clientCert | toString | b64enc | quote }}
|
||||
{{- end }}
|
||||
{{- if .Values.etcd.clientCertKey }}
|
||||
etcd_client.key: {{ .Values.etcd.clientCertKey | toString | b64enc | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
{{- if and .Values.securityContext.enabled .Values.persistence.enabled (.Capabilities.APIVersions.Has "security.openshift.io/v1") }}
|
||||
apiVersion: security.openshift.io/v1
|
||||
kind: SecurityContextConstraints
|
||||
metadata:
|
||||
name: {{ template "minio.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}
|
||||
chart: {{ template "minio.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
allowHostDirVolumePlugin: false
|
||||
allowHostIPC: false
|
||||
allowHostNetwork: false
|
||||
allowHostPID: false
|
||||
allowHostPorts: false
|
||||
allowPrivilegeEscalation: true
|
||||
allowPrivilegedContainer: false
|
||||
allowedCapabilities: []
|
||||
readOnlyRootFilesystem: false
|
||||
defaultAddCapabilities: []
|
||||
requiredDropCapabilities:
|
||||
- KILL
|
||||
- MKNOD
|
||||
- SETUID
|
||||
- SETGID
|
||||
fsGroup:
|
||||
type: MustRunAs
|
||||
ranges:
|
||||
- max: {{ .Values.securityContext.fsGroup }}
|
||||
min: {{ .Values.securityContext.fsGroup }}
|
||||
runAsUser:
|
||||
type: MustRunAs
|
||||
uid: {{ .Values.securityContext.runAsUser }}
|
||||
seLinuxContext:
|
||||
type: MustRunAs
|
||||
supplementalGroups:
|
||||
type: RunAsAny
|
||||
volumes:
|
||||
- configMap
|
||||
- downwardAPI
|
||||
- emptyDir
|
||||
- persistentVolumeClaim
|
||||
- projected
|
||||
- secret
|
||||
{{- end }}
|
||||
@@ -0,0 +1,49 @@
|
||||
{{ $scheme := "http" }}
|
||||
{{- if .Values.tls.enabled }}
|
||||
{{ $scheme = "https" }}
|
||||
{{ end }}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ template "minio.fullname" . }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}
|
||||
chart: {{ template "minio.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
monitoring: "true"
|
||||
{{- if .Values.service.annotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.service.annotations | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if (or (eq .Values.service.type "ClusterIP" "") (empty .Values.service.type)) }}
|
||||
type: ClusterIP
|
||||
{{- if not (empty .Values.service.clusterIP) }}
|
||||
clusterIP: {{ .Values.service.clusterIP }}
|
||||
{{end}}
|
||||
{{- else if eq .Values.service.type "LoadBalancer" }}
|
||||
type: {{ .Values.service.type }}
|
||||
loadBalancerIP: {{ default "" .Values.service.loadBalancerIP }}
|
||||
{{- else }}
|
||||
type: {{ .Values.service.type }}
|
||||
{{- end }}
|
||||
ports:
|
||||
- name: {{ $scheme }}
|
||||
port: {{ .Values.service.port }}
|
||||
protocol: TCP
|
||||
{{- if (and (eq .Values.service.type "NodePort") ( .Values.service.nodePort)) }}
|
||||
nodePort: {{ .Values.service.nodePort }}
|
||||
{{- else }}
|
||||
targetPort: {{ .Values.minioAPIPort }}
|
||||
{{- end}}
|
||||
{{- if .Values.service.externalIPs }}
|
||||
externalIPs:
|
||||
{{- range $i , $ip := .Values.service.externalIPs }}
|
||||
- {{ $ip }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
selector:
|
||||
app: {{ template "minio.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
@@ -0,0 +1,7 @@
|
||||
{{- if .Values.serviceAccount.create -}}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ .Values.serviceAccount.name | quote }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,61 @@
|
||||
{{- if .Values.metrics.serviceMonitor.enabled }}
|
||||
apiVersion: monitoring.coreos.com/v1
|
||||
kind: ServiceMonitor
|
||||
metadata:
|
||||
name: {{ template "minio.fullname" . }}
|
||||
{{- if .Values.metrics.serviceMonitor.namespace }}
|
||||
namespace: {{ .Values.metrics.serviceMonitor.namespace }}
|
||||
{{ else }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
{{- end }}
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}
|
||||
chart: {{ template "minio.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
{{- if .Values.metrics.serviceMonitor.additionalLabels }}
|
||||
{{ toYaml .Values.metrics.serviceMonitor.additionalLabels | indent 4 }}
|
||||
{{- end }}
|
||||
{{- if .Values.metrics.serviceMonitor.annotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.metrics.serviceMonitor.annotations | trimSuffix "\n" | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
endpoints:
|
||||
{{- if .Values.tls.enabled }}
|
||||
- port: https
|
||||
scheme: https
|
||||
tlsConfig:
|
||||
ca:
|
||||
secret:
|
||||
name: {{ .Values.tls.certSecret }}
|
||||
key: {{ .Values.tls.publicCrt }}
|
||||
serverName: {{ template "minio.fullname" . }}
|
||||
{{ else }}
|
||||
- port: http
|
||||
scheme: http
|
||||
{{- end }}
|
||||
path: /minio/v2/metrics/cluster
|
||||
{{- if .Values.metrics.serviceMonitor.interval }}
|
||||
interval: {{ .Values.metrics.serviceMonitor.interval }}
|
||||
{{- end }}
|
||||
{{- if .Values.metrics.serviceMonitor.scrapeTimeout }}
|
||||
scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }}
|
||||
{{- end }}
|
||||
{{- if .Values.metrics.serviceMonitor.relabelConfigs }}
|
||||
{{ toYaml .Values.metrics.serviceMonitor.relabelConfigs | indent 6 }}
|
||||
{{- end }}
|
||||
{{- if not .Values.metrics.serviceMonitor.public }}
|
||||
bearerTokenSecret:
|
||||
name: {{ template "minio.fullname" . }}-prometheus
|
||||
key: token
|
||||
{{- end }}
|
||||
namespaceSelector:
|
||||
matchNames:
|
||||
- {{ .Release.Namespace | quote }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ include "minio.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
monitoring: "true"
|
||||
{{- end }}
|
||||
@@ -0,0 +1,246 @@
|
||||
{{- if eq .Values.mode "distributed" }}
|
||||
{{ $poolCount := .Values.pools | int }}
|
||||
{{ $nodeCount := .Values.replicas | int }}
|
||||
{{ $replicas := mul $poolCount $nodeCount }}
|
||||
{{ $drivesPerNode := .Values.drivesPerNode | int }}
|
||||
{{ $scheme := "http" }}
|
||||
{{- if .Values.tls.enabled }}
|
||||
{{ $scheme = "https" }}
|
||||
{{ end }}
|
||||
{{ $mountPath := .Values.mountPath }}
|
||||
{{ $bucketRoot := or ($.Values.bucketRoot) ($.Values.mountPath) }}
|
||||
{{ $subPath := .Values.persistence.subPath }}
|
||||
{{ $penabled := .Values.persistence.enabled }}
|
||||
{{ $accessMode := .Values.persistence.accessMode }}
|
||||
{{ $storageClass := .Values.persistence.storageClass }}
|
||||
{{ $psize := .Values.persistence.size }}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ template "minio.fullname" . }}-svc
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}
|
||||
chart: {{ template "minio.chart" . }}
|
||||
release: "{{ .Release.Name }}"
|
||||
heritage: "{{ .Release.Service }}"
|
||||
spec:
|
||||
publishNotReadyAddresses: true
|
||||
clusterIP: None
|
||||
ports:
|
||||
- name: {{ $scheme }}
|
||||
port: {{ .Values.service.port }}
|
||||
protocol: TCP
|
||||
targetPort: {{ .Values.minioAPIPort }}
|
||||
selector:
|
||||
app: {{ template "minio.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
---
|
||||
apiVersion: {{ template "minio.statefulset.apiVersion" . }}
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
name: {{ template "minio.fullname" . }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}
|
||||
chart: {{ template "minio.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
{{- if .Values.additionalLabels }}
|
||||
{{ toYaml .Values.additionalLabels | trimSuffix "\n" | indent 4 }}
|
||||
{{- end }}
|
||||
{{- if .Values.additionalAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.additionalAnnotations | trimSuffix "\n" | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
updateStrategy:
|
||||
type: {{ .Values.StatefulSetUpdate.updateStrategy }}
|
||||
podManagementPolicy: "Parallel"
|
||||
serviceName: {{ template "minio.fullname" . }}-svc
|
||||
replicas: {{ $replicas }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ template "minio.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
template:
|
||||
metadata:
|
||||
name: {{ template "minio.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "minio.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
{{- if .Values.podLabels }}
|
||||
{{ toYaml .Values.podLabels | indent 8 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
{{- if not .Values.ignoreChartChecksums }}
|
||||
checksum/secrets: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }}
|
||||
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
|
||||
{{- end }}
|
||||
{{- if .Values.podAnnotations }}
|
||||
{{ toYaml .Values.podAnnotations | trimSuffix "\n" | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if .Values.priorityClassName }}
|
||||
priorityClassName: "{{ .Values.priorityClassName }}"
|
||||
{{- end }}
|
||||
{{- if .Values.runtimeClassName }}
|
||||
runtimeClassName: "{{ .Values.runtimeClassName }}"
|
||||
{{- end }}
|
||||
{{- if and .Values.securityContext.enabled .Values.persistence.enabled }}
|
||||
securityContext:
|
||||
runAsUser: {{ .Values.securityContext.runAsUser }}
|
||||
runAsGroup: {{ .Values.securityContext.runAsGroup }}
|
||||
fsGroup: {{ .Values.securityContext.fsGroup }}
|
||||
{{- if and (ge .Capabilities.KubeVersion.Major "1") (ge .Capabilities.KubeVersion.Minor "20") }}
|
||||
fsGroupChangePolicy: {{ .Values.securityContext.fsGroupChangePolicy }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{ if .Values.serviceAccount.create }}
|
||||
serviceAccountName: {{ .Values.serviceAccount.name }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
|
||||
command: [ "/bin/sh",
|
||||
"-ce",
|
||||
"/usr/bin/docker-entrypoint.sh minio server {{- range $i := until $poolCount }}{{ $factor := mul $i $nodeCount }}{{ $endIndex := add $factor $nodeCount }}{{ $beginIndex := mul $i $nodeCount }} {{ $scheme }}://{{ template `minio.fullname` $ }}-{{ `{` }}{{ $beginIndex }}...{{ sub $endIndex 1 }}{{ `}`}}.{{ template `minio.fullname` $ }}-svc.{{ $.Release.Namespace }}.svc.{{ $.Values.clusterDomain }}{{if (gt $drivesPerNode 1)}}{{ $bucketRoot }}-{{ `{` }}0...{{ sub $drivesPerNode 1 }}{{ `}` }}{{else}}{{ $bucketRoot }}{{end}}{{- end}} -S {{ .Values.certsPath }} --address :{{ .Values.minioAPIPort }} --console-address :{{ .Values.minioConsolePort }} {{- template `minio.extraArgs` . }}" ]
|
||||
volumeMounts:
|
||||
{{- if $penabled }}
|
||||
{{- if (gt $drivesPerNode 1) }}
|
||||
{{- range $i := until $drivesPerNode }}
|
||||
- name: export-{{ $i }}
|
||||
mountPath: {{ $mountPath }}-{{ $i }}
|
||||
{{- if and $penabled $subPath }}
|
||||
subPath: {{ $subPath }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- else }}
|
||||
- name: export
|
||||
mountPath: {{ $mountPath }}
|
||||
{{- if and $penabled $subPath }}
|
||||
subPath: {{ $subPath }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.extraSecret }}
|
||||
- name: extra-secret
|
||||
mountPath: "/tmp/minio-config-env"
|
||||
{{- end }}
|
||||
{{- include "minio.tlsKeysVolumeMount" . | indent 12 }}
|
||||
ports:
|
||||
- name: {{ $scheme }}
|
||||
containerPort: {{ .Values.minioAPIPort }}
|
||||
- name: {{ $scheme }}-console
|
||||
containerPort: {{ .Values.minioConsolePort }}
|
||||
env:
|
||||
- name: MINIO_ROOT_USER
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "minio.secretName" . }}
|
||||
key: rootUser
|
||||
- name: MINIO_ROOT_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "minio.secretName" . }}
|
||||
key: rootPassword
|
||||
{{- if .Values.extraSecret }}
|
||||
- name: MINIO_CONFIG_ENV_FILE
|
||||
value: "/tmp/minio-config-env/config.env"
|
||||
{{- end}}
|
||||
{{- if .Values.metrics.serviceMonitor.public }}
|
||||
- name: MINIO_PROMETHEUS_AUTH_TYPE
|
||||
value: "public"
|
||||
{{- end}}
|
||||
{{- if .Values.oidc.enabled }}
|
||||
- name: MINIO_IDENTITY_OPENID_CONFIG_URL
|
||||
value: {{ .Values.oidc.configUrl }}
|
||||
- name: MINIO_IDENTITY_OPENID_CLIENT_ID
|
||||
value: {{ .Values.oidc.clientId }}
|
||||
- name: MINIO_IDENTITY_OPENID_CLIENT_SECRET
|
||||
value: {{ .Values.oidc.clientSecret }}
|
||||
- name: MINIO_IDENTITY_OPENID_CLAIM_NAME
|
||||
value: {{ .Values.oidc.claimName }}
|
||||
- name: MINIO_IDENTITY_OPENID_CLAIM_PREFIX
|
||||
value: {{ .Values.oidc.claimPrefix }}
|
||||
- name: MINIO_IDENTITY_OPENID_SCOPES
|
||||
value: {{ .Values.oidc.scopes }}
|
||||
- name: MINIO_IDENTITY_OPENID_REDIRECT_URI
|
||||
value: {{ .Values.oidc.redirectUri }}
|
||||
- name: MINIO_IDENTITY_OPENID_COMMENT
|
||||
value: {{ .Values.oidc.comment }}
|
||||
{{- end}}
|
||||
{{- range $key, $val := .Values.environment }}
|
||||
- name: {{ $key }}
|
||||
value: {{ $val | quote }}
|
||||
{{- end}}
|
||||
resources:
|
||||
{{ toYaml .Values.resources | indent 12 }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- include "minio.imagePullSecrets" . | indent 6 }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if and (gt $replicas 1) (ge .Capabilities.KubeVersion.Major "1") (ge .Capabilities.KubeVersion.Minor "19") }}
|
||||
{{- with .Values.topologySpreadConstraints }}
|
||||
topologySpreadConstraints:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: minio-user
|
||||
secret:
|
||||
secretName: {{ template "minio.secretName" . }}
|
||||
{{- if .Values.extraSecret }}
|
||||
- name: extra-secret
|
||||
secret:
|
||||
secretName: {{ .Values.extraSecret }}
|
||||
{{- end }}
|
||||
{{- include "minio.tlsKeysVolume" . | indent 8 }}
|
||||
{{- if .Values.persistence.enabled }}
|
||||
volumeClaimTemplates:
|
||||
{{- if gt $drivesPerNode 1 }}
|
||||
{{- range $diskId := until $drivesPerNode}}
|
||||
- metadata:
|
||||
name: export-{{ $diskId }}
|
||||
{{- if $.Values.persistence.annotations }}
|
||||
annotations:
|
||||
{{ toYaml $.Values.persistence.annotations | trimSuffix "\n" | indent 10 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
accessModes: [ {{ $accessMode | quote }} ]
|
||||
{{- if $storageClass }}
|
||||
storageClassName: {{ $storageClass }}
|
||||
{{- end }}
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ $psize }}
|
||||
{{- end }}
|
||||
{{- else }}
|
||||
- metadata:
|
||||
name: export
|
||||
{{- if $.Values.persistence.annotations }}
|
||||
annotations:
|
||||
{{ toYaml $.Values.persistence.annotations | trimSuffix "\n" | indent 10 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
accessModes: [ {{ $accessMode | quote }} ]
|
||||
{{- if $storageClass }}
|
||||
storageClassName: {{ $storageClass }}
|
||||
{{- end }}
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ $psize }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,482 @@
|
||||
## Provide a name in place of minio for `app:` labels
|
||||
##
|
||||
nameOverride: ""
|
||||
|
||||
## Provide a name to substitute for the full names of resources
|
||||
##
|
||||
fullnameOverride: ""
|
||||
|
||||
## set kubernetes cluster domain where minio is running
|
||||
##
|
||||
clusterDomain: cluster.local
|
||||
|
||||
## Set default image, imageTag, and imagePullPolicy. mode is used to indicate the
|
||||
##
|
||||
image:
|
||||
repository: quay.io/minio/minio
|
||||
tag: RELEASE.2022-08-13T21-54-44Z
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
imagePullSecrets: []
|
||||
# - name: "image-pull-secret"
|
||||
|
||||
## Set default image, imageTag, and imagePullPolicy for the `mc` (the minio
|
||||
## client used to create a default bucket).
|
||||
##
|
||||
mcImage:
|
||||
repository: quay.io/minio/mc
|
||||
tag: RELEASE.2022-08-11T00-30-48Z
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
## minio mode, i.e. standalone or distributed or gateway.
|
||||
mode: distributed ## other supported values are "standalone", "gateway"
|
||||
|
||||
## Additional labels to include with deployment or statefulset
|
||||
additionalLabels: []
|
||||
|
||||
## Additional annotations to include with deployment or statefulset
|
||||
additionalAnnotations: []
|
||||
|
||||
## Typically the deployment/statefulset includes checksums of secrets/config,
|
||||
## So that when these change on a subsequent helm install, the deployment/statefulset
|
||||
## is restarted. This can result in unnecessary restarts under GitOps tooling such as
|
||||
## flux, so set to "true" to disable this behaviour.
|
||||
ignoreChartChecksums: false
|
||||
|
||||
## Additional arguments to pass to minio binary
|
||||
extraArgs: []
|
||||
|
||||
## Internal port number for MinIO S3 API container
|
||||
## Change service.port to change external port number
|
||||
minioAPIPort: "9000"
|
||||
|
||||
## Internal port number for MinIO Browser Console container
|
||||
## Change consoleService.port to change external port number
|
||||
minioConsolePort: "9001"
|
||||
|
||||
## Update strategy for Deployments
|
||||
DeploymentUpdate:
|
||||
type: RollingUpdate
|
||||
maxUnavailable: 0
|
||||
maxSurge: 100%
|
||||
|
||||
## Update strategy for StatefulSets
|
||||
StatefulSetUpdate:
|
||||
updateStrategy: RollingUpdate
|
||||
|
||||
## Pod priority settings
|
||||
## ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
|
||||
##
|
||||
priorityClassName: ""
|
||||
|
||||
## Pod runtime class name
|
||||
## ref https://kubernetes.io/docs/concepts/containers/runtime-class/
|
||||
##
|
||||
runtimeClassName: ""
|
||||
|
||||
## Set default rootUser, rootPassword
|
||||
## AccessKey and secretKey is generated when not set
|
||||
## Distributed MinIO ref: https://docs.minio.io/docs/distributed-minio-quickstart-guide
|
||||
##
|
||||
rootUser: ""
|
||||
rootPassword: ""
|
||||
|
||||
## Use existing Secret that store following variables:
|
||||
##
|
||||
## | Chart var | .data.<key> in Secret |
|
||||
## |:----------------------|:-------------------------|
|
||||
## | rootUser | rootUser |
|
||||
## | rootPassword | rootPassword |
|
||||
##
|
||||
## All mentioned variables will be ignored in values file.
|
||||
## .data.rootUser and .data.rootPassword are mandatory,
|
||||
## others depend on enabled status of corresponding sections.
|
||||
existingSecret: ""
|
||||
|
||||
## Directory on the MinIO pof
|
||||
certsPath: "/etc/minio/certs/"
|
||||
configPathmc: "/etc/minio/mc/"
|
||||
|
||||
## Path where PV would be mounted on the MinIO Pod
|
||||
mountPath: "/export"
|
||||
## Override the root directory which the minio server should serve from.
|
||||
## If left empty, it defaults to the value of {{ .Values.mountPath }}
|
||||
## If defined, it must be a sub-directory of the path specified in {{ .Values.mountPath }}
|
||||
##
|
||||
bucketRoot: ""
|
||||
|
||||
# Number of drives attached to a node
|
||||
drivesPerNode: 1
|
||||
# Number of MinIO containers running
|
||||
replicas: 16
|
||||
# Number of expanded MinIO clusters
|
||||
pools: 1
|
||||
|
||||
# Deploy if 'mode == gateway' - 4 replicas.
|
||||
gateway:
|
||||
type: "nas" # currently only "nas" are supported.
|
||||
replicas: 4
|
||||
|
||||
## TLS Settings for MinIO
|
||||
tls:
|
||||
enabled: false
|
||||
## Create a secret with private.key and public.crt files and pass that here. Ref: https://github.com/minio/minio/tree/master/docs/tls/kubernetes#2-create-kubernetes-secret
|
||||
certSecret: ""
|
||||
publicCrt: public.crt
|
||||
privateKey: private.key
|
||||
|
||||
## Trusted Certificates Settings for MinIO. Ref: https://docs.minio.io/docs/how-to-secure-access-to-minio-server-with-tls#install-certificates-from-third-party-cas
|
||||
## Bundle multiple trusted certificates into one secret and pass that here. Ref: https://github.com/minio/minio/tree/master/docs/tls/kubernetes#2-create-kubernetes-secret
|
||||
## When using self-signed certificates, remember to include MinIO's own certificate in the bundle with key public.crt.
|
||||
## If certSecret is left empty and tls is enabled, this chart installs the public certificate from .Values.tls.certSecret.
|
||||
trustedCertsSecret: ""
|
||||
|
||||
## Enable persistence using Persistent Volume Claims
|
||||
## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
|
||||
##
|
||||
persistence:
|
||||
enabled: true
|
||||
annotations: {}
|
||||
|
||||
## A manually managed Persistent Volume and Claim
|
||||
## Requires persistence.enabled: true
|
||||
## If defined, PVC must be created manually before volume will be bound
|
||||
existingClaim: ""
|
||||
|
||||
## minio data Persistent Volume Storage Class
|
||||
## If defined, storageClassName: <storageClass>
|
||||
## If set to "-", storageClassName: "", which disables dynamic provisioning
|
||||
## If undefined (the default) or set to null, no storageClassName spec is
|
||||
## set, choosing the default provisioner. (gp2 on AWS, standard on
|
||||
## GKE, AWS & OpenStack)
|
||||
##
|
||||
## Storage class of PV to bind. By default it looks for standard storage class.
|
||||
## If the PV uses a different storage class, specify that here.
|
||||
storageClass: ""
|
||||
VolumeName: ""
|
||||
accessMode: ReadWriteOnce
|
||||
size: 500Gi
|
||||
|
||||
## If subPath is set mount a sub folder of a volume instead of the root of the volume.
|
||||
## This is especially handy for volume plugins that don't natively support sub mounting (like glusterfs).
|
||||
##
|
||||
subPath: ""
|
||||
|
||||
## Expose the MinIO service to be accessed from outside the cluster (LoadBalancer service).
|
||||
## or access it from within the cluster (ClusterIP service). Set the service type and the port to serve it.
|
||||
## ref: http://kubernetes.io/docs/user-guide/services/
|
||||
##
|
||||
service:
|
||||
type: ClusterIP
|
||||
clusterIP: ~
|
||||
port: "9000"
|
||||
nodePort: 32000
|
||||
|
||||
## Configure Ingress based on the documentation here: https://kubernetes.io/docs/concepts/services-networking/ingress/
|
||||
##
|
||||
|
||||
ingress:
|
||||
enabled: false
|
||||
# ingressClassName: ""
|
||||
labels: {}
|
||||
# node-role.kubernetes.io/ingress: platform
|
||||
|
||||
annotations: {}
|
||||
# kubernetes.io/ingress.class: nginx
|
||||
# kubernetes.io/tls-acme: "true"
|
||||
# kubernetes.io/ingress.allow-http: "false"
|
||||
# kubernetes.io/ingress.global-static-ip-name: ""
|
||||
# nginx.ingress.kubernetes.io/secure-backends: "true"
|
||||
# nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
|
||||
# nginx.ingress.kubernetes.io/whitelist-source-range: 0.0.0.0/0
|
||||
path: /
|
||||
hosts:
|
||||
- minio-example.local
|
||||
tls: []
|
||||
# - secretName: chart-example-tls
|
||||
# hosts:
|
||||
# - chart-example.local
|
||||
|
||||
consoleService:
|
||||
type: ClusterIP
|
||||
clusterIP: ~
|
||||
port: "9001"
|
||||
nodePort: 32001
|
||||
|
||||
consoleIngress:
|
||||
enabled: false
|
||||
# ingressClassName: ""
|
||||
labels: {}
|
||||
# node-role.kubernetes.io/ingress: platform
|
||||
|
||||
annotations: {}
|
||||
# kubernetes.io/ingress.class: nginx
|
||||
# kubernetes.io/tls-acme: "true"
|
||||
# kubernetes.io/ingress.allow-http: "false"
|
||||
# kubernetes.io/ingress.global-static-ip-name: ""
|
||||
# nginx.ingress.kubernetes.io/secure-backends: "true"
|
||||
# nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
|
||||
# nginx.ingress.kubernetes.io/whitelist-source-range: 0.0.0.0/0
|
||||
path: /
|
||||
hosts:
|
||||
- console.minio-example.local
|
||||
tls: []
|
||||
# - secretName: chart-example-tls
|
||||
# hosts:
|
||||
# - chart-example.local
|
||||
|
||||
## Node labels for pod assignment
|
||||
## Ref: https://kubernetes.io/docs/user-guide/node-selection/
|
||||
##
|
||||
nodeSelector: {}
|
||||
tolerations: []
|
||||
affinity: {}
|
||||
topologySpreadConstraints: []
|
||||
|
||||
## Add stateful containers to have security context, if enabled MinIO will run as this
|
||||
## user and group NOTE: securityContext is only enabled if persistence.enabled=true
|
||||
securityContext:
|
||||
enabled: true
|
||||
runAsUser: 1000
|
||||
runAsGroup: 1000
|
||||
fsGroup: 1000
|
||||
fsGroupChangePolicy: "OnRootMismatch"
|
||||
|
||||
# Additational pod annotations
|
||||
podAnnotations: {}
|
||||
|
||||
# Additional pod labels
|
||||
podLabels: {}
|
||||
|
||||
## Configure resource requests and limits
|
||||
## ref: http://kubernetes.io/docs/user-guide/compute-resources/
|
||||
##
|
||||
resources:
|
||||
requests:
|
||||
memory: 16Gi
|
||||
|
||||
## List of policies to be created after minio install
|
||||
##
|
||||
## In addition to default policies [readonly|readwrite|writeonly|consoleAdmin|diagnostics]
|
||||
## you can define additional policies with custom supported actions and resources
|
||||
policies: []
|
||||
## writeexamplepolicy policy grants creation or deletion of buckets with name
|
||||
## starting with example. In addition, grants objects write permissions on buckets starting with
|
||||
## example.
|
||||
# - name: writeexamplepolicy
|
||||
# statements:
|
||||
# - resources:
|
||||
# - 'arn:aws:s3:::example*/*'
|
||||
# actions:
|
||||
# - "s3:AbortMultipartUpload"
|
||||
# - "s3:GetObject"
|
||||
# - "s3:DeleteObject"
|
||||
# - "s3:PutObject"
|
||||
# - "s3:ListMultipartUploadParts"
|
||||
# - resources:
|
||||
# - 'arn:aws:s3:::example*'
|
||||
# actions:
|
||||
# - "s3:CreateBucket"
|
||||
# - "s3:DeleteBucket"
|
||||
# - "s3:GetBucketLocation"
|
||||
# - "s3:ListBucket"
|
||||
# - "s3:ListBucketMultipartUploads"
|
||||
## readonlyexamplepolicy policy grants access to buckets with name starting with example.
|
||||
## In addition, grants objects read permissions on buckets starting with example.
|
||||
# - name: readonlyexamplepolicy
|
||||
# statements:
|
||||
# - resources:
|
||||
# - 'arn:aws:s3:::example*/*'
|
||||
# actions:
|
||||
# - "s3:GetObject"
|
||||
# - resources:
|
||||
# - 'arn:aws:s3:::example*'
|
||||
# actions:
|
||||
# - "s3:GetBucketLocation"
|
||||
# - "s3:ListBucket"
|
||||
# - "s3:ListBucketMultipartUploads"
|
||||
## Additional Annotations for the Kubernetes Job makePolicyJob
|
||||
makePolicyJob:
|
||||
podAnnotations:
|
||||
annotations:
|
||||
securityContext:
|
||||
enabled: false
|
||||
runAsUser: 1000
|
||||
runAsGroup: 1000
|
||||
fsGroup: 1000
|
||||
resources:
|
||||
requests:
|
||||
memory: 128Mi
|
||||
nodeSelector: {}
|
||||
tolerations: []
|
||||
affinity: {}
|
||||
# Command to run after the main command on exit
|
||||
exitCommand: ""
|
||||
|
||||
## List of users to be created after minio install
|
||||
##
|
||||
users:
|
||||
## Username, password and policy to be assigned to the user
|
||||
## Default policies are [readonly|readwrite|writeonly|consoleAdmin|diagnostics]
|
||||
## Add new policies as explained here https://docs.min.io/docs/minio-multi-user-quickstart-guide.html
|
||||
## NOTE: this will fail if LDAP is enabled in your MinIO deployment
|
||||
## make sure to disable this if you are using LDAP.
|
||||
- accessKey: console
|
||||
secretKey: console123
|
||||
policy: consoleAdmin
|
||||
# Or you can refer to specific secret
|
||||
#- accessKey: externalSecret
|
||||
# existingSecret: my-secret
|
||||
# existingSecretKey: password
|
||||
# policy: readonly
|
||||
|
||||
|
||||
## Additional Annotations for the Kubernetes Job makeUserJob
|
||||
makeUserJob:
|
||||
podAnnotations:
|
||||
annotations:
|
||||
securityContext:
|
||||
enabled: false
|
||||
runAsUser: 1000
|
||||
runAsGroup: 1000
|
||||
fsGroup: 1000
|
||||
resources:
|
||||
requests:
|
||||
memory: 128Mi
|
||||
nodeSelector: {}
|
||||
tolerations: []
|
||||
affinity: {}
|
||||
# Command to run after the main command on exit
|
||||
exitCommand: ""
|
||||
|
||||
## List of buckets to be created after minio install
|
||||
##
|
||||
buckets:
|
||||
# # Name of the bucket
|
||||
# - name: bucket1
|
||||
# # Policy to be set on the
|
||||
# # bucket [none|download|upload|public]
|
||||
# policy: none
|
||||
# # Purge if bucket exists already
|
||||
# purge: false
|
||||
# # set versioning for
|
||||
# # bucket [true|false]
|
||||
# versioning: false
|
||||
# # set objectlocking for
|
||||
# # bucket [true|false] NOTE: versioning is enabled by default if you use locking
|
||||
# objectlocking: false
|
||||
# - name: bucket2
|
||||
# policy: none
|
||||
# purge: false
|
||||
# versioning: true
|
||||
# # set objectlocking for
|
||||
# # bucket [true|false] NOTE: versioning is enabled by default if you use locking
|
||||
# objectlocking: false
|
||||
|
||||
## Additional Annotations for the Kubernetes Job makeBucketJob
|
||||
makeBucketJob:
|
||||
podAnnotations:
|
||||
annotations:
|
||||
securityContext:
|
||||
enabled: false
|
||||
runAsUser: 1000
|
||||
runAsGroup: 1000
|
||||
fsGroup: 1000
|
||||
resources:
|
||||
requests:
|
||||
memory: 128Mi
|
||||
nodeSelector: {}
|
||||
tolerations: []
|
||||
affinity: {}
|
||||
# Command to run after the main command on exit
|
||||
exitCommand: ""
|
||||
|
||||
## List of command to run after minio install
|
||||
## NOTE: the mc command TARGET is always "myminio"
|
||||
customCommands:
|
||||
# - command: "admin policy set myminio consoleAdmin group='cn=ops,cn=groups,dc=example,dc=com'"
|
||||
|
||||
## Additional Annotations for the Kubernetes Job customCommandJob
|
||||
customCommandJob:
|
||||
podAnnotations:
|
||||
annotations:
|
||||
securityContext:
|
||||
enabled: false
|
||||
runAsUser: 1000
|
||||
runAsGroup: 1000
|
||||
fsGroup: 1000
|
||||
resources:
|
||||
requests:
|
||||
memory: 128Mi
|
||||
nodeSelector: {}
|
||||
tolerations: []
|
||||
affinity: {}
|
||||
# Command to run after the main command on exit
|
||||
exitCommand: ""
|
||||
|
||||
## Use this field to add environment variables relevant to MinIO server. These fields will be passed on to MinIO container(s)
|
||||
## when Chart is deployed
|
||||
environment:
|
||||
## Please refer for comprehensive list https://docs.min.io/minio/baremetal/reference/minio-server/minio-server.html
|
||||
## MINIO_SUBNET_LICENSE: "License key obtained from https://subnet.min.io"
|
||||
## MINIO_BROWSER: "off"
|
||||
|
||||
## The name of a secret in the same kubernetes namespace which contain secret values
|
||||
## This can be useful for LDAP password, etc
|
||||
## The key in the secret must be 'config.env'
|
||||
##
|
||||
# extraSecret: minio-extraenv
|
||||
|
||||
## OpenID Identity Management
|
||||
## The following section documents environment variables for enabling external identity management using an OpenID Connect (OIDC)-compatible provider.
|
||||
## See https://docs.min.io/minio/baremetal/security/openid-external-identity-management/external-authentication-with-openid-identity-provider.html#minio-external-identity-management-openid for a tutorial on using these variables.
|
||||
oidc:
|
||||
enabled: false
|
||||
configUrl: "https://identity-provider-url/.well-known/openid-configuration"
|
||||
clientId: "minio"
|
||||
clientSecret: ""
|
||||
claimName: "policy"
|
||||
scopes: "openid,profile,email"
|
||||
redirectUri: "https://console-endpoint-url/oauth_callback"
|
||||
# Can leave empty
|
||||
claimPrefix: ""
|
||||
comment: ""
|
||||
|
||||
networkPolicy:
|
||||
enabled: false
|
||||
allowExternal: true
|
||||
|
||||
## PodDisruptionBudget settings
|
||||
## ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/
|
||||
##
|
||||
podDisruptionBudget:
|
||||
enabled: false
|
||||
maxUnavailable: 1
|
||||
|
||||
## Specify the service account to use for the MinIO pods. If 'create' is set to 'false'
|
||||
## and 'name' is left unspecified, the account 'default' will be used.
|
||||
serviceAccount:
|
||||
create: true
|
||||
## The name of the service account to use. If 'create' is 'true', a service account with that name
|
||||
## will be created.
|
||||
name: "minio-sa"
|
||||
|
||||
metrics:
|
||||
serviceMonitor:
|
||||
enabled: false
|
||||
public: true
|
||||
additionalLabels: {}
|
||||
annotations: {}
|
||||
relabelConfigs: {}
|
||||
# namespace: monitoring
|
||||
# interval: 30s
|
||||
# scrapeTimeout: 10s
|
||||
|
||||
## ETCD settings: https://github.com/minio/minio/blob/master/docs/sts/etcd.md
|
||||
## Define endpoints to enable this section.
|
||||
etcd:
|
||||
endpoints: []
|
||||
pathPrefix: ""
|
||||
corednsPathPrefix: ""
|
||||
clientCert: ""
|
||||
clientCertKey: ""
|
||||
@@ -0,0 +1,23 @@
|
||||
# Patterns to ignore when building packages.
|
||||
# This supports shell glob matching, relative path matching, and
|
||||
# negation (prefixed with !). Only one pattern per line.
|
||||
.DS_Store
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*.orig
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
||||
.vscode/
|
||||
@@ -0,0 +1,8 @@
|
||||
apiVersion: v2
|
||||
appVersion: v0.17.0
|
||||
description: Grafana rollout-operator
|
||||
home: https://github.com/grafana/rollout-operator
|
||||
kubeVersion: ^1.10.0-0
|
||||
name: rollout-operator
|
||||
type: application
|
||||
version: 0.16.0
|
||||
@@ -0,0 +1,71 @@
|
||||
# Grafana rollout-operator Helm Chart
|
||||
|
||||
Helm chart for deploying [Grafana rollout-operator](https://github.com/grafana/rollout-operator) to Kubernetes.
|
||||
|
||||
# rollout-operator
|
||||
|
||||
  
|
||||
|
||||
Grafana rollout-operator
|
||||
|
||||
## Requirements
|
||||
|
||||
Kubernetes: `^1.10.0-0`
|
||||
|
||||
## Installation
|
||||
|
||||
This section describes various use cases for installation, upgrade and migration from different systems and versions.
|
||||
|
||||
### Preparation
|
||||
|
||||
These are the common tasks to perform before any of the use cases.
|
||||
|
||||
```bash
|
||||
# Add the repository
|
||||
helm repo add grafana https://grafana.github.io/helm-charts
|
||||
helm repo update
|
||||
```
|
||||
|
||||
### Installation of Grafana Rollout Operator
|
||||
|
||||
```bash
|
||||
helm install -n <namespace> <release> grafana/rollout-operator
|
||||
```
|
||||
|
||||
The Grafana rollout-operator should be installed in the same namespace as the statefulsets it is operating upon.
|
||||
It is not a highly available application and runs as a single pod.
|
||||
|
||||
## Values
|
||||
|
||||
| Key | Type | Default | Description |
|
||||
|-----|------|---------|-------------|
|
||||
| affinity | object | `{}` | |
|
||||
| fullnameOverride | string | `""` | |
|
||||
| hostAliases | list | `[]` | hostAliases to add |
|
||||
| image.pullPolicy | string | `"IfNotPresent"` | |
|
||||
| image.repository | string | `"grafana/rollout-operator"` | |
|
||||
| image.tag | string | `""` | Overrides the image tag whose default is the chart appVersion. |
|
||||
| imagePullSecrets | list | `[]` | |
|
||||
| minReadySeconds | int | `10` | |
|
||||
| nameOverride | string | `""` | |
|
||||
| nodeSelector | object | `{}` | |
|
||||
| podAnnotations | object | `{}` | Pod Annotations |
|
||||
| podLabels | object | `{}` | Pod (extra) Labels |
|
||||
| podSecurityContext | object | `{}` | |
|
||||
| priorityClassName | string | `""` | |
|
||||
| resources.limits.memory | string | `"200Mi"` | |
|
||||
| resources.requests.cpu | string | `"100m"` | |
|
||||
| resources.requests.memory | string | `"100Mi"` | |
|
||||
| securityContext | object | `{}` | |
|
||||
| serviceAccount.annotations | object | `{}` | Annotations to add to the service account |
|
||||
| serviceAccount.create | bool | `true` | Specifies whether a service account should be created |
|
||||
| serviceAccount.name | string | `""` | The name of the service account to use. If not set and create is true, a name is generated using the fullname template |
|
||||
| serviceMonitor.annotations | object | `{}` | ServiceMonitor annotations |
|
||||
| serviceMonitor.enabled | bool | `false` | Create ServiceMonitor to scrape metrics for Prometheus |
|
||||
| serviceMonitor.interval | string | `nil` | ServiceMonitor scrape interval |
|
||||
| serviceMonitor.labels | object | `{}` | Additional ServiceMonitor labels |
|
||||
| serviceMonitor.namespace | string | `nil` | Alternative namespace for ServiceMonitor resources |
|
||||
| serviceMonitor.namespaceSelector | object | `{}` | Namespace selector for ServiceMonitor resources |
|
||||
| serviceMonitor.relabelings | list | `[]` | ServiceMonitor relabel configs to apply to samples before scraping https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#relabelconfig |
|
||||
| serviceMonitor.scrapeTimeout | string | `nil` | ServiceMonitor scrape timeout in Go duration format (e.g. 15s) |
|
||||
| tolerations | list | `[]` | |
|
||||
@@ -0,0 +1,38 @@
|
||||
# Grafana rollout-operator Helm Chart
|
||||
|
||||
Helm chart for deploying [Grafana rollout-operator]({{ template "chart.homepage" . }}) to Kubernetes.
|
||||
|
||||
{{ template "chart.header" . }}
|
||||
|
||||
{{ template "chart.versionBadge" . }}{{ template "chart.typeBadge" . }}{{ template "chart.appVersionBadge" . }}
|
||||
|
||||
{{ template "chart.description" . }}
|
||||
|
||||
{{ template "chart.sourcesSection" . }}
|
||||
|
||||
{{ template "chart.requirementsSection" . }}
|
||||
|
||||
## Installation
|
||||
|
||||
This section describes various use cases for installation, upgrade and migration from different systems and versions.
|
||||
|
||||
### Preparation
|
||||
|
||||
These are the common tasks to perform before any of the use cases.
|
||||
|
||||
```bash
|
||||
# Add the repository
|
||||
helm repo add grafana https://grafana.github.io/helm-charts
|
||||
helm repo update
|
||||
```
|
||||
|
||||
### Installation of Grafana Rollout Operator
|
||||
|
||||
```bash
|
||||
helm install -n <namespace> <release> grafana/rollout-operator
|
||||
```
|
||||
|
||||
The Grafana rollout-operator should be installed in the same namespace as the statefulsets it is operating upon.
|
||||
It is not a highly available application and runs as a single pod.
|
||||
|
||||
{{ template "chart.valuesSection" . }}
|
||||
@@ -0,0 +1,10 @@
|
||||
Repo : {{ .Chart.Home }}
|
||||
|
||||
Validation:
|
||||
|
||||
Check the logs of the pod and ensure messages for reconcilliation of the statefulsets are present.
|
||||
```
|
||||
kubectl logs -n {{ .Release.Namespace }} -l {{ include "cli.labels" . }}
|
||||
```
|
||||
Example log line:
|
||||
level=debug ts=2022-04-20T13:59:52.783051541Z msg="reconciling StatefulSet" statefulset=mimir-store-gateway-zone-a
|
||||
@@ -0,0 +1,79 @@
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "rollout-operator.name" -}}
|
||||
{{- default (include "rollout-operator.chartName" .) .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "rollout-operator.fullname" -}}
|
||||
{{- if .Values.fullnameOverride }}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- $name := default (include "rollout-operator.chartName" .) .Values.nameOverride }}
|
||||
{{- if contains $name .Release.Name }}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Recalculate the chart name, because it may be sub-chart included as rollout_operator,
|
||||
and _ is not valid in resource names.
|
||||
*/}}
|
||||
{{- define "rollout-operator.chartName" -}}
|
||||
{{- print .Chart.Name | replace "_" "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "rollout-operator.chart" -}}
|
||||
{{- printf "%s-%s" (include "rollout-operator.chartName" .) .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
{{- define "rollout-operator.labels" -}}
|
||||
helm.sh/chart: {{ include "rollout-operator.chart" . }}
|
||||
{{ include "rollout-operator.selectorLabels" . }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
{{- end }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Selector labels
|
||||
*/}}
|
||||
{{- define "rollout-operator.selectorLabels" -}}
|
||||
app.kubernetes.io/name: {{ include "rollout-operator.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "rollout-operator.serviceAccountName" -}}
|
||||
{{- if .Values.serviceAccount.create }}
|
||||
{{- default (include "rollout-operator.fullname" .) .Values.serviceAccount.name }}
|
||||
{{- else }}
|
||||
{{- default "default" .Values.serviceAccount.name }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
|
||||
{{- define "cli.labels" -}}
|
||||
{{- $list := list -}}
|
||||
{{- range $k, $v := ( include "rollout-operator.selectorLabels" . | fromYaml ) -}}
|
||||
{{- $list = append $list (printf "%s=%s" $k $v) -}}
|
||||
{{- end -}}
|
||||
{{ join "," $list }}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,74 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "rollout-operator.fullname" . }}
|
||||
labels:
|
||||
{{- include "rollout-operator.labels" . | nindent 4 }}
|
||||
spec:
|
||||
replicas: 1
|
||||
minReadySeconds: {{ .Values.minReadySeconds }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "rollout-operator.selectorLabels" . | nindent 6 }}
|
||||
strategy:
|
||||
rollingUpdate:
|
||||
maxSurge: 0
|
||||
maxUnavailable: 1
|
||||
template:
|
||||
metadata:
|
||||
{{- with .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "rollout-operator.selectorLabels" . | nindent 8 }}
|
||||
{{- with .Values.podLabels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.priorityClassName }}
|
||||
priorityClassName: {{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.hostAliases }}
|
||||
hostAliases:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ include "rollout-operator.serviceAccountName" . }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||
containers:
|
||||
- name: rollout-operator
|
||||
securityContext:
|
||||
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
args:
|
||||
- -kubernetes.namespace={{ .Release.Namespace }}
|
||||
ports:
|
||||
- name: http-metrics
|
||||
containerPort: 8001
|
||||
protocol: TCP
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /ready
|
||||
port: http-metrics
|
||||
initialDelaySeconds: 5
|
||||
timeoutSeconds: 1
|
||||
resources:
|
||||
{{- toYaml .Values.resources | nindent 12 }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,28 @@
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: {{ include "rollout-operator.fullname" . }}
|
||||
rules:
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- pods
|
||||
verbs:
|
||||
- list
|
||||
- get
|
||||
- watch
|
||||
- delete
|
||||
- apiGroups:
|
||||
- apps
|
||||
resources:
|
||||
- statefulsets
|
||||
verbs:
|
||||
- list
|
||||
- get
|
||||
- watch
|
||||
- apiGroups:
|
||||
- apps
|
||||
resources:
|
||||
- statefulsets/status
|
||||
verbs:
|
||||
- update
|
||||
@@ -0,0 +1,11 @@
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: {{ include "rollout-operator.fullname" . }}
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: {{ include "rollout-operator.fullname" . }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ include "rollout-operator.serviceAccountName" . }}
|
||||
@@ -0,0 +1,18 @@
|
||||
{{- if .Values.serviceMonitor.enabled }}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ include "rollout-operator.fullname" . }}
|
||||
labels:
|
||||
{{- include "rollout-operator.labels" . | nindent 4 }}
|
||||
spec:
|
||||
type: ClusterIP
|
||||
clusterIP: None
|
||||
ports:
|
||||
- port: 8001
|
||||
targetPort: http-metrics
|
||||
protocol: TCP
|
||||
name: http-metrics
|
||||
selector:
|
||||
{{- include "rollout-operator.selectorLabels" . | nindent 4 }}
|
||||
{{- end -}}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
{{- if .Values.serviceAccount.create -}}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ include "rollout-operator.serviceAccountName" . }}
|
||||
labels:
|
||||
{{- include "rollout-operator.labels" . | nindent 4 }}
|
||||
{{- with .Values.serviceAccount.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
{{- if .Values.serviceMonitor.enabled }}
|
||||
apiVersion: monitoring.coreos.com/v1
|
||||
kind: ServiceMonitor
|
||||
metadata:
|
||||
name: {{ include "rollout-operator.fullname" . }}
|
||||
{{- with .Values.serviceMonitor.namespace }}
|
||||
namespace: {{ . }}
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "rollout-operator.labels" . | nindent 4 }}
|
||||
{{- with .Values.serviceMonitor.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.serviceMonitor.namespaceSelector }}
|
||||
namespaceSelector:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "rollout-operator.selectorLabels" . | nindent 6 }}
|
||||
endpoints:
|
||||
- port: http-metrics
|
||||
{{- with .Values.serviceMonitor.interval }}
|
||||
interval: {{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.serviceMonitor.scrapeTimeout }}
|
||||
scrapeTimeout: {{ . }}
|
||||
{{- end }}
|
||||
relabelings:
|
||||
{{- with .Values.serviceMonitor.relabelings }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
scheme: http
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,83 @@
|
||||
# Default values for rollout-operator.
|
||||
# This is a YAML-formatted file.
|
||||
# Declare variables to be passed into your templates.
|
||||
|
||||
image:
|
||||
repository: grafana/rollout-operator
|
||||
pullPolicy: IfNotPresent
|
||||
# -- Overrides the image tag whose default is the chart appVersion.
|
||||
tag: ""
|
||||
|
||||
imagePullSecrets: []
|
||||
|
||||
# -- hostAliases to add
|
||||
hostAliases: []
|
||||
# - ip: 1.2.3.4
|
||||
# hostnames:
|
||||
# - domain.tld
|
||||
|
||||
nameOverride: ""
|
||||
fullnameOverride: ""
|
||||
|
||||
serviceAccount:
|
||||
# -- Specifies whether a service account should be created
|
||||
create: true
|
||||
# -- Annotations to add to the service account
|
||||
annotations: {}
|
||||
# -- The name of the service account to use.
|
||||
# If not set and create is true, a name is generated using the fullname template
|
||||
name: ""
|
||||
|
||||
# -- Pod Annotations
|
||||
podAnnotations: {}
|
||||
|
||||
# -- Pod (extra) Labels
|
||||
podLabels: {}
|
||||
|
||||
podSecurityContext: {}
|
||||
# fsGroup: 2000
|
||||
|
||||
securityContext: {}
|
||||
# capabilities:
|
||||
# drop:
|
||||
# - ALL
|
||||
# readOnlyRootFilesystem: true
|
||||
# runAsNonRoot: true
|
||||
# runAsUser: 1000
|
||||
|
||||
resources:
|
||||
limits:
|
||||
# cpu: "1"
|
||||
memory: 200Mi
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 100Mi
|
||||
|
||||
minReadySeconds: 10
|
||||
|
||||
nodeSelector: {}
|
||||
|
||||
tolerations: []
|
||||
|
||||
affinity: {}
|
||||
|
||||
priorityClassName: ""
|
||||
|
||||
serviceMonitor:
|
||||
# -- Create ServiceMonitor to scrape metrics for Prometheus
|
||||
enabled: false
|
||||
# -- Alternative namespace for ServiceMonitor resources
|
||||
namespace: null
|
||||
# -- Namespace selector for ServiceMonitor resources
|
||||
namespaceSelector: {}
|
||||
# -- ServiceMonitor annotations
|
||||
annotations: {}
|
||||
# -- Additional ServiceMonitor labels
|
||||
labels: {}
|
||||
# -- ServiceMonitor scrape interval
|
||||
interval: null
|
||||
# -- ServiceMonitor scrape timeout in Go duration format (e.g. 15s)
|
||||
scrapeTimeout: null
|
||||
# -- ServiceMonitor relabel configs to apply to samples before scraping
|
||||
# https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
|
||||
relabelings: []
|
||||
@@ -0,0 +1,11 @@
|
||||
storage:
|
||||
trace:
|
||||
block:
|
||||
version: vParquet3
|
||||
dedicated_columns:
|
||||
- name: cluster
|
||||
type: string
|
||||
scope: resource
|
||||
- name: service.name
|
||||
type: string
|
||||
scope: resource
|
||||
@@ -0,0 +1,21 @@
|
||||
***********************************************************************
|
||||
Welcome to Grafana Tempo
|
||||
Chart version: {{ .Chart.Version }}
|
||||
Tempo version: {{ .Chart.AppVersion }}
|
||||
***********************************************************************
|
||||
|
||||
Installed components:
|
||||
* ingester
|
||||
* distributor
|
||||
* querier
|
||||
* query-frontend
|
||||
{{- if .Values.enterpriseFederationFrontend.enabled }}
|
||||
* federation-frontend
|
||||
{{- end }}
|
||||
* compactor
|
||||
{{- if .Values.memcached.enabled }}
|
||||
* memcached
|
||||
{{- end }}
|
||||
{{- if .Values.gateway.enabled }}
|
||||
* gateway
|
||||
{{- end }}
|
||||
@@ -0,0 +1,300 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "tempo.name" -}}
|
||||
{{- default "tempo" .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "tempo.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default "tempo" .Values.nameOverride -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Docker image selector for Tempo. Hierachy based on global, component, and tempo values.
|
||||
*/}}
|
||||
{{- define "tempo.tempoImage" -}}
|
||||
{{- $registry := coalesce .global.registry .component.registry .tempo.registry -}}
|
||||
{{- $repository := coalesce .component.repository .tempo.repository -}}
|
||||
{{- $tag := coalesce .component.tag .tempo.tag .defaultVersion | toString -}}
|
||||
{{- printf "%s/%s:%s" $registry $repository $tag -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Optional list of imagePullSecrets for Tempo docker images
|
||||
*/}}
|
||||
{{- define "tempo.imagePullSecrets" -}}
|
||||
{{- $imagePullSecrets := coalesce .global.pullSecrets .component.pullSecrets .tempo.pullSecrets -}}
|
||||
{{- if $imagePullSecrets -}}
|
||||
imagePullSecrets:
|
||||
{{- range $imagePullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{ end }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "tempo.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Calculate image name based on whether enterprise features are requested. Fallback to hierarchy handling in `tempo.tempoImage`.
|
||||
*/}}
|
||||
{{- define "tempo.imageReference" -}}
|
||||
{{ $tempo := "" }}
|
||||
{{- if .ctx.Values.enterprise.enabled -}}
|
||||
{{ $tempo = merge .ctx.Values.enterprise.image .ctx.Values.tempo.image }}
|
||||
{{- else -}}
|
||||
{{ $tempo = .ctx.Values.tempo.image }}
|
||||
{{- end -}}
|
||||
{{- $componentSection := include "tempo.componentSectionFromName" . }}
|
||||
{{- if not (hasKey .ctx.Values $componentSection) }}
|
||||
{{- print "Component section " $componentSection " does not exist" | fail }}
|
||||
{{- end }}
|
||||
{{- $component := (index .ctx.Values $componentSection).image | default dict }}
|
||||
{{- $dict := dict "tempo" $tempo "component" $component "global" .ctx.Values.global.image "defaultVersion" .ctx.Chart.AppVersion -}}
|
||||
{{- include "tempo.tempoImage" $dict -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Simple resource labels
|
||||
*/}}
|
||||
{{- define "tempo.labels" -}}
|
||||
helm.sh/chart: {{ include "tempo.chart" .ctx }}
|
||||
app.kubernetes.io/name: {{ include "tempo.name" .ctx }}
|
||||
app.kubernetes.io/instance: {{ .ctx.Release.Name }}
|
||||
{{- if .component }}
|
||||
app.kubernetes.io/component: {{ .component }}
|
||||
{{- end }}
|
||||
{{- if .memberlist }}
|
||||
app.kubernetes.io/part-of: memberlist
|
||||
{{- end }}
|
||||
{{- if .ctx.Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .ctx.Chart.AppVersion | quote }}
|
||||
{{- end }}
|
||||
app.kubernetes.io/managed-by: {{ .ctx.Release.Service }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Simple service selector labels
|
||||
*/}}
|
||||
{{- define "tempo.selectorLabels" -}}
|
||||
app.kubernetes.io/name: {{ include "tempo.name" .ctx }}
|
||||
app.kubernetes.io/instance: {{ .ctx.Release.Name }}
|
||||
{{- if .component }}
|
||||
app.kubernetes.io/component: {{ .component }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "tempo.serviceAccountName" -}}
|
||||
{{- if .Values.serviceAccount.create -}}
|
||||
{{ default (include "tempo.fullname" .) .Values.serviceAccount.name }}
|
||||
{{- else -}}
|
||||
{{ default "default" .Values.serviceAccount.name }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return the appropriate apiVersion for ingress.
|
||||
*/}}
|
||||
{{- define "tempo.ingress.apiVersion" -}}
|
||||
{{- if and (.Capabilities.APIVersions.Has "networking.k8s.io/v1") (semverCompare ">= 1.19-0" .Capabilities.KubeVersion.Version) -}}
|
||||
{{- print "networking.k8s.io/v1" -}}
|
||||
{{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" -}}
|
||||
{{- print "networking.k8s.io/v1beta1" -}}
|
||||
{{- else -}}
|
||||
{{- print "extensions/v1beta1" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return if ingress is stable.
|
||||
*/}}
|
||||
{{- define "tempo.ingress.isStable" -}}
|
||||
{{- eq (include "tempo.ingress.apiVersion" .) "networking.k8s.io/v1" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return if ingress supports ingressClassName.
|
||||
*/}}
|
||||
{{- define "tempo.ingress.supportsIngressClassName" -}}
|
||||
{{- or (eq (include "tempo.ingress.isStable" .) "true") (and (eq (include "tempo.ingress.apiVersion" .) "networking.k8s.io/v1beta1") (semverCompare ">= 1.18-0" .Capabilities.KubeVersion.Version)) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return if ingress supports pathType.
|
||||
*/}}
|
||||
{{- define "tempo.ingress.supportsPathType" -}}
|
||||
{{- or (eq (include "tempo.ingress.isStable" .) "true") (and (eq (include "tempo.ingress.apiVersion" .) "networking.k8s.io/v1beta1") (semverCompare ">= 1.18-0" .Capabilities.KubeVersion.Version)) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return the appropriate apiVersion for PodDisruptionBudget.
|
||||
*/}}
|
||||
{{- define "tempo.pdb.apiVersion" -}}
|
||||
{{- if and (.Capabilities.APIVersions.Has "policy/v1") (semverCompare ">=1.21-0" .Capabilities.KubeVersion.Version) -}}
|
||||
{{- print "policy/v1" -}}
|
||||
{{- else -}}
|
||||
{{- print "policy/v1beta1" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return the appropriate apiVersion for HorizontalPodAutoscaler.
|
||||
*/}}
|
||||
{{- define "tempo.hpa.apiVersion" -}}
|
||||
{{- if and (.Capabilities.APIVersions.Has "autoscaling/v2") (semverCompare ">=1.23-0" .Capabilities.KubeVersion.Version) -}}
|
||||
{{- print "autoscaling/v2" -}}
|
||||
{{- else -}}
|
||||
{{- print "autoscaling/v2beta1" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Resource name template
|
||||
*/}}
|
||||
{{- define "tempo.resourceName" -}}
|
||||
{{ include "tempo.fullname" .ctx }}{{- if .component -}}-{{ .component }}{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Calculate the config from structured and unstructured text input
|
||||
*/}}
|
||||
{{- define "tempo.calculatedConfig" -}}
|
||||
{{ tpl (mergeOverwrite (tpl .Values.config . | fromYaml) .Values.tempo.structuredConfig | toYaml) . }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Renders the overrides config
|
||||
*/}}
|
||||
{{- define "tempo.overridesConfig" -}}
|
||||
overrides:
|
||||
{{ toYaml .Values.overrides | indent 2 }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
The volume to mount for tempo configuration
|
||||
*/}}
|
||||
{{- define "tempo.configVolume" -}}
|
||||
{{- if eq .Values.configStorageType "Secret" -}}
|
||||
secret:
|
||||
secretName: {{ tpl .Values.externalConfigSecretName . }}
|
||||
{{- else if eq .Values.configStorageType "ConfigMap" -}}
|
||||
configMap:
|
||||
name: {{ tpl .Values.externalConfigSecretName . }}
|
||||
items:
|
||||
- key: "tempo.yaml"
|
||||
path: "tempo.yaml"
|
||||
{{- if .Values.queryFrontend.query.enabled }}
|
||||
- key: "tempo-query.yaml"
|
||||
path: "tempo-query.yaml"
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
The volume to mount for tempo runtime configuration
|
||||
*/}}
|
||||
{{- define "tempo.runtimeVolume" -}}
|
||||
configMap:
|
||||
name: {{ tpl .Values.externalRuntimeConfigName . }}
|
||||
items:
|
||||
- key: "overrides.yaml"
|
||||
path: "overrides.yaml"
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Internal servers http listen port - derived from Loki default
|
||||
*/}}
|
||||
{{- define "tempo.serverHttpListenPort" -}}
|
||||
{{ (((.Values.tempo).structuredConfig).server).http_listen_port | default "3100" }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Internal servers grpc listen port - derived from Tempo default
|
||||
*/}}
|
||||
{{- define "tempo.serverGrpcListenPort" -}}
|
||||
{{ (((.Values.tempo).structuredConfig).server).grpc_listen_port | default "9095" }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Memberlist bind port
|
||||
*/}}
|
||||
{{- define "tempo.memberlistBindPort" -}}
|
||||
{{ (((.Values.tempo).structuredConfig).memberlist).bind_port | default "7946" }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Calculate values.yaml section name from component name
|
||||
Expects the component name in .component on the passed context
|
||||
*/}}
|
||||
{{- define "tempo.componentSectionFromName" -}}
|
||||
{{- .component | replace "-" "_" | camelcase | untitle -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
POD labels
|
||||
*/}}
|
||||
{{- define "tempo.podLabels" -}}
|
||||
helm.sh/chart: {{ include "tempo.chart" .ctx }}
|
||||
app.kubernetes.io/name: {{ include "tempo.name" .ctx }}
|
||||
app.kubernetes.io/instance: {{ .ctx.Release.Name }}
|
||||
app.kubernetes.io/version: {{ .ctx.Chart.AppVersion | quote }}
|
||||
app.kubernetes.io/managed-by: {{ .ctx.Release.Service }}
|
||||
{{- if .component }}
|
||||
app.kubernetes.io/component: {{ .component }}
|
||||
{{- end }}
|
||||
{{- if .memberlist }}
|
||||
app.kubernetes.io/part-of: memberlist
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
POD annotations
|
||||
*/}}
|
||||
{{- define "tempo.podAnnotations" -}}
|
||||
{{- if .ctx.Values.useExternalConfig }}
|
||||
checksum/config: {{ .ctx.Values.externalConfigVersion }}
|
||||
{{- else -}}
|
||||
checksum/config: {{ include (print .ctx.Template.BasePath "/configmap-tempo.yaml") .ctx | sha256sum }}
|
||||
{{- end }}
|
||||
{{- with .ctx.Values.global.podAnnotations }}
|
||||
{{ toYaml . }}
|
||||
{{- end }}
|
||||
{{- if .component }}
|
||||
{{- $componentSection := include "tempo.componentSectionFromName" . }}
|
||||
{{- if not (hasKey .ctx.Values $componentSection) }}
|
||||
{{- print "Component section " $componentSection " does not exist" | fail }}
|
||||
{{- end }}
|
||||
{{- with (index .ctx.Values $componentSection).podAnnotations }}
|
||||
{{ toYaml . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Cluster name that shows up in dashboard metrics
|
||||
*/}}
|
||||
{{- define "tempo.clusterName" -}}
|
||||
{{ (include "tempo.calculatedConfig" . | fromYaml).cluster_name | default .Release.Name }}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,7 @@
|
||||
{{/*
|
||||
adminApi imagePullSecrets
|
||||
*/}}
|
||||
{{- define "tempo.adminApiImagePullSecrets" -}}
|
||||
{{- $dict := dict "tempo" .Values.tempo.image "component" .Values.adminApi.image "global" .Values.global.image -}}
|
||||
{{- include "tempo.imagePullSecrets" $dict -}}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,131 @@
|
||||
{{- if .Values.enterprise.enabled -}}
|
||||
{{ $dict := dict "ctx" . "component" "admin-api" "memberlist" true }}
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
annotations:
|
||||
{{- toYaml .Values.adminApi.annotations | nindent 4 }}
|
||||
labels:
|
||||
{{- include "tempo.labels" $dict | nindent 4 }}
|
||||
name: {{ include "tempo.resourceName" $dict }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
spec:
|
||||
replicas: {{ .Values.adminApi.replicas }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "tempo.selectorLabels" $dict | nindent 6 }}
|
||||
strategy:
|
||||
{{- toYaml .Values.adminApi.strategy | nindent 4 }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "tempo.podLabels" $dict | nindent 8 }}
|
||||
{{- with .Values.adminApi.podLabels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
{{- include "tempo.podAnnotations" $dict | nindent 8 }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
spec:
|
||||
serviceAccountName: {{ template "tempo.serviceAccountName" . }}
|
||||
{{- if .Values.adminApi.priorityClassName }}
|
||||
priorityClassName: {{ .Values.adminApi.priorityClassName }}
|
||||
{{- end }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.adminApi.securityContext | nindent 8 }}
|
||||
initContainers:
|
||||
{{- with .Values.adminApi.initContainers }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- include "tempo.adminApiImagePullSecrets" . | nindent 6 -}}
|
||||
{{- with .Values.adminApi.hostAliases }}
|
||||
hostAliases:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: admin-api
|
||||
image: "{{ include "tempo.imageReference" $dict }}"
|
||||
imagePullPolicy: {{ .Values.tempo.image.pullPolicy }}
|
||||
args:
|
||||
- "-target=admin-api"
|
||||
- "-config.expand-env=true"
|
||||
- "-config.file=/conf/tempo.yaml"
|
||||
{{- range $key, $value := .Values.adminApi.extraArgs }}
|
||||
- "-{{ $key }}={{ $value }}"
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- mountPath: /conf
|
||||
name: config
|
||||
- name: license
|
||||
mountPath: /license
|
||||
- name: storage
|
||||
mountPath: "/data"
|
||||
subPath: {{ .Values.adminApi.persistence.subPath }}
|
||||
{{- if .Values.adminApi.extraVolumeMounts }}
|
||||
{{ toYaml .Values.adminApi.extraVolumeMounts | nindent 12}}
|
||||
{{- end }}
|
||||
ports:
|
||||
- name: http-metrics
|
||||
containerPort: {{ include "tempo.serverHttpListenPort" . }}
|
||||
protocol: TCP
|
||||
- name: grpc
|
||||
containerPort: {{ include "tempo.serverGrpcListenPort" . }}
|
||||
protocol: TCP
|
||||
- name: memberlist
|
||||
containerPort: {{ include "tempo.memberlistBindPort" . }}
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
{{- toYaml .Values.adminApi.livenessProbe | nindent 12 }}
|
||||
readinessProbe:
|
||||
{{- toYaml .Values.adminApi.readinessProbe | nindent 12 }}
|
||||
resources:
|
||||
{{- toYaml .Values.adminApi.resources | nindent 12 }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.adminApi.containerSecurityContext | nindent 12 }}
|
||||
env:
|
||||
{{- with .Values.global.extraEnv }}
|
||||
{{ toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.adminApi.env }}
|
||||
{{ toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
envFrom:
|
||||
{{- with .Values.global.extraEnvFrom }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.adminApi.extraEnvFrom }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.adminApi.extraContainers }}
|
||||
{{ toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
nodeSelector:
|
||||
{{- toYaml .Values.adminApi.nodeSelector | nindent 8 }}
|
||||
{{- if semverCompare ">= 1.19-0" .Capabilities.KubeVersion.Version }}
|
||||
{{- with .Values.adminApi.topologySpreadConstraints }}
|
||||
topologySpreadConstraints:
|
||||
{{- tpl . $ | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with .Values.adminApi.affinity }}
|
||||
affinity:
|
||||
{{- tpl . $ | nindent 8 }}
|
||||
{{- end }}
|
||||
tolerations:
|
||||
{{- toYaml .Values.adminApi.tolerations | nindent 8 }}
|
||||
terminationGracePeriodSeconds: {{ .Values.adminApi.terminationGracePeriodSeconds }}
|
||||
volumes:
|
||||
- name: config
|
||||
{{- include "tempo.configVolume" . | nindent 10 }}
|
||||
- name: runtime-config
|
||||
configMap:
|
||||
name: {{ template "tempo.fullname" . }}-runtime
|
||||
{{- if .Values.adminApi.extraVolumes }}
|
||||
{{ toYaml .Values.adminApi.extraVolumes | nindent 8}}
|
||||
{{- end }}
|
||||
- name: license
|
||||
secret:
|
||||
secretName: {{ tpl .Values.license.secretName . }}
|
||||
- name: storage
|
||||
emptyDir: {}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,3 @@
|
||||
{{- if .Values.enterprise.enabled -}}
|
||||
{{- include "tempo.lib.podDisruptionBudget" (dict "ctx" $ "component" "admin-api" "memberlist" true) }}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,3 @@
|
||||
{{- if .Values.enterprise.enabled -}}
|
||||
{{- include "tempo.lib.serviceMonitor" (dict "ctx" . "component" "admin-api" "memberlist" true) }}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,27 @@
|
||||
{{- if .Values.enterprise.enabled -}}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ include "tempo.resourceName" (dict "ctx" . "component" "admin-api") }}
|
||||
labels:
|
||||
{{- include "tempo.labels" (dict "ctx" . "component" "admin-api" "memberlist" true) | nindent 4 }}
|
||||
{{- with .Values.adminApi.service.labels }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
{{- toYaml .Values.adminApi.service.annotations | nindent 4 }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: {{ include "tempo.serverHttpListenPort" . }}
|
||||
protocol: TCP
|
||||
name: http-metrics
|
||||
targetPort: http-metrics
|
||||
- port: {{ include "tempo.serverGrpcListenPort" . }}
|
||||
protocol: TCP
|
||||
name: grpc
|
||||
targetPort: grpc
|
||||
selector:
|
||||
{{- include "tempo.selectorLabels" (dict "ctx" . "component" "admin-api" "memberlist" true) | nindent 4 }}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,7 @@
|
||||
{{/*
|
||||
compactor imagePullSecrets
|
||||
*/}}
|
||||
{{- define "tempo.compactorImagePullSecrets" -}}
|
||||
{{- $dict := dict "tempo" .Values.tempo.image "component" .Values.compactor.image "global" .Values.global.image -}}
|
||||
{{- include "tempo.imagePullSecrets" $dict -}}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,140 @@
|
||||
{{ $dict := dict "ctx" . "component" "compactor" "memberlist" true }}
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ template "tempo.resourceName" $dict }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "tempo.labels" $dict | nindent 4 }}
|
||||
{{- with .Values.compactor.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
minReadySeconds: 10
|
||||
replicas: {{ .Values.compactor.replicas }}
|
||||
revisionHistoryLimit: 10
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "tempo.selectorLabels" $dict | nindent 6 }}
|
||||
strategy:
|
||||
rollingUpdate:
|
||||
maxSurge: 0
|
||||
maxUnavailable: 1
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "tempo.podLabels" $dict | nindent 8 }}
|
||||
{{- with .Values.tempo.podLabels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.compactor.podLabels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
checksum/config: {{ include (print $.Template.BasePath "/configmap-tempo.yaml") . | sha256sum }}
|
||||
{{- with .Values.tempo.podAnnotations }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.compactor.podAnnotations }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if or (.Values.compactor.priorityClassName) (.Values.global.priorityClassName) }}
|
||||
priorityClassName: {{ default .Values.compactor.priorityClassName .Values.global.priorityClassName }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ include "tempo.serviceAccountName" . }}
|
||||
{{- with .Values.tempo.podSecurityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
enableServiceLinks: false
|
||||
{{- include "tempo.compactorImagePullSecrets" . | nindent 6 -}}
|
||||
{{- with .Values.compactor.hostAliases }}
|
||||
hostAliases:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- args:
|
||||
- -target=compactor
|
||||
- -config.file=/conf/tempo.yaml
|
||||
- -mem-ballast-size-mbs=1024
|
||||
{{- with .Values.compactor.extraArgs }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
image: {{ include "tempo.imageReference" $dict }}
|
||||
imagePullPolicy: {{ .Values.tempo.image.pullPolicy }}
|
||||
name: compactor
|
||||
ports:
|
||||
- containerPort: 3100
|
||||
name: http-metrics
|
||||
- containerPort: {{ include "tempo.memberlistBindPort" . }}
|
||||
name: http-memberlist
|
||||
{{- with .Values.compactor.extraEnv }}
|
||||
env:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.compactor.extraEnvFrom }}
|
||||
envFrom:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
resources:
|
||||
{{- toYaml .Values.compactor.resources | nindent 12 }}
|
||||
{{- with .Values.tempo.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- mountPath: /conf
|
||||
name: config
|
||||
- mountPath: /runtime-config
|
||||
name: runtime-config
|
||||
- mountPath: /var/tempo
|
||||
name: tempo-compactor-store
|
||||
{{- if .Values.enterprise.enabled }}
|
||||
- name: license
|
||||
mountPath: /license
|
||||
{{- end }}
|
||||
{{- with .Values.compactor.extraVolumeMounts }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
terminationGracePeriodSeconds: {{ .Values.compactor.terminationGracePeriodSeconds }}
|
||||
{{- if semverCompare ">= 1.19-0" .Capabilities.KubeVersion.Version }}
|
||||
{{- with .Values.compactor.topologySpreadConstraints }}
|
||||
topologySpreadConstraints:
|
||||
{{- tpl . $ | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with .Values.compactor.affinity }}
|
||||
affinity:
|
||||
{{- tpl . $ | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.compactor.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.compactor.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.compactor.dnsConfigOverides.enabled }}
|
||||
{{- with .Values.compactor.dnsConfigOverides.dnsConfig }}
|
||||
dnsConfig:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: config
|
||||
{{- include "tempo.configVolume" . | nindent 10 }}
|
||||
- name: runtime-config
|
||||
{{- include "tempo.runtimeVolume" . | nindent 10 }}
|
||||
- name: tempo-compactor-store
|
||||
emptyDir: {}
|
||||
{{- if .Values.enterprise.enabled }}
|
||||
- name: license
|
||||
secret:
|
||||
secretName: {{ tpl .Values.license.secretName . }}
|
||||
{{- end }}
|
||||
{{- with .Values.compactor.extraVolumes }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
{{- if gt (int .Values.compactor.replicas) 1 }}
|
||||
{{ $dict := dict "ctx" . "component" "compactor" "memberlist" true }}
|
||||
apiVersion: {{ include "tempo.pdb.apiVersion" . }}
|
||||
kind: PodDisruptionBudget
|
||||
metadata:
|
||||
name: {{ include "tempo.resourceName" $dict }}
|
||||
labels:
|
||||
{{- include "tempo.labels" $dict | nindent 4 }}
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "tempo.selectorLabels" $dict | nindent 6 }}
|
||||
maxUnavailable: 1
|
||||
{{- end }}
|
||||
@@ -0,0 +1,19 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ template "tempo.resourceName" (dict "ctx" . "component" "compactor") }}
|
||||
labels:
|
||||
{{- include "tempo.labels" (dict "ctx" . "component" "compactor") | nindent 4 }}
|
||||
{{- with .Values.compactor.service.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- name: http-metrics
|
||||
port: 3100
|
||||
targetPort: 3100
|
||||
protocol: TCP
|
||||
selector:
|
||||
{{- include "tempo.selectorLabels" (dict "ctx" . "component" "compactor") | nindent 4 }}
|
||||
@@ -0,0 +1 @@
|
||||
{{- include "tempo.lib.serviceMonitor" (dict "ctx" $ "component" "compactor" "memberlist" true) }}
|
||||
@@ -0,0 +1,12 @@
|
||||
{{- if not .Values.useExternalConfig }}
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ tpl .Values.externalRuntimeConfigName . }}
|
||||
labels:
|
||||
{{- include "tempo.labels" (dict "ctx" .) | nindent 4 }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
data:
|
||||
overrides.yaml: |
|
||||
{{ include "tempo.overridesConfig" . | nindent 4 }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,24 @@
|
||||
{{- if not .Values.useExternalConfig }}
|
||||
apiVersion: v1
|
||||
{{- if eq .Values.configStorageType "Secret" }}
|
||||
kind: Secret
|
||||
{{- else }}
|
||||
kind: ConfigMap
|
||||
{{- end }}
|
||||
metadata:
|
||||
name: {{ tpl .Values.externalConfigSecretName . }}
|
||||
labels:
|
||||
{{- include "tempo.labels" (dict "ctx" .) | nindent 4 }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
{{- if eq .Values.configStorageType "Secret" }}
|
||||
data:
|
||||
tempo-query.yaml: {{ tpl .Values.queryFrontend.query.config . | b64enc }}
|
||||
tempo.yaml: {{ include "tempo.calculatedConfig" . | b64enc }}
|
||||
{{- else }}
|
||||
data:
|
||||
tempo-query.yaml: |
|
||||
{{- tpl .Values.queryFrontend.query.config . | nindent 4 }}
|
||||
tempo.yaml: |
|
||||
{{ include "tempo.calculatedConfig" . | nindent 4 }}
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,7 @@
|
||||
{{/*
|
||||
distributor imagePullSecrets
|
||||
*/}}
|
||||
{{- define "tempo.distributorImagePullSecrets" -}}
|
||||
{{- $dict := dict "tempo" .Values.tempo.image "component" .Values.distributor.image "global" .Values.global.image -}}
|
||||
{{- include "tempo.imagePullSecrets" $dict -}}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,175 @@
|
||||
{{ $dict := dict "ctx" . "component" "distributor" "memberlist" true }}
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "tempo.resourceName" $dict }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "tempo.labels" $dict | nindent 4 }}
|
||||
{{- with .Values.distributor.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
minReadySeconds: 10
|
||||
{{- if not .Values.distributor.autoscaling.enabled }}
|
||||
replicas: {{ .Values.distributor.replicas }}
|
||||
{{- end }}
|
||||
revisionHistoryLimit: 10
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "tempo.selectorLabels" $dict | nindent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "tempo.podLabels" $dict | nindent 8 }}
|
||||
{{- with .Values.tempo.podLabels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.distributor.podLabels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
checksum/config: {{ include (print $.Template.BasePath "/configmap-tempo.yaml") . | sha256sum }}
|
||||
{{- with .Values.tempo.podAnnotations }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.distributor.podAnnotations }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if or (.Values.distributor.priorityClassName) (.Values.global.priorityClassName) }}
|
||||
priorityClassName: {{ default .Values.distributor.priorityClassName .Values.global.priorityClassName }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ include "tempo.serviceAccountName" . }}
|
||||
{{- with .Values.tempo.podSecurityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
enableServiceLinks: false
|
||||
{{- include "tempo.distributorImagePullSecrets" . | nindent 6 -}}
|
||||
{{- with .Values.distributor.hostAliases }}
|
||||
hostAliases:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- args:
|
||||
- -target=distributor
|
||||
- -config.file=/conf/tempo.yaml
|
||||
- -mem-ballast-size-mbs=1024
|
||||
{{- with .Values.distributor.extraArgs }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
image: {{ include "tempo.imageReference" $dict }}
|
||||
imagePullPolicy: {{ .Values.tempo.image.pullPolicy }}
|
||||
name: distributor
|
||||
ports:
|
||||
- containerPort: {{ include "tempo.memberlistBindPort" . }}
|
||||
name: http-memberlist
|
||||
protocol: TCP
|
||||
- containerPort: 3100
|
||||
name: http-metrics
|
||||
{{- if .Values.traces.jaeger.thriftCompact.enabled }}
|
||||
- containerPort: 6831
|
||||
name: jaeger-compact
|
||||
protocol: UDP
|
||||
{{- end }}
|
||||
{{- if .Values.traces.jaeger.thriftBinary.enabled }}
|
||||
- containerPort: 6832
|
||||
name: jaeger-binary
|
||||
protocol: UDP
|
||||
{{- end }}
|
||||
{{- if .Values.traces.jaeger.thriftHttp.enabled }}
|
||||
- containerPort: 14268
|
||||
name: jaeger-http
|
||||
protocol: TCP
|
||||
{{- end }}
|
||||
{{- if .Values.traces.jaeger.grpc.enabled }}
|
||||
- containerPort: 14250
|
||||
name: grpc-jaeger
|
||||
protocol: TCP
|
||||
{{- end }}
|
||||
{{- if .Values.traces.zipkin.enabled }}
|
||||
- containerPort: 9411
|
||||
name: zipkin
|
||||
protocol: TCP
|
||||
{{- end }}
|
||||
{{- if .Values.traces.otlp.http.enabled }}
|
||||
- containerPort: 4318
|
||||
name: otlp-http
|
||||
protocol: TCP
|
||||
{{- end }}
|
||||
{{- if .Values.traces.otlp.grpc.enabled }}
|
||||
- containerPort: 4317
|
||||
name: grpc-otlp
|
||||
protocol: TCP
|
||||
{{- end }}
|
||||
{{- if .Values.traces.opencensus.enabled }}
|
||||
- containerPort: 55678
|
||||
name: opencensus
|
||||
protocol: TCP
|
||||
{{- end }}
|
||||
{{- with .Values.distributor.extraEnv }}
|
||||
env:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.distributor.extraEnvFrom }}
|
||||
envFrom:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
readinessProbe:
|
||||
{{- toYaml .Values.tempo.readinessProbe | nindent 12 }}
|
||||
resources:
|
||||
{{- toYaml .Values.distributor.resources | nindent 12 }}
|
||||
{{- with .Values.tempo.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- mountPath: /conf
|
||||
name: config
|
||||
- mountPath: /runtime-config
|
||||
name: runtime-config
|
||||
- mountPath: /var/tempo
|
||||
name: tempo-distributor-store
|
||||
{{- if .Values.enterprise.enabled }}
|
||||
- name: license
|
||||
mountPath: /license
|
||||
{{- end }}
|
||||
{{- with .Values.distributor.extraVolumeMounts }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
terminationGracePeriodSeconds: {{ .Values.distributor.terminationGracePeriodSeconds }}
|
||||
{{- if semverCompare ">= 1.19-0" .Capabilities.KubeVersion.Version }}
|
||||
{{- with .Values.distributor.topologySpreadConstraints }}
|
||||
topologySpreadConstraints:
|
||||
{{- tpl . $ | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with .Values.distributor.affinity }}
|
||||
affinity:
|
||||
{{- tpl . $ | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.distributor.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.distributor.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: config
|
||||
{{- include "tempo.configVolume" . | nindent 10 }}
|
||||
- name: runtime-config
|
||||
{{- include "tempo.runtimeVolume" . | nindent 10 }}
|
||||
- name: tempo-distributor-store
|
||||
emptyDir: {}
|
||||
{{- if .Values.enterprise.enabled }}
|
||||
- name: license
|
||||
secret:
|
||||
secretName: {{ tpl .Values.license.secretName . }}
|
||||
{{- end }}
|
||||
{{- with .Values.distributor.extraVolumes }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,45 @@
|
||||
{{- if .Values.distributor.autoscaling.enabled }}
|
||||
{{- $apiVersion := include "tempo.hpa.apiVersion" . -}}
|
||||
apiVersion: {{ $apiVersion }}
|
||||
kind: HorizontalPodAutoscaler
|
||||
metadata:
|
||||
name: {{ include "tempo.resourceName" (dict "ctx" . "component" "distributor") }}
|
||||
labels:
|
||||
{{- include "tempo.labels" (dict "ctx" . "component" "distributor") | nindent 4 }}
|
||||
spec:
|
||||
scaleTargetRef:
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
name: {{ include "tempo.resourceName" (dict "ctx" . "component" "distributor") }}
|
||||
minReplicas: {{ .Values.distributor.autoscaling.minReplicas }}
|
||||
maxReplicas: {{ .Values.distributor.autoscaling.maxReplicas }}
|
||||
{{- with .Values.distributor.autoscaling.behavior }}
|
||||
behavior:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
metrics:
|
||||
{{- with .Values.distributor.autoscaling.targetMemoryUtilizationPercentage }}
|
||||
- type: Resource
|
||||
resource:
|
||||
name: memory
|
||||
{{- if (eq $apiVersion "autoscaling/v2") }}
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: {{ . }}
|
||||
{{- else }}
|
||||
targetAverageUtilization: {{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with .Values.distributor.autoscaling.targetCPUUtilizationPercentage }}
|
||||
- type: Resource
|
||||
resource:
|
||||
name: cpu
|
||||
{{- if (eq $apiVersion "autoscaling/v2") }}
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: {{ . }}
|
||||
{{- else }}
|
||||
targetAverageUtilization: {{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
{{- if gt (int .Values.distributor.replicas) 1 }}
|
||||
{{ $dict := dict "ctx" . "component" "distributor" "memberlist" true }}
|
||||
apiVersion: {{ include "tempo.pdb.apiVersion" . }}
|
||||
kind: PodDisruptionBudget
|
||||
metadata:
|
||||
name: {{ include "tempo.resourceName" $dict }}
|
||||
labels:
|
||||
{{- include "tempo.labels" $dict | nindent 4 }}
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "tempo.selectorLabels" $dict | nindent 6 }}
|
||||
maxUnavailable: 1
|
||||
{{- end }}
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
{{- $dict := dict "ctx" . "component" "distributor" }}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ include "tempo.resourceName" $dict }}-discovery
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "tempo.labels" $dict | nindent 4 }}
|
||||
{{- with .Values.distributor.serviceDiscovery.labels }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
prometheus.io/service-monitor: "false"
|
||||
{{- with .Values.distributor.serviceDiscovery.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
type: ClusterIP
|
||||
clusterIP: None
|
||||
ports:
|
||||
- name: http-metrics
|
||||
port: 3100
|
||||
targetPort: http-metrics
|
||||
{{- if .Values.traces.jaeger.thriftCompact.enabled }}
|
||||
- name: distributor-jaeger-thrift-compact
|
||||
port: 6831
|
||||
protocol: UDP
|
||||
targetPort: jaeger-compact
|
||||
{{- end }}
|
||||
{{- if .Values.traces.jaeger.thriftBinary.enabled }}
|
||||
- name: distributor-jaeger-thrift-binary
|
||||
port: 6832
|
||||
protocol: UDP
|
||||
targetPort: jaeger-binary
|
||||
{{- end }}
|
||||
{{- if .Values.traces.jaeger.thriftHttp.enabled }}
|
||||
- name: distributor-jaeger-thrift-http
|
||||
port: 14268
|
||||
protocol: TCP
|
||||
targetPort: jaeger-http
|
||||
{{- end }}
|
||||
{{- if .Values.traces.jaeger.grpc.enabled }}
|
||||
- name: grpc-distributor-jaeger
|
||||
port: 14250
|
||||
protocol: TCP
|
||||
targetPort: grpc-jaeger
|
||||
{{- if .Values.distributor.appProtocol.grpc }}
|
||||
appProtocol: {{ .Values.distributor.appProtocol.grpc }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.traces.zipkin.enabled }}
|
||||
- name: distributor-zipkin
|
||||
port: 9411
|
||||
protocol: TCP
|
||||
targetPort: zipkin
|
||||
{{- end }}
|
||||
{{- if .Values.traces.otlp.http.enabled }}
|
||||
- name: distributor-otlp-http
|
||||
port: 4318
|
||||
protocol: TCP
|
||||
targetPort: otlp-http
|
||||
{{- end }}
|
||||
{{- if .Values.traces.otlp.grpc.enabled }}
|
||||
- name: grpc-distributor-otlp
|
||||
port: 4317
|
||||
protocol: TCP
|
||||
targetPort: grpc-otlp
|
||||
{{- if .Values.distributor.appProtocol.grpc }}
|
||||
appProtocol: {{ .Values.distributor.appProtocol.grpc }}
|
||||
{{- end }}
|
||||
- name: distributor-otlp-legacy
|
||||
port: 55680
|
||||
protocol: TCP
|
||||
targetPort: grpc-otlp
|
||||
{{- if .Values.distributor.appProtocol.grpc }}
|
||||
appProtocol: {{ .Values.distributor.appProtocol.grpc }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.traces.opencensus.enabled }}
|
||||
- name: distributor-opencensus
|
||||
port: 55678
|
||||
protocol: TCP
|
||||
targetPort: opencensus
|
||||
{{- end }}
|
||||
selector:
|
||||
{{- include "tempo.selectorLabels" $dict | nindent 4 }}
|
||||
@@ -0,0 +1,102 @@
|
||||
{{- $dict := dict "ctx" . "component" "distributor" }}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ include "tempo.resourceName" $dict }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "tempo.labels" $dict | nindent 4 }}
|
||||
{{- with .Values.distributor.service.labels }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- with .Values.distributor.service.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
type: {{ .Values.distributor.service.type }}
|
||||
ports:
|
||||
- name: http-metrics
|
||||
port: 3100
|
||||
targetPort: http-metrics
|
||||
- name: grpc
|
||||
port: 9095
|
||||
protocol: TCP
|
||||
targetPort: 9095
|
||||
{{- if .Values.distributor.appProtocol.grpc }}
|
||||
appProtocol: {{ .Values.distributor.appProtocol.grpc }}
|
||||
{{- end }}
|
||||
{{- if .Values.traces.jaeger.thriftCompact.enabled }}
|
||||
- name: distributor-jaeger-thrift-compact
|
||||
port: 6831
|
||||
protocol: UDP
|
||||
targetPort: jaeger-compact
|
||||
{{- end }}
|
||||
{{- if .Values.traces.jaeger.thriftBinary.enabled }}
|
||||
- name: distributor-jaeger-thrift-binary
|
||||
port: 6832
|
||||
protocol: UDP
|
||||
targetPort: jaeger-binary
|
||||
{{- end }}
|
||||
{{- if .Values.traces.jaeger.thriftHttp.enabled }}
|
||||
- name: distributor-jaeger-thrift-http
|
||||
port: 14268
|
||||
protocol: TCP
|
||||
targetPort: jaeger-http
|
||||
{{- end }}
|
||||
{{- if .Values.traces.jaeger.grpc.enabled }}
|
||||
- name: grpc-distributor-jaeger
|
||||
port: 14250
|
||||
protocol: TCP
|
||||
targetPort: grpc-jaeger
|
||||
{{- if .Values.distributor.appProtocol.grpc }}
|
||||
appProtocol: {{ .Values.distributor.appProtocol.grpc }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.traces.zipkin.enabled }}
|
||||
- name: distributor-zipkin
|
||||
port: 9411
|
||||
protocol: TCP
|
||||
targetPort: zipkin
|
||||
{{- end }}
|
||||
{{- if .Values.traces.otlp.http.enabled }}
|
||||
- name: distributor-otlp-http
|
||||
port: 4318
|
||||
protocol: TCP
|
||||
targetPort: otlp-http
|
||||
{{- end }}
|
||||
{{- if .Values.traces.otlp.grpc.enabled }}
|
||||
- name: grpc-distributor-otlp
|
||||
port: 4317
|
||||
protocol: TCP
|
||||
targetPort: grpc-otlp
|
||||
{{- if .Values.distributor.appProtocol.grpc }}
|
||||
appProtocol: {{ .Values.distributor.appProtocol.grpc }}
|
||||
{{- end }}
|
||||
- name: distributor-otlp-legacy
|
||||
port: 55680
|
||||
protocol: TCP
|
||||
targetPort: grpc-otlp
|
||||
{{- if .Values.distributor.appProtocol.grpc }}
|
||||
appProtocol: {{ .Values.distributor.appProtocol.grpc }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.traces.opencensus.enabled }}
|
||||
- name: distributor-opencensus
|
||||
port: 55678
|
||||
protocol: TCP
|
||||
targetPort: opencensus
|
||||
{{- end }}
|
||||
{{- if .Values.distributor.service.loadBalancerIP }}
|
||||
loadBalancerIP: {{ .Values.distributor.service.loadBalancerIP }}
|
||||
{{- end }}
|
||||
{{- with .Values.distributor.service.externalTrafficPolicy }}
|
||||
externalTrafficPolicy: {{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.distributor.service.loadBalancerSourceRanges}}
|
||||
loadBalancerSourceRanges:
|
||||
{{ toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
selector:
|
||||
{{- include "tempo.selectorLabels" $dict | nindent 4 }}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
{{- include "tempo.lib.serviceMonitor" (dict "ctx" $ "component" "distributor" "memberlist" true) }}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
{{/*
|
||||
enterpriseFederationFrontend imagePullSecrets
|
||||
*/}}
|
||||
{{- define "tempo.enterpriseFederationFrontendImagePullSecrets" -}}
|
||||
{{- $dict := dict "tempo" .Values.tempo.image "component" .Values.enterpriseFederationFrontend.image "global" .Values.global.image -}}
|
||||
{{- include "tempo.imagePullSecrets" $dict -}}
|
||||
{{- end }}
|
||||
+132
@@ -0,0 +1,132 @@
|
||||
{{- if and .Values.enterprise.enabled .Values.enterpriseFederationFrontend.enabled }}
|
||||
{{ $dict := dict "ctx" . "component" "enterprise-federation-frontend" }}
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "tempo.resourceName" $dict }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "tempo.labels" $dict | nindent 4 }}
|
||||
{{- with .Values.enterpriseFederationFrontend.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
minReadySeconds: 10
|
||||
{{- if not .Values.enterpriseFederationFrontend.autoscaling.enabled }}
|
||||
replicas: {{ .Values.enterpriseFederationFrontend.replicas }}
|
||||
{{- end }}
|
||||
revisionHistoryLimit: 10
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "tempo.selectorLabels" $dict | nindent 6 }}
|
||||
strategy:
|
||||
rollingUpdate:
|
||||
maxSurge: 0
|
||||
maxUnavailable: 1
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "tempo.podLabels" $dict | nindent 8 }}
|
||||
{{- with .Values.tempo.podLabels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.enterpriseFederationFrontend.podLabels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
checksum/config: {{ include (print $.Template.BasePath "/configmap-tempo.yaml") . | sha256sum }}
|
||||
{{- with .Values.tempo.podAnnotations }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.enterpriseFederationFrontend.podAnnotations }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if or (.Values.enterpriseFederationFrontend.priorityClassName) (.Values.global.priorityClassName) }}
|
||||
priorityClassName: {{ default .Values.enterpriseFederationFrontend.priorityClassName .Values.global.priorityClassName }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ include "tempo.serviceAccountName" . }}
|
||||
{{- with .Values.tempo.podSecurityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
enableServiceLinks: false
|
||||
{{- include "tempo.enterpriseFederationFrontendImagePullSecrets" . | nindent 6 -}}
|
||||
{{- with .Values.enterpriseFederationFrontend.hostAliases }}
|
||||
hostAliases:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- args:
|
||||
- -target=federation-frontend
|
||||
- -config.file=/conf/tempo.yaml
|
||||
- -mem-ballast-size-mbs=1024
|
||||
{{- with .Values.enterpriseFederationFrontend.extraArgs }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
image: {{ include "tempo.imageReference" $dict }}
|
||||
imagePullPolicy: {{ .Values.tempo.image.pullPolicy }}
|
||||
name: federation-frontend
|
||||
ports:
|
||||
- containerPort: 3100
|
||||
name: http-metrics
|
||||
{{- with .Values.enterpriseFederationFrontend.extraEnv }}
|
||||
env:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.enterpriseFederationFrontend.extraEnvFrom }}
|
||||
envFrom:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
resources:
|
||||
{{- toYaml .Values.enterpriseFederationFrontend.resources | nindent 12 }}
|
||||
{{- with .Values.tempo.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- mountPath: /conf
|
||||
name: config
|
||||
- mountPath: /var/tempo
|
||||
name: tempo-federation-frontend-store
|
||||
{{- if .Values.enterprise.enabled }}
|
||||
- name: license
|
||||
mountPath: /license
|
||||
{{- end }}
|
||||
{{- with .Values.enterpriseFederationFrontend.extraVolumeMounts }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
terminationGracePeriodSeconds: {{ .Values.enterpriseFederationFrontend.terminationGracePeriodSeconds }}
|
||||
{{- if ge (.Capabilities.KubeVersion.Minor|int) 19 }}
|
||||
{{- with .Values.enterpriseFederationFrontend.topologySpreadConstraints }}
|
||||
topologySpreadConstraints:
|
||||
{{- tpl . $ | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with .Values.enterpriseFederationFrontend.affinity }}
|
||||
affinity:
|
||||
{{- tpl . $ | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.enterpriseFederationFrontend.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.enterpriseFederationFrontend.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: config
|
||||
{{- include "tempo.configVolume" . | nindent 10 }}
|
||||
- name: tempo-federation-frontend-store
|
||||
emptyDir: {}
|
||||
{{- if .Values.enterprise.enabled }}
|
||||
- name: license
|
||||
secret:
|
||||
secretName: {{ tpl .Values.license.secretName . }}
|
||||
{{- end }}
|
||||
{{- with .Values.enterpriseFederationFrontend.extraVolumes }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,41 @@
|
||||
{{- if and .Values.enterprise.enabled .Values.enterpriseFederationFrontend.enabled .Values.enterpriseFederationFrontend.autoscaling.enabled }}
|
||||
{{- $apiVersion := include "tempo.hpa.apiVersion" . -}}
|
||||
apiVersion: {{ $apiVersion }}
|
||||
kind: HorizontalPodAutoscaler
|
||||
metadata:
|
||||
name: {{ include "tempo.resourceName" (dict "ctx" . "component" "enterprise-federation-frontend") }}
|
||||
labels:
|
||||
{{- include "tempo.labels" (dict "ctx" . "component" "enterprise-federation-frontend") | nindent 4 }}
|
||||
spec:
|
||||
scaleTargetRef:
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
name: {{ include "tempo.resourceName" (dict "ctx" . "component" "enterprise-federation-frontend") }}
|
||||
minReplicas: {{ .Values.enterpriseFederationFrontend.autoscaling.minReplicas }}
|
||||
maxReplicas: {{ .Values.enterpriseFederationFrontend.autoscaling.maxReplicas }}
|
||||
metrics:
|
||||
{{- with .Values.enterpriseFederationFrontend.autoscaling.targetMemoryUtilizationPercentage }}
|
||||
- type: Resource
|
||||
resource:
|
||||
name: memory
|
||||
{{- if (eq $apiVersion "autoscaling/v2") }}
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: {{ . }}
|
||||
{{- else }}
|
||||
targetAverageUtilization: {{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with .Values.enterpriseFederationFrontend.autoscaling.targetCPUUtilizationPercentage }}
|
||||
- type: Resource
|
||||
resource:
|
||||
name: cpu
|
||||
{{- if (eq $apiVersion "autoscaling/v2") }}
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: {{ . }}
|
||||
{{- else }}
|
||||
targetAverageUtilization: {{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
{{- if and .Values.enterprise.enabled .Values.enterpriseFederationFrontend.enabled -}}
|
||||
{{- if gt (int .Values.enterpriseFederationFrontend.replicas) 1 }}
|
||||
{{ $dict := dict "ctx" . "component" "enterprise-federation-frontend" }}
|
||||
apiVersion: {{ include "tempo.pdb.apiVersion" . }}
|
||||
kind: PodDisruptionBudget
|
||||
metadata:
|
||||
name: {{ include "tempo.resourceName" $dict }}
|
||||
labels:
|
||||
{{- include "tempo.labels" $dict | nindent 4 }}
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "tempo.selectorLabels" $dict | nindent 6 }}
|
||||
maxUnavailable: 1
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
{{- if .Values.enterprise.enabled -}}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ include "tempo.resourceName" (dict "ctx" . "component" "enterprise-federation-frontend") }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "tempo.labels" (dict "ctx" . "component" "enterprise-federation-frontend") | nindent 4 }}
|
||||
{{- with .Values.enterpriseFederationFrontend.service.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
type: {{ .Values.enterpriseFederationFrontend.service.type }}
|
||||
ports:
|
||||
- name: http-metrics
|
||||
port: 3100
|
||||
targetPort: 3100
|
||||
{{- if .Values.enterpriseFederationFrontend.service.loadBalancerIP }}
|
||||
loadBalancerIP: {{ .Values.enterpriseFederationFrontend.service.loadBalancerIP }}
|
||||
{{- end }}
|
||||
{{- with .Values.enterpriseFederationFrontend.service.loadBalancerSourceRanges}}
|
||||
loadBalancerSourceRanges:
|
||||
{{ toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
selector:
|
||||
{{- include "tempo.selectorLabels" (dict "ctx" . "component" "enterprise-federation-frontend") | nindent 4 }}
|
||||
{{- end }}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
{{- if and .Values.enterprise.enabled .Values.enterpriseFederationFrontend.enabled }}
|
||||
{{- include "tempo.lib.serviceMonitor" (dict "ctx" $ "component" "enterprise-federation-frontend") }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,41 @@
|
||||
{{/*
|
||||
Return the appropriate apiVersion for ingress.
|
||||
*/}}
|
||||
{{- define "tempo.ingress.apiVersion" -}}
|
||||
{{- if and (.Capabilities.APIVersions.Has "networking.k8s.io/v1") (semverCompare ">= 1.19-0" .Capabilities.KubeVersion.Version) -}}
|
||||
{{- print "networking.k8s.io/v1" -}}
|
||||
{{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" -}}
|
||||
{{- print "networking.k8s.io/v1beta1" -}}
|
||||
{{- else -}}
|
||||
{{- print "extensions/v1beta1" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return if ingress is stable.
|
||||
*/}}
|
||||
{{- define "tempo.ingress.isStable" -}}
|
||||
{{- eq (include "tempo.ingress.apiVersion" .) "networking.k8s.io/v1" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return if ingress supports ingressClassName.
|
||||
*/}}
|
||||
{{- define "tempo.ingress.supportsIngressClassName" -}}
|
||||
{{- or (eq (include "tempo.ingress.isStable" .) "true") (and (eq (include "tempo.ingress.apiVersion" .) "networking.k8s.io/v1beta1") (semverCompare ">= 1.18-0" .Capabilities.KubeVersion.Version)) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return if ingress supports pathType.
|
||||
*/}}
|
||||
{{- define "tempo.ingress.supportsPathType" -}}
|
||||
{{- or (eq (include "tempo.ingress.isStable" .) "true") (and (eq (include "tempo.ingress.apiVersion" .) "networking.k8s.io/v1beta1") (semverCompare ">= 1.18-0" .Capabilities.KubeVersion.Version)) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
enterpriseGateway imagePullSecrets
|
||||
*/}}
|
||||
{{- define "tempo.enterpriseGatewayImagePullSecrets" -}}
|
||||
{{- $dict := dict "tempo" .Values.tempo.image "component" .Values.enterpriseGateway.image "global" .Values.global.image -}}
|
||||
{{- include "tempo.imagePullSecrets" $dict -}}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,123 @@
|
||||
{{- if .Values.enterprise.enabled -}}
|
||||
{{ $dict := dict "ctx" . "component" "enterprise-gateway" }}
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
annotations:
|
||||
{{- toYaml .Values.enterpriseGateway.annotations | nindent 4 }}
|
||||
labels:
|
||||
{{- include "tempo.labels" $dict | nindent 4 }}
|
||||
name: {{ include "tempo.resourceName" $dict }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
spec:
|
||||
replicas: {{ .Values.enterpriseGateway.replicas }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "tempo.selectorLabels" $dict | nindent 6 }}
|
||||
strategy:
|
||||
{{- toYaml .Values.enterpriseGateway.strategy | nindent 4 }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "tempo.podLabels" $dict | nindent 8 }}
|
||||
{{- with .Values.enterpriseGateway.podLabels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
{{- include "tempo.podAnnotations" $dict | nindent 8 }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
spec:
|
||||
serviceAccountName: {{ template "tempo.serviceAccountName" . }}
|
||||
{{- if .Values.enterpriseGateway.priorityClassName }}
|
||||
priorityClassName: {{ .Values.enterpriseGateway.priorityClassName }}
|
||||
{{- end }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.enterpriseGateway.securityContext | nindent 8 }}
|
||||
initContainers:
|
||||
{{- toYaml .Values.enterpriseGateway.initContainers | nindent 8 }}
|
||||
{{- include "tempo.enterpriseGatewayImagePullSecrets" . | nindent 6 -}}
|
||||
{{- with .Values.enterpriseGateway.hostAliases }}
|
||||
hostAliases:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: gateway
|
||||
image: "{{ include "tempo.imageReference" $dict }}"
|
||||
imagePullPolicy: {{ .Values.tempo.image.pullPolicy }}
|
||||
args:
|
||||
- "-target=gateway"
|
||||
- "-config.expand-env=true"
|
||||
- "-config.file=/conf/tempo.yaml"
|
||||
{{- range $key, $value := .Values.enterpriseGateway.extraArgs }}
|
||||
- "-{{ $key }}={{ $value }}"
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
{{- if .Values.enterpriseGateway.extraVolumeMounts }}
|
||||
{{ toYaml .Values.enterpriseGateway.extraVolumeMounts | nindent 12}}
|
||||
{{- end }}
|
||||
- name: config
|
||||
mountPath: /conf
|
||||
- name: license
|
||||
mountPath: /license
|
||||
- name: storage
|
||||
mountPath: "/data"
|
||||
subPath: {{ .Values.enterpriseGateway.persistence.subPath }}
|
||||
ports:
|
||||
- name: http-metrics
|
||||
containerPort: {{ include "tempo.serverHttpListenPort" . }}
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
{{- toYaml .Values.enterpriseGateway.livenessProbe | nindent 12 }}
|
||||
readinessProbe:
|
||||
{{- toYaml .Values.enterpriseGateway.readinessProbe | nindent 12 }}
|
||||
resources:
|
||||
{{- toYaml .Values.enterpriseGateway.resources | nindent 12 }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.enterpriseGateway.containerSecurityContext | nindent 12 }}
|
||||
env:
|
||||
{{- with .Values.global.extraEnv }}
|
||||
{{ toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.enterpriseGateway.env }}
|
||||
{{ toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
envFrom:
|
||||
{{- with .Values.global.extraEnvFrom }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.enterpriseGateway.extraEnvFrom }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.enterpriseGateway.extraContainers }}
|
||||
{{ toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
nodeSelector:
|
||||
{{- toYaml .Values.enterpriseGateway.nodeSelector | nindent 8 }}
|
||||
{{- if semverCompare ">= 1.19-0" .Capabilities.KubeVersion.Version }}
|
||||
{{- with .Values.enterpriseGateway.topologySpreadConstraints }}
|
||||
topologySpreadConstraints:
|
||||
{{- tpl . $ | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with .Values.enterpriseGateway.affinity }}
|
||||
affinity:
|
||||
{{- tpl . $ | nindent 8 }}
|
||||
{{- end }}
|
||||
tolerations:
|
||||
{{- toYaml .Values.enterpriseGateway.tolerations | nindent 8 }}
|
||||
terminationGracePeriodSeconds: {{ .Values.enterpriseGateway.terminationGracePeriodSeconds }}
|
||||
volumes:
|
||||
- name: config
|
||||
{{- include "tempo.configVolume" . | nindent 10 }}
|
||||
- name: runtime-config
|
||||
configMap:
|
||||
name: {{ template "tempo.fullname" . }}-runtime
|
||||
{{- if .Values.enterpriseGateway.extraVolumes }}
|
||||
{{ toYaml .Values.enterpriseGateway.extraVolumes | nindent 8}}
|
||||
{{- end }}
|
||||
- name: license
|
||||
secret:
|
||||
secretName: {{ tpl .Values.license.secretName . }}
|
||||
- name: storage
|
||||
emptyDir: {}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,57 @@
|
||||
{{- if .Values.enterprise.enabled -}}
|
||||
{{ $dict := dict "ctx" . "component" "enterprise-gateway" }}
|
||||
{{- if .Values.enterpriseGateway.ingress.enabled -}}
|
||||
{{- $ingressApiIsStable := eq (include "tempo.ingress.isStable" .) "true" -}}
|
||||
{{- $ingressSupportsIngressClassName := eq (include "tempo.ingress.supportsIngressClassName" .) "true" -}}
|
||||
{{- $ingressSupportsPathType := eq (include "tempo.ingress.supportsPathType" .) "true" -}}
|
||||
apiVersion: {{ include "tempo.ingress.apiVersion" . }}
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ include "tempo.resourceName" $dict }}
|
||||
labels:
|
||||
{{- include "tempo.labels" $dict | nindent 4 }}
|
||||
{{- with .Values.enterpriseGateway.ingress.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
spec:
|
||||
{{- if and $ingressSupportsIngressClassName .Values.enterpriseGateway.ingress.ingressClassName }}
|
||||
ingressClassName: {{ .Values.enterpriseGateway.ingress.ingressClassName }}
|
||||
{{- end -}}
|
||||
{{- if .Values.enterpriseGateway.ingress.tls }}
|
||||
tls:
|
||||
{{- range .Values.enterpriseGateway.ingress.tls }}
|
||||
- hosts:
|
||||
{{- range .hosts }}
|
||||
- {{ . | quote }}
|
||||
{{- end }}
|
||||
{{- with .secretName }}
|
||||
secretName: {{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
rules:
|
||||
{{- range .Values.enterpriseGateway.ingress.hosts }}
|
||||
- host: {{ .host | quote }}
|
||||
http:
|
||||
paths:
|
||||
{{- range .paths }}
|
||||
- path: {{ .path }}
|
||||
{{- if $ingressSupportsPathType }}
|
||||
pathType: {{ .pathType }}
|
||||
{{- end }}
|
||||
backend:
|
||||
{{- if $ingressApiIsStable }}
|
||||
service:
|
||||
name: {{ include "tempo.resourceName" $dict }}
|
||||
port:
|
||||
number: {{ $.Values.enterpriseGateway.service.port | default (include "tempo.serverHttpListenPort" $ ) }}
|
||||
{{- else }}
|
||||
serviceName: {{ include "tempo.resourceName" $dict }}
|
||||
servicePort: {{ $.Values.enterpriseGateway.service.port | default (include "tempo.serverHttpListenPort" $ ) }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,3 @@
|
||||
{{- if .Values.enterprise.enabled -}}
|
||||
{{- include "tempo.lib.podDisruptionBudget" (dict "ctx" $ "component" "enterprise-gateway") }}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,3 @@
|
||||
{{- if .Values.enterprise.enabled -}}
|
||||
{{- include "tempo.lib.serviceMonitor" (dict "ctx" $ "component" "enterprise-gateway") }}
|
||||
{{- end -}}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user