Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(v2): enable v2 compatible mode in full Kubeflow with zero config. Fixes #5680 #5697

Merged
merged 5 commits into from
Jun 2, 2021

Conversation

Bobgy
Copy link
Contributor

@Bobgy Bobgy commented May 19, 2021

Description of your changes:
Fixes #5680
Investigation and rationale are logged in #5680.

Changes:

  • Makes default pipeline root configurable via key defaultPipelineRoot in a configmap named kfp-launcher in the same namespace as the pipeline run.
  • Defaults minio service to the same namespace via MINIO_SERVICE_SERVICE_HOST env var. When not found, fallbacks to minio-service.kubeflow:9000 (default service name of MinIO in full Kubeflow).

How this PR makes kfp v2 compatible run on Kubeflow:

  1. For distributions using MinIO, now we can auto discover the minio service in kubeflow namespace.
  2. For distributions not using MinIO, they can configure default pipeline root to other storage URL, e.g. for Kubeflow on GCP, we can default pipeline root to a GCS path during deployment via key defaultPipelineRoot in a configmap named kfp-launcher in the same namespace as the pipeline run

As a follow up, #5750 makes defaultPipelineRoot configurable as defaultPipelineRoot field in pipeline-install-config for both KFP standalone and multi-user mode.

Checklist:

@Bobgy
Copy link
Contributor Author

Bobgy commented May 19, 2021

/assign @capri-xiyue

@Bobgy
Copy link
Contributor Author

Bobgy commented May 19, 2021

/hold
I haven't successfully verified in full Kubeflow deployment

EDIT: this doesn't work on kubeflow on GCP, see #5680 (comment)

@Bobgy
Copy link
Contributor Author

Bobgy commented May 19, 2021

/unhold
The default values should work for most Kubeflow distributions that have a centralized MinIO service with bucket mlpipeline. So this seems enough. See #5680 (comment).

For making default pipeline root work in other distributions, we need a way to configure default pipeline root.

@Bobgy Bobgy changed the title feat(v2): support MinIO pipeline root in default full Kubeflow. Fixes #5680 feat(v2): support MinIO pipeline root in default full Kubeflow. Part of #5680 May 19, 2021
@Bobgy Bobgy changed the title feat(v2): support MinIO pipeline root in default full Kubeflow. Part of #5680 feat(v2): enable v2 compatible mode in full Kubeflow. Part of #5680 May 27, 2021
@Bobgy Bobgy changed the title feat(v2): enable v2 compatible mode in full Kubeflow. Part of #5680 feat(v2): support MinIO pipeline root in default full Kubeflow. Part of #5680 May 27, 2021
@Bobgy Bobgy changed the title feat(v2): support MinIO pipeline root in default full Kubeflow. Part of #5680 feat(v2): support MinIO pipeline root in default full Kubeflow. Fixes #5680 May 27, 2021
@Bobgy Bobgy changed the title feat(v2): support MinIO pipeline root in default full Kubeflow. Fixes #5680 feat(v2): enable v2 compatible mode in full Kubeflow with zero config. Fixes #5680 May 27, 2021
}
// LauncherConfig is optional, so it can be nil when err == nil.
if config != nil && config.Data != nil {
defaultRootFromConfig := config.Data["defaultPipelineRoot"]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it possible that user defines a configmap but doesn't define the "defaultPipelineRoot" in configmap? Should we throw a error here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd suggest we treat all configuration with maximum tolerance, e.g.:

  • everything should have a default value
  • everything is optional

Therefore, I don't throw an error here.

I did add a glog.Infof afterwards to make it obvious what we defaults to in the end. (our logging doesn't show info logs by default, but we can fix that separately)

What do you think about these choices?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sgtm

@capri-xiyue
Copy link
Contributor

/lgtm

@Bobgy
Copy link
Contributor Author

Bobgy commented Jun 2, 2021

/approve

@google-oss-robot
Copy link

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: Bobgy

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@google-oss-robot google-oss-robot merged commit 43994ab into kubeflow:master Jun 2, 2021
@Bobgy Bobgy deleted the v2compat-on-kf branch June 2, 2021 01:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

v2 compatible on full Kubeflow
3 participants