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
Kubeflow release process and customization of v1.2.0+ installation #5440
Comments
@aronchick is it possible you would be able to assist with this? :D |
So I think I might understand this a bit better now after going through it :D Some of the confusion resulted in that pre v1.1.0 that the full output was in the kustomize folder, however now in v1.1.0+ we are just encouraged on using the delta via strategic merges etc. Due to this I was able to get all of our custom configuration working in the v1.2.0 line though in order to make our customizations we had to explicitly call all of the components that the kubeflow-app calling https://github.com/StatCan/kubeflow-manifest/tree/feat-kubeflow The biggest problem I was having was how I can test the delta so what I ended up doing was running the following command and then storing in git temporarily the output while was performing the adjustments. This then lets me see the delta and that things were working correctly.
Here was the contents of the kfctl_azure.yml which allowed for us to store our overrides in the kustomize folder: SEE BELOW |
Actually was able to improve upon the above as we still needed some vars from the top level first to be initiated and then we made our own “stack” similar to how the azure one functions except with our customizations and improvements. It also does it the "kustomize way" but can definitely see the benefits that our kfctl file is now really small and does most of the grunt work. Nice thing is that inheritance works well and is really easy to modify the defaults now without needing tool like yq for everything. We also got ours working on Azure, Multi User pipelines and under Istio. https://github.com/StatCan/kubeflow-manifest/tree/feat-kubeflow Run our KFDefinition file:
To check output
This will in turn calls our “DAaaS” stack along with other application-level components such as OIDC which in turn call the kubeflow components in .cache with our overrides:
Then in the above I can still use our envsubst and yq replacements on the kustomize folder to interpolate our OIDC parameters through a GitHub actions P.R. I think my questions now get reduced to the following:
|
@sylus -- the manifests v1.2 changes (and initial issues) are my fault. I noticed only 2 weeks before v1.2 release that a release was upcoming and scrambling to get some things out. We don't have any dedicated person at Microsoft focused on Kubeflow so I took this on myself. Let's just say it has been a bit of a steep learning curve. The changes you observed above with the The Azure v1.2 manifests in the v1.2 branch point to a fixed commit. This is not unlike pointing at a tag that is pointing at a fixed commit. Prior to Kubeflow v1.2 all manifests for all platforms were simply pointing at the branch without pinning any commit. Also FYI, just now I made another change as I noticed all along Knative and Kfserving were deploying to the wrong namespaces kubeflow/manifests#1698. Now Knative may not actually work for another reason I just learned about... kubeflow/kfctl#462 but that's an issue for another day |
Regarding testing your changes on specific modules, can you please try |
After each execution of kfctl on Azure just use |
Good tip! I think I also know how to contribute to the upstream project the ability to define a custom Kubeflow control-plane selector label. Might do so in the incoming weeks if I have time. |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
@berndverst Kubeflow Azure distribution has remained in v1.2 for two years, while v1.5 is coming up soon. Do you know if there is any plan to release Azure distribution with more latest version? Who is the point of contact/representative? |
/kind bug
Hello amazing Kubeflow community!
We’ve been using Kubeflow in an experimental phase since before 1.0 and pretty heavily in our Data Analytics as a Service environment after the 1.0 release and has been working quite well! Very recently we attempted to upgrade to the 1.1.0 release and encountered a bunch of workflow issues.
For reasons specific to our environment, we have to customize the installation of Kubeflow. With the 1.0 release of Kubeflow, we were able to accomplish this by the following:
kfctl build -f kfctl_k8s_istio
https://github.com/statcan/kubeflow-manifest
We first attempted the upgrade to 1.1.0 by performing the same task. We re-modified the updates and aligned them with what we needed. However, after deployment, we found out that the manifests in the 1.1.0 tag are not actually the latest manifests for the 1.1.0 release but instead they were made available after the release (I believe in August based on kubeflow/manifests#1364 (comment)). However, when attempting to re-apply our modifications to the manifests, the new structure of the release manifests for 1.1 does not allow for the same process. We don’t want to modify the .cache folder (and in fact, we don’t commit the .cache folder) for obvious reasons.
Figuring that we were incorrectly modifying the release manifests we further researched how Kubeflow recommends modifying the release. We found https://www.kubeflow.org/docs/other-guides/kustomize/ which don’t really identify how to actually make changes (it gives some “ideas” but no examples).
Our workflow was dependent on the full output into the kustomize folder like was done in 1.0 and we no longer get that output anymore to modify. We started looking into docs on this and found https://developers.redhat.com/blog/2020/07/23/open-data-hub-and-kubeflow-installation-customization/ which documented some ways to customize the install, which involves a fork and ways of working with it. Our preferred method is #3, which is to use overlays to apply configuration. But according to kubeflow/kfctl#402, the use of overlays has been deprecated.
We were able to add a component say for example creating a dex folder then adding a configmap and then doing a strategic merge. We can then do
kustomize build .
on just that specific component to see our replacement works. Sokustomize build kustomize/dex
works. However when we trykustomize build kustomize/kubeflow-apps
, we get an error rendering the manifests:Therefore, I think our questions are as follows:
kustomize build kustomize/kubeflow-apps
doesn't work.kubeflow/manifests
(1.1.0)Thank you in advance for your time and please reach out if you have any questions.
Environment:
kfctl version
): 1.1.0minikube
): 1.16.15kubectl version
): 1.16.15/etc/os-release
): Ubuntu 16.04The text was updated successfully, but these errors were encountered: