Patch custom object with kubernetes javascrtip SDK

Viewed 23

I'm using External Secrets to sync my secrets from azure. And now I need a programmatic way to trigger the sync. With kubectl the command is

kubectl annotate es my-es force-sync=$(date +%s) --overwrite

So, I try to use k8s js sdk to do this. I can success fully get the External Secret

await crdApi.getNamespacedCustomObject("external-secrets.io", "v1beta1", "default", "externalsecrets", "my-es")

However, when I try to update it with patchNamespacedCustomObject, it always tells me "the body of the request was in an unknown format - accepted media types include: application/json-patch+json, application/merge-patch+json, application/apply-patch+yaml"

Here's my code

const kc = new k8s.KubeConfig();
kc.loadFromString(kubeConfig);

const crdApi = kc.makeApiClient(k8s.CustomObjectsApi);

let patch = [{
    "op": "replace",
    "path": "/metadata/annotations",
    "value": {
        "force-sync": "1663315075"
    }
}];

await crdApi.patchNamespacedCustomObject("external-secrets.io", "v1beta1", "default", "externalsecrets", "my-es", patch);


I am referring their patch example here

1 Answers
const options = {
  "headers": {
    "Content-type": k8s.PatchUtils.PATCH_FORMAT_JSON_PATCH
  }
};

is still required.

Related