我想从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?
答案 0 :(得分:1)
kubeless还为函数创建服务,因此如果您的DNS设置正常并且您的应用程序位于同一名称空间中,您应该只能执行http到http://bikesearch:8080
。如果您在另一个名称空间中,则需要使用更合格的名称,例如bikesearch.<function-namespace>svc.cluster.local
如果要从k8s群集外部调用该函数,可能需要创建一个带kubeless ingress create...
答案 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。