通过REST进行本机Kubeless调用

时间:2017-08-31 21:01:17

标签: node.js rest curl kubernetes serverless-framework

我想从NodeJS进程向kubeless提交一个函数(通过http-trigger),但我不想使用等效的javascript

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

因为这需要我知道运行该功能的服务的实际IP地址。我希望能够通过知道函数的名称来访问kubeless api,它给了我间接级别

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

无论如何通过节点访问上述(函数调用)api?

2 个答案:

答案 0 :(得分:1)

kubeless还为函数创建服务,因此如果您的DNS设置正常并且您的应用程序位于同一名称空间中,您应该只能执行http到http://bikesearch:8080。如果您在另一个名称空间中,则需要使用更合格的名称,例如bikesearch.<function-namespace>svc.cluster.local

如果要从k8s群集外部调用该函数,可能需要创建一个带kubeless ingress create...

的Ingress

答案 1 :(得分:0)

如果为群集正确配置了DNS,您还可以直接访问function adminOnlyAccess($access = TRUE){ $roles = getUserLevel(); // $roles now has all the values returned by getUserLevel() $sql = 'SELECT * FROM author WHERE id = :sessionID'; $stmt = dbConnection()->prepare($sql); $stmt->bindValue(':sessionID', $_SESSION['id']); $stmt->execute(); $data = $stmt->fetch(); if ($access == TRUE && $data['role'] != 1) { include '../accessdenied.php'; exit(); } } DNS名称下的Kubernetes主服务器。

另一种方式是environment variables。 Kubernetes本身已注册为服务,因此您可以使用kubernetes环境变量。

对于较新的Kubernetes版本,您必须进行身份验证,因此请查看how to access the API server from within a pod