überprüfte ich den Code in pkg/kubectl/cmd/apply.go
und ich denke, die folgenden Zeilen Code zeigt, was hinter der Szene ist, wenn Sie laufen kubectl apply -f
:
// Compute a three way strategic merge patch to send to server.
patch, err := strategicpatch.CreateThreeWayMergePatch(original, modified, current,
versionedObject, true)
helper := resource.NewHelper(info.Client, info.Mapping)
_, err = helper.Patch(info.Namespace, info.Name, api.StrategicMergePatchType, patch)
Und hier ist der Code helper.Patch
:
func (m *Helper) Patch(namespace, name string, pt api.PatchType, data []byte) (runtime.Object, error) {
return m.RESTClient.Patch(pt).
NamespaceIfScoped(namespace, m.NamespaceScoped).
Resource(m.Resource).
Name(name).
Body(data).
Do().
Get()
}
Eine nette Etwas über 'kubectl' ist, dass es nur die API verwendet. Sie können die '--v = 8' Option zu so ziemlich jedem' kubectl' Befehl übergeben und es wird jeden API Aufruf auflisten, den es macht. Ich habe festgestellt, dass es eine gute Möglichkeit ist, einen schnellen Überblick darüber zu bekommen, was ein ähnlicher API-Code erfordert. – rwehner
Thx, wusste nicht über --v = 8. Es hat mir sehr geholfen für mein Projekt. – ant31