diff --git a/stable/prometheus-operator/Chart.yaml b/stable/prometheus-operator/Chart.yaml index 3d8e95ae36..efb5b3d707 100644 --- a/stable/prometheus-operator/Chart.yaml +++ b/stable/prometheus-operator/Chart.yaml @@ -9,7 +9,7 @@ name: prometheus-operator sources: - https://github.com/coreos/prometheus-operator - https://coreos.com/operators/prometheus -version: 4.3.1 +version: 4.3.2 appVersion: 0.29.0 home: https://github.com/coreos/prometheus-operator keywords: diff --git a/stable/prometheus-operator/README.md b/stable/prometheus-operator/README.md index 5523ffc02e..7f20b639e6 100644 --- a/stable/prometheus-operator/README.md +++ b/stable/prometheus-operator/README.md @@ -57,13 +57,38 @@ The command removes all the Kubernetes components associated with the chart and CRDs created by this chart are not removed by default and should be manually cleaned up: -``` +```console kubectl delete crd prometheuses.monitoring.coreos.com kubectl delete crd prometheusrules.monitoring.coreos.com kubectl delete crd servicemonitors.monitoring.coreos.com kubectl delete crd alertmanagers.monitoring.coreos.com ``` +## Work-Arounds for Known Issues + +### Helm fails to create CRDs +Due to a bug in helm, it is possible for the 4 CRDs that are created by this chart to fail to get fully deployed before Helm attempts to create resources that require them. This affects all versions of Helm with a [potential fix pending](https://github.com/helm/helm/pull/5112). In order to work around this issue when installing the chart you will need to make sure all 4 CRDs exist in the cluster first and disable their previsioning by the chart: + +1. Create CRDs +```console +kubectl apply -f https://raw.githubusercontent.com/coreos/prometheus-operator/master/example/prometheus-operator-crd/alertmanager.crd.yaml +kubectl apply -f https://raw.githubusercontent.com/coreos/prometheus-operator/master/example/prometheus-operator-crd/prometheus.crd.yaml +kubectl apply -f https://raw.githubusercontent.com/coreos/prometheus-operator/master/example/prometheus-operator-crd/prometheusrule.crd.yaml +kubectl apply -f https://raw.githubusercontent.com/coreos/prometheus-operator/master/example/prometheus-operator-crd/servicemonitor.crd.yaml +``` + +2. Wait for CRDs to be created, which should only take a few seconds + +3. Install the chart, but disabling the CRD provisioning by setting `prometheusOperator.createCustomResource=false` +```console +$ helm install --name my-release stable/prometheus-operator --set prometheusOperator.createCustomResource=false +``` + +### Helm <2.10 workaround +The `crd-install` hook is required to deploy the prometheus operator CRDs before they are used. If you are forced to use an earlier version of Helm you can work around this requirement as follows: +1. Install prometheus-operator by itself, disabling everything but the prometheus-operator component, and also setting `prometheusOperator.serviceMonitor.selfMonitor=false` +2. Install all the other components, and configure `prometheus.additionalServiceMonitors` to scrape the prometheus-operator service. + ## Configuration The following tables lists the configurable parameters of the prometheus-operator chart and their default values. @@ -134,6 +159,8 @@ The following tables lists the configurable parameters of the prometheus-operato | `prometheusOperator.configmapReloadImage.tag` | Tag for configmapReload image | `v0.0.1` | | `prometheusOperator.prometheusConfigReloaderImage.repository` | Repository for config-reloader image | `quay.io/coreos/prometheus-config-reloader` | | `prometheusOperator.prometheusConfigReloaderImage.tag` | Tag for config-reloader image | `v0.29.0` | +| `prometheusOperator.configReloaderCpu` | Set the prometheus config reloader side-car CPU limit. If unset, uses the prometheus-operator project default | `nil` | +| `prometheusOperator.configReloaderMemory` | Set the prometheus config reloader side-car memory limit. If unset, uses the prometheus-operator project default | `nil` | | `prometheusOperator.hyperkubeImage.repository` | Repository for hyperkube image used to perform maintenance tasks | `k8s.gcr.io/hyperkube` | | `prometheusOperator.hyperkubeImage.tag` | Tag for hyperkube image used to perform maintenance tasks | `v1.12.1` | | `prometheusOperator.hyperkubeImage.repository` | Image pull policy for hyperkube image used to perform maintenance tasks | `IfNotPresent` | @@ -190,6 +217,7 @@ The following tables lists the configurable parameters of the prometheus-operato | `prometheus.prometheusSpec.nodeSelector` | Define which Nodes the Pods are scheduled on. | `{}` | | `prometheus.prometheusSpec.secrets` | Secrets is a list of Secrets in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. The Secrets are mounted into /etc/prometheus/secrets/. Secrets changes after initial creation of a Prometheus object are not reflected in the running Pods. To change the secrets mounted into the Prometheus Pods, the object must be deleted and recreated with the new list of secrets. | `[]` | | `prometheus.prometheusSpec.configMaps` | ConfigMaps is a list of ConfigMaps in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. The ConfigMaps are mounted into /etc/prometheus/configmaps/ | `[]` | +| `prometheus.prometheusSpec.query` | QuerySpec defines the query command line flags when starting Prometheus. Not all parameters are supported by the operator - [see coreos documentation](https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#queryspec) | `{}` | |`prometheus.prometheusSpec.podAntiAffinity` | Pod anti-affinity can prevent the scheduler from placing Prometheus replicas on the same node. The default value "soft" means that the scheduler should *prefer* to not schedule two replica pods onto the same node but no guarantee is provided. The value "hard" means that the scheduler is *required* to not schedule two replica pods onto the same node. The value "" will disable pod anti-affinity so that no anti-affinity rules will be configured. | `""` | |`prometheus.prometheusSpec.podAntiAffinityTopologyKey` | If anti-affinity is enabled sets the topologyKey to use for anti-affinity. This can be changed to, for example `failure-domain.beta.kubernetes.io/zone`| `kubernetes.io/hostname` | | `prometheus.prometheusSpec.tolerations` | If specified, the pod's tolerations. | `[]` | @@ -349,11 +377,6 @@ For more in-depth documentation of configuration options meanings, please see - [Prometheus](https://prometheus.io/docs/introduction/overview/) - [Grafana](https://github.com/helm/charts/tree/master/stable/grafana#grafana-helm-chart) -## Helm <2.10 workaround -The `crd-install` hook is required to deploy the prometheus operator CRDs before they are used. If you are forced to use an earlier version of Helm you can work around this requirement as follows: -1. Install prometheus-operator by itself, disabling everything but the prometheus-operator component, and also setting `prometheusOperator.serviceMonitor.selfMonitor=false` -2. Install all the other components, and configure `prometheus.additionalServiceMonitors` to scrape the prometheus-operator service. - # Migrating from coreos/prometheus-operator chart The multiple charts have been combined into a single chart that installs prometheus operator, prometheus, alertmanager, grafana as well as the multitude of exporters necessary to monitor a cluster. diff --git a/stable/prometheus-operator/ci/test-values.yaml b/stable/prometheus-operator/ci/test-values.yaml index b86866b0b4..de8499fac3 100644 --- a/stable/prometheus-operator/ci/test-values.yaml +++ b/stable/prometheus-operator/ci/test-values.yaml @@ -576,6 +576,13 @@ prometheusOperator: ## nodePort: 38080 + ## Additional ports to open for Prometheus service + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#multi-port-services + ## + additionalPorts: [] + # - name: thanos-cluster + # port: 10900 + # nodePort: 30111 ## Loadbalancer IP ## Only use if service.type is "loadbalancer" @@ -690,6 +697,14 @@ prometheusOperator: repository: quay.io/coreos/prometheus-config-reloader tag: v0.29.0 + ## Set the prometheus config reloader side-car CPU limit. If unset, uses the prometheus-operator project default + ## + # configReloaderCpu: 100m + + ## Set the prometheus config reloader side-car memory limit. If unset, uses the prometheus-operator project default + ## + # configReloaderMemory: 25Mi + ## Hyperkube image to use when cleaning up ## hyperkubeImage: @@ -731,14 +746,6 @@ prometheus: ## nodePort: 39090 - ## Additional ports to open for Prometheus service - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#multi-port-services - ## - additionalPorts: [] - # - name: thanos-cluster - # port: 10900 - # nodePort: 30111 - ## Loadbalancer IP ## Only use if service.type is "loadbalancer" loadBalancerIP: "" @@ -857,6 +864,12 @@ prometheus: ## configMaps: [] + ## QuerySpec defines the query command line flags when starting Prometheus. + ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#queryspec + ## + + query: {} + ## Namespaces to be selected for PrometheusRules discovery. ## If nil, select own namespace. Namespaces to be selected for ServiceMonitor discovery. ## See https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#namespaceselector for usage @@ -1069,7 +1082,7 @@ prometheus: thanos: {} ## Containers allows injecting additional containers. This is meant to allow adding an authentication proxy to a Prometheus pod. - ## + ## if using proxy extraContainer update targetPort with proxy container port containers: [] ## Enable additional scrape configs that are managed externally to this chart. Note that the prometheus diff --git a/stable/prometheus-operator/templates/prometheus-operator/crd-alertmanager.yaml b/stable/prometheus-operator/templates/prometheus-operator/crd-alertmanager.yaml index 1834d02f72..16514e55ec 100644 --- a/stable/prometheus-operator/templates/prometheus-operator/crd-alertmanager.yaml +++ b/stable/prometheus-operator/templates/prometheus-operator/crd-alertmanager.yaml @@ -742,7 +742,6 @@ spec: configMapRef: description: |- ConfigMapEnvSource selects a ConfigMap to populate the environment variables with. - The contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables. properties: name: @@ -758,7 +757,6 @@ spec: secretRef: description: |- SecretEnvSource selects a Secret to populate the environment variables with. - The contents of the target Secret's Data field will represent the key-value pairs as environment variables. properties: name: @@ -1323,8 +1321,7 @@ spec: type: boolean volumeDevices: description: volumeDevices is the list of block devices to be - used by the container. This is an alpha feature and may change - in the future. + used by the container. This is a beta feature. items: description: volumeDevice describes a mapping of a raw block device within a container. @@ -1386,6 +1383,12 @@ spec: under. This is necessary to generate correct URLs. This is necessary if Alertmanager is not served from root of a DNS name. type: string + image: + description: Image if specified has precedence over baseImage, tag and + sha combinations. Specifying the version is still necessary to ensure + the Prometheus Operator knows what version of Alertmanager is being + configured. + type: string imagePullSecrets: description: An optional list of references to secrets in the same namespace to use for pulling prometheus and alertmanager images from registries @@ -1459,9 +1462,7 @@ spec: generateName: description: |- GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server. - If this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header). - Applied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency type: string generation: @@ -1525,7 +1526,6 @@ spec: field: description: |- The field of the resource that has caused this error, as named by its JSON serialization. May include dot and postfix notation for nested attributes. Arrays are zero-indexed. Fields may appear more than once in an array of causes due to fields having multiple errors. Optional. - Examples: "name" - the field "name" on the current resource "items[0].name" - the field "name" on the first array entry in "items" @@ -1638,7 +1638,6 @@ spec: namespace: description: |- Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty. - Must be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces type: string ownerReferences: @@ -1649,8 +1648,9 @@ spec: set to true. There cannot be more than one managing controller. items: description: OwnerReference contains enough information to let - you identify an owning object. Currently, an owning object must - be in the same namespace, so there is no namespace field. + you identify an owning object. An owning object must be in the + same namespace as the dependent, or be cluster-scoped, so there + is no namespace field. properties: apiVersion: description: API version of the referent. @@ -1684,7 +1684,6 @@ spec: resourceVersion: description: |- An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources. - Populated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency type: string selfLink: @@ -1694,7 +1693,6 @@ spec: uid: description: |- UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. - Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids type: string priorityClassName: @@ -1721,8 +1719,8 @@ spec: type: object retention: description: Time duration Alertmanager shall retain data for. Default - is '120h', and must match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` - (milliseconds seconds minutes hours days weeks years). + is '120h', and must match the regular expression `[0-9]+(ms|s|m|h)` + (milliseconds seconds minutes hours). type: string routePrefix: description: The route prefix Alertmanager registers HTTP handlers for. @@ -1747,9 +1745,7 @@ spec: fsGroup: description: |- A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: - 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- - If unset, the Kubelet will not modify the ownership and permissions of any volume. format: int64 type: integer @@ -1838,11 +1834,6 @@ spec: is specified, then by default an [EmptyDir](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir) will be used. properties: - class: - description: 'Name of the StorageClass to use when requesting storage - provisioning. More info: https://kubernetes.io/docs/user-guide/persistent-volumes/#storageclasses - (DEPRECATED - instead use `volumeClaimTemplate.spec.storageClassName`)' - type: string emptyDir: description: Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling. @@ -1853,63 +1844,6 @@ spec: Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: {} - resources: - description: ResourceRequirements describes the compute resource - requirements. - properties: - limits: - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - selector: - description: A label selector is a label query over a set of resources. - The result of matchLabels and matchExpressions are ANDed. An empty - label selector matches all objects. A null label selector matches - no objects. - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. - The requirements are ANDed. - items: - description: A label selector requirement is a selector that - contains values, a key, and an operator that relates the - key and values. - properties: - key: - description: key is the label key that the selector applies - to. - type: string - operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, NotIn, Exists - and DoesNotExist. - type: string - values: - description: values is an array of string values. If the - operator is In or NotIn, the values array must be non-empty. - If the operator is Exists or DoesNotExist, the values - array must be empty. This array is replaced during a - strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: array - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single - {key,value} in the matchLabels map is equivalent to an element - of matchExpressions, whose key field is "key", the operator - is "In", and the values array contains only "value". The requirements - are ANDed. - type: object volumeClaimTemplate: description: PersistentVolumeClaim is a user's request for and claim to a persistent volume @@ -1977,9 +1911,7 @@ spec: generateName: description: |- GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server. - If this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header). - Applied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency type: string generation: @@ -2047,7 +1979,6 @@ spec: field: description: |- The field of the resource that has caused this error, as named by its JSON serialization. May include dot and postfix notation for nested attributes. Arrays are zero-indexed. Fields may appear more than once in an array of causes due to fields having multiple errors. Optional. - Examples: "name" - the field "name" on the current resource "items[0].name" - the field "name" on the first array entry in "items" @@ -2168,7 +2099,6 @@ spec: namespace: description: |- Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty. - Must be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces type: string ownerReferences: @@ -2180,9 +2110,9 @@ spec: There cannot be more than one managing controller. items: description: OwnerReference contains enough information - to let you identify an owning object. Currently, an - owning object must be in the same namespace, so there - is no namespace field. + to let you identify an owning object. An owning object + must be in the same namespace as the dependent, or be + cluster-scoped, so there is no namespace field. properties: apiVersion: description: API version of the referent. @@ -2217,7 +2147,6 @@ spec: resourceVersion: description: |- An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources. - Populated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency type: string selfLink: @@ -2227,7 +2156,6 @@ spec: uid: description: |- UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. - Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids type: string spec: @@ -2327,8 +2255,7 @@ spec: volumeMode: description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not - included in claim spec. This is an alpha feature and may - change in the future. + included in claim spec. This is a beta feature. type: string volumeName: description: VolumeName is the binding reference to the diff --git a/stable/prometheus-operator/templates/prometheus-operator/crd-prometheus.yaml b/stable/prometheus-operator/templates/prometheus-operator/crd-prometheus.yaml index 0debca787c..8fedf928b5 100644 --- a/stable/prometheus-operator/templates/prometheus-operator/crd-prometheus.yaml +++ b/stable/prometheus-operator/templates/prometheus-operator/crd-prometheus.yaml @@ -1488,8 +1488,7 @@ spec: type: boolean volumeDevices: description: volumeDevices is the list of block devices to be - used by the container. This is an alpha feature and may change - in the future. + used by the container. This is a beta feature. items: description: volumeDevice describes a mapping of a raw block device within a container. @@ -1546,6 +1545,14 @@ spec: required: - name type: array + enableAdminAPI: + description: 'Enable access to prometheus web admin API. Defaults to + the value of `false`. WARNING: Enabling the admin APIs enables mutating + endpoints, to delete data, shutdown Prometheus, and more. Enabling + this should be done with care and the user is advised to add additional + authentication authorization via a proxy to ensure only clients authorized + to perform these actions can do so. For more information see https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis' + type: boolean evaluationInterval: description: Interval between consecutive evaluations. type: string @@ -1558,6 +1565,12 @@ spec: under. This is necessary to generate correct URLs. This is necessary if Prometheus is not served from root of a DNS name. type: string + image: + description: Image if specified has precedence over baseImage, tag and + sha combinations. Specifying the version is still necessary to ensure + the Prometheus Operator knows what version of Prometheus is being + configured. + type: string imagePullSecrets: description: An optional list of references to secrets in the same namespace to use for pulling prometheus and alertmanager images from registries @@ -1574,6 +1587,9 @@ spec: description: ListenLocal makes the Prometheus server listen on loopback, so that it does not bind against the Pod IP. type: boolean + logFormat: + description: Log format for Prometheus to be configured with. + type: string logLevel: description: Log level for Prometheus to be configured with. type: string @@ -1820,8 +1836,9 @@ spec: set to true. There cannot be more than one managing controller. items: description: OwnerReference contains enough information to let - you identify an owning object. Currently, an owning object must - be in the same namespace, so there is no namespace field. + you identify an owning object. An owning object must be in the + same namespace as the dependent, or be cluster-scoped, so there + is no namespace field. properties: apiVersion: description: API version of the referent. @@ -1871,6 +1888,21 @@ spec: priorityClassName: description: Priority class assigned to the Pods type: string + query: + description: QuerySpec defines the query command line flags when starting + Prometheus. + properties: + lookbackDelta: + description: The delta difference allowed for retrieving metrics + during expression evaluations. + type: string + maxConcurrency: + description: Number of concurrent queries that can be run at once. + format: int32 + type: integer + timeout: + description: Maximum time a query may take before being aborted. + type: string remoteRead: description: If specified, the remote_read spec. This is an experimental feature, it may change in any upcoming release in a breaking way. @@ -2046,6 +2078,11 @@ spec: description: MinBackoff is the initial retry delay. Gets doubled for every retry. type: string + minShards: + description: MinShards is the minimum number of shards, i.e. + amount of concurrency. + format: int32 + type: integer remoteTimeout: description: Timeout for requests to the remote write endpoint. type: string @@ -2117,6 +2154,10 @@ spec: required: - url type: array + replicaExternalLabelName: + description: Name of Prometheus external label used to denote replica + name. Defaults to the value of `prometheus_replica`. + type: string replicas: description: Number of instances to deploy for a Prometheus deployment. format: int32 @@ -2230,6 +2271,25 @@ spec: "In", and the values array contains only "value". The requirements are ANDed. type: object + rules: + description: /--rules.*/ command-line arguments + properties: + alert: + description: /--rules.alert.*/ command-line arguments + properties: + forGracePeriod: + description: Minimum duration between alert and restored 'for' + state. This is maintained only for alerts with configured + 'for' time greater than grace period. + type: string + forOutageTolerance: + description: Max time to tolerate prometheus outage for restoring + 'for' state of alert. + type: string + resendDelay: + description: Minimum amount of time to wait before resending + an alert to Alertmanager. + type: string scrapeInterval: description: Interval between consecutive scrapes. type: string @@ -2424,11 +2484,6 @@ spec: is specified, then by default an [EmptyDir](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir) will be used. properties: - class: - description: 'Name of the StorageClass to use when requesting storage - provisioning. More info: https://kubernetes.io/docs/user-guide/persistent-volumes/#storageclasses - (DEPRECATED - instead use `volumeClaimTemplate.spec.storageClassName`)' - type: string emptyDir: description: Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling. @@ -2439,63 +2494,6 @@ spec: Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: {} - resources: - description: ResourceRequirements describes the compute resource - requirements. - properties: - limits: - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - selector: - description: A label selector is a label query over a set of resources. - The result of matchLabels and matchExpressions are ANDed. An empty - label selector matches all objects. A null label selector matches - no objects. - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. - The requirements are ANDed. - items: - description: A label selector requirement is a selector that - contains values, a key, and an operator that relates the - key and values. - properties: - key: - description: key is the label key that the selector applies - to. - type: string - operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, NotIn, Exists - and DoesNotExist. - type: string - values: - description: values is an array of string values. If the - operator is In or NotIn, the values array must be non-empty. - If the operator is Exists or DoesNotExist, the values - array must be empty. This array is replaced during a - strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: array - matchLabels: - description: matchLabels is a map of {key,value} pairs. A single - {key,value} in the matchLabels map is equivalent to an element - of matchExpressions, whose key field is "key", the operator - is "In", and the values array contains only "value". The requirements - are ANDed. - type: object volumeClaimTemplate: description: PersistentVolumeClaim is a user's request for and claim to a persistent volume @@ -2766,9 +2764,9 @@ spec: There cannot be more than one managing controller. items: description: OwnerReference contains enough information - to let you identify an owning object. Currently, an - owning object must be in the same namespace, so there - is no namespace field. + to let you identify an owning object. An owning object + must be in the same namespace as the dependent, or be + cluster-scoped, so there is no namespace field. properties: apiVersion: description: API version of the referent. @@ -2913,8 +2911,7 @@ spec: volumeMode: description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not - included in claim spec. This is an alpha feature and may - change in the future. + included in claim spec. This is a beta feature. type: string volumeName: description: VolumeName is the binding reference to the @@ -2989,9 +2986,14 @@ spec: baseImage: description: Thanos base image if other than default. type: string + clusterAdvertiseAddress: + description: Explicit (external) ip:port address to advertise for + gossip in gossip cluster. Used internally for membership only. + type: string gcs: - description: ThanosGCSSpec defines parameters for use of Google - Cloud Storage (GCS) with Thanos. + description: 'Deprecated: ThanosGCSSpec should be configured with + an ObjectStorageConfig secret starting with Thanos v0.2.0. ThanosGCSSpec + will be removed.' properties: bucket: description: Google Cloud Storage bucket name for stored blocks. @@ -3013,6 +3015,33 @@ spec: type: boolean required: - key + grpcAdvertiseAddress: + description: Explicit (external) host:port address to advertise + for gRPC StoreAPI in gossip cluster. If empty, 'grpc-address' + will be used. + type: string + image: + description: Image if specified has precedence over baseImage, tag + and sha combinations. Specifying the version is still necessary + to ensure the Prometheus Operator knows what version of Thanos + is being configured. + type: string + objectStorageConfig: + description: SecretKeySelector selects a key of a Secret. + properties: + key: + description: The key of the secret to select from. Must be + a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + optional: + description: Specify whether the Secret or it's key must be + defined + type: boolean + required: + - key peers: description: Peers is a DNS name for Thanos to discover peers through. type: string @@ -3031,8 +3060,9 @@ spec: to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object s3: - description: ThanosS3Spec defines parameters for of AWS Simple Storage - Service (S3) with Thanos. (S3 compatible services apply as well) + description: 'Deprecated: ThanosS3Spec should be configured with + an ObjectStorageConfig secret starting with Thanos v0.2.0. ThanosS3Spec + will be removed.' properties: accessKey: description: SecretKeySelector selects a key of a Secret. diff --git a/stable/prometheus-operator/templates/prometheus-operator/crd-prometheusrules.yaml b/stable/prometheus-operator/templates/prometheus-operator/crd-prometheusrules.yaml index 9839687eec..02a21b36d3 100644 --- a/stable/prometheus-operator/templates/prometheus-operator/crd-prometheusrules.yaml +++ b/stable/prometheus-operator/templates/prometheus-operator/crd-prometheusrules.yaml @@ -12,20 +12,10 @@ metadata: "helm.sh/hook": crd-install "helm.sh/hook-delete-policy": "before-hook-creation" spec: - additionalPrinterColumns: - - JSONPath: .metadata.creationTimestamp - description: |- - CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. - - Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata - name: Age - type: date group: {{ .Values.prometheusOperator.crdApiGroup | default "monitoring.coreos.com" }} names: kind: PrometheusRule - listKind: PrometheusRuleList plural: prometheusrules - singular: prometheusrule scope: Namespaced validation: openAPIV3Schema: @@ -85,9 +75,7 @@ spec: generateName: description: |- GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server. - If this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header). - Applied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency type: string generation: @@ -151,7 +139,6 @@ spec: field: description: |- The field of the resource that has caused this error, as named by its JSON serialization. May include dot and postfix notation for nested attributes. Arrays are zero-indexed. Fields may appear more than once in an array of causes due to fields having multiple errors. Optional. - Examples: "name" - the field "name" on the current resource "items[0].name" - the field "name" on the first array entry in "items" @@ -214,11 +201,12 @@ spec: server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available - objects. Continuing a list may not be possible if the - server configuration has changed or more than a few minutes - have passed. The resourceVersion field returned when using - this continue value will be identical to the value in - the first response. + objects. Continuing a consistent list may not be possible + if the server configuration has changed or more than a + few minutes have passed. The resourceVersion field returned + when using this continue value will be identical to the + value in the first response, unless you have received + this token from an error message. type: string resourceVersion: description: 'String that identifies the server''s internal @@ -259,7 +247,6 @@ spec: namespace: description: |- Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty. - Must be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces type: string ownerReferences: @@ -270,8 +257,9 @@ spec: There cannot be more than one managing controller. items: description: OwnerReference contains enough information to let you - identify an owning object. Currently, an owning object must be in - the same namespace, so there is no namespace field. + identify an owning object. An owning object must be in the same + namespace as the dependent, or be cluster-scoped, so there is no + namespace field. properties: apiVersion: description: API version of the referent. @@ -304,7 +292,6 @@ spec: resourceVersion: description: |- An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources. - Populated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency type: string selfLink: @@ -314,7 +301,6 @@ spec: uid: description: |- UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. - Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids type: string spec: diff --git a/stable/prometheus-operator/templates/prometheus-operator/crd-servicemonitor.yaml b/stable/prometheus-operator/templates/prometheus-operator/crd-servicemonitor.yaml index ac0a633bc0..7223d86ce4 100644 --- a/stable/prometheus-operator/templates/prometheus-operator/crd-servicemonitor.yaml +++ b/stable/prometheus-operator/templates/prometheus-operator/crd-servicemonitor.yaml @@ -12,20 +12,10 @@ metadata: "helm.sh/hook": crd-install "helm.sh/hook-delete-policy": "before-hook-creation" spec: - additionalPrinterColumns: - - JSONPath: .metadata.creationTimestamp - description: |- - CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. - - Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata - name: Age - type: date group: {{ .Values.prometheusOperator.crdApiGroup | default "monitoring.coreos.com" }} names: kind: ServiceMonitor - listKind: ServiceMonitorList plural: servicemonitors - singular: servicemonitor scope: Namespaced validation: openAPIV3Schema: @@ -156,7 +146,7 @@ spec: type: string relabelings: description: 'RelabelConfigs to apply to samples before ingestion. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#' + More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config' items: description: 'RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines @@ -174,7 +164,7 @@ spec: type: integer regex: description: Regular expression against which the extracted - value is matched. default is '(.*)' + value is matched. defailt is '(.*)' type: string replacement: description: Replacement value against which a regex replace diff --git a/stable/prometheus-operator/templates/prometheus-operator/deployment.yaml b/stable/prometheus-operator/templates/prometheus-operator/deployment.yaml index 809d6fa839..e68a9923ee 100644 --- a/stable/prometheus-operator/templates/prometheus-operator/deployment.yaml +++ b/stable/prometheus-operator/templates/prometheus-operator/deployment.yaml @@ -42,7 +42,13 @@ spec: - --crd-apigroup={{ .Values.prometheusOperator.crdApiGroup | default "monitoring.coreos.com" }} - --localhost=127.0.0.1 - --prometheus-config-reloader={{ .Values.prometheusOperator.prometheusConfigReloaderImage.repository }}:{{ .Values.prometheusOperator.prometheusConfigReloaderImage.tag }} - - --config-reloader-image={{ .Values.prometheusOperator.configmapReloadImage.repository }}:{{ .Values.prometheusOperator.configmapReloadImage.tag }} + - --config-reloader-image={{ .Values.prometheusOperator.configmapReloadImage.repository }}:{{ .Values.prometheusOperator.configmapReloadImage.tag }} + {{- if .Values.prometheusOperator.configReloaderCpu }} + - --config-reloader-cpu={{ .Values.prometheusOperator.configReloaderCpu }} + {{- end }} + {{- if .Values.prometheusOperator.configReloaderMemory }} + - --config-reloader-memory={{ .Values.prometheusOperator.configReloaderMemory }} + {{- end }} ports: - containerPort: 8080 name: http diff --git a/stable/prometheus-operator/templates/prometheus/prometheus.yaml b/stable/prometheus-operator/templates/prometheus/prometheus.yaml index 97fa2da3fa..6f69bf827c 100644 --- a/stable/prometheus-operator/templates/prometheus/prometheus.yaml +++ b/stable/prometheus-operator/templates/prometheus/prometheus.yaml @@ -103,7 +103,7 @@ spec: ruleSelector: {{ toYaml .Values.prometheus.prometheusSpec.ruleSelector | indent 4}} {{- else if .Values.prometheus.prometheusSpec.ruleSelectorNilUsesHelmValues }} - ruleSelector: + ruleSelector: matchLabels: app: {{ template "prometheus-operator.name" . }} release: {{ .Release.Name | quote }} @@ -114,10 +114,14 @@ spec: storage: {{ toYaml .Values.prometheus.prometheusSpec.storageSpec | indent 4 }} {{- end }} - {{- if .Values.prometheus.prometheusSpec.podMetadata }} +{{- if .Values.prometheus.prometheusSpec.podMetadata }} podMetadata: {{ toYaml .Values.prometheus.prometheusSpec.podMetadata | indent 4 }} - {{- end }} +{{- end }} +{{- if .Values.prometheus.prometheusSpec.query }} + query: +{{ toYaml .Values.prometheus.prometheusSpec.query | indent 4}} +{{- end }} {{- if eq .Values.prometheus.prometheusSpec.podAntiAffinity "hard" }} affinity: podAntiAffinity: diff --git a/stable/prometheus-operator/values.yaml b/stable/prometheus-operator/values.yaml index 6a9d0e2563..cbb3140309 100644 --- a/stable/prometheus-operator/values.yaml +++ b/stable/prometheus-operator/values.yaml @@ -710,6 +710,14 @@ prometheusOperator: repository: quay.io/coreos/prometheus-config-reloader tag: v0.29.0 + ## Set the prometheus config reloader side-car CPU limit. If unset, uses the prometheus-operator project default + ## + # configReloaderCpu: 100m + + ## Set the prometheus config reloader side-car memory limit. If unset, uses the prometheus-operator project default + ## + # configReloaderMemory: 25Mi + ## Hyperkube image to use when cleaning up ## hyperkubeImage: @@ -869,6 +877,11 @@ prometheus: ## configMaps: [] + ## QuerySpec defines the query command line flags when starting Prometheus. + ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#queryspec + ## + query: {} + ## Namespaces to be selected for PrometheusRules discovery. ## If nil, select own namespace. Namespaces to be selected for ServiceMonitor discovery. ## See https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#namespaceselector for usage