@@ -31,6 +31,7 @@ import (
31
31
"k8s.io/apimachinery/pkg/apis/meta/v1/validation"
32
32
"k8s.io/apimachinery/pkg/types"
33
33
utilsets "k8s.io/apimachinery/pkg/util/sets"
34
+ "k8s.io/apiserver/pkg/audit"
34
35
"k8s.io/apiserver/pkg/endpoints/request"
35
36
"k8s.io/apiserver/pkg/features"
36
37
utilfeature "k8s.io/apiserver/pkg/util/feature"
@@ -223,6 +224,16 @@ const (
223
224
MutatingKind = "mutating"
224
225
)
225
226
227
+ const (
228
+ // deprecatedAnnotationKey is a key for an audit annotation set to
229
+ // "true" on requests made to deprecated API versions
230
+ deprecatedAnnotationKey = "k8s.io/deprecated"
231
+ // removedReleaseAnnotationKey is a key for an audit annotation set to
232
+ // the target removal release, in "<major>.<minor>" format,
233
+ // on requests made to deprecated API versions with a target removal release
234
+ removedReleaseAnnotationKey = "k8s.io/removed-release"
235
+ )
236
+
226
237
var registerMetrics sync.Once
227
238
228
239
// Register all metrics.
@@ -306,6 +317,10 @@ func MonitorRequest(req *http.Request, verb, group, version, resource, subresour
306
317
requestCounter .WithLabelValues (reportedVerb , dryRun , group , version , resource , subresource , scope , component , cleanContentType , codeToString (httpCode )).Inc ()
307
318
if deprecated {
308
319
deprecatedRequestGauge .WithLabelValues (group , version , resource , subresource , removedRelease ).Set (1 )
320
+ audit .AddAuditAnnotation (req .Context (), deprecatedAnnotationKey , "true" )
321
+ if len (removedRelease ) > 0 {
322
+ audit .AddAuditAnnotation (req .Context (), removedReleaseAnnotationKey , removedRelease )
323
+ }
309
324
}
310
325
requestLatencies .WithLabelValues (reportedVerb , dryRun , group , version , resource , subresource , scope , component ).Observe (elapsedSeconds )
311
326
// We are only interested in response sizes of read requests.
0 commit comments