From a3a277d2c60c7405b92a36d1ef6a591064b53b3b Mon Sep 17 00:00:00 2001 From: Pranshu Srivastava Date: Tue, 20 Feb 2024 03:48:30 +0530 Subject: [PATCH 1/3] chore: lint README.md To primarily avoid conflicts and allow for automations. Signed-off-by: Pranshu Srivastava --- Makefile | 11 +++- README.md | 137 +++++++++++++------------------------------------ go.mod | 3 ++ go.sum | 6 +++ tools/go.mod | 3 ++ tools/go.sum | 8 ++- tools/tools.go | 1 + 7 files changed, 64 insertions(+), 105 deletions(-) diff --git a/Makefile b/Makefile index 016a024c24..885154c430 100644 --- a/Makefile +++ b/Makefile @@ -21,6 +21,7 @@ IMAGE = $(REGISTRY)/kube-state-metrics MULTI_ARCH_IMG = $(IMAGE)-$(ARCH) USER ?= $(shell id -u -n) HOST ?= $(shell hostname) +MARKDOWNFMT = $(shell which markdownfmt) MARKDOWNLINT_CLI2_VERSION = 0.9.2 @@ -43,10 +44,10 @@ licensecheck: exit 1; \ fi -lint: shellcheck licensecheck lint-markdown-format +lint: shellcheck licensecheck lint-markdownfmt lint-markdown-format golangci-lint run -lint-fix: fix-markdown-format +lint-fix: lint-markdownfmt-fix fix-markdown-format golangci-lint run --fix -v @@ -84,6 +85,12 @@ shellcheck: lint-markdown-format: ${DOCKER_CLI} run -v "${PWD}:/workdir" davidanson/markdownlint-cli2:v${MARKDOWNLINT_CLI2_VERSION} --config .markdownlint-cli2.jsonc +lint-markdownfmt: + ${MARKDOWNFMT} -d -gofmt README.md + +lint-markdownfmt-fix: + ${MARKDOWNFMT} -w -gofmt README.md + fix-markdown-format: ${DOCKER_CLI} run -v "${PWD}:/workdir" davidanson/markdownlint-cli2:v${MARKDOWNLINT_CLI2_VERSION} --fix --config .markdownlint-cli2.jsonc diff --git a/README.md b/README.md index 5b75994395..c0bd67714e 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,12 @@ # Overview -[![Build Status](https://github.com/kubernetes/kube-state-metrics/workflows/continuous-integration/badge.svg)](https://github.com/kubernetes/kube-state-metrics/actions) -[![Go Report Card](https://goreportcard.com/badge/github.com/kubernetes/kube-state-metrics)](https://goreportcard.com/report/github.com/kubernetes/kube-state-metrics) -[![Go Reference](https://pkg.go.dev/badge/github.com/kubernetes/kube-state-metrics.svg)](https://pkg.go.dev/github.com/kubernetes/kube-state-metrics) -[![govulncheck](https://github.com/kubernetes/kube-state-metrics/actions/workflows/govulncheck.yml/badge.svg)](https://github.com/kubernetes/kube-state-metrics/actions/workflows/govulncheck.yml) -[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/kubernetes/kube-state-metrics/badge)](https://api.securityscorecards.dev/projects/github.com/kubernetes/kube-state-metrics) - -kube-state-metrics (KSM) is a simple service that listens to the Kubernetes API -server and generates metrics about the state of the objects. (See examples in -the Metrics section below.) It is not focused on the health of the individual -Kubernetes components, but rather on the health of the various objects inside, -such as deployments, nodes and pods. - -kube-state-metrics is about generating metrics from Kubernetes API objects -without modification. This ensures that features provided by kube-state-metrics -have the same grade of stability as the Kubernetes API objects themselves. In -turn, this means that kube-state-metrics in certain situations may not show the -exact same values as kubectl, as kubectl applies certain heuristics to display -comprehensible messages. kube-state-metrics exposes raw data unmodified from the -Kubernetes API, this way users have all the data they require and perform -heuristics as they see fit. - -The metrics are exported on the HTTP endpoint `/metrics` on the listening port -(default 8080). They are served as plaintext. They are designed to be consumed -either by Prometheus itself or by a scraper that is compatible with scraping a -Prometheus client endpoint. You can also open `/metrics` in a browser to see -the raw metrics. Note that the metrics exposed on the `/metrics` endpoint -reflect the current state of the Kubernetes cluster. When Kubernetes objects -are deleted they are no longer visible on the `/metrics` endpoint. +[![Build Status](https://github.com/kubernetes/kube-state-metrics/workflows/continuous-integration/badge.svg)](https://github.com/kubernetes/kube-state-metrics/actions) [![Go Report Card](https://goreportcard.com/badge/github.com/kubernetes/kube-state-metrics)](https://goreportcard.com/report/github.com/kubernetes/kube-state-metrics) [![Go Reference](https://pkg.go.dev/badge/github.com/kubernetes/kube-state-metrics.svg)](https://pkg.go.dev/github.com/kubernetes/kube-state-metrics) [![govulncheck](https://github.com/kubernetes/kube-state-metrics/actions/workflows/govulncheck.yml/badge.svg)](https://github.com/kubernetes/kube-state-metrics/actions/workflows/govulncheck.yml) [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/kubernetes/kube-state-metrics/badge)](https://api.securityscorecards.dev/projects/github.com/kubernetes/kube-state-metrics) + +kube-state-metrics (KSM) is a simple service that listens to the Kubernetes API server and generates metrics about the state of the objects. (See examples in the Metrics section below.) It is not focused on the health of the individual Kubernetes components, but rather on the health of the various objects inside, such as deployments, nodes and pods. + +kube-state-metrics is about generating metrics from Kubernetes API objects without modification. This ensures that features provided by kube-state-metrics have the same grade of stability as the Kubernetes API objects themselves. In turn, this means that kube-state-metrics in certain situations may not show the exact same values as kubectl, as kubectl applies certain heuristics to display comprehensible messages. kube-state-metrics exposes raw data unmodified from the Kubernetes API, this way users have all the data they require and perform heuristics as they see fit. + +The metrics are exported on the HTTP endpoint `/metrics` on the listening port (default 8080). They are served as plaintext. They are designed to be consumed either by Prometheus itself or by a scraper that is compatible with scraping a Prometheus client endpoint. You can also open `/metrics` in a browser to see the raw metrics. Note that the metrics exposed on the `/metrics` endpoint reflect the current state of the Kubernetes cluster. When Kubernetes objects are deleted they are no longer visible on the `/metrics` endpoint. ## Table of Contents @@ -61,31 +40,24 @@ are deleted they are no longer visible on the `/metrics` endpoint. #### Kubernetes Version -kube-state-metrics uses [`client-go`](https://github.com/kubernetes/client-go) to talk with -Kubernetes clusters. The supported Kubernetes cluster version is determined by `client-go`. -The compatibility matrix for client-go and Kubernetes cluster can be found -[here](https://github.com/kubernetes/client-go#compatibility-matrix). -All additional compatibility is only best effort, or happens to still/already be supported. +kube-state-metrics uses [`client-go`](https://github.com/kubernetes/client-go) to talk with Kubernetes clusters. The supported Kubernetes cluster version is determined by `client-go`. The compatibility matrix for client-go and Kubernetes cluster can be found [here](https://github.com/kubernetes/client-go#compatibility-matrix). All additional compatibility is only best effort, or happens to still/already be supported. #### Compatibility matrix -At most, 5 kube-state-metrics and 5 [kubernetes releases](https://github.com/kubernetes/kubernetes/releases) will be recorded below. -Generally, it is recommended to use the latest release of kube-state-metrics. If you run a very recent version of Kubernetes, you might want to use an unreleased version to have the full range of supported resources. If you run an older version of Kubernetes, you might need to run an older version in order to have full support for all resources. Be aware, that the maintainers will only support the latest release. Older versions might be supported by interested users of the community. +At most, 5 kube-state-metrics and 5 [kubernetes releases](https://github.com/kubernetes/kubernetes/releases) will be recorded below. Generally, it is recommended to use the latest release of kube-state-metrics. If you run a very recent version of Kubernetes, you might want to use an unreleased version to have the full range of supported resources. If you run an older version of Kubernetes, you might need to run an older version in order to have full support for all resources. Be aware, that the maintainers will only support the latest release. Older versions might be supported by interested users of the community. | kube-state-metrics | Kubernetes client-go Version | |--------------------|:----------------------------:| -| **v2.6.0** | v1.24 | -| **v2.7.0** | v1.25 | -| **v2.8.2** | v1.26 | -| **v2.9.2** | v1.26 | -| **v2.10.0** | v1.27 | -| **main** | v1.28 | +| **v2.6.0** | v1.24 | +| **v2.7.0** | v1.25 | +| **v2.8.2** | v1.26 | +| **v2.9.2** | v1.26 | +| **v2.10.0** | v1.27 | +| **main** | v1.28 | #### Resource group version compatibility -Resources in Kubernetes can evolve, i.e., the group version for a resource may change from alpha to beta and finally GA -in different Kubernetes versions. For now, kube-state-metrics will only use the oldest API available in the latest -release. +Resources in Kubernetes can evolve, i.e., the group version for a resource may change from alpha to beta and finally GA in different Kubernetes versions. For now, kube-state-metrics will only use the oldest API available in the latest release. #### Container Image @@ -96,41 +68,25 @@ The latest container image can be found at: ### Metrics Documentation -Any resources and metrics based on alpha Kubernetes APIs are excluded from any stability guarantee, -which may be changed at any given release. +Any resources and metrics based on alpha Kubernetes APIs are excluded from any stability guarantee, which may be changed at any given release. See the [`docs`](docs) directory for more information on the exposed metrics. #### Conflict resolution in label names -The `*_labels` family of metrics exposes Kubernetes labels as Prometheus labels. -As [Kubernetes](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set) -is more liberal than -[Prometheus](https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels) -in terms of allowed characters in label names, -we automatically convert unsupported characters to underscores. -For example, `app.kubernetes.io/name` becomes `label_app_kubernetes_io_name`. +The `*_labels` family of metrics exposes Kubernetes labels as Prometheus labels. As [Kubernetes](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set) is more liberal than [Prometheus](https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels) in terms of allowed characters in label names, we automatically convert unsupported characters to underscores. For example, `app.kubernetes.io/name` becomes `label_app_kubernetes_io_name`. -This conversion can create conflicts when multiple Kubernetes labels like -`foo-bar` and `foo_bar` would be converted to the same Prometheus label `label_foo_bar`. +This conversion can create conflicts when multiple Kubernetes labels like `foo-bar` and `foo_bar` would be converted to the same Prometheus label `label_foo_bar`. -Kube-state-metrics automatically adds a suffix `_conflictN` to resolve this conflict, -so it converts the above labels to -`label_foo_bar_conflict1` and `label_foo_bar_conflict2`. +Kube-state-metrics automatically adds a suffix `_conflictN` to resolve this conflict, so it converts the above labels to `label_foo_bar_conflict1` and `label_foo_bar_conflict2`. -If you'd like to have more control over how this conflict is resolved, -you might want to consider addressing this issue on a different level of the stack, -e.g. by standardizing Kubernetes labels using an -[Admission Webhook](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/) -that ensures that there are no possible conflicts. +If you'd like to have more control over how this conflict is resolved, you might want to consider addressing this issue on a different level of the stack, e.g. by standardizing Kubernetes labels using an [Admission Webhook](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/) that ensures that there are no possible conflicts. ### Kube-state-metrics self metrics kube-state-metrics exposes its own general process metrics under `--telemetry-host` and `--telemetry-port` (default 8081). -kube-state-metrics also exposes list and watch success and error metrics. These can be used to calculate the error rate of list or watch resources. -If you encounter those errors in the metrics, it is most likely a configuration or permission issue, and the next thing to investigate would be looking -at the logs of kube-state-metrics. +kube-state-metrics also exposes list and watch success and error metrics. These can be used to calculate the error rate of list or watch resources. If you encounter those errors in the metrics, it is most likely a configuration or permission issue, and the next thing to investigate would be looking at the logs of kube-state-metrics. Example of the above mentioned metrics: @@ -159,10 +115,7 @@ kube_state_metrics_shard_ordinal{shard_ordinal="0"} 0 kube_state_metrics_total_shards 1 ``` -`kube_state_metrics_build_info` is used to expose version and other build information. For more usage about the info pattern, -please check the blog post [here](https://www.robustperception.io/exposing-the-software-version-to-prometheus). -Sharding metrics expose `--shard` and `--total-shards` flags and can be used to validate -run-time configuration, see [`/examples/prometheus-alerting-rules`](./examples/prometheus-alerting-rules). +`kube_state_metrics_build_info` is used to expose version and other build information. For more usage about the info pattern, please check the blog post [here](https://www.robustperception.io/exposing-the-software-version-to-prometheus). Sharding metrics expose `--shard` and `--total-shards` flags and can be used to validate run-time configuration, see [`/examples/prometheus-alerting-rules`](./examples/prometheus-alerting-rules). kube-state-metrics also exposes metrics about it config file and the Custom Resource State config file: @@ -179,8 +132,7 @@ kube_state_metrics_last_config_reload_successful{filename="config.yml",type="con #### Resource recommendation -Resource usage for kube-state-metrics changes with the Kubernetes objects (Pods/Nodes/Deployments/Secrets etc.) size of the cluster. -To some extent, the Kubernetes objects in a cluster are in direct proportion to the node number of the cluster. +Resource usage for kube-state-metrics changes with the Kubernetes objects (Pods/Nodes/Deployments/Secrets etc.) size of the cluster. To some extent, the Kubernetes objects in a cluster are in direct proportion to the node number of the cluster. As a general rule, you should allocate: @@ -205,26 +157,11 @@ By default, kube-state-metrics exposes several metrics for events across your cl ### kube-state-metrics vs. metrics-server -The [metrics-server](https://github.com/kubernetes-incubator/metrics-server) -is a project that has been inspired by -[Heapster](https://github.com/kubernetes-retired/heapster) and is implemented -to serve the goals of core metrics pipelines in [Kubernetes monitoring -architecture](https://github.com/kubernetes/design-proposals-archive/blob/main/instrumentation/monitoring_architecture.md). -It is a cluster level component which periodically scrapes metrics from all -Kubernetes nodes served by Kubelet through Metrics API. The metrics are -aggregated, stored in memory and served in [Metrics API -format](https://git.k8s.io/metrics/pkg/apis/metrics/v1alpha1/types.go). The -metrics-server stores the latest values only and is not responsible for -forwarding metrics to third-party destinations. - -kube-state-metrics is focused on generating completely new metrics from -Kubernetes' object state (e.g. metrics based on deployments, replica sets, -etc.). It holds an entire snapshot of Kubernetes state in memory and -continuously generates new metrics based off of it. And just like the -metrics-server it too is not responsible for exporting its metrics anywhere. - -Having kube-state-metrics as a separate project also enables access to these -metrics from monitoring systems such as Prometheus. +The [metrics-server](https://github.com/kubernetes-incubator/metrics-server) is a project that has been inspired by [Heapster](https://github.com/kubernetes-retired/heapster) and is implemented to serve the goals of core metrics pipelines in [Kubernetes monitoring architecture](https://github.com/kubernetes/design-proposals-archive/blob/main/instrumentation/monitoring_architecture.md). It is a cluster level component which periodically scrapes metrics from all Kubernetes nodes served by Kubelet through Metrics API. The metrics are aggregated, stored in memory and served in [Metrics API format](https://git.k8s.io/metrics/pkg/apis/metrics/v1alpha1/types.go). The metrics-server stores the latest values only and is not responsible for forwarding metrics to third-party destinations. + +kube-state-metrics is focused on generating completely new metrics from Kubernetes' object state (e.g. metrics based on deployments, replica sets, etc.). It holds an entire snapshot of Kubernetes state in memory and continuously generates new metrics based off of it. And just like the metrics-server it too is not responsible for exporting its metrics anywhere. + +Having kube-state-metrics as a separate project also enables access to these metrics from monitoring systems such as Prometheus. ### Horizontal sharding @@ -305,8 +242,7 @@ go get k8s.io/kube-state-metrics #### Building the Docker container -Simply run the following command in this root folder, which will create a -self-contained, statically-linked binary and build a Docker image: +Simply run the following command in this root folder, which will create a self-contained, statically-linked binary and build a Docker image: ``` make container @@ -314,8 +250,7 @@ make container ### Usage -Simply build and run kube-state-metrics inside a Kubernetes pod which has a -service account token that has read-only access to the Kubernetes cluster. +Simply build and run kube-state-metrics inside a Kubernetes pod which has a service account token that has read-only access to the Kubernetes cluster. #### For users of prometheus-operator/kube-prometheus stack @@ -335,7 +270,7 @@ To have Prometheus discover kube-state-metrics instances it is advised to create kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin --user=$(gcloud info --format='value(config.account)') ``` -Note that your GCP identity is case sensitive but `gcloud info` as of Google Cloud SDK 221.0.0 is not. This means that if your IAM member contains capital letters, the above one-liner may not work for you. If you have 403 forbidden responses after running the above command and `kubectl apply -f examples/standard`, check the IAM member associated with your account at . If it contains capital letters, you may need to set the --user flag in the command above to the case-sensitive role listed at . +Note that your GCP identity is case sensitive but `gcloud info` as of Google Cloud SDK 221.0.0 is not. This means that if your IAM member contains capital letters, the above one-liner may not work for you. If you have 403 forbidden responses after running the above command and `kubectl apply -f examples/standard`, check the IAM member associated with your account at https://console.cloud.google.com/iam-admin/iam?project=PROJECT_ID. If it contains capital letters, you may need to set the --user flag in the command above to the case-sensitive role listed at https://console.cloud.google.com/iam-admin/iam?project=PROJECT_ID. After running the above, if you see `Clusterrolebinding "cluster-admin-binding" created`, then you are able to continue with the setup of this service. @@ -392,17 +327,15 @@ Starting from the kube-state-metrics chart `v2.13.3` (kube-state-metrics image ` #### Development -When developing, test a metric dump against your local Kubernetes cluster by -running: +When developing, test a metric dump against your local Kubernetes cluster by running: > Users can override the apiserver address in KUBE-CONFIG file with `--apiserver` command line. - go install - kube-state-metrics --port=8080 --telemetry-port=8081 --kubeconfig= --apiserver= +go install kube-state-metrics --port=8080 --telemetry-port=8081 --kubeconfig= --apiserver= Then curl the metrics endpoint - curl localhost:8080/metrics +curl localhost:8080/metrics To run the e2e tests locally see the documentation in [tests/README.md](./tests/README.md). diff --git a/go.mod b/go.mod index df9e0739e9..f4f719f041 100644 --- a/go.mod +++ b/go.mod @@ -27,6 +27,7 @@ require ( ) require ( + github.com/Kunde21/markdownfmt/v3 v3.1.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect @@ -53,6 +54,7 @@ require ( github.com/json-iterator/go v1.1.12 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect + github.com/mattn/go-runewidth v0.0.9 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect @@ -69,6 +71,7 @@ require ( github.com/spf13/cast v1.6.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/subosito/gotenv v1.6.0 // indirect + github.com/yuin/goldmark v1.3.5 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.18.0 // indirect golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect diff --git a/go.sum b/go.sum index 327ea86e07..d45803d9d3 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,5 @@ +github.com/Kunde21/markdownfmt/v3 v3.1.0 h1:KiZu9LKs+wFFBQKhrZJrFZwtLnCCWJahL+S+E/3VnM0= +github.com/Kunde21/markdownfmt/v3 v3.1.0/go.mod h1:tPXN1RTyOzJwhfHoon9wUr4HGYmWgVxSQN6VBJDkrVc= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= @@ -78,6 +80,8 @@ github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0V github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -143,6 +147,8 @@ github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8 github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5 h1:dPmz1Snjq0kmkz159iL7S6WzdahUTHnHB5M56WFVifs= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= diff --git a/tools/go.mod b/tools/go.mod index d3d96462a8..7a933c9901 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -3,6 +3,7 @@ module k8s.io/kube-state-metrics/v2/tools go 1.19 require ( + github.com/Kunde21/markdownfmt/v3 v3.1.0 github.com/brancz/gojsontoyaml v0.1.0 github.com/campoy/embedmd v1.0.0 github.com/google/go-jsonnet v0.20.0 @@ -18,8 +19,10 @@ require ( github.com/ghodss/yaml v1.0.0 // indirect github.com/mattn/go-colorable v0.1.12 // indirect github.com/mattn/go-isatty v0.0.14 // indirect + github.com/mattn/go-runewidth v0.0.9 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/yuin/goldmark v1.3.5 // indirect golang.org/x/sys v0.15.0 // indirect gopkg.in/alecthomas/kingpin.v2 v2.2.6 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/tools/go.sum b/tools/go.sum index 426d1fedc4..f45e5d5fd0 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -1,3 +1,5 @@ +github.com/Kunde21/markdownfmt/v3 v3.1.0 h1:KiZu9LKs+wFFBQKhrZJrFZwtLnCCWJahL+S+E/3VnM0= +github.com/Kunde21/markdownfmt/v3 v3.1.0/go.mod h1:tPXN1RTyOzJwhfHoon9wUr4HGYmWgVxSQN6VBJDkrVc= github.com/aclements/go-moremath v0.0.0-20210112150236-f10218a38794 h1:xlwdaKcTNVW4PtpQb8aKA4Pjy0CdJHEqvFbAnvR5m2g= github.com/aclements/go-moremath v0.0.0-20210112150236-f10218a38794/go.mod h1:7e+I0LQFUI9AXWxOfsQROs9xPhoJtbsyWcjJqDd4KPY= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= @@ -34,6 +36,8 @@ github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -47,8 +51,10 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.4 h1:wZRexSlwd7ZXfKINDLsO4r7WBt3gTKONc6K/VesHvHM= github.com/stretchr/testify v1.7.4/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= +github.com/yuin/goldmark v1.3.5 h1:dPmz1Snjq0kmkz159iL7S6WzdahUTHnHB5M56WFVifs= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= golang.org/x/perf v0.0.0-20231127181059-b53752263861 h1:oWUgm6RG0ZUKQeX7wxjnX+TFCrXDSheBtpiy5vpUdZg= golang.org/x/perf v0.0.0-20231127181059-b53752263861/go.mod h1:sKqUfjZtdM78wIFCYFnmu2FhhanvRUbp67Zgmj3TZPM= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/tools/tools.go b/tools/tools.go index 36ac07700c..0f2db0a141 100644 --- a/tools/tools.go +++ b/tools/tools.go @@ -20,6 +20,7 @@ limitations under the License. package tools import ( + _ "github.com/Kunde21/markdownfmt/v3" _ "github.com/brancz/gojsontoyaml" _ "github.com/campoy/embedmd" _ "github.com/google/go-jsonnet/cmd/jsonnet" From e1ef74e1323339b7bf3a4a3c328828d4ec60a452 Mon Sep 17 00:00:00 2001 From: Pranshu Srivastava Date: Mon, 19 Feb 2024 02:34:56 +0530 Subject: [PATCH 2/3] Update VERSION to reflect the latest patch release Reflect patch release changes on main, which was not the case with 2.10.1 since that diverged and was never merged back into main (around backporting concerns). I believe in the future we can merge everything back into main to reflect the latest version changes in main, but diverge the release branches starting from the pre-merge commit to make sure backports are clean and maintainable (these will not be merged back into the default branch). Signed-off-by: Pranshu Srivastava --- CHANGELOG.md | 9 +++++++++ README.md | 6 +++--- VERSION | 2 +- examples/autosharding/cluster-role-binding.yaml | 2 +- examples/autosharding/cluster-role.yaml | 2 +- examples/autosharding/role-binding.yaml | 2 +- examples/autosharding/role.yaml | 2 +- examples/autosharding/service-account.yaml | 2 +- examples/autosharding/service.yaml | 2 +- examples/autosharding/statefulset.yaml | 6 +++--- examples/daemonsetsharding/cluster-role-binding.yaml | 2 +- examples/daemonsetsharding/cluster-role.yaml | 2 +- examples/daemonsetsharding/daemonset-service.yaml | 2 +- examples/daemonsetsharding/daemonset.yaml | 6 +++--- examples/daemonsetsharding/deployment-no-node-pods.yaml | 6 +++--- examples/daemonsetsharding/deployment-service.yaml | 2 +- examples/daemonsetsharding/deployment.yaml | 6 +++--- examples/daemonsetsharding/service-account.yaml | 2 +- examples/standard/cluster-role-binding.yaml | 2 +- examples/standard/cluster-role.yaml | 2 +- examples/standard/deployment.yaml | 6 +++--- examples/standard/service-account.yaml | 2 +- examples/standard/service.yaml | 2 +- 23 files changed, 43 insertions(+), 34 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4931811475..205f275ab1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +## v2.10.1 / 2023-10-09 + +### Note + +* This release addresses a regression introduced in [#2105](https://github.com/kubernetes/kube-state-metrics/pull/2105). + +* [BUGFIX] Remove FieldSelector from non-namespaced resources by @mrueg and @dgrisonnet in [#2190](https://github.com/kubernetes/kube-state-metrics/pull/2190) +* [ENHANCEMENT] Bump Go to v1.20.8 + ## v2.10.0 / 2023-08-31 ### Note diff --git a/README.md b/README.md index c0bd67714e..702f7cc072 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ At most, 5 kube-state-metrics and 5 [kubernetes releases](https://github.com/kub | **v2.7.0** | v1.25 | | **v2.8.2** | v1.26 | | **v2.9.2** | v1.26 | -| **v2.10.0** | v1.27 | +| **v2.10.1** | v1.27 | | **main** | v1.28 | #### Resource group version compatibility @@ -63,8 +63,8 @@ Resources in Kubernetes can evolve, i.e., the group version for a resource may c The latest container image can be found at: -* `registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.10.0` (arch: `amd64`, `arm`, `arm64`, `ppc64le` and `s390x`) -* View all multi-architecture images at [here](https://explore.ggcr.dev/?image=registry.k8s.io%2Fkube-state-metrics%2Fkube-state-metrics:v2.10.0) +* `registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.10.1` (arch: `amd64`, `arm`, `arm64`, `ppc64le` and `s390x`) +* View all multi-architecture images at [here](https://explore.ggcr.dev/?image=registry.k8s.io%2Fkube-state-metrics%2Fkube-state-metrics:v2.10.1) ### Metrics Documentation diff --git a/VERSION b/VERSION index 10c2c0c3d6..8bbb6e406a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.10.0 +2.10.1 diff --git a/examples/autosharding/cluster-role-binding.yaml b/examples/autosharding/cluster-role-binding.yaml index ac698e55b6..29645f249e 100644 --- a/examples/autosharding/cluster-role-binding.yaml +++ b/examples/autosharding/cluster-role-binding.yaml @@ -4,7 +4,7 @@ metadata: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics - app.kubernetes.io/version: 2.10.0 + app.kubernetes.io/version: 2.10.1 name: kube-state-metrics roleRef: apiGroup: rbac.authorization.k8s.io diff --git a/examples/autosharding/cluster-role.yaml b/examples/autosharding/cluster-role.yaml index 3171418165..6951d6481c 100644 --- a/examples/autosharding/cluster-role.yaml +++ b/examples/autosharding/cluster-role.yaml @@ -4,7 +4,7 @@ metadata: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics - app.kubernetes.io/version: 2.10.0 + app.kubernetes.io/version: 2.10.1 name: kube-state-metrics rules: - apiGroups: diff --git a/examples/autosharding/role-binding.yaml b/examples/autosharding/role-binding.yaml index 252f59598c..c5c0dd4188 100644 --- a/examples/autosharding/role-binding.yaml +++ b/examples/autosharding/role-binding.yaml @@ -4,7 +4,7 @@ metadata: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics - app.kubernetes.io/version: 2.10.0 + app.kubernetes.io/version: 2.10.1 name: kube-state-metrics namespace: kube-system roleRef: diff --git a/examples/autosharding/role.yaml b/examples/autosharding/role.yaml index e4562c3732..dd15387b69 100644 --- a/examples/autosharding/role.yaml +++ b/examples/autosharding/role.yaml @@ -4,7 +4,7 @@ metadata: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics - app.kubernetes.io/version: 2.10.0 + app.kubernetes.io/version: 2.10.1 name: kube-state-metrics namespace: kube-system rules: diff --git a/examples/autosharding/service-account.yaml b/examples/autosharding/service-account.yaml index fa83a8e6e0..206b746915 100644 --- a/examples/autosharding/service-account.yaml +++ b/examples/autosharding/service-account.yaml @@ -5,6 +5,6 @@ metadata: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics - app.kubernetes.io/version: 2.10.0 + app.kubernetes.io/version: 2.10.1 name: kube-state-metrics namespace: kube-system diff --git a/examples/autosharding/service.yaml b/examples/autosharding/service.yaml index 19aca0a936..caada6028a 100644 --- a/examples/autosharding/service.yaml +++ b/examples/autosharding/service.yaml @@ -4,7 +4,7 @@ metadata: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics - app.kubernetes.io/version: 2.10.0 + app.kubernetes.io/version: 2.10.1 name: kube-state-metrics namespace: kube-system spec: diff --git a/examples/autosharding/statefulset.yaml b/examples/autosharding/statefulset.yaml index 4cebb09b61..978c998202 100644 --- a/examples/autosharding/statefulset.yaml +++ b/examples/autosharding/statefulset.yaml @@ -4,7 +4,7 @@ metadata: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics - app.kubernetes.io/version: 2.10.0 + app.kubernetes.io/version: 2.10.1 name: kube-state-metrics namespace: kube-system spec: @@ -18,7 +18,7 @@ spec: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics - app.kubernetes.io/version: 2.10.0 + app.kubernetes.io/version: 2.10.1 spec: automountServiceAccountToken: true containers: @@ -34,7 +34,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.10.0 + image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.10.1 livenessProbe: httpGet: path: /healthz diff --git a/examples/daemonsetsharding/cluster-role-binding.yaml b/examples/daemonsetsharding/cluster-role-binding.yaml index ac698e55b6..29645f249e 100644 --- a/examples/daemonsetsharding/cluster-role-binding.yaml +++ b/examples/daemonsetsharding/cluster-role-binding.yaml @@ -4,7 +4,7 @@ metadata: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics - app.kubernetes.io/version: 2.10.0 + app.kubernetes.io/version: 2.10.1 name: kube-state-metrics roleRef: apiGroup: rbac.authorization.k8s.io diff --git a/examples/daemonsetsharding/cluster-role.yaml b/examples/daemonsetsharding/cluster-role.yaml index 3171418165..6951d6481c 100644 --- a/examples/daemonsetsharding/cluster-role.yaml +++ b/examples/daemonsetsharding/cluster-role.yaml @@ -4,7 +4,7 @@ metadata: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics - app.kubernetes.io/version: 2.10.0 + app.kubernetes.io/version: 2.10.1 name: kube-state-metrics rules: - apiGroups: diff --git a/examples/daemonsetsharding/daemonset-service.yaml b/examples/daemonsetsharding/daemonset-service.yaml index 739889210a..630d4d2bac 100644 --- a/examples/daemonsetsharding/daemonset-service.yaml +++ b/examples/daemonsetsharding/daemonset-service.yaml @@ -4,7 +4,7 @@ metadata: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics-shard - app.kubernetes.io/version: 2.10.0 + app.kubernetes.io/version: 2.10.1 name: kube-state-metrics-shard namespace: kube-system spec: diff --git a/examples/daemonsetsharding/daemonset.yaml b/examples/daemonsetsharding/daemonset.yaml index 3ae83cf6c4..2d638ee080 100644 --- a/examples/daemonsetsharding/daemonset.yaml +++ b/examples/daemonsetsharding/daemonset.yaml @@ -4,7 +4,7 @@ metadata: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics-shard - app.kubernetes.io/version: 2.10.0 + app.kubernetes.io/version: 2.10.1 name: kube-state-metrics-shard namespace: kube-system spec: @@ -16,7 +16,7 @@ spec: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics-shard - app.kubernetes.io/version: 2.10.0 + app.kubernetes.io/version: 2.10.1 spec: automountServiceAccountToken: true containers: @@ -29,7 +29,7 @@ spec: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.10.0 + image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.10.1 livenessProbe: httpGet: path: /healthz diff --git a/examples/daemonsetsharding/deployment-no-node-pods.yaml b/examples/daemonsetsharding/deployment-no-node-pods.yaml index 6d8fc97492..4ea1a277d7 100644 --- a/examples/daemonsetsharding/deployment-no-node-pods.yaml +++ b/examples/daemonsetsharding/deployment-no-node-pods.yaml @@ -4,7 +4,7 @@ metadata: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics-pods - app.kubernetes.io/version: 2.10.0 + app.kubernetes.io/version: 2.10.1 name: kube-state-metrics-pods namespace: kube-system spec: @@ -17,14 +17,14 @@ spec: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics - app.kubernetes.io/version: 2.10.0 + app.kubernetes.io/version: 2.10.1 spec: automountServiceAccountToken: true containers: - args: - --resources=pods - --node="" - image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.10.0 + image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.10.1 livenessProbe: httpGet: path: /healthz diff --git a/examples/daemonsetsharding/deployment-service.yaml b/examples/daemonsetsharding/deployment-service.yaml index 19aca0a936..caada6028a 100644 --- a/examples/daemonsetsharding/deployment-service.yaml +++ b/examples/daemonsetsharding/deployment-service.yaml @@ -4,7 +4,7 @@ metadata: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics - app.kubernetes.io/version: 2.10.0 + app.kubernetes.io/version: 2.10.1 name: kube-state-metrics namespace: kube-system spec: diff --git a/examples/daemonsetsharding/deployment.yaml b/examples/daemonsetsharding/deployment.yaml index 57a43aaa91..c0457422b4 100644 --- a/examples/daemonsetsharding/deployment.yaml +++ b/examples/daemonsetsharding/deployment.yaml @@ -4,7 +4,7 @@ metadata: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics - app.kubernetes.io/version: 2.10.0 + app.kubernetes.io/version: 2.10.1 name: kube-state-metrics namespace: kube-system spec: @@ -17,13 +17,13 @@ spec: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics - app.kubernetes.io/version: 2.10.0 + app.kubernetes.io/version: 2.10.1 spec: automountServiceAccountToken: true containers: - args: - --resources=certificatesigningrequests,configmaps,cronjobs,daemonsets,deployments,endpoints,horizontalpodautoscalers,ingresses,jobs,leases,limitranges,mutatingwebhookconfigurations,namespaces,networkpolicies,nodes,persistentvolumeclaims,persistentvolumes,poddisruptionbudgets,replicasets,replicationcontrollers,resourcequotas,secrets,services,statefulsets,storageclasses,validatingwebhookconfigurations,volumeattachments - image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.10.0 + image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.10.1 livenessProbe: httpGet: path: /healthz diff --git a/examples/daemonsetsharding/service-account.yaml b/examples/daemonsetsharding/service-account.yaml index fa83a8e6e0..206b746915 100644 --- a/examples/daemonsetsharding/service-account.yaml +++ b/examples/daemonsetsharding/service-account.yaml @@ -5,6 +5,6 @@ metadata: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics - app.kubernetes.io/version: 2.10.0 + app.kubernetes.io/version: 2.10.1 name: kube-state-metrics namespace: kube-system diff --git a/examples/standard/cluster-role-binding.yaml b/examples/standard/cluster-role-binding.yaml index ac698e55b6..29645f249e 100644 --- a/examples/standard/cluster-role-binding.yaml +++ b/examples/standard/cluster-role-binding.yaml @@ -4,7 +4,7 @@ metadata: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics - app.kubernetes.io/version: 2.10.0 + app.kubernetes.io/version: 2.10.1 name: kube-state-metrics roleRef: apiGroup: rbac.authorization.k8s.io diff --git a/examples/standard/cluster-role.yaml b/examples/standard/cluster-role.yaml index 3171418165..6951d6481c 100644 --- a/examples/standard/cluster-role.yaml +++ b/examples/standard/cluster-role.yaml @@ -4,7 +4,7 @@ metadata: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics - app.kubernetes.io/version: 2.10.0 + app.kubernetes.io/version: 2.10.1 name: kube-state-metrics rules: - apiGroups: diff --git a/examples/standard/deployment.yaml b/examples/standard/deployment.yaml index 471275b152..9249a20f51 100644 --- a/examples/standard/deployment.yaml +++ b/examples/standard/deployment.yaml @@ -4,7 +4,7 @@ metadata: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics - app.kubernetes.io/version: 2.10.0 + app.kubernetes.io/version: 2.10.1 name: kube-state-metrics namespace: kube-system spec: @@ -17,11 +17,11 @@ spec: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics - app.kubernetes.io/version: 2.10.0 + app.kubernetes.io/version: 2.10.1 spec: automountServiceAccountToken: true containers: - - image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.10.0 + - image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.10.1 livenessProbe: httpGet: path: /healthz diff --git a/examples/standard/service-account.yaml b/examples/standard/service-account.yaml index fa83a8e6e0..206b746915 100644 --- a/examples/standard/service-account.yaml +++ b/examples/standard/service-account.yaml @@ -5,6 +5,6 @@ metadata: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics - app.kubernetes.io/version: 2.10.0 + app.kubernetes.io/version: 2.10.1 name: kube-state-metrics namespace: kube-system diff --git a/examples/standard/service.yaml b/examples/standard/service.yaml index 19aca0a936..caada6028a 100644 --- a/examples/standard/service.yaml +++ b/examples/standard/service.yaml @@ -4,7 +4,7 @@ metadata: labels: app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-state-metrics - app.kubernetes.io/version: 2.10.0 + app.kubernetes.io/version: 2.10.1 name: kube-state-metrics namespace: kube-system spec: From 26e02a632a3001e7b54f4a105b56e996ab97f826 Mon Sep 17 00:00:00 2001 From: Pranshu Srivastava Date: Mon, 19 Feb 2024 13:33:09 +0530 Subject: [PATCH 3/3] chore: automate release workflow Signed-off-by: Pranshu Srivastava --- .github/PULL_REQUEST_TEMPLATE.md | 6 ++ .github/workflows/release.yml | 86 ++++++++++++++++++++++++++ CHANGELOG.md | 17 +++++ Makefile | 2 +- README.md | 2 +- go.mod | 3 - go.sum | 6 -- scripts/generate-release-notes.sh | 21 +++++++ scripts/update-compatibility-matrix.sh | 53 ++++++++++++++++ tools/tools.go | 2 +- 10 files changed, 186 insertions(+), 12 deletions(-) create mode 100644 .github/workflows/release.yml create mode 100755 scripts/generate-release-notes.sh create mode 100755 scripts/update-compatibility-matrix.sh diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 9ee1c73c4e..a3f1781d26 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -11,3 +11,9 @@ **Which issue(s) this PR fixes** *(optional, in `fixes #(, fixes #, ...)` format, will close the issue(s) when PR gets merged)*: Fixes # + +