Skip to content

Commit 4b6d0c9

Browse files
Merge branch 'main' into add-deployment-pod-affinity-metrics
2 parents d1612ee + bc45a49 commit 4b6d0c9

File tree

8 files changed

+94
-39
lines changed

8 files changed

+94
-39
lines changed

.github/workflows/ci.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ jobs:
2929
runs-on: ubuntu-latest
3030
steps:
3131
- name: Check out code into the Go module directory
32-
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
32+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
3333

3434
- name: Set up Go 1.x
3535
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
@@ -47,7 +47,7 @@ jobs:
4747
runs-on: ubuntu-latest
4848
steps:
4949
- name: Check out code into the Go module directory
50-
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
50+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
5151

5252
- name: Set up Go 1.x
5353
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
@@ -64,7 +64,7 @@ jobs:
6464
runs-on: ubuntu-latest
6565
steps:
6666
- name: Check out code into the Go module directory
67-
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
67+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
6868

6969
- name: Set up Go 1.x
7070
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
@@ -81,7 +81,7 @@ jobs:
8181
runs-on: ubuntu-latest
8282
steps:
8383
- name: Check out code into the Go module directory
84-
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
84+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
8585

8686
- name: Set up Go 1.x
8787
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
@@ -98,7 +98,7 @@ jobs:
9898
runs-on: ubuntu-latest
9999
steps:
100100
- name: Check out code into the Go module directory
101-
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
101+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
102102

103103
- name: Set up Go 1.x
104104
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
@@ -115,7 +115,7 @@ jobs:
115115
runs-on: ubuntu-latest
116116
steps:
117117
- name: Check out code into the Go module directory
118-
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
118+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
119119

120120
- name: Setup promtool
121121
run: |
@@ -130,7 +130,7 @@ jobs:
130130
runs-on: ubuntu-latest
131131
steps:
132132
- name: Check out code into the Go module directory
133-
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
133+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
134134

135135
- name: Set up Go 1.x
136136
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
@@ -157,7 +157,7 @@ jobs:
157157
runs-on: ubuntu-latest
158158
steps:
159159
- name: Check out code into the Go module directory
160-
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
160+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
161161

162162
- name: Set up Go 1.x
163163
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
@@ -174,7 +174,7 @@ jobs:
174174
runs-on: ubuntu-latest
175175
steps:
176176
- name: Check out code into the Go module directory
177-
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
177+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
178178

179179
- name: Set up Go 1.x
180180
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0

.github/workflows/govulncheck.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
ci-security-checks:
1616
runs-on: ubuntu-latest
1717
steps:
18-
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
18+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
1919
name: Checkout code
2020
- name: Set up Go 1.x
2121
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0

.github/workflows/openvex.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818

1919
steps:
2020
- name: Checkout code
21-
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
21+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
2222

2323
- name: Set environment variables
2424
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV

.github/workflows/sbom.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121

2222
steps:
2323
- name: Fetch source code into GITHUB_WORKSPACE
24-
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
24+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
2525

2626
- name: Install Kubernetes BOM
2727
uses: kubernetes-sigs/release-actions/setup-bom@a30d93cf2aa029e1e4c8a6c79f766aebf429fddb # v0.3.1

docs/design/metrics-store-performance-optimization.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,6 @@ pod_collector -> metrics_endpoint: concat(metrics)
163163
of saving unstructured strings inside the cache map, one can structure them,
164164
using pointers to deduplicate e.g. metric names.
165165

166-
* ...
167-
168166
* Kube-state-metrics does not make use of all properties of all Kubernetes
169167
objects. Instead of unmarshalling unused properties, their json struct tags or
170168
their Protobuf representation could be removed.

docs/metrics/workload/deployment-metrics.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99
| kube_deployment_status_replicas_unavailable | Gauge | | `deployment`=&lt;deployment-name&gt; <br> `namespace`=&lt;deployment-namespace&gt; | STABLE |
1010
| kube_deployment_status_replicas_updated | Gauge | | `deployment`=&lt;deployment-name&gt; <br> `namespace`=&lt;deployment-namespace&gt; | STABLE |
1111
| kube_deployment_status_observed_generation | Gauge | | `deployment`=&lt;deployment-name&gt; <br> `namespace`=&lt;deployment-namespace&gt; | STABLE |
12-
| kube_deployment_status_condition | Gauge | | `deployment`=&lt;deployment-name&gt; <br> `namespace`=&lt;deployment-namespace&gt; <br> `condition`=&lt;deployment-condition&gt; <br> `status`=&lt;true\|false\|unknown&gt; | STABLE |
12+
| kube_deployment_status_condition | Gauge | | `deployment`=&lt;deployment-name&gt; <br> `namespace`=&lt;deployment-namespace&gt; <br> `reason`=&lt;deployment-transition-reason&gt; <br> `condition`=&lt;deployment-condition&gt; <br> `status`=&lt;true\|false\|unknown&gt; | STABLE |
1313
| kube_deployment_spec_replicas | Gauge | | `deployment`=&lt;deployment-name&gt; <br> `namespace`=&lt;deployment-namespace&gt; | STABLE |
1414
| kube_deployment_spec_paused | Gauge | | `deployment`=&lt;deployment-name&gt; <br> `namespace`=&lt;deployment-namespace&gt; | STABLE |
15-
| kube_deployment_spec_affinity | Gauge | Pod affinity and anti-affinity rules defined in the deployment's pod template specification | `deployment`=&lt;deployment-name&gt; <br> `namespace`=&lt;deployment-namespace&gt; <br> `affinity`=&lt;podaffinity\|podantiaffinity&gt; <br> `type`=&lt;requiredDuringSchedulingIgnoredDuringExecution\|preferredDuringSchedulingIgnoredDuringExecution&gt; <br> `topology_key`=&lt;topology-key&gt; <br> `label_selector`=&lt;selector-string&gt; | ALPHA |
15+
| kube_deployment_spec_affinity | Gauge | Pod affinity and anti-affinity rules defined in the deployment's pod template specification | `deployment`=&lt;deployment-name&gt; <br> `namespace`=&lt;deployment-namespace&gt; <br> `affinity`=&lt;podaffinity\|podantiaffinity&gt; <br> `type`=&lt;requiredDuringSchedulingIgnoredDuringExecution\|preferredDuringSchedulingIgnoredDuringExecution&gt; <br> `topology_key`=&lt;topology-key&gt; <br> `label_selector`=&lt;selector-string&gt; | ALPHA |
1616
| kube_deployment_spec_strategy_rollingupdate_max_unavailable | Gauge | | `deployment`=&lt;deployment-name&gt; <br> `namespace`=&lt;deployment-namespace&gt; | STABLE |
1717
| kube_deployment_spec_strategy_rollingupdate_max_surge | Gauge | | `deployment`=&lt;deployment-name&gt; <br> `namespace`=&lt;deployment-namespace&gt; | STABLE |
1818
| kube_deployment_metadata_generation | Gauge | | `deployment`=&lt;deployment-name&gt; <br> `namespace`=&lt;deployment-namespace&gt; | STABLE |
1919
| kube_deployment_labels | Gauge | Kubernetes labels converted to Prometheus labels controlled via [--metric-labels-allowlist](../../developer/cli-arguments.md) | `deployment`=&lt;deployment-name&gt; <br> `namespace`=&lt;deployment-namespace&gt; <br> `label_DEPLOYMENT_LABEL`=&lt;DEPLOYMENT_LABEL&gt; | STABLE |
20-
| kube_deployment_created | Gauge | | `deployment`=&lt;deployment-name&gt; <br> `namespace`=&lt;deployment-namespace&gt; | STABLE |
20+
| kube_deployment_created | Gauge | | `deployment`=&lt;deployment-name&gt; <br> `namespace`=&lt;deployment-namespace&gt; | STABLE |

internal/store/deployment.go

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,23 @@ var (
4141
descDeploymentLabelsDefaultLabels = []string{"namespace", "deployment"}
4242
)
4343

44+
// Reasons copied from kubernetes/pkg/controller/deployment/deployment_utils.go.
45+
var (
46+
allowedDeploymentReasons = map[string]struct{}{
47+
"ReplicaSetUpdated": {},
48+
"ReplicaSetCreateError": {},
49+
"NewReplicaSetCreated": {},
50+
"FoundNewReplicaSet": {},
51+
"NewReplicaSetAvailable": {},
52+
"ProgressDeadlineExceeded": {},
53+
"DeploymentPaused": {},
54+
"DeploymentResumed": {},
55+
"MinimumReplicasAvailable": {},
56+
"MinimumReplicasUnavailable": {},
57+
"": {},
58+
}
59+
)
60+
4461
func deploymentMetricFamilies(allowAnnotationsList, allowLabelsList []string) []generator.FamilyGenerator {
4562
return []generator.FamilyGenerator{
4663
*generator.NewFamilyGeneratorWithStability(
@@ -174,8 +191,13 @@ func deploymentMetricFamilies(allowAnnotationsList, allowLabelsList []string) []
174191
for j, m := range conditionMetrics {
175192
metric := m
176193

177-
metric.LabelKeys = []string{"condition", "status"}
178-
metric.LabelValues = append([]string{string(c.Type)}, metric.LabelValues...)
194+
reason := c.Reason
195+
if _, ok := allowedDeploymentReasons[reason]; !ok {
196+
reason = "unknown"
197+
}
198+
199+
metric.LabelKeys = []string{"reason", "condition", "status"}
200+
metric.LabelValues = append([]string{reason, string(c.Type)}, metric.LabelValues...)
179201
ms[i*len(conditionStatuses)+j] = metric
180202
}
181203
}

0 commit comments

Comments
 (0)