Skip to content

Katib x Kale x Multi-User Kubeflow doesn't support userid injection #1454

@prashanthb-ai

Description

@prashanthb-ai

/kind bug

TL;DR: Istio is needed for kubeflow-userid header. Istio is disabled by Kale, because Katib has issues in some edge cases (?).

What steps did you take and what happened:

  • Kale creates Experiment/Trials/Jobs via template
  • Jobs create pods
  • Pods start off in Running
  • Pods end up in Error
  • No pipelines are created
  • Experiment hangs

What did you expect to happen:

  • Kale creates Trials/Jobs via template
  • Jobs create pods
  • Pods start off in Running
    • Pods make requests to ml-pipeline with the right RBAC
    • Envoy injects kubeflow-userid/prefix
    • ml-service authenticates/authorizes request from pods
  • Pods end up in Completed
  • Experiment runs to completion

Anything else you would like to add:

  • I use an envoy filter for kubeflow-userid header injection in multi-user Kubeflow
  • Kale injects sidecar.istio.io/inject=false
  • The kubeflow-user header is never added. None of my Job's pods can authenticate with the ml-pipeline-service

Workarounds:

  1. Write my own Job admission controller
  2. Modify the ml-pipeline-service to parse the user from the JWT token passed through poddefaults
  3. Stand a proxy in front (:8888) of the ml-service that adds the kubeflow-userid header

I'm not thrilled by any of these options. Can you suggest a better workaround?

Environment:

  • Kubeflow version (kfctl version): kfctl v1.2.0-0-gbc038f9
  • Minikube version (minikube version): kind v0.10.0 go1.15.7 linux/amd64
  • Kubernetes version: (use kubectl version): v1.20.2
  • OS (e.g. from /etc/os-release): Debian

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions