2017-08-21 3 views
0

Ich suche nach einer Möglichkeit, Service/Status/loadBalance/ingress-ip nach dem Erstellen k8s Service vom Typ = loadbalancer (wie in "Typ LoadBalancer" erscheint) Abschnitt bei der nächsten Verbindung https://kubernetes.io/docs/concepts/services-networking/service/).kubernetes set value von service/status/loadBalance/ingress- ip

Mein Problem ähnelt dem im folgenden Link beschriebenen Problem (Is it possible to update a kubernetes service 'External IP' while watching for the service?), konnte aber die Antwort nicht finden.

Vielen Dank im Voraus

Antwort

0

Es gibt zwei Möglichkeiten, dies zu tun. Mit einem json patch oder mit einem Merge-Patch. Hier ist, wie Sie das letztere tun:

[[email protected] ~]$ cat patch.json 
{ 
    "status": { 
     "loadBalancer": { 
      "ingress": [ 
       {"ip": "8.3.2.1"} 
      ] 
     } 
    } 
} 

Nun, hier können Sie die für merge Patches sehen, müssen Sie ein Wörterbuch machen, das alle Objektbaum (beginnt bei Status), die einige Änderungen zusammengeführt werden müssen. Wenn Sie etwas ersetzen möchten, müssen Sie die JSON-Patch-Strategie verwenden.

Sobald wir diese Datei senden wir die Anfrage und wenn alles gut geht, werden wir eine Antwort erhalten mit der Zusammenführung auf das Objekt aus bereits angewandt:

[[email protected] ~]$ curl --request PATCH --data "$(cat patch.json)" -H "Content-Type:application/merge-patch+json" http://localhost:8080/api/v1/namespaces/default/services/kubernetes/status{ 
    "kind": "Service", 
    "apiVersion": "v1", 
    "metadata": { 
    "name": "kubernetes", 
    "namespace": "default", 
    "selfLink": "/api/v1/namespaces/default/services/kubernetes/status", 
    "uid": "b8ece320-76c1-11e7-b468-fa163ea3fb09", 
    "resourceVersion": "2142242", 
    "creationTimestamp": "2017-08-01T14:00:06Z", 
    "labels": { 
     "component": "apiserver", 
     "provider": "kubernetes" 
    } 
    }, 
    "spec": { 
    "ports": [ 
     { 
     "name": "https", 
     "protocol": "TCP", 
     "port": 443, 
     "targetPort": 6443 
     } 
    ], 
    "clusterIP": "10.0.0.129", 
    "type": "ClusterIP", 
    "sessionAffinity": "ClientIP" 
    }, 
    "status": { 
    "loadBalancer": { 
     "ingress": [ 
     { 
      "ip": "8.3.2.1" 
     } 
     ] 
    } 
    }