mirror of https://github.com/k3s-io/k3s
![]() Automatic merge from submit-queue (batch tested with PRs 39223, 40260, 40082, 40389) make kubectl generic commands work with unstructured objects part of making apply, edit, label, annotate, and patch work with third party resources fixes #35149 fixes #34413 prereq of: https://github.com/kubernetes/kubernetes/issues/35496 https://github.com/kubernetes/kubernetes/pull/40096 related to: https://github.com/kubernetes/kubernetes/issues/39906 https://github.com/kubernetes/kubernetes/issues/40119 kubectl is currently decoding any resource it doesn't have compiled-in to a ThirdPartyResourceData struct, which means it computes patches using that struct, and would try to send a ThirdPartyResourceData object to the API server when running `apply` This PR removes the behavior that decodes unknown objects into ThirdPartyResourceData structs internally, and fixes up the following generic commands to work with unstructured objects - [x] apply - [x] decode into runtime.Unstructured objects - [x] successfully use `--record` with unregistered objects - [x] patch - [x] decode into runtime.Unstructured objects - [x] successfully use `--record` with unregistered objects - [x] describe - [x] decode into runtime.Unstructured objects - [x] implement generic describer - [x] fix other generic kubectl commands to work with unstructured objects - [x] label - [x] annotate follow-ups for pre-existing issues: - [ ] `explain` doesn't work with unregistered resources - [ ] remove special casing of federation group in clientset lookups, etc - [ ] `patch` - [ ] doesn't honor output formats when persisting to server (`kubectl patch -f svc.json --type merge -p '{}' -o json` doesn't output json) - [ ] --local throws exception (`kubectl patch -f svc.json --type merge -p '{}' --local`) - [ ] `apply` - [ ] fall back to generic JSON patch computation if no go struct is registered for the target GVK (e.g. https://github.com/kubernetes/kubernetes/pull/40096) - [ ] ensure subkey deletion works in CreateThreeWayJSONMergePatch - [ ] ensure type stomping works in CreateThreeWayJSONMergePatch - [ ] lots of tests for generic json patch computation - [ ] prevent generic apply patch computation among different versions - [ ] reconcile treatment of nulls with https://github.com/kubernetes/kubernetes/pull/35496 - [ ] `edit` - [ ] decode into runtime.Unstructured objects - [ ] fall back to generic JSON patch computation if no go struct is registered for the target GVK |
||
---|---|---|
.. | ||
cmd | ||
metricsutil | ||
resource | ||
testing | ||
BUILD | ||
OWNERS | ||
apply.go | ||
autoscale.go | ||
bash_comp_utils.go | ||
cluster.go | ||
cluster_test.go | ||
clusterrolebinding.go | ||
configmap.go | ||
configmap_test.go | ||
custom_column_printer.go | ||
custom_column_printer_test.go | ||
deployment.go | ||
deployment_test.go | ||
describe.go | ||
describe_test.go | ||
doc.go | ||
explain.go | ||
generate.go | ||
generate_test.go | ||
history.go | ||
interfaces.go | ||
kubectl.go | ||
kubectl_test.go | ||
namespace.go | ||
namespace_test.go | ||
pdb.go | ||
proxy_server.go | ||
proxy_server_test.go | ||
quota.go | ||
quota_test.go | ||
resource_filter.go | ||
resource_printer.go | ||
resource_printer_test.go | ||
rolebinding.go | ||
rollback.go | ||
rolling_updater.go | ||
rolling_updater_test.go | ||
rollout_status.go | ||
rollout_status_test.go | ||
run.go | ||
run_test.go | ||
scale.go | ||
scale_test.go | ||
secret.go | ||
secret_for_docker_registry.go | ||
secret_for_docker_registry_test.go | ||
secret_for_tls.go | ||
secret_for_tls_test.go | ||
secret_test.go | ||
service.go | ||
service_basic.go | ||
service_basic_test.go | ||
service_test.go | ||
serviceaccount.go | ||
serviceaccount_test.go | ||
sorted_resource_name_list.go | ||
sorted_resource_name_list_test.go | ||
sorting_printer.go | ||
sorting_printer_test.go | ||
stop.go | ||
stop_test.go | ||
versioned_client.go |