2017-08-31 1 views
1

Ich möchte eine Funktion zu übermitteln (per http-Trigger) von einem NodeJS Prozess kubeless aber ich will nicht die JavaScript-Äquivalent vonmachen nativen Kubeless Anrufe über REST

curl --data '{"term":"Albemarle"}' localhost:8080/api/v1/proxy/namespaces/default/services/bikesearch/ --header "Content-Type:application/json" 

verwenden, weil das mich muss kenne die tatsächliche IP-Adresse des Dienstes, der die Funktion ausführt. Ich möchte in der Lage, die kubeless api zuzugreifen, die mir die Dereferenzierungsebene nur um zu wissen, den Namen der Funktion

kubeless function call bikesearch --data '{"term":"Albemarle"}' 

Gibt es die oben sowieso Zugriff auf Inhalte erhalten (Funktionsaufruf) api über den Knoten?

Antwort

0

Wenn DNS für Ihren Cluster korrekt konfiguriert ist, können Sie auch direkt auf den Kubernetes-Master unter dem kubernetes DNS-Namen zugreifen. Eine andere Möglichkeit ist environment variables. Kubernetes selbst ist als Dienst registriert, Sie können also die Umgebungsvariable KUBERNETES_SERVICE_HOST verwenden.

Für neuere Kubernetes-Versionen müssen Sie sich authentifizieren, schauen Sie sich how to access the API server from within a pod an.

0

kubeless erstellt auch Dienste für Funktionen, Sie sollten also nur eine http get zu http://bikesearch:8080 tun, wenn Ihre DNS-Setup funktioniert und Ihre Anwendung im gleichen Namespace ist. Wenn Sie sich in einem anderen Namespace befinden, müssen Sie einen besser qualifizierten Namen verwenden, z. bikesearch.<function-namespace>svc.cluster.local

Wenn Sie die Funktion von außerhalb des K8S Cluster nennen wollen, könnten Sie eine Ingress mit kubeless ingress create...

erstellen möchten