2016-03-30 3 views
0

Ich versuche, die Master-API zu verwenden, um Ressourcen zu aktualisieren.kubernetes API-Aufruf entspricht "kubectl apply"

In 1.2 ein Deployment-Ressource zu aktualisieren Ich bin kubectl apply -f new updateddeployment.yaml

Wie geht die gleiche Aktion mit dem api zu tun?

+3

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

+0

Thx, wusste nicht über --v = 8. Es hat mir sehr geholfen für mein Projekt. – ant31

Antwort

1

ü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() 
} 
+0

Ja, es ist ein Patch mit einem bestimmten Inhaltstyp, wie der Patch angewendet wird. – ant31

+0

akzeptable Inhaltstypen sind: "application/json-patch + json", "application/merge-patch + json", "anwendung/strategic-merge-patch + json" https://docs.openshift.org/latest/rest_api /kubernetes_v1.html –