如何实现kubeflow管道的多用户隔离



我最近将kubeflow版本更新为1.3,但这似乎不适用于API身份验证。

当我从springboot服务调用kubeflow端点时,它会给出以下错误

嵌套异常为org.springframework.web.client.HttpServerErrorException$InternalServerError:500内部服务器错误:[{"Error"内部错误:未经身份验证:请求标头错误:没有用户标识标头。:请求标头错误:没有用户身份标头。\n无法使用API资源引用…(10791字节(]]授权,根本原因为

在查看文档后,我发现我们可以添加AuthorizationPolicy来支持请求。头所以我这样做了,现在抛出的错误是

[请求处理失败;嵌套异常为org.springframework.web.client.HttpClientErrorException$Forbidden:403 Forbidden:[RBAC:拒绝访问]],根本原因为

我还可以在v1.3文档中看到,集群内API请求身份验证存在限制

有人知道如何做到这一点吗?

我找到了一种方法,通过将kubeflow auth服务会话令牌作为头传递来实现这一点
-H "Cookie: authservice_session=$token

有一种解决方法可以在多用户模式下实现kfp API身份验证。

https://github.com/kubeflow/kfctl/issues/140#issuecomment-719894529

基本上,这种方法是通过一个额外的post请求来检索authservicesession,然后将authserviceession放入kfp客户端标头中。

如果你还在寻找答案,下面是我解决问题的方法:

  1. 应用授权政策(正如您所说(

有关的更多详细信息,请参阅此处

  1. 在启用新选项的情况下创建新的笔记本服务器

应该有一个新的配置选项供您启用,您必须勾选它(默认情况下未选中(。

笔记本服务器正在运行的新pod应该有一个包含令牌文件的文件。

但是,它不会自动注入到您的请求中,您必须显式读取它。

  1. 使用令牌

像这样:

token_file = os.getenv("KF_PIPELINES_SA_TOKEN_PATH")
with open(token_file) as f:
token = f.readline()
client = kfp.Client(host='http://ml-pipeline-ui.kubeflow/pipeline',
existing_token=token)

最新更新