This repo contains a set of three interlinked projects:
- The Prometheus Federator is a k8s Operator that manages deploying Project Monitoring Stacks.
- The Helm Project Operator is a generic design for a Kubernetes Operator that acts on
ProjectHelmChart
CRs. - Helm Locker is a Kubernetes operator that prevents resource drift on (i.e. "locks") Kubernetes objects that are tracked by Helm 3 releases.
Note
The last two project (helm-project-operator and helm-locker) are not intended or supported for standalone use.
For more info on Helm Project Operator, see the dedicated README file.
For more info on Helm Locker, see the dedicated README file.
For more information, see the Getting Started guide.
Prometheus Federator is an operator (powered by rancher/helm-project-operator
and rancher/charts-build-scripts
) that manages deploying one or more Project Monitoring Stacks composed of the following set of resources that are scoped to project namespaces:
- Prometheus (managed externally by Prometheus Operator)
- Alertmanager (managed externally by Prometheus Operator)
- Grafana (deployed via an embedded Helm chart)
- Default PrometheusRules and Grafana dashboards based on the collection of community-curated resources from kube-prometheus
- Default ServiceMonitors that watch the deployed Prometheus, Grafana, and Alertmanager
A user can specify that they would like to deploy a Project Monitoring Stack by creating a ProjectHelmChart
CR in a Project Registration Namespace (cattle-project-<id>
) with spec.helmApiVersion: monitoring.cattle.io/v1alpha1
, which will deploy the Project Monitoring Stack in a Project Release Namespace (cattle-project-<id>-monitoring
).
Note: Since this Project Monitoring Stack deploys Prometheus Operator CRs, an existing Prometheus Operator instance must already be deployed in the cluster for Prometheus Federator to successfully be able to deploy Project Monitoring Stacks. It is recommended to use
rancher-monitoring
for this. For more information on how the chart works or advanced configurations, please read theREADME.md
on the chart.
For more information on ProjectHelmCharts and how to configure the underlying operator, please read the README.md
on the chart or check out the general docs on Helm Project Operators in rancher/helm-project-operator
.
For more information on how to configure the underlying Project Monitoring Stack, please read the README.md
of the underlying chart (rancher-project-monitoring
).
Prometheus Federator is built and released off the contents of the main
branch. To make a contribution, open up a PR to the main
branch.
For more information, see the Developing guide.
make
Note: For a more in-depth explanation of how Prometheus Federator is built (intended for anyone who would like to fork this repo to create a new Project Operator!), see the Build guide.
./build/bin/prometheus-federator
While this repository does maintain a standalone Helm repository for vanilla Helm users to consume directly, users of Rancher will see forked versions of these chart releases available on Rancher's Apps & Marketplace; the forked chart releases are maintained in the rancher/charts
repository on being released from a dev-vX.X
branch to a release-vX.X
branch, where X.X
corresponds to the Rancher ${Major}.${Minor}
version that the users is using (i.e. Rancher 2.7
).
The chart in rancher/charts is generally the version that is intended for use in production since that is the chart that will be tested by Rancher's QA team. Generally, these charts will match stable versions of charts available in this repository, so non-Rancher users should be able to safely use those versions in this repository for production use cases (at their own risk).
For more information on the process maintainers of this repository use to mirror these charts over to rancher/charts
, see the Rancher release guide.
Copyright (c) 2020 Rancher Labs, Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.