From 240759ca0f222bf50e1f6c2c2275eddb5ecb0bb9 Mon Sep 17 00:00:00 2001 From: Nandaja Varma Date: Tue, 18 Jan 2022 22:08:53 +0100 Subject: [PATCH 1/9] Add release notes --- docs/releases/v1.14.0.md | 79 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 docs/releases/v1.14.0.md diff --git a/docs/releases/v1.14.0.md b/docs/releases/v1.14.0.md new file mode 100644 index 00000000..e505c7df --- /dev/null +++ b/docs/releases/v1.14.0.md @@ -0,0 +1,79 @@ +# Monitoring Core Module Release 1.14.0 + +Welcome to the latest release of `monitoring` module of (`Kubernetes Fury +Distribution`)[https://github.com/sighupio/fury-distribution] maintained by team +SIGHUP. + +This latest release is an attempt on upgrading the components in the module to +its latest stable release along with adding the tech preview of the latest +kubernetes release `v1.23.0`. + +## Component Images 🚢 + +| Component | Supported Version | Previous Version | +|-----------------------|----------------------------------------------------------------------------------------------|------------------| +| `prometheus-operator` | [`v0.53.1`](https://github.com/prometheus-operator/prometheus-operator/releases/tag/v0.53.1) | `v0.50.0` | +| `prometheus` | [`v2.32.1`](https://github.com/prometheus/prometheus/releases/tag/v2.32.1) | `v2.29.1` | +| `alertmanager` | [`v0.23.0`](https://github.com/prometheus/alertmanager/releases/tag/v0.23.0) | `v0.22.2` | +| `grafana` | [`v8.3.3`](https://github.com/grafana/grafana/releases/tag/v8.3.3) | `v8.1.2` | +| `goldpinger` | [`v3.3.0`](https://github.com/bloomberg/goldpinger/releases/tag/v3.3.0) | `v3.2.0` | +| `kube-rbac-proxy` | [`v0.11.0`](https://github.com/brancz/kube-rbac-proxy/releases/tag/v0.11.0) | `No update` | +| `kube-state-metrics` | [`v2.3.0`](https://github.com/kubernetes/kube-state-metrics/releases/tag/v2.3.0) | `v2.2.0` | +| `node-exporter` | [`v1.3.1`](https://github.com/prometheus/node_exporter/releases/tag/v1.3.1) | `1.2.2` | +| `metrics-server` | [`0.5.2`](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.5.2) | `0.5.0` | +| `thanos` | [`v0.24.0`](https://github.com/thanos-io/thanos/releases/tag/v0.24.0) | `v0.22.0` | +| `x509-exporter` | [`v2.12.1`](https://github.com/enix/x509-certificate-exporter/releases/tag/v2.12.1) | `2.11.0` | + +> Please refer the individual release notes to get a detailed info on the +> releases. + +## Known Issues ⚠️ + +- This release involves recreation of certain resources like daemonset, deployments, etc. We recommend deleting it with `--cascade=orphan`, to avoid changes being made to the pods. +- We drop support of Kubernetes versions <= v1.19.x + +## Breaking Changes 💔 + +- [#77](https://github.com/sighupio/fury-kubernetes-monitoring/pull/77) Added Kubernetes labels to all the components of the module: Since `labels` are immutable fields in deployments, daemonsets, etc., this change requires a recreation of those resources. +- component breaking changes: + - thanos: breaking ⚠️ Add --endpoint flag to the querier. The --store flag will eventually be replaced . + +## Features 💥 + +- [#78](https://github.com/sighupio/fury-kubernetes-monitoring/pull/78) Sync module with the latest `kube-prometheus` updates +- [#77](https://github.com/sighupio/fury-kubernetes-monitoring/pull/77) Added Makefile, JSON builder and .bumpversion config to the module +- [#76](https://github.com/sighupio/fury-kubernetes-monitoring/pull/76) Upgrade the component images +- [#75](https://github.com/sighupio/fury-kubernetes-monitoring/pull/75) Added e2e-test support for k8s runtime `1.23` + +## Update Guide 🦮 + +### Warnings + +- Since the release ships changes to some immutable fields, if `deployments` and `daemonsets`, are not deleted first before applying the module, it will error out, we advice deletion of those objects with the flag `cascade=orphan` + +### Process + +To upgrade this core module from `v1.13.x` to `v1.14.0`, you need to download this new version, then apply the `kustomize` project. + +```bash +kubectl delete deployment.apps/prometheus-operator -n monitoring --cascade=orphan +kustomize build katalog/prometheus-operator | kubectl apply -f - +kubectl delete statefulset.apps/prometheus-k8s -n monitoring --cascade=orphan +kustomize build katalog/prometheus-operated | kubectl apply -f - +kubectl delete deployment.apps/grafana -n monitoring --cascade=orphan +kustomize build katalog/grafana | kubectl apply -f - +kubectl delete -n kube-system deployment.apps/metrics-server --cascade=orphan +kustomize build katalog/metrics-server | kubectl apply -f - +kubectl delete daemonset.apps/goldpinger -n monitoring --cascade=orphan +kustomize build katalog/goldpinger | kubectl apply -f- +kustomize build katalog/kubeadm-sm | kubectl apply -f- +kubectl delete deployment.apps/kube-proxy-metrics -n monitoring --cascade=orphan +kustomize build katalog/kube-proxy-metrics | kubectl apply -f- +kubectl delete daemonset.apps/kube-state-metrics -n monitoring --cascade=orphan +kustomize build katalog/kube-state-metrics | kubectl apply -f- +kubectl delete daemonset.apps/node-exporter -n monitoring --cascade=orphan +kustomize build katalog/node-exporter | kubectl apply -f- +kubectl delete statefulset.apps/alertmanager-main -n monitoring --cascade=orphan +kustomize build katalog/alertmanager-operated | kubectl apply -f- +``` + From 211af7716ebd9997289721f8a50a2b50363c08b2 Mon Sep 17 00:00:00 2001 From: Nandaja Varma Date: Wed, 19 Jan 2022 07:28:23 +0100 Subject: [PATCH 2/9] Add docker type to pipeline --- .drone.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.drone.yml b/.drone.yml index ce4f1ee9..d20b702e 100644 --- a/.drone.yml +++ b/.drone.yml @@ -562,6 +562,7 @@ volumes: --- kind: pipeline +type: docker name: release depends_on: From b8b07368512ece7243cb4a79c282bd3a3d95f9f2 Mon Sep 17 00:00:00 2001 From: Nandaja Varma Date: Tue, 25 Jan 2022 16:45:47 +0100 Subject: [PATCH 3/9] Improve the module readme --- README.md | 386 +++++++++++++++++++++++++++--------------------------- 1 file changed, 195 insertions(+), 191 deletions(-) diff --git a/README.md b/README.md index 11ca3986..0a491a66 100644 --- a/README.md +++ b/README.md @@ -1,176 +1,174 @@ -# Fury Kubernetes Monitoring - -This repository contains all components necessary to deploy monitoring tools on -top of Kubernetes. We use [Prometheus](https://prometheus.io/), a very popular open-source monitoring and -alerting toolkit for cloud-native applications. You can monitor both the cluster -itself and applications deployed on the cluster via Prometheus. Alertmanager which -makes part of the Prometheus stack, handles alerts sent by the Prometheus server and lets -you manage alerts flexibly and route them through receiver integrations such as -email, Slack, or PagerDuty. Thanks to the components in the Fury Kubernetes -Monitoring stack, you're going to have full control over your cluster. On -Kubernetes, we use Prometheus Operator to deploy, configure, and manage Prometheus -instances and to manage service monitoring and alerts. This repository contains -a package to deploy Prometheus Operator and other packages to deploy Prometheus -instances, rules, alerts, and exporters. Packages with `-operated` postfix are -deployed via Operator's CRD, therefore you need Prometheus Operator up and -running to be able to deploy them. - -## Monitoring Packages - -The following packages are included in the Fury Kubernetes Monitoring katalog. All -resources in these repositories are going to be deployed in `monitoring` -namespace in your Kubernetes cluster. - -- [prometheus-operator](katalog/prometheus-operator): Operator to deploy and - manage Prometheus and related resources. Version: **0.53.1** -- [prometheus-operated](katalog/prometheus-operated): Prometheus instance - deployed with Prometheus Operator's CRD. Version: **2.32.1** -- [alertmanager-operated](katalog/alertmanager-operated): Alertmanager instance - deployed with Prometheus Operator's CRD, pay attention to change the - [config](katalog/alertmanager-operated/secret.yml) as needed. Version: **0.23.0** -- [grafana](katalog/grafana): Grafana deployment to query and visualize metrics - collected by Prometheus. Version: **8.3.3** -- [goldpinger](katalog/goldpinger): **Goldpinger** makes calls between its instances for visibility and alerting. - Version: **3.3.0** -- [aks-sm](katalog/aks-sm): Service Monitor to collect Kubernetes components - metrics from AKS -- [gke-sm](katalog/gke-sm): Service Monitor to collect Kubernetes components - metrics from GKE -- [eks-sm](katalog/eks-sm): Service Monitor to collect Kubernetes components - metrics from EKS -- [ovh-sm](katalog/ovh-sm): Service Monitor to collect Kubernetes components - metrics from OVH Kubernetes Service. -- [kubeadm-sm](katalog/kubeadm-sm): Service Monitors, Prometheus rules and - alerts for Kubernetes components of unmanaged/on-premise clusters. -- [kube-proxy-metrics](katalog/kube-proxy-metrics): RBAC Proxy to expose kube-proxy metrics. Works in all -environments *(managed and unmanaged Kubernetes clusters)*. **0.11.0**. -- [kube-state-metrics](katalog/kube-state-metrics): Service Monitor for - Kubernetes objects such as Deployments, Nodes and Pods. Version: **2.3.0** -- [node-exporter](katalog/node-exporter): Service Monitor for hardware and OS - metrics exposed by \*NIX kernels. Version: **1.3.1** -- [metrics-server](katalog/metrics-server): Resource metrics collection from - kubelet and exposition through [Metrics API](https://github.com/kubernetes/metrics). - Version: **0.5.2** -- [Thanos](katalog/thanos): Thanos is an opensource Prometheus setup that allows having 2 important features: - - High availability on Prometheus *(setting multiple Prometheus replicas)*. - - Long term storage capacity relying on an external object storage. - Version: **v0.24.0** -- [x509-exporter](katalog/x509-exporter): Provides monitoring for certificates. - [Upstream Project](://github.com/enix/x509-certificate-exporter). Version: **2.12.1** - -You can click on each package to see its documentation. - -## Requirements - -All packages in this repository have the following dependencies, for package -specific dependencies please visit the single package's documentation: - -- [Kubernetes](https://kubernetes.io) >= `v1.20.0` -- [Furyctl](https://github.com/sighupio/furyctl) package manager to download - Fury packages >= [`v0.2.2`](https://github.com/sighupio/furyctl/releases/tag/v0.2.2) -- [Kustomize](https://github.com/kubernetes-sigs/kustomize) = `v3.3.0` +

+ + Kubernetes Fury Monitoring +

+ +![Release](https://img.shields.io/github/v/release/sighupio/fury-kubernetes-monitoring?label=Latest%20Release) +![License](https://img.shields.io/github/license/sighupio/fury-kubernetes-monitoring?label=License) +![Slack](https://img.shields.io/badge/slack-@kubernetes/fury-yellow.svg?logo=slack&label=Slack) + + + +**Kubernetes Fury Monitoring** provides a fully-fledged monitoring stack for the +[Kubernetes Fury Distribution (KFD)][kfd-repo]. This module extends and improves upon the [Kube-Prometheus][kube-prometheus-link] project. + +If you are new to KFD please refer to the [official documentation][kfd-docs] on how to get started with KFD. + +## Overview + +This module is designed so as to give you full control and visibility over your +cluster operations. Metrics from the cluster and the applications are collected +and clean analytics are offered via a visualization platform, [Grafana][grafana-link]. + +The centerpiece of this module is the [`prometheus-operator`], which offers the +easy deployment of the following as controllers: + +- [Prometheus][promethus-link]: An open-source monitoring and alerting toolkit for cloud-native applications +- [Alertmanager][alertmanager-link]: Manages alerts sent by the Prometheus server and route them through receiver integrations such as email, Slack, or PagerDuty +- [ServiceMonitor][servicemonitor-link]: Declaratively specifies how groups of services should be monitored, by automatically generates Prometheus scrape configuration based on the definition + +Since the export of certain metrics can be heavily cloud-provider specific, we +provide a bunch of cloud-provider specific configuration. The setups we +currently support includes: + +- Google Kubernetes Engine (GKE) +- Azure Kubernetes Service (AKS) +- Elastic Kubernetes Service (EKS) +- OVH Kubernetes Service +- on-premise or unmanaged cloud clusters + +Most of the components in this module are deployed in namespace `monitoring`, unless the +functionality requires a permission that forces it to be deployed in the +namespace `kube-system`. + +## Packages + +Kubernetes Fury Monitoring provides the following packages: + +| Package | Version | Description | +|--------------------------------------------------------|----------|-------------------------------------------------------------------------------------------------------------| +| [prometheus-operator](katalog/prometheus-operator) | `0.53.1` | Operator to deploy and manage Prometheus and related resources | +| [prometheus-operated](katalog/prometheus-operated) | `2.32.1` | Prometheus instance deployed with Prometheus Operator's CRD | +| [alertmanager-operated](katalog/alertmanager-operated) | `0.23.0` | Alertmanager instance deployed with Prometheus Operator's CRD | +| [grafana](katalog/grafana) | `8.3.3` | Grafana deployment to query and visualize metrics collected by Prometheus | +| [goldpinger](katalog/goldfinger) | `3.3.0` | **Goldpinger** makes calls between its instances for visibility and alerting | +| [kube-proxy-metrics](katalog/kube-proxy-metrics) | `0.11.0` | RBAC Proxy to expose kube-proxy metrics for all cloud environments | +| [kube-state-metrics](katalog/kube-state-metrics) | `2.3.0` | Service Monitor for Kubernetes objects such as Deployments, Nodes and Pods | +| [node-exporter](katalog/node-exporter) | `1.3.1` | Service Monitor for hardware and OS metrics exposed by \*NIX kernels | +| [metrics-server](katalog/metrics-server) | `0.5.2` | Resource metrics collection from kubelet and exposition through [Metrics API][metric-api] | +| [Thanos](katalog/thanos) | `0.24.0` | Thanos is a high-availability Prometheus setup that provides long term storage via an external object store | +| [x509-exporter](katalog/x509-exporter) | `2.12.1` | Provides monitoring for certification | + +### Integration with cloud providers + +One of the following components can be used to enable service monitoring in each +cloud environment: + +| Component | Description | +|----------------------------------|----------------------------------------------------------------------------------------------------------| +| [aks-sm](katalog/aks-sm) | Service Monitor to collect Kubernetes components metrics from AKS | +| [gke-sm](katalog/gke-sm) | Service Monitor to collect Kubernetes components metrics from GKE | +| [eks-sm](katalog/eks-sm) | Service Monitor to collect Kubernetes components metrics from EKS | +| [ovh-sm](katalog/ovh-sm) | Service Monitor to collect Kubernetes components metrics from OVH Kubernetes Service | +| [kubeadm-sm](katalog/kubeadm-sm) | Service Monitors, Prometheus rules and alerts for Kubernetes components of unmanaged/on-premise clusters | + +Please refer the individual package documentation for further details. ## Compatibility -| Module Version / Kubernetes Version | 1.14.X | 1.15.X | 1.16.X | 1.17.X | 1.18.X | 1.19.X | 1.20.X | 1.21.X | 1.22.X | -| ----------------------------------- | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :-------: | :---: | -| v1.0.0 | | :white_check_mark: | | | | | | | | -| v1.1.0 | :white_check_mark: | :white_check_mark: | :x: | | | | | | | -| v1.2.0 | :white_check_mark: | :white_check_mark: | :x: | | | | | | | -| v1.3.0 | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | | | -| v1.4.0 | :warning: | :warning: | :white_check_mark: | | | | | | | -| v1.4.1 | :warning: | :warning: | :white_check_mark: | | | | | | | -| v1.5.0 | :warning: | :warning: | :white_check_mark: | | | | | | | -| v1.6.0 | :warning: | :warning: | :white_check_mark: | | | | | | | -| v1.6.1 | :warning: | :warning: | :white_check_mark: | | | | | | | -| v1.7.0 | :warning: | :warning: | :white_check_mark: | | | | | | | -| v1.7.1 | :warning: | :warning: | :white_check_mark: | | | | | | | -| v1.8.0 | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | -| v1.9.0 | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | -| v1.10.0 | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | | | -| v1.10.1 | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | | | -| v1.10.2 | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | | | -| v1.11.0 | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | | -| v1.12.0 | | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | -| v1.12.1 | | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | -| v1.12.2 | | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | -| v1.13.0 | | | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | - -- :white_check_mark: Compatible -- :warning: Has issues -- :x: Incompatible - -### Warning - -- [kube-state-metrics](katalog/kube-state-metrics) is not able to scrape - `ValidatingWebhookConfiguration` in Kubernetes < 1.16.X. -- :warning: : module version: `v1.11.0` and Kubernetes Version: `1.20.x`. It works as expected. Marked as warning -because it is not officially supported by [SIGHUP](https://sighup.io). -- :warning: : module version: `v1.12.0` and Kubernetes Version: `1.21.x`. It works as expected. Marked as warning -because it is not officially supported by [SIGHUP](https://sighup.io). -- :warning: : module version: `v1.13.0` and Kubernetes Version: `1.22.x`. It works as expected. Marked as warning -because it is not officially supported by [SIGHUP](https://sighup.io). +| Kubernetes Version | Compatibility | Notes | +| ------------------ | :----------------: | --------------------------------------------------- | +| `1.20.x` | :white_check_mark: | No known issues | +| `1.21.x` | :white_check_mark: | No known issues | +| `1.22.x` | :white_check_mark: | No known issues | +| `1.23.x` | :warning: | Conformance tests passed. Not officially supported. | -## Deployment +Check the [compatibility matrix][compatibility-matrix] for additional informations about previous releases of the modules. -To start using Fury Kubernetes Monitoring, you need to use -[furyctl](https://github.com/sighup-io/furyctl/blob/master/README.md) -and create a `Furyfile.yml` with the list of all the packages that you want to -download. +## Usage + +### Prerequisites + +| Tool | Version | Description | +| --------------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [furyctl][furyctl-repo] | `>=0.6.0` | The recommended tool to download and manage KFD modules and their packages. To learn more about `furyctl` read the [official documentation][furyctl-repo]. | +| [kustomize][kustomize-repo] | `>=3.5.0` | Packages are customized using `kustomize`. To learn how to create your customization layer with `kustomize`, please refer to the [repository][kustomize-repo]. | + +## Deployment -You can download the packages for a full monitoring stack including -Prometheus Operator, Prometheus, Alertmanager, node-exporter, kube-state-metrics -and Grafana using the following `Furyfile.yml` : +1. List the packages you want to deploy and their version in a `Furyfile.yml` ```yaml bases: - name: monitoring/prometheus-operator - version: v1.12.3 + version: v1.14.0 - name: monitoring/prometheus-operated - version: v1.12.3 + version: v1.14.0 - name: monitoring/alertmanager-operated - version: v1.12.3 + version: v1.14.0 - name: monitoring/node-exporter - version: v1.12.3 + version: v1.14.0 - name: monitoring/kube-state-metrics - version: v1.12.3 + version: v1.14.0 - name: monitoring/grafana - version: v1.12.3 + version: v1.14.0 - name: monitoring/goldpinger - version: v1.12.3 + version: v1.14.0 ``` -and execute +Along with the primary components, include one of the following components, +based on the cloud provider for service monitoring: -```bash -furyctl vendor +- ServiceMonitor for AWS EKS cluster + +```yaml + ... + - name: monitoring/eks-sm + version: v1.14.0 ``` -to download the packages under `./vendor/katalog/monitoring`. +- ServiceMonitor for Azure AKS cluster -See `furyctl` -[documentation](https://github.com/sighup-io/furyctl/blob/master/README.md) -for details about `Furyfile.yml` format. +```yaml + ... + - name: monitoring/aks-sm + version: v1.14.0 +``` -To deploy the packages to your cluster, define a `kustomization.yaml` with the -following content: +- ServiceMonitor for GCP GKE cluster ```yaml -bases: - - ./vendor/katalog/monitoring/prometheus-operator + ... + - name: monitoring/gke-sm + version: v1.14.0 ``` -and execute +- ServiceMonitor for OVH cluster -```shell -kustomize build . | kubectl apply -f - +```yaml + ... + - name: monitoring/ovh-sm + version: v1.14.0 ``` -to deploy Prometheus Operator and create the Custom Resource Definitions needed -by the other packages. +- ServiceMonitor for on-premise/self-managed cluster + +```yaml + ... + - name: monitoring/kubeadm-sm + version: v1.14.0 +``` + +> See `furyctl` [documentation][furyctl-repo] for additional details about `Furyfile.yml` format. + +2. Execute `furyctl vendor -H` to download the packages + +3. Inspect the download packages under `./vendor/katalog/monitoring`. + +4. Define a `kustomization.yaml` that includes the `./vendor/katalog/monitoring` directory as resource. -Now you can add the other packages to `kustomization.yaml`, the final file will -have the following content: +To deploy the packages to your cluster, define a `kustomization.yaml` with the +following content: ```yaml bases: @@ -183,74 +181,80 @@ bases: - ./vendor/katalog/monitoring/goldpinger ``` -See `kustomize` -[documentation](https://github.com/kubernetes-sigs/kustomize/blob/master/docs/README.md) -for details about `kustomization.yaml` format. - -To deploy all the packages to your cluster, execute the following command: +Include in the `kustomization` also the servicemonitor package specific to each +service provider as follows: -```bash -kustomize build . | kubectl apply -f - -``` +- For AWS EKS -The following cluster architectures are supported to obtain metrics from -Kubernetes components: - -- on-premise or unmanaged cloud clusters -- Google Kubernetes Engine (GKE) -- Azure Kubernetes Service (AKS) -- Elastic Kubernetes Service (EKS) -- OVH Kubernetes Service +``` yaml + ... + - ./vendor/katalog/monitoring/eks-sm -### On-premise or unmanaged cloud clusters +``` -- Add `monitoring/kubeadm-sm` and `monitoring/configs` to `Furyfile.yml`. -- Download package with `furyctl vendor` -- Add `./vendor/katalog/monitoring/kubeadm-sm` to `kustomization.yaml`. -- Deploy package with `kustomize build . | kubectl apply -f -` +- For GCP GKE -### Google Kubernetes Engine (GKE) +``` yaml + ... + - ./vendor/katalog/monitoring/gke-sm -- Add `monitoring/gke-sm` and `monitoring/configs` to `Furyfile.yml`. -- Download package with `furyctl vendor` -- Add `./vendor/katalog/monitoring/gke-sm` to `kustomization.yaml`. -- Deploy package with `kustomize build . | kubectl apply -f -` +``` -### Elastic Kubernetes Service (EKS) +- For Azure AKS -- Add `monitoring/eks-sm` and `monitoring/configs` to `Furyfile.yml`. -- Download package with `furyctl vendor` -- Add `./vendor/katalog/monitoring/eks-sm` to `kustomization.yaml`. -- Deploy package with `kustomize build . | kubectl apply -f -` +``` yaml + ... + - ./vendor/katalog/monitoring/aks-sm -### Azure Kubernetes Service (AKS) +``` -- Add `monitoring/aks-sm` and `monitoring/configs` to `Furyfile.yml`. -- Download package with `furyctl vendor` -- Add `./vendor/katalog/monitoring/aks-sm` to `kustomization.yaml`. -- Deploy package with `kustomize build . | kubectl apply -f -` +- For On-premise/self-hosted -### OVH Kubernetes Service +``` yaml + ... + - ./vendor/katalog/monitoring/kubeadm-sm -- Add `monitoring/ovh-sm` and `monitoring/configs` to `Furyfile.yml`. -- Download package with `furyctl vendor` -- Add `./vendor/katalog/monitoring/ovh-sm` to `kustomization.yaml`. -- Deploy package with `kustomize build . | kubectl apply -f -` +``` -If you need to customize our packages you can do it with `kustomize`. It lets -you create customized Kubernetes resources based on other Kubernetes resource -files, leaving the original YAML untouched and usable as-is. To learn how to -create your customization layer with it please see the `kustomize` -[repository](https://github.com/kubernetes-sigs/kustomize). +5. To deploy the packages to your cluster, execute: -For further details please refer to the single package directories in this -repository. +```shell +kustomize build . | kubectl apply -f - +``` ## Examples To see examples on how to customize Fury Kubernetes Monitoring packages, please go to [examples](examples) directory. + + +[kube-prometheus-link]: https://github.com/prometheus-operator/kube-prometheus +[prometheus-link]: https://github.com/prometheus/prometheus +[alertmanager-link]: https://github.com/prometheus/alertmanager +[servicemonitori-link]: https://github.com/prometheus-operator/prometheus-operator#customresourcedefinitions +[grafana-link]: https://grafana.com/ +[compatibility-matrix]: https://github.com/sighupio/fury-kubernetes-monitoring/docs/COMPATIBILITY_MATRIX.md +[kfd-repo]: https://github.com/sighupio/fury-distribution +[furyctl-repo]: https://github.com/sighupio/furyctl +[kustomize-repo]: https://github.com/kubernetes-sigs/kustomize +[kfd-docs]: https://docs.kubernetesfury.com/docs/distribution/ +[metrics-api]: https://github.com/kubernetes/metrics + + + + + +## Contributing + +Before contributing, please read first the [Contributing Guidelines](docs/CONTRIBUTING.md). + +### Reporting Issues + +In case you experience any problem with the module, please [open a new issue](https://github.com/sighupio/fury-kubernetes-networking/issues/new/choose). + ## License -For license details please see [LICENSE](LICENSE) +This module is open-source and it's released under the following [LICENSE](LICENSE) + + From 13fb28f0b2a556b9b48b555c132812be2300fffd Mon Sep 17 00:00:00 2001 From: Nandaja Varma Date: Tue, 25 Jan 2022 16:46:24 +0100 Subject: [PATCH 4/9] adding compatibility matrix --- docs/COMPATIBILITY_MATRIX.md | 45 ++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 docs/COMPATIBILITY_MATRIX.md diff --git a/docs/COMPATIBILITY_MATRIX.md b/docs/COMPATIBILITY_MATRIX.md new file mode 100644 index 00000000..8a8ce766 --- /dev/null +++ b/docs/COMPATIBILITY_MATRIX.md @@ -0,0 +1,45 @@ +# Compatibility Matrix + +| Module Version / Kubernetes Version | 1.14.X | 1.15.X | 1.16.X | 1.17.X | 1.18.X | 1.19.X | 1.20.X | 1.21.X | 1.22.X | 1.23.X | +|-------------------------------------|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|-----------| +| v1.0.0 | | :white_check_mark: | | | | | | | | | +| v1.1.0 | :white_check_mark: | :white_check_mark: | :x: | | | | | | | | +| v1.2.0 | :white_check_mark: | :white_check_mark: | :x: | | | | | | | | +| v1.3.0 | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | | | | +| v1.4.0 | :warning: | :warning: | :white_check_mark: | | | | | | | | +| v1.4.1 | :warning: | :warning: | :white_check_mark: | | | | | | | | +| v1.5.0 | :warning: | :warning: | :white_check_mark: | | | | | | | | +| v1.6.0 | :warning: | :warning: | :white_check_mark: | | | | | | | | +| v1.6.1 | :warning: | :warning: | :white_check_mark: | | | | | | | | +| v1.7.0 | :warning: | :warning: | :white_check_mark: | | | | | | | | +| v1.7.1 | :warning: | :warning: | :white_check_mark: | | | | | | | | +| v1.8.0 | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | | +| v1.9.0 | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | | +| v1.10.0 | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | | | | +| v1.10.1 | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | | | | +| v1.10.2 | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | | | | +| v1.11.0 | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | | | +| v1.12.0 | | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | | +| v1.12.1 | | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | | +| v1.12.2 | | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | | +| v1.13.0 | | | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | +| v1.14.0 | | | | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | + +- :white_check_mark: Compatible +- :warning: Has issues +- :x: Incompatible + +## Warning + +- [kube-state-metrics](katalog/kube-state-metrics) is not able to scrape + `ValidatingWebhookConfiguration` in Kubernetes < 1.16.X. +- :warning: : module version: `v1.11.0` and Kubernetes Version: `1.20.x`. It works as expected. Marked as warning +because it is not officially supported by [SIGHUP](https://sighup.io). +- :warning: : module version: `v1.12.0` and Kubernetes Version: `1.21.x`. It works as expected. Marked as warning +because it is not officially supported by [SIGHUP](https://sighup.io). +- :warning: : module version: `v1.13.0` and Kubernetes Version: `1.22.x`. It works as expected. Marked as warning +because it is not officially supported by [SIGHUP](https://sighup.io). +- :warning: : module version: `v1.14.0` and Kubernetes Version: `1.23.x`. It works as expected. Marked as warning +because it is not officially supported by [SIGHUP](https://sighup.io). + + From 08aa9107397539c02a06cdef8c67c3e9c3a13047 Mon Sep 17 00:00:00 2001 From: Nandaja Varma Date: Wed, 26 Jan 2022 16:23:54 +0100 Subject: [PATCH 5/9] Fixing the component readmes --- katalog/aks-sm/README.md | 4 +++ katalog/alertmanager-operated/README.md | 33 ++++++++++++++--------- katalog/eks-sm/README.md | 4 +++ katalog/gke-sm/README.md | 6 ++++- katalog/grafana/README.md | 19 ++++++++----- katalog/kube-proxy-metrics/README.md | 21 ++++++++++----- katalog/kube-state-metrics/README.md | 17 +++++++----- katalog/kubeadm-sm/README.md | 5 ++-- katalog/metrics-server/README.md | 23 +++++++++------- katalog/node-exporter/README.md | 24 ++++++++++------- katalog/ovh-sm/README.md | 4 +++ katalog/prometheus-operated/README.md | 28 ++++++++++--------- katalog/prometheus-operator/README.md | 36 +++++++++++++------------ katalog/thanos/README.md | 6 ++++- katalog/x509-exporter/README.md | 8 +++--- 15 files changed, 149 insertions(+), 89 deletions(-) diff --git a/katalog/aks-sm/README.md b/katalog/aks-sm/README.md index 67bef443..1b98556a 100644 --- a/katalog/aks-sm/README.md +++ b/katalog/aks-sm/README.md @@ -1,5 +1,7 @@ # AKS ServiceMonitor + + This package provides monitoring for Kubernetes components `kubelet`, `coredns` and `api-server` on AKS. @@ -26,6 +28,8 @@ Fury distribution AKS ServiceMonitor has the following configuration: - `pod-total`: Kubernetes / Networking / Pod - `workload-total`: Kubernetes / Networking / Workload + + ## License For license details please see [LICENSE](../../LICENSE) diff --git a/katalog/alertmanager-operated/README.md b/katalog/alertmanager-operated/README.md index cc7efff0..f056a944 100644 --- a/katalog/alertmanager-operated/README.md +++ b/katalog/alertmanager-operated/README.md @@ -1,5 +1,7 @@ # Alertmanager Operated + + Alertmanager handles alerts sent by Prometheus server and routes them to configured receiver integrations such as email, Slack, PageDuty, or OpsGenie. It helps you to manage alerts flexibly with its grouping, inhibition @@ -9,33 +11,30 @@ Fury Prometheus deployment (see [prometheus-operated](../prometheus-operated)) is already configured to automatically discover Alertmanager instances deployed with this package. - ## Image repository and tag -* Alertmanager image: `quay.io/prometheus/alertmanager:v0.22.2` -* Alertmanager repository: [https://github.com/prometheus/alertmanager](https://github.com/prometheus/alertmanager) -* Alertmanager documentation: [https://prometheus.io/docs/alerting/alertmanager](https://prometheus.io/docs/alerting/alertmanager) - +* Alertmanager image: `registry.sighup.io/prometheus/alertmanager:v0.22.2` +* Alertmanager repository: [Alertmanager on Github][am-gh] +* Alertmanager documentation: [Alertmanager Homepage][am-doc] ## Requirements - Kubernetes >= `1.20.0` -- Kustomize >= `v3` +- Kustomize >= `v3.3.X` - [prometheus-operator](../prometheus-operator) - ## Configuration Fury distribution Alertmanager is deployed with the following configuration: + - Replica number: `3` - Listens on port `9093` - Alertmanager metrics are scraped by Prometheus every `30s` - ## Deployment Before deploying this, please take a look at how to configure the alertmanager [the -right way](../../examples/alertmanger-configuration). +right way][example-2]. You can deploy Alertmanager by running the following command in the root of the project: @@ -52,12 +51,20 @@ You can access to Alertmanager dashboard by port-forwarding on port 9093: kubectl port-forward svc/alertmanager-main 9093:9093 --namespace monitoring ``` -Now you can go to [http://127.0.0.1:9093](http://127.0.0.1:9093) on your browser to see and manage your -alerts. +Now you can go to [http://127.0.0.1:9093](http://127.0.0.1:9093) on your browser +to see and manage your alerts. + +To learn how to add external URL to access Alertmanager please see the +[example][example]. + +Links -To learn how to add external URL to acess Alertmanager please see the -[example](../../examples/prometheus-alertmanager-externalUrl). +[am-gh]: https://github.com/prometheus/alertmanager +[am-doc]: https://prometheus.io/docs/alerting/alertmanager +[example]: https://github.com/sighupio/fury-kubernetes-monitoring/examples/prometheus-alertmanager-externalUrl +[example-2]: https://github.com/sighupio/fury-kubernetes-monitoring/examples/alertmanger-configuration + ## License diff --git a/katalog/eks-sm/README.md b/katalog/eks-sm/README.md index 3f11d6dd..4cd55f4b 100644 --- a/katalog/eks-sm/README.md +++ b/katalog/eks-sm/README.md @@ -1,5 +1,7 @@ # EKS ServiceMonitor + + This package provides monitoring for Kubernetes components `kubelet` and `api-server` on EKS. @@ -26,6 +28,8 @@ Fury distribution EKS ServiceMonitor has following configuration: - `pod-total`: Kubernetes / Networking / Pod - `workload-total`: Kubernetes / Networking / Workload + + ## License For license details please see [LICENSE](../../LICENSE) diff --git a/katalog/gke-sm/README.md b/katalog/gke-sm/README.md index 2474354f..5d898ee9 100644 --- a/katalog/gke-sm/README.md +++ b/katalog/gke-sm/README.md @@ -1,7 +1,9 @@ # GKE ServiceMonitor + + This package provides monitoring for Kubernetes components `kubelet` and -`api-server` on GKE. +`api-server` on GKE, the managed cluster solution by GCP. ## Requirements @@ -24,6 +26,8 @@ Fury distribution GKE ServiceMonitor has following configuration: - `pod-total`: Kubernetes / Networking / Pod - `workload-total`: Kubernetes / Networking / Workload + + ## License For license details please see [LICENSE](../../LICENSE) diff --git a/katalog/grafana/README.md b/katalog/grafana/README.md index fbedfb8c..8571a7d5 100644 --- a/katalog/grafana/README.md +++ b/katalog/grafana/README.md @@ -1,5 +1,7 @@ # Grafana + + Grafana is an open-source data visualization and graph composer platform for numeric time-series data with Prometheus integration. @@ -15,7 +17,7 @@ numeric time-series data with Prometheus integration. ## Requirements - Kubernetes >= `1.20.0` -- Kustomize = `v3.5.3` +- Kustomize = `v3.3.x` ## Configuration @@ -30,10 +32,12 @@ Fury distribution Grafana is deployed with the following configuration: ## Add new dashboards -You can create a Configmap in your project with a JSON of a grafana dashboard and then labeling it with the label -key = "grafana-sighup-dashboard", the value of the label is up to you (for mental healthiness should be better than -the value respects some sort of reference with the project to with the dashboard is related). Labeling it, the sidecar -k8s-sidecar will take care of it and inject it into a shared volume where grafana does a lookup and discover it. +You can create a Configmap in your project with a JSON of a grafana dashboard +and then labeling it with the label key `grafana-sighup-dashboard`, the value +of the label is up to you (for mental healthiness should be better than the +value respects some sort of reference with the project to with the dashboard is +related). Labeling it, the sidecar k8s-sidecar will take care of it and inject +it into a shared volume where grafana does a lookup and discover it. Look at the [dashboards](dashboards) folder kustomization.yml for an example. ## Deployment @@ -52,13 +56,16 @@ You can access Grafana Dashboard by port-forwarding on port `3000`: kubectl port-forward svc/grafana 3000:3000 --namespace monitoring ``` -Grafana will be available on [http://127.0.0.1:3000](http://127.0.0.1:3000) from your browser. +Grafana will be available on [http://127.0.0.1:3000](http://127.0.0.1:3000) from +your browser. ### Adding/Removing Dashboards To learn how to add or remove dashboards to Grafana please see the [examples](../../examples) folder. + + ## License For license details please see [LICENSE](../../LICENSE) diff --git a/katalog/kube-proxy-metrics/README.md b/katalog/kube-proxy-metrics/README.md index eaebccda..d64f3f75 100644 --- a/katalog/kube-proxy-metrics/README.md +++ b/katalog/kube-proxy-metrics/README.md @@ -1,10 +1,13 @@ # kube-proxy exporter -It is highly recommended gathering metrics from kube-proxy as it is a critical piece of any Kubernetes Cluster. -Sometimes (especially in managed clusters) it is not possible to configure kube-proxy to expose metrics, this is why -this package exists. Another reason to run this exporter instead of just exposing metrics from kube-proxy is the -ability to run it independently of the environment, on-premise installed by kubeadm or a managed Kubernetes Cluster. + +It is highly recommended gathering metrics from kube-proxy as it is a critical +piece of any Kubernetes Cluster. Sometimes (especially in managed clusters) it +is not possible to configure kube-proxy to expose metrics, this is why this +package exists. Another reason to run this exporter instead of just exposing +metrics from kube-proxy is the ability to run it independently of the +environment, on-premise installed by kubeadm or a managed Kubernetes Cluster. ## Requirements @@ -15,9 +18,8 @@ ability to run it independently of the environment, on-premise installed by kube ## Image repository and tag -- kube-rbac-proxy image: `quay.io/brancz/kube-rbac-proxy:v0.11.0` -- kube-rbac-proxy repository: - [https://quay.io/repository/brancz/kube-rbac-proxy](https://quay.io/repository/brancz/kube-rbac-proxy) +- kube-rbac-proxy image: `registry.sighup.io/fury/brancz/kube-rbac-proxy:v0.11.0` +- kube-rbac-proxy repository: [kube-rbac-proxy on Github][krp-gh] ## Configuration @@ -40,6 +42,11 @@ the project: kustomize build | kubectl apply -f - ``` + + +[krp-gh]: https://quay.io/repository/brancz/kube-rbac-proxy + + ## License diff --git a/katalog/kube-state-metrics/README.md b/katalog/kube-state-metrics/README.md index c9bfd532..8cc9a09a 100644 --- a/katalog/kube-state-metrics/README.md +++ b/katalog/kube-state-metrics/README.md @@ -1,5 +1,7 @@ # Kube State Metrics + + This package provides kube-state-metrics service which listens to Kubernetes API server and generates metrics about the state of Kubernetes objects like Deployments, Nodes, or Pods. @@ -20,16 +22,13 @@ From kube-state-metrics ## Requirements - Kubernetes >= `1.20.0` -- Kustomize = `v3.0.X` +- Kustomize = `v3.3.X` - [prometheus-operator](../prometheus-operator) - ## Image repository and tag -* kube-state-metrics image: `k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.2.0` -* kube-state-metrics repository: - - +* kube-state-metrics image: `registry.sighup.io/fury/kube-state-metrics/kube-state-metrics:v2.2.0` +* kube-state-metrics repository: [kube-state-metrics on GH][ksm-gh] ## Configuration @@ -40,7 +39,6 @@ Fury distribution kube-state-metrics is deployed with the following configuratio port `8081` - Metrics are scraped by Prometheus with `30s` intervals - ## Deployment You can deploy kube-state-metrics by running the following command in the root of @@ -50,6 +48,11 @@ the project: kustomize build | kubectl apply -f - ``` + + +[ksm-gh]: https://github.com/kubernetes/kube-state-metrics + + ## License diff --git a/katalog/kubeadm-sm/README.md b/katalog/kubeadm-sm/README.md index bbdc9f7d..a0058a19 100644 --- a/katalog/kubeadm-sm/README.md +++ b/katalog/kubeadm-sm/README.md @@ -1,5 +1,7 @@ # Kubeadm ServiceMonitor + + This package provides monitoring for the following Kubernetes components: - kubelet @@ -14,14 +16,12 @@ want to learn more about these components please follow the official [documentation](https://kubernetes.io/docs/concepts/overview/components/) of Kubernetes. - ## Requirements - Kubernetes >= `1.20.0` - Kustomize = `v3.3.0` - [prometheus-operator](../prometheus-operator) - ## Configuration Prometheus scrapes Kubernetes component metrics on port `metrics` with following @@ -79,6 +79,7 @@ The followings alerts are already defined for this package. | EtcdHighFsyncDurations | This alert fires if the WAL fsync 99th percentile latency was higher than 0.5s in the last 10 minutes. | warning | 10m | | EtcdHighCommitDurations | This alert fires if the backend commit 99th percentile latency was higher than 0.25s in the last 10 minutes. | warning | 10m | + ## License diff --git a/katalog/metrics-server/README.md b/katalog/metrics-server/README.md index b1c20377..23b1eca3 100644 --- a/katalog/metrics-server/README.md +++ b/katalog/metrics-server/README.md @@ -1,24 +1,23 @@ # Metrics Server + + Metrics Server is a cluster-wide aggregator of resource usage metrics for pods and nodes. These are the same metrics that you can access by using `kubectl top`. The metrics server collects metrics from the Summary API, exposed by Kubelet on each node. - ## Requirements - Kubernetes >= `1.20.0` -- Kustomize >= `3.0.x` -- cert-manager >= `1.0.0` - +- Kustomize >= `3.3.x` +- [cert-manager][cert] >= `1.0.0` ## Image repository and tag -* Metrics Server image: `gcr.io/google_containers/metrics-server-amd64:v0.5.0` -* Metrics Server repo: [https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/metrics-server](https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/metrics-server) -* Metrics Server documentation: [https://kubernetes.io/docs/tasks/debug-application-cluster/core-metrics-pipeline/](https://kubernetes.io/docs/tasks/debug-application-cluster/core-metrics-pipeline/) - +* Metrics Server image: `registry.sighup.io/fury/metrics-server:v0.5.0` +* Metrics Server repo: [Metrics Server GH][ms-gh] +* Metrics Server documentation: [Metrics Server GH][ms-doc] ## Configuration @@ -28,7 +27,6 @@ Fury distribution Metrics Server is deployed with the following configuration: - Metrics are scraped from Kubelets every `30s` - Skips verifying Kubelet CA certificates - ## Deployment You can deploy Metrics Server by running the following command in the root of the @@ -38,6 +36,13 @@ project: kustomize build | kubectl apply -f - ``` + + +[cert]: https://github.com/sighupio/fury-kubernetes-ingress/tree/master/katalog/cert-manager +[ms-gh]: https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/metrics-server +[ms-doc]: https://kubernetes.io/docs/tasks/debug-application-cluster/core-metrics-pipeline/ + + ## License diff --git a/katalog/node-exporter/README.md b/katalog/node-exporter/README.md index 1316c286..f6f818df 100644 --- a/katalog/node-exporter/README.md +++ b/katalog/node-exporter/README.md @@ -1,41 +1,45 @@ # Node Exporter + + This package provides monitoring for hardware and OS metrics exposed by \*NIX kernels provided by node-exporter service. You can see a list of collectors -enabled by default from the project's -[repository](https://github.com/prometheus/node_exporter#collectors) - +enabled by default from the project's [repository][ne-gh] ## Requirements - Kubernetes >= `1.20.0` -- Kustomize = `v3.0.x` +- Kustomize = `v3.3.x` - [prometheus-operator](../prometheus-operator) - ## Image repository and tag -* node-exporter image: `quay.io/prometheus/node-exporter:v1.3.1` -* node-exporter repository: [https://github.com/prometheus/node_exporter](https://github.com/prometheus/node_exporter) - +* node-exporter image: `registry.sighup.io/fury/prometheus/node-exporter:v1.3.1` +* node-exporter repository: [Node-Exporter on Github][ne-gh] ## Configuration Fury distribution node-exporter is deployed with the following configuration: + - Ignore filesystem mount points starting with `dev|proc|sys|var/lib/docker` (local to the container file system) - Ignore filesystem types `autofs|binfmt_misc|cgroup|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|mqueue|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|sysfs|tracefs` - Resource limits are `250m` for CPU and `180Mi` for memory - Listens on port `9100` - ## Deployment -You can deploy node-exporter by running the following command in the root of the project: +You can deploy node-exporter by running the following command in the root of the +project: ```shell kustomize build | kubectl apply -f - ``` + + +[ne-gh]: https://github.com/prometheus/node_exporter + + ## License diff --git a/katalog/ovh-sm/README.md b/katalog/ovh-sm/README.md index 31ba09a7..98572d75 100644 --- a/katalog/ovh-sm/README.md +++ b/katalog/ovh-sm/README.md @@ -1,5 +1,7 @@ # OVH ServiceMonitor + + This package provides monitoring for Kubernetes components `kubelet` and `api-server` on OVH Kubernetes Service. @@ -26,6 +28,8 @@ Fury distribution OVH ServiceMonitor has following configuration: - `pod-total`: Kubernetes / Networking / Pod - `workload-total`: Kubernetes / Networking / Workload + + ## License For license details please see [LICENSE](../../LICENSE) diff --git a/katalog/prometheus-operated/README.md b/katalog/prometheus-operated/README.md index 0858a6d0..cbf29301 100644 --- a/katalog/prometheus-operated/README.md +++ b/katalog/prometheus-operated/README.md @@ -1,5 +1,7 @@ # Prometheus Operated + + Prometheus Operated deploys Prometheus instances via Prometheus CRD as defined by [Prometheus Operator](../prometheus-operator). @@ -11,31 +13,28 @@ also possible to integrate it with third-party time-series analytics tools like Grafana. Grafana integration is provided in Fury monitoring katalog, please see [Grafana](../grafana) package's documentation. - ## Requirements - Kubernetes >= `1.20.0` -- Kustomize = `v3.0.X` +- Kustomize = `v3.3.X` - [prometheus-operator](../prometheus-operator) - ## Image repository and tag -* Prometheus image: `quay.io/prometheus/prometheus:v2.32.1` -* Prometheus repository: -* Prometheus documentation: - +* Prometheus image: `registry.sighup.io/prometheus/prometheus:v2.32.1` +* Prometheus repository: [Prometheus on Github][prom-gh] +* Prometheus documentation: [Prometheus Homepage][prom-doc] ## Configuration Fury distribution Prometheus is deployed with the following configuration: + - Replica number: `1` - Retention for `30` days - Requires `150Gi` storage(with default storage type of Provider) - Listens on port `9090` - Alert manager endpoint set to `alertmanager-main` - ## Deployment You can deploy Prometheus Operated by running the following command in the root of @@ -48,7 +47,6 @@ kustomize build | kubectl apply -f - To learn how to customize it for your needs please see the [examples](../../examples) folder. - ### Accessing Prometheus UI You can access to Prometheus expression browser by port-forwarding on port 9090: @@ -60,7 +58,6 @@ kubectl port-forward svc/prometheus-k8s 9090:9090 --namespace monitoring Now if you go to on your browser you can execute queries and visualize query results. - ### Service Monitoring Target discovery is achieved via ServiceMonitor CRD, to learn more about @@ -68,8 +65,7 @@ ServiceMonitor please follow Prometheus Operator's [documentation](https://github.com/coreos/prometheus-operator/blob/master/Documentation/user-guides/running-exporters.md). To learn how to create ServiceMonitor resources for your services please see the -[example](../../examples/serviceMonitor). - +[example][example]. ### Prometheus Rules and Alerts @@ -82,7 +78,6 @@ and Prometheus To learn how to define alert rules for your services please see the [example](../../examples/prometheus-rules). - ## Alerts The followings alerts are already defined for this package. @@ -186,6 +181,13 @@ The followings alerts are already defined for this package. | KubeMemOvercommit | This alert fires if the hard limit of memory resources quota in the last 5 minutes is more than 150% of the available resources, i.e. the hard limit is set too high. | warning | 5m | | KubeQuotaExceeded | This alert fires if a given resource was used for more than 90% of the corresponding hard quota in the last 15 minutes. | warning | 15m | + + +[prom-gh]: https://github.com/prometheus/prometheus +[prom-doc]: https://prometheus.io/docs/introduction/overview +[example]: https://github.com/sighupio/fury-kubernetes-monitoring/examples/serviceMonitor + + ## License diff --git a/katalog/prometheus-operator/README.md b/katalog/prometheus-operator/README.md index d12f2173..41525240 100644 --- a/katalog/prometheus-operator/README.md +++ b/katalog/prometheus-operator/README.md @@ -1,16 +1,19 @@ # Prometheus Operator -Operators are application-specific controllers for complex stateful + + +Operators are application-specific controllers for complex state-ful applications. They are used to having more Kubernetes-native control over applications. Prometheus Operator makes it easy to deploy and manage Prometheus -instances. But also provides easy monitoring definitions for Kubernetes +instances. It also provides easy monitoring definitions for Kubernetes services. We can easily deploy Prometheus servers and use advanced options in the Prometheus CRD to let the Operator handle version upgrades, persistent -volume claims, and the discovery of Alertmanager instances. Thanks to Prometheus -Operator you don't have to learn Prometheus-specific configuration language to -monitor your services. Target discovery is achieved through ServiceMonitor CRD, -target configurations are automatically generated based on Kubernetes label -selectors. +volume claims, and the discovery of `Alertmanager` instances. + +Thanks to Prometheus Operator you don't have to learn Prometheus-specific +configuration language to monitor your services. Target discovery is achieved +through `ServiceMonitor` CRD, target configurations are automatically generated +based on Kubernetes label selectors. The Operator acts on the following custom resource definitions ([CRDs](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/)): @@ -32,21 +35,17 @@ The Operator acts on the following custom resource definitions The operator takes care of Prometheus deployment and monitors Services as illustrated in this image from Prometheus Operator repository: -![operator -architecture](https://coreos.com/sites/default/files/inline-images/p1.png) - +![operator architecture](https://coreos.com/sites/default/files/inline-images/p1.png) ## Requirements - Kubernetes >= `1.20.0` -- Kustomize = `v3.0.X` - +- Kustomize = `v3.3.X` ## Image repository and tag -* Prometheus Operator image: `quay.io/prometheus-operator/prometheus-operator:v0.50.0` -* Prometheus Operator repository: [https://github.com/prometheus-operator/prometheus-operator](https://github.com/prometheus-operator/prometheus-operator) - +* Prometheus Operator image: `registry.sighup.io/prometheus-operator/prometheus-operator:v0.53.1` +* Prometheus Operator repository: [Prometheus Operator on Github][prom-op-github] ## Configuration @@ -57,7 +56,6 @@ Fury distribution Prometheus Operator is deployed with the following configurati - Resource limits are `200m` for CPU and `200Mi` for memory - Listens on port `8080` - ## Deployment You can deploy Prometheus Operator by running the following command in the root of @@ -67,7 +65,6 @@ the project: kustomize build | kubectl apply -f - ``` - ## Deploying Prometheus Once Prometheus Operator is deployed, you can deploy Prometheus and Alertmanager @@ -78,6 +75,11 @@ deploy Prometheus via Operator please see deploy Alertmanager please see [alertmanager-operated](../alertmanager-operated) documentation. + + +[prom-op-github]: https://github.com/prometheus-operator/prometheus-operator + + ## License diff --git a/katalog/thanos/README.md b/katalog/thanos/README.md index 572e2386..5564c5b7 100644 --- a/katalog/thanos/README.md +++ b/katalog/thanos/README.md @@ -1,5 +1,7 @@ # Thanos + + Thanos is an opensource Prometheus setup that allows having 2 important features: 1. high availability on Prometheus (setting more Prometheus replicas) @@ -12,7 +14,7 @@ This is the simplified diagram of a Thanos architecture: ## Image repository and tag - Thanos components versions: `v0.24.0` -- Thanos components image: `quay.io/thanos/thanos:v0.24.0` +- Thanos components image: `registry.sighup.io/fury/thanos/thanos:v0.24.0` ## Setup in Fury Module @@ -129,3 +131,5 @@ spec: serviceName: thanos-query servicePort: http ``` + + diff --git a/katalog/x509-exporter/README.md b/katalog/x509-exporter/README.md index 38119642..6f715fd9 100644 --- a/katalog/x509-exporter/README.md +++ b/katalog/x509-exporter/README.md @@ -1,5 +1,7 @@ # x509 Exporter + + This package provides monitoring for certificates. The original project is: [x509-certificate-exporter](https://github.com/enix/x509-certificate-exporter) @@ -7,14 +9,13 @@ The original project is: [x509-certificate-exporter](https://github.com/enix/x50 ## Requirements - Kubernetes >= `1.20.0` -- Kustomize = `v3.0.x` +- Kustomize = `v3.3.x` - [prometheus-operator](../prometheus-operator) ## Image repository and tag -* Certificate exporter image: `docker.io/enix/x509-certificate-exporter:2.12.1` - +* Certificate exporter image: `registry.sighup.io/fury/enix/x509-certificate-exporter:2.12.1` ## Deployment @@ -24,6 +25,7 @@ You can deploy x509 exporter by running the following command in the root of the kustomize build | kubectl apply -f - ``` + ## License From 5d266b894c1d79b604337ace166d4626cff07986 Mon Sep 17 00:00:00 2001 From: Nandaja Varma Date: Fri, 28 Jan 2022 08:14:58 +0100 Subject: [PATCH 6/9] Fixing the review comments --- README.md | 36 +++++++++++++-------------- katalog/prometheus-operated/README.md | 2 +- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 0a491a66..e26ffd4b 100644 --- a/README.md +++ b/README.md @@ -16,26 +16,26 @@ If you are new to KFD please refer to the [official documentation][kfd-docs] on ## Overview -This module is designed so as to give you full control and visibility over your +This module is designed to give you full control and visibility over your cluster operations. Metrics from the cluster and the applications are collected and clean analytics are offered via a visualization platform, [Grafana][grafana-link]. The centerpiece of this module is the [`prometheus-operator`], which offers the easy deployment of the following as controllers: -- [Prometheus][promethus-link]: An open-source monitoring and alerting toolkit for cloud-native applications +- [Prometheus][prometheus-link]: An open-source monitoring and alerting toolkit for cloud-native applications - [Alertmanager][alertmanager-link]: Manages alerts sent by the Prometheus server and route them through receiver integrations such as email, Slack, or PagerDuty -- [ServiceMonitor][servicemonitor-link]: Declaratively specifies how groups of services should be monitored, by automatically generates Prometheus scrape configuration based on the definition +- [ServiceMonitor][servicemonitor-link]: Declaratively specifies how groups of services should be monitored, by automatically generating Prometheus scrape configuration based on the definition Since the export of certain metrics can be heavily cloud-provider specific, we provide a bunch of cloud-provider specific configuration. The setups we -currently support includes: +currently support include: - Google Kubernetes Engine (GKE) - Azure Kubernetes Service (AKS) - Elastic Kubernetes Service (EKS) - OVH Kubernetes Service -- on-premise or unmanaged cloud clusters +- on-premises or self-managed cloud clusters Most of the components in this module are deployed in namespace `monitoring`, unless the functionality requires a permission that forces it to be deployed in the @@ -57,20 +57,20 @@ Kubernetes Fury Monitoring provides the following packages: | [node-exporter](katalog/node-exporter) | `1.3.1` | Service Monitor for hardware and OS metrics exposed by \*NIX kernels | | [metrics-server](katalog/metrics-server) | `0.5.2` | Resource metrics collection from kubelet and exposition through [Metrics API][metric-api] | | [Thanos](katalog/thanos) | `0.24.0` | Thanos is a high-availability Prometheus setup that provides long term storage via an external object store | -| [x509-exporter](katalog/x509-exporter) | `2.12.1` | Provides monitoring for certification | +| [x509-exporter](katalog/x509-exporter) | `2.12.1` | Provides monitoring for certificates | ### Integration with cloud providers One of the following components can be used to enable service monitoring in each cloud environment: -| Component | Description | -|----------------------------------|----------------------------------------------------------------------------------------------------------| -| [aks-sm](katalog/aks-sm) | Service Monitor to collect Kubernetes components metrics from AKS | -| [gke-sm](katalog/gke-sm) | Service Monitor to collect Kubernetes components metrics from GKE | -| [eks-sm](katalog/eks-sm) | Service Monitor to collect Kubernetes components metrics from EKS | -| [ovh-sm](katalog/ovh-sm) | Service Monitor to collect Kubernetes components metrics from OVH Kubernetes Service | -| [kubeadm-sm](katalog/kubeadm-sm) | Service Monitors, Prometheus rules and alerts for Kubernetes components of unmanaged/on-premise clusters | +| Component | Description | +|----------------------------------|-----------------------------------------------------------------------------------------------------------------| +| [aks-sm](katalog/aks-sm) | Service Monitor to collect Kubernetes components metrics from AKS | +| [gke-sm](katalog/gke-sm) | Service Monitor to collect Kubernetes components metrics from GKE | +| [eks-sm](katalog/eks-sm) | Service Monitor to collect Kubernetes components metrics from EKS | +| [ovh-sm](katalog/ovh-sm) | Service Monitor to collect Kubernetes components metrics from OVH Kubernetes Service | +| [kubeadm-sm](katalog/kubeadm-sm) | Service Monitors, Prometheus rules and alerts for Kubernetes components of self-managed or on-premises clusters | Please refer the individual package documentation for further details. @@ -83,7 +83,7 @@ Please refer the individual package documentation for further details. | `1.22.x` | :white_check_mark: | No known issues | | `1.23.x` | :warning: | Conformance tests passed. Not officially supported. | -Check the [compatibility matrix][compatibility-matrix] for additional informations about previous releases of the modules. +Check the [compatibility matrix][compatibility-matrix] for additional information about previous releases of the modules. ## Usage @@ -151,7 +151,7 @@ based on the cloud provider for service monitoring: version: v1.14.0 ``` -- ServiceMonitor for on-premise/self-managed cluster +- ServiceMonitor for on-premises and for self-managed cluster ```yaml ... @@ -208,7 +208,7 @@ service provider as follows: ``` -- For On-premise/self-hosted +- For On-premises and for self-managed ``` yaml ... @@ -232,9 +232,9 @@ go to [examples](examples) directory. [kube-prometheus-link]: https://github.com/prometheus-operator/kube-prometheus [prometheus-link]: https://github.com/prometheus/prometheus [alertmanager-link]: https://github.com/prometheus/alertmanager -[servicemonitori-link]: https://github.com/prometheus-operator/prometheus-operator#customresourcedefinitions +[servicemonitor-link]: https://github.com/prometheus-operator/prometheus-operator#customresourcedefinitions [grafana-link]: https://grafana.com/ -[compatibility-matrix]: https://github.com/sighupio/fury-kubernetes-monitoring/docs/COMPATIBILITY_MATRIX.md +[compatibility-matrix]: https://github.com/sighupio/fury-kubernetes-logging/blob/master/docs/COMPATIBILITY_MATRIX.md [kfd-repo]: https://github.com/sighupio/fury-distribution [furyctl-repo]: https://github.com/sighupio/furyctl [kustomize-repo]: https://github.com/kubernetes-sigs/kustomize diff --git a/katalog/prometheus-operated/README.md b/katalog/prometheus-operated/README.md index cbf29301..106146cd 100644 --- a/katalog/prometheus-operated/README.md +++ b/katalog/prometheus-operated/README.md @@ -1,7 +1,7 @@ # Prometheus Operated - + Prometheus Operated deploys Prometheus instances via Prometheus CRD as defined by [Prometheus Operator](../prometheus-operator). From f2ab72b72f9d0c0b7dc2d44cecfb7459378692b1 Mon Sep 17 00:00:00 2001 From: Nandaja Varma Date: Fri, 28 Jan 2022 08:16:52 +0100 Subject: [PATCH 7/9] Update v1.14.0.md --- docs/releases/v1.14.0.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/releases/v1.14.0.md b/docs/releases/v1.14.0.md index e505c7df..ea199909 100644 --- a/docs/releases/v1.14.0.md +++ b/docs/releases/v1.14.0.md @@ -44,6 +44,7 @@ kubernetes release `v1.23.0`. - [#77](https://github.com/sighupio/fury-kubernetes-monitoring/pull/77) Added Makefile, JSON builder and .bumpversion config to the module - [#76](https://github.com/sighupio/fury-kubernetes-monitoring/pull/76) Upgrade the component images - [#75](https://github.com/sighupio/fury-kubernetes-monitoring/pull/75) Added e2e-test support for k8s runtime `1.23` +- [#80](https://github.com/sighupio/fury-kubernetes-monitoring/pull/80) Updating the README structure for monitoring module ## Update Guide 🦮 From f7a18e98800fb47dd09362f1590a59e11721c18d Mon Sep 17 00:00:00 2001 From: Nandaja Varma Date: Fri, 28 Jan 2022 08:27:38 +0100 Subject: [PATCH 8/9] Ignore docker file validation --- .drone.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.drone.yml b/.drone.yml index d20b702e..f70599e8 100644 --- a/.drone.yml +++ b/.drone.yml @@ -34,6 +34,8 @@ steps: VALIDATE_JSCPD: "false" VALIDATE_YAML: "false" VALIDATE_TERRAFORM_TFLINT: "false" + # hadolint already validated dockerfiles + VALIDATE_DOCKERFILE: "false" depends_on: - clone From 578d87e7e494e167f8766b95a6aafba0ae8b65df Mon Sep 17 00:00:00 2001 From: Nandaja Varma Date: Fri, 28 Jan 2022 08:34:58 +0100 Subject: [PATCH 9/9] updating the link --- docs/releases/v1.14.0.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/releases/v1.14.0.md b/docs/releases/v1.14.0.md index ea199909..0faf34dc 100644 --- a/docs/releases/v1.14.0.md +++ b/docs/releases/v1.14.0.md @@ -1,7 +1,7 @@ # Monitoring Core Module Release 1.14.0 -Welcome to the latest release of `monitoring` module of (`Kubernetes Fury -Distribution`)[https://github.com/sighupio/fury-distribution] maintained by team +Welcome to the latest release of `monitoring` module of [`Kubernetes Fury +Distribution`](https://github.com/sighupio/fury-distribution) maintained by team SIGHUP. This latest release is an attempt on upgrading the components in the module to