diff --git a/pkg/kubectl/cmd/patch.go b/pkg/kubectl/cmd/patch.go index 14fa2c6a51..bfd50e0899 100644 --- a/pkg/kubectl/cmd/patch.go +++ b/pkg/kubectl/cmd/patch.go @@ -306,7 +306,15 @@ func getPatchedJSON(patchType types.PatchType, originalJS, patchJS []byte, gvk s if err != nil { return nil, err } - return patchObj.Apply(originalJS) + bytes, err := patchObj.Apply(originalJS) + // TODO: This is pretty hacky, we need a better structured error from the json-patch + if err != nil && strings.Contains(err.Error(), "doc is missing key") { + msg := err.Error() + ix := strings.Index(msg, "key:") + key := msg[ix+5:] + return bytes, fmt.Errorf("Object to be patched is missing field (%s)", key) + } + return bytes, err case types.MergePatchType: return jsonpatch.MergePatch(originalJS, patchJS)