kubernetes-client / kubernetes-client/javascript
KubernetesObjectApi drops `x-kubernetes-preserve-unknown-fields` when given a plain YAML object
- Dominant language
- TypeScript
- Stars
- 2.3k
- Forks
- 568
- Avg merge
- 17h 57m
- Merged PRs (30d)
- 41
Description
**Describe the bug**
`KubernetesObjectApi.create()` silently drops the CRD schema extension `x-kubernetes-preserve-unknown-fields` when given a plain JavaScript object parsed from YAML.
**Client Version**
`1.4.0`
**Server Version**
`1.34`
**To Reproduce**
```javascript
const yaml = require("js-yaml");
const k8s = require("@kubernetes/client-node");
async function main() {
const crd = yaml.load(`
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: foos.example.com
spec:
group: example.com
scope: Namespaced
names:
plural: foos
singular: foo
kind: Foo
versions:
- name: v1
served: true
storage: true
schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
properties:
podTemplate:
type: object
x-kubernetes-preserve-unknown-fields: true
`);
const kc = new k8s.KubeConfig();
kc.loadFromDefault();
kc.setCurrentContext("orbstack");
const client = k8s.KubernetesObjectApi.makeApiClient(kc);
const result = await client.create(crd);
console.log(result.body)
}
main().then(() => console.log("done"));
```
the API server response does not contain x-kubernetes-preserve-unknown-fields.
**Expected behavior**
The API server response should retain x-kubernetes-preserve-unknown-fields: true, since it is present in the YAML input.
**Example Code**
Code snippet for what you are doing
**Environment (please complete the following information):**
- OS: [macOS]
- Node.js version [26.5.0]
Contributor guide
Assessment
This issue has not been assessed yet.