-
Notifications
You must be signed in to change notification settings - Fork 2k
managedFields not populated since 22.0.0 #3995
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
We changed the code generator between 21 and 22, it's possible that led to the changed behavior. Can you try 22.0.0-legacy and see if that works, that's still using the old code generator. |
Hi, thanks for your time! 22.0.0-legacy shows the same behavior, the managed fields are still empty.. |
Hrm, I'm not sure the issue then. Can you attach the raw JSON that you get when you list deployments? You can use |
Sure, I filtered it a bit to include only one deployment, but I made sure this one deployment also exhibits the bug. I also had to replace some internal names. Also, kubectl need the flag
{
"apiVersion": "v1",
"items": [
{
"apiVersion": "apps/v1",
"kind": "Deployment",
"metadata": {
"annotations": {
"deployment.kubernetes.io/revision": "8",
"meta.helm.sh/release-name": "guestbook",
"meta.helm.sh/release-namespace": "internal-services-dev",
"objectset.rio.cattle.io/id": "default-fleet-internal-dev-internal-dev-guestbook"
},
"creationTimestamp": "2025-03-27T07:22:27Z",
"generation": 8,
"labels": {
"app.kubernetes.io/instance": "guestbook",
"app.kubernetes.io/managed-by": "Helm",
"app.kubernetes.io/name": "service-base",
"de.company.internal/component": "service",
"de.company.internal/service-version": "1.10.0",
"de.company.internal/test": "test",
"helm.sh/chart": "service-base-1.8.1",
"objectset.rio.cattle.io/hash": "7ace3baf8ec8ce4900cc66f3b00ac11bf10b5112"
},
"managedFields": [
{
"apiVersion": "apps/v1",
"fieldsType": "FieldsV1",
"fieldsV1": {
"f:metadata": {
"f:annotations": {
".": {},
"f:meta.helm.sh/release-name": {},
"f:meta.helm.sh/release-namespace": {},
"f:objectset.rio.cattle.io/id": {}
},
"f:labels": {
".": {},
"f:app.kubernetes.io/instance": {},
"f:app.kubernetes.io/managed-by": {},
"f:app.kubernetes.io/name": {},
"f:de.company.internal/component": {},
"f:de.company.internal/service-version": {},
"f:helm.sh/chart": {},
"f:objectset.rio.cattle.io/hash": {}
}
},
"f:spec": {
"f:progressDeadlineSeconds": {},
"f:replicas": {},
"f:revisionHistoryLimit": {},
"f:selector": {},
"f:strategy": {
"f:rollingUpdate": {
".": {},
"f:maxSurge": {},
"f:maxUnavailable": {}
},
"f:type": {}
},
"f:template": {
"f:metadata": {
"f:labels": {
".": {},
"f:app.kubernetes.io/instance": {},
"f:app.kubernetes.io/name": {},
"f:de.company.internal/component": {},
"f:de.company.internal/log-format": {},
"f:de.company.internal/service-version": {}
}
},
"f:spec": {
"f:containers": {
"k:{\"name\":\"guestbook\"}": {
".": {},
"f:env": {
".": {},
"k:{\"name\":\"JAVA_TOOL_OPTIONS\"}": {
".": {},
"f:name": {},
"f:value": {}
},
"k:{\"name\":\"TZ\"}": {
".": {},
"f:name": {},
"f:value": {}
},
"k:{\"name\":\"spring.profiles.active\"}": {
".": {},
"f:name": {},
"f:value": {}
}
},
"f:envFrom": {},
"f:image": {},
"f:imagePullPolicy": {},
"f:livenessProbe": {
".": {},
"f:failureThreshold": {},
"f:httpGet": {
".": {},
"f:path": {},
"f:port": {},
"f:scheme": {}
},
"f:periodSeconds": {},
"f:successThreshold": {},
"f:timeoutSeconds": {}
},
"f:name": {},
"f:ports": {
".": {},
"k:{\"containerPort\":8080,\"protocol\":\"TCP\"}": {
".": {},
"f:containerPort": {},
"f:name": {},
"f:protocol": {}
}
},
"f:readinessProbe": {
".": {},
"f:failureThreshold": {},
"f:httpGet": {
".": {},
"f:path": {},
"f:port": {},
"f:scheme": {}
},
"f:periodSeconds": {},
"f:successThreshold": {},
"f:timeoutSeconds": {}
},
"f:resources": {
".": {},
"f:limits": {
".": {},
"f:cpu": {},
"f:memory": {}
},
"f:requests": {
".": {},
"f:cpu": {},
"f:memory": {}
}
},
"f:startupProbe": {
".": {},
"f:failureThreshold": {},
"f:httpGet": {
".": {},
"f:path": {},
"f:port": {},
"f:scheme": {}
},
"f:periodSeconds": {},
"f:successThreshold": {},
"f:timeoutSeconds": {}
},
"f:terminationMessagePath": {},
"f:terminationMessagePolicy": {},
"f:volumeMounts": {
".": {},
"k:{\"mountPath\":\"/configs\"}": {
".": {},
"f:mountPath": {},
"f:name": {},
"f:readOnly": {}
},
"k:{\"mountPath\":\"/secrets\"}": {
".": {},
"f:mountPath": {},
"f:name": {},
"f:readOnly": {}
}
}
}
},
"f:dnsPolicy": {},
"f:restartPolicy": {},
"f:schedulerName": {},
"f:securityContext": {},
"f:serviceAccount": {},
"f:serviceAccountName": {},
"f:terminationGracePeriodSeconds": {},
"f:topologySpreadConstraints": {
".": {},
"k:{\"topologyKey\":\"kubernetes.io/hostname\",\"whenUnsatisfiable\":\"DoNotSchedule\"}": {
".": {},
"f:labelSelector": {},
"f:maxSkew": {},
"f:topologyKey": {},
"f:whenUnsatisfiable": {}
}
},
"f:volumes": {
".": {},
"k:{\"name\":\"configs\"}": {
".": {},
"f:configMap": {
".": {},
"f:defaultMode": {},
"f:name": {}
},
"f:name": {}
},
"k:{\"name\":\"secrets\"}": {
".": {},
"f:name": {},
"f:secret": {
".": {},
"f:defaultMode": {},
"f:secretName": {}
}
}
}
}
}
}
},
"manager": "fleetagent",
"operation": "Update",
"time": "2025-04-02T13:09:23Z"
},
{
"apiVersion": "apps/v1",
"fieldsType": "FieldsV1",
"fieldsV1": {
"f:spec": {
"f:template": {
"f:metadata": {
"f:annotations": {
"f:kubectl.kubernetes.io/restartedAt": {}
}
}
}
}
},
"manager": "kubectl-rollout",
"operation": "Update",
"time": "2025-04-03T05:22:12Z"
},
{
"apiVersion": "apps/v1",
"fieldsType": "FieldsV1",
"fieldsV1": {
"f:metadata": {
"f:labels": {
"f:de.company.internal/test": {}
}
},
"f:spec": {
"f:template": {
"f:metadata": {
"f:annotations": {
".": {},
"f:cattle.io/timestamp": {}
},
"f:namespace": {}
}
}
}
},
"manager": "agent",
"operation": "Update",
"time": "2025-04-07T07:49:32Z"
},
{
"apiVersion": "apps/v1",
"fieldsType": "FieldsV1",
"fieldsV1": {
"f:metadata": {
"f:annotations": {
"f:deployment.kubernetes.io/revision": {}
}
},
"f:status": {
"f:availableReplicas": {},
"f:conditions": {
".": {},
"k:{\"type\":\"Available\"}": {
".": {},
"f:lastTransitionTime": {},
"f:lastUpdateTime": {},
"f:message": {},
"f:reason": {},
"f:status": {},
"f:type": {}
},
"k:{\"type\":\"Progressing\"}": {
".": {},
"f:lastTransitionTime": {},
"f:lastUpdateTime": {},
"f:message": {},
"f:reason": {},
"f:status": {},
"f:type": {}
}
},
"f:observedGeneration": {},
"f:readyReplicas": {},
"f:replicas": {},
"f:updatedReplicas": {}
}
},
"manager": "kube-controller-manager",
"operation": "Update",
"subresource": "status",
"time": "2025-04-07T07:50:03Z"
}
],
"name": "guestbook",
"namespace": "internal-services-dev",
"resourceVersion": "8293026",
"uid": "8e2bbb04-7b85-4f00-932f-84590dea2b7b"
},
"spec": {
"progressDeadlineSeconds": 600,
"replicas": 1,
"revisionHistoryLimit": 10,
"selector": {
"matchLabels": {
"app.kubernetes.io/instance": "guestbook",
"app.kubernetes.io/name": "service-base",
"de.company.internal/component": "service"
}
},
"strategy": {
"rollingUpdate": {
"maxSurge": "25%",
"maxUnavailable": "25%"
},
"type": "RollingUpdate"
},
"template": {
"metadata": {
"annotations": {
"cattle.io/timestamp": "2025-04-07T07:49:32Z",
"kubectl.kubernetes.io/restartedAt": "2025-04-03T07:22:11+02:00"
},
"creationTimestamp": null,
"labels": {
"app.kubernetes.io/instance": "guestbook",
"app.kubernetes.io/name": "service-base",
"de.company.internal/component": "service",
"de.company.internal/log-format": "spring-k8s",
"de.company.internal/service-version": "1.10.0"
},
"namespace": "internal-services-dev"
},
"spec": {
"containers": [
{
"env": [
{
"name": "spring.profiles.active",
"value": "kubernetes,dev"
},
{
"name": "JAVA_TOOL_OPTIONS",
"value": "-XX:MinRAMPercentage=50 -XX:MaxRAMPercentage=80 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -XX:+ExitOnOutOfMemoryError -XX:OnOutOfMemoryError=/usr/local/bin/upload-heapdump.sh"
},
{
"name": "TZ",
"value": "Europe/Berlin"
}
],
"envFrom": [
{
"secretRef": {
"name": "heapdump-collector-credentials",
"optional": true
}
}
],
"image": "registry.company.de/internal/services/guestbook:1.10.0",
"imagePullPolicy": "Always",
"livenessProbe": {
"failureThreshold": 3,
"httpGet": {
"path": "/actuator/health/liveness",
"port": 8080,
"scheme": "HTTP"
},
"periodSeconds": 10,
"successThreshold": 1,
"timeoutSeconds": 1
},
"name": "guestbook",
"ports": [
{
"containerPort": 8080,
"name": "http",
"protocol": "TCP"
}
],
"readinessProbe": {
"failureThreshold": 3,
"httpGet": {
"path": "/actuator/health/readiness",
"port": 8080,
"scheme": "HTTP"
},
"periodSeconds": 10,
"successThreshold": 1,
"timeoutSeconds": 1
},
"resources": {
"limits": {
"cpu": "1",
"memory": "1Gi"
},
"requests": {
"cpu": "100m",
"memory": "384Mi"
}
},
"startupProbe": {
"failureThreshold": 30,
"httpGet": {
"path": "/actuator/health/liveness",
"port": 8080,
"scheme": "HTTP"
},
"periodSeconds": 10,
"successThreshold": 1,
"timeoutSeconds": 1
},
"terminationMessagePath": "/dev/termination-log",
"terminationMessagePolicy": "File",
"volumeMounts": [
{
"mountPath": "/secrets",
"name": "secrets",
"readOnly": true
},
{
"mountPath": "/configs",
"name": "configs",
"readOnly": true
}
]
}
],
"dnsPolicy": "ClusterFirst",
"restartPolicy": "Always",
"schedulerName": "default-scheduler",
"securityContext": {},
"serviceAccount": "default",
"serviceAccountName": "default",
"terminationGracePeriodSeconds": 30,
"topologySpreadConstraints": [
{
"labelSelector": {
"matchLabels": {
"app.kubernetes.io/instance": "guestbook",
"app.kubernetes.io/name": "service-base"
}
},
"maxSkew": 1,
"topologyKey": "kubernetes.io/hostname",
"whenUnsatisfiable": "DoNotSchedule"
}
],
"volumes": [
{
"name": "secrets",
"secret": {
"defaultMode": 420,
"secretName": "service-properties"
}
},
{
"configMap": {
"defaultMode": 420,
"name": "service-properties"
},
"name": "configs"
}
]
}
}
},
"status": {
"availableReplicas": 1,
"conditions": [
{
"lastTransitionTime": "2025-04-03T05:21:06Z",
"lastUpdateTime": "2025-04-03T05:21:06Z",
"message": "Deployment has minimum availability.",
"reason": "MinimumReplicasAvailable",
"status": "True",
"type": "Available"
},
{
"lastTransitionTime": "2025-03-27T07:22:27Z",
"lastUpdateTime": "2025-04-07T07:50:03Z",
"message": "ReplicaSet \"guestbook-789c5fd49b\" has successfully progressed.",
"reason": "NewReplicaSetAvailable",
"status": "True",
"type": "Progressing"
}
],
"observedGeneration": 8,
"readyReplicas": 1,
"replicas": 1,
"updatedReplicas": 1
}
}
],
"kind": "List",
"metadata": {
"resourceVersion": ""
}
} I have also compared the HTTP responses between 21.0.2 and 23.0.0. Those seem to both have a slightly different "header", as the kubectl one only has an {
"kind" : "DeploymentList",
"apiVersion" : "apps/v1",
"metadata" : {
"resourceVersion" : "9133398"
},
"items" : [ {
"metadata" : {
"name" : "guestbook",
"namespace" : "internal-services-dev",
"uid" : "8e2bbb04-7b85-4f00-932f-84590dea2b7b",
"resourceVersion" : "8293026",
"generation" : 8,
"creationTimestamp" : "2025-03-27T07:22:27Z",
"labels" : {
"app.kubernetes.io/instance" : "guestbook",
"app.kubernetes.io/managed-by" : "Helm",
"app.kubernetes.io/name" : "service-base",
"de.company.internal/component" : "service",
"de.company.internal/service-version" : "1.10.0",
"de.company.internal/test" : "test",
"helm.sh/chart" : "service-base-1.8.1",
"objectset.rio.cattle.io/hash" : "7ace3baf8ec8ce4900cc66f3b00ac11bf10b5112"
},
"annotations" : {
"deployment.kubernetes.io/revision" : "8",
"meta.helm.sh/release-name" : "guestbook",
"meta.helm.sh/release-namespace" : "internal-services-dev",
"objectset.rio.cattle.io/id" : "default-fleet-internal-dev-internal-dev-guestbook"
},
"managedFields" : [ {
"manager" : "fleetagent",
"operation" : "Update",
"apiVersion" : "apps/v1",
"time" : "2025-04-02T13:09:23Z",
"fieldsType" : "FieldsV1",
"fieldsV1" : {
"f:metadata" : {
"f:annotations" : {
"." : { },
"f:meta.helm.sh/release-name" : { },
"f:meta.helm.sh/release-namespace" : { },
"f:objectset.rio.cattle.io/id" : { }
},
"f:labels" : {
"." : { },
"f:app.kubernetes.io/instance" : { },
"f:app.kubernetes.io/managed-by" : { },
"f:app.kubernetes.io/name" : { },
"f:de.company.internal/component" : { },
"f:de.company.internal/service-version" : { },
"f:helm.sh/chart" : { },
"f:objectset.rio.cattle.io/hash" : { }
}
},
"f:spec" : {
"f:progressDeadlineSeconds" : { },
"f:replicas" : { },
"f:revisionHistoryLimit" : { },
"f:selector" : { },
"f:strategy" : {
"f:rollingUpdate" : {
"." : { },
"f:maxSurge" : { },
"f:maxUnavailable" : { }
},
"f:type" : { }
},
"f:template" : {
"f:metadata" : {
"f:labels" : {
"." : { },
"f:app.kubernetes.io/instance" : { },
"f:app.kubernetes.io/name" : { },
"f:de.company.internal/component" : { },
"f:de.company.internal/log-format" : { },
"f:de.company.internal/service-version" : { }
}
},
"f:spec" : {
"f:containers" : {
"k:{\"name\":\"guestbook\"}" : {
"." : { },
"f:env" : {
"." : { },
"k:{\"name\":\"JAVA_TOOL_OPTIONS\"}" : {
"." : { },
"f:name" : { },
"f:value" : { }
},
"k:{\"name\":\"TZ\"}" : {
"." : { },
"f:name" : { },
"f:value" : { }
},
"k:{\"name\":\"spring.profiles.active\"}" : {
"." : { },
"f:name" : { },
"f:value" : { }
}
},
"f:envFrom" : { },
"f:image" : { },
"f:imagePullPolicy" : { },
"f:livenessProbe" : {
"." : { },
"f:failureThreshold" : { },
"f:httpGet" : {
"." : { },
"f:path" : { },
"f:port" : { },
"f:scheme" : { }
},
"f:periodSeconds" : { },
"f:successThreshold" : { },
"f:timeoutSeconds" : { }
},
"f:name" : { },
"f:ports" : {
"." : { },
"k:{\"containerPort\":8080,\"protocol\":\"TCP\"}" : {
"." : { },
"f:containerPort" : { },
"f:name" : { },
"f:protocol" : { }
}
},
"f:readinessProbe" : {
"." : { },
"f:failureThreshold" : { },
"f:httpGet" : {
"." : { },
"f:path" : { },
"f:port" : { },
"f:scheme" : { }
},
"f:periodSeconds" : { },
"f:successThreshold" : { },
"f:timeoutSeconds" : { }
},
"f:resources" : {
"." : { },
"f:limits" : {
"." : { },
"f:cpu" : { },
"f:memory" : { }
},
"f:requests" : {
"." : { },
"f:cpu" : { },
"f:memory" : { }
}
},
"f:startupProbe" : {
"." : { },
"f:failureThreshold" : { },
"f:httpGet" : {
"." : { },
"f:path" : { },
"f:port" : { },
"f:scheme" : { }
},
"f:periodSeconds" : { },
"f:successThreshold" : { },
"f:timeoutSeconds" : { }
},
"f:terminationMessagePath" : { },
"f:terminationMessagePolicy" : { },
"f:volumeMounts" : {
"." : { },
"k:{\"mountPath\":\"/configs\"}" : {
"." : { },
"f:mountPath" : { },
"f:name" : { },
"f:readOnly" : { }
},
"k:{\"mountPath\":\"/secrets\"}" : {
"." : { },
"f:mountPath" : { },
"f:name" : { },
"f:readOnly" : { }
}
}
}
},
"f:dnsPolicy" : { },
"f:restartPolicy" : { },
"f:schedulerName" : { },
"f:securityContext" : { },
"f:serviceAccount" : { },
"f:serviceAccountName" : { },
"f:terminationGracePeriodSeconds" : { },
"f:topologySpreadConstraints" : {
"." : { },
"k:{\"topologyKey\":\"kubernetes.io/hostname\",\"whenUnsatisfiable\":\"DoNotSchedule\"}" : {
"." : { },
"f:labelSelector" : { },
"f:maxSkew" : { },
"f:topologyKey" : { },
"f:whenUnsatisfiable" : { }
}
},
"f:volumes" : {
"." : { },
"k:{\"name\":\"configs\"}" : {
"." : { },
"f:configMap" : {
"." : { },
"f:defaultMode" : { },
"f:name" : { }
},
"f:name" : { }
},
"k:{\"name\":\"secrets\"}" : {
"." : { },
"f:name" : { },
"f:secret" : {
"." : { },
"f:defaultMode" : { },
"f:secretName" : { }
}
}
}
}
}
}
}
}, {
"manager" : "kubectl-rollout",
"operation" : "Update",
"apiVersion" : "apps/v1",
"time" : "2025-04-03T05:22:12Z",
"fieldsType" : "FieldsV1",
"fieldsV1" : {
"f:spec" : {
"f:template" : {
"f:metadata" : {
"f:annotations" : {
"f:kubectl.kubernetes.io/restartedAt" : { }
}
}
}
}
}
}, {
"manager" : "agent",
"operation" : "Update",
"apiVersion" : "apps/v1",
"time" : "2025-04-07T07:49:32Z",
"fieldsType" : "FieldsV1",
"fieldsV1" : {
"f:metadata" : {
"f:labels" : {
"f:de.company.internal/test" : { }
}
},
"f:spec" : {
"f:template" : {
"f:metadata" : {
"f:annotations" : {
"." : { },
"f:cattle.io/timestamp" : { }
},
"f:namespace" : { }
}
}
}
}
}, {
"manager" : "kube-controller-manager",
"operation" : "Update",
"apiVersion" : "apps/v1",
"time" : "2025-04-07T07:50:03Z",
"fieldsType" : "FieldsV1",
"fieldsV1" : {
"f:metadata" : {
"f:annotations" : {
"f:deployment.kubernetes.io/revision" : { }
}
},
"f:status" : {
"f:availableReplicas" : { },
"f:conditions" : {
"." : { },
"k:{\"type\":\"Available\"}" : {
"." : { },
"f:lastTransitionTime" : { },
"f:lastUpdateTime" : { },
"f:message" : { },
"f:reason" : { },
"f:status" : { },
"f:type" : { }
},
"k:{\"type\":\"Progressing\"}" : {
"." : { },
"f:lastTransitionTime" : { },
"f:lastUpdateTime" : { },
"f:message" : { },
"f:reason" : { },
"f:status" : { },
"f:type" : { }
}
},
"f:observedGeneration" : { },
"f:readyReplicas" : { },
"f:replicas" : { },
"f:updatedReplicas" : { }
}
},
"subresource" : "status"
} ]
},
"spec" : {
"replicas" : 1,
"selector" : {
"matchLabels" : {
"app.kubernetes.io/instance" : "guestbook",
"app.kubernetes.io/name" : "service-base",
"de.company.internal/component" : "service"
}
},
"template" : {
"metadata" : {
"namespace" : "internal-services-dev",
"creationTimestamp" : null,
"labels" : {
"app.kubernetes.io/instance" : "guestbook",
"app.kubernetes.io/name" : "service-base",
"de.company.internal/component" : "service",
"de.company.internal/log-format" : "spring-k8s",
"de.company.internal/service-version" : "1.10.0"
},
"annotations" : {
"cattle.io/timestamp" : "2025-04-07T07:49:32Z",
"kubectl.kubernetes.io/restartedAt" : "2025-04-03T07:22:11+02:00"
}
},
"spec" : {
"volumes" : [ {
"name" : "secrets",
"secret" : {
"secretName" : "service-properties",
"defaultMode" : 420
}
}, {
"name" : "configs",
"configMap" : {
"name" : "service-properties",
"defaultMode" : 420
}
} ],
"containers" : [ {
"name" : "guestbook",
"image" : "registry.company.de/internal/services/guestbook:1.10.0",
"ports" : [ {
"name" : "http",
"containerPort" : 8080,
"protocol" : "TCP"
} ],
"envFrom" : [ {
"secretRef" : {
"name" : "heapdump-collector-credentials",
"optional" : true
}
} ],
"env" : [ {
"name" : "spring.profiles.active",
"value" : "kubernetes,dev"
}, {
"name" : "JAVA_TOOL_OPTIONS",
"value" : "-XX:MinRAMPercentage=50 -XX:MaxRAMPercentage=80 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -XX:+ExitOnOutOfMemoryError -XX:OnOutOfMemoryError=/usr/local/bin/upload-heapdump.sh"
}, {
"name" : "TZ",
"value" : "Europe/Berlin"
} ],
"resources" : {
"limits" : {
"cpu" : "1",
"memory" : "1Gi"
},
"requests" : {
"cpu" : "100m",
"memory" : "384Mi"
}
},
"volumeMounts" : [ {
"name" : "secrets",
"readOnly" : true,
"mountPath" : "/secrets"
}, {
"name" : "configs",
"readOnly" : true,
"mountPath" : "/configs"
} ],
"livenessProbe" : {
"httpGet" : {
"path" : "/actuator/health/liveness",
"port" : 8080,
"scheme" : "HTTP"
},
"timeoutSeconds" : 1,
"periodSeconds" : 10,
"successThreshold" : 1,
"failureThreshold" : 3
},
"readinessProbe" : {
"httpGet" : {
"path" : "/actuator/health/readiness",
"port" : 8080,
"scheme" : "HTTP"
},
"timeoutSeconds" : 1,
"periodSeconds" : 10,
"successThreshold" : 1,
"failureThreshold" : 3
},
"startupProbe" : {
"httpGet" : {
"path" : "/actuator/health/liveness",
"port" : 8080,
"scheme" : "HTTP"
},
"timeoutSeconds" : 1,
"periodSeconds" : 10,
"successThreshold" : 1,
"failureThreshold" : 30
},
"terminationMessagePath" : "/dev/termination-log",
"terminationMessagePolicy" : "File",
"imagePullPolicy" : "Always"
} ],
"restartPolicy" : "Always",
"terminationGracePeriodSeconds" : 30,
"dnsPolicy" : "ClusterFirst",
"serviceAccountName" : "default",
"serviceAccount" : "default",
"securityContext" : { },
"schedulerName" : "default-scheduler",
"topologySpreadConstraints" : [ {
"maxSkew" : 1,
"topologyKey" : "kubernetes.io/hostname",
"whenUnsatisfiable" : "DoNotSchedule",
"labelSelector" : {
"matchLabels" : {
"app.kubernetes.io/instance" : "guestbook",
"app.kubernetes.io/name" : "service-base"
}
}
} ]
}
},
"strategy" : {
"type" : "RollingUpdate",
"rollingUpdate" : {
"maxUnavailable" : "25%",
"maxSurge" : "25%"
}
},
"revisionHistoryLimit" : 10,
"progressDeadlineSeconds" : 600
},
"status" : {
"observedGeneration" : 8,
"replicas" : 1,
"updatedReplicas" : 1,
"readyReplicas" : 1,
"availableReplicas" : 1,
"conditions" : [ {
"type" : "Available",
"status" : "True",
"lastUpdateTime" : "2025-04-03T05:21:06Z",
"lastTransitionTime" : "2025-04-03T05:21:06Z",
"reason" : "MinimumReplicasAvailable",
"message" : "Deployment has minimum availability."
}, {
"type" : "Progressing",
"status" : "True",
"lastUpdateTime" : "2025-04-07T07:50:03Z",
"lastTransitionTime" : "2025-03-27T07:22:27Z",
"reason" : "NewReplicaSetAvailable",
"message" : "ReplicaSet \"guestbook-789c5fd49b\" has successfully progressed."
} ]
}
} ]
} The only difference between both json objects is the resourceVersion, the rest is completely identical between 21.0.2 and 23.0.0. So from my perspective it really seems like something breaks when deserializing the JSON.. |
Describe the bug
We are using some managed fields to provide information on
Deployment
objects on a custom dashboard. For this, we are getting aV1DeploymentList
, like so:From this, we iterate over the
V1Deployment
s, converting them to our representation (classDeployment
):To populate our object, we use:
Now, with client version
21.0.2
this works against Kubernetes 1.28.15 and 1.30.10. But with client version 22.0.0 onwards, this does not work anymore (against both Kubernetes versions), as the managed fields are empty, according to the log:Managed Fields count: 3
vs
Managed Fields count: 0
As I couldn't find a changelog indicating this change in behavior, I'd assume this is unintentional. If it isn't, I'd find it very helpful if you could point me to the right location in the docs.
So far I have verified that the HTTP response from the API still contains the fields, and those are still present, when the JSON parsing occurs in https://github.com/kubernetes-client/java/blob/release-23/kubernetes/src/main/java/io/kubernetes/client/openapi/JSON.java#L791
Client Version
22.0.0
, but still the case in23.0.0
. It worked in21.0.2
.Kubernetes Version
1.30.10
, but alsov1.28.15
Java Version
Temurin Java 21
To Reproduce
Expected behavior
I expect the managed fields to be populated just like in earlier releases.
Server:
The text was updated successfully, but these errors were encountered: