Repository for dip
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tenant-catalog/kubeflow/apps/pipeline/upstream/README.md

103 lines
4.7 KiB

# Install Kubeflow Pipelines Standalone using Kustomize Manifests
This folder contains [Kubeflow Pipelines Standalone](https://www.kubeflow.org/docs/components/pipelines/installation/standalone-deployment/)
Kustomize manifests.
Kubeflow Pipelines Standalone is one option to install Kubeflow Pipelines. You can review all other options in
[Installation Options for Kubeflow Pipelines](https://www.kubeflow.org/docs/components/pipelines/installation/overview/).
## Install options for different envs
To install Kubeflow Pipelines Standalone, follow [Kubeflow Pipelines Standalone Deployment documentation](https://www.kubeflow.org/docs/components/pipelines/installation/standalone-deployment/).
There are environment specific installation instructions not covered in the official deployment documentation, they are listed below.
### (env/platform-agnostic) install on any Kubernetes cluster
Install:
```bash
KFP_ENV=platform-agnostic
kustomize build cluster-scoped-resources/ | kubectl apply -f -
kubectl wait crd/applications.app.k8s.io --for condition=established --timeout=60s
kustomize build "env/${KFP_ENV}/" | kubectl apply -f -
kubectl wait pods -l application-crd-id=kubeflow-pipelines -n kubeflow --for condition=Ready --timeout=1800s
kubectl port-forward -n kubeflow svc/ml-pipeline-ui 8080:80
```
Now you can access Kubeflow Pipelines UI in your browser by <http://localhost:8080>.
Customize:
There are two variations for platform-agnostic that uses different [argo workflow executors](https://argoproj.github.io/argo-workflows/workflow-executors/):
* env/platform-agnostic-emissary
* env/platform-agnostic-pns
You can install them by changing `KFP_ENV` in above instructions to the variation you want.
Data:
Application data are persisted in in-cluster PersistentVolumeClaim storage.
### (env/gcp) install on Google Cloud with Cloud Storage and Cloud SQL
Cloud Storage and Cloud SQL are better for operating a production cluster.
Refer to [Google Cloud Instructions](sample/README.md) for installation.
### (env/aws) install on AWS with S3 and RDS MySQL
S3 and RDS MySQL are better for operating a production cluster.
Refer to [AWS Instructions](env/aws/README.md) for installation.
Note: Community maintains a different opinionated installation manifests for AWS, refer to [e2fyi/kubeflow-aws](https://github.com/e2fyi/kubeflow-aws/tree/master/pipelines).
## Uninstall
If the installation is based on CloudSQL/GCS, after the uninstall, the data is still there,
reinstall a newer version can reuse the data.
```bash
### 1. namespace scoped
# Depends on how you installed it:
kubectl kustomize env/platform-agnostic | kubectl delete -f -
# or
kubectl kustomize env/dev | kubectl delete -f -
# or
kubectl kustomize env/gcp | kubectl delete -f -
# or
kubectl delete applications/pipeline -n kubeflow
### 2. cluster scoped
kubectl delete -k cluster-scoped-resources/
```
## Folder Structure
### Overview
* User facing manifest entrypoints are `cluster-scoped-resources` package and `env/<env-name>` package.
* `cluster-scoped-resources` should collect all cluster-scoped resources.
* `env/<env-name>` should collect env specific namespace-scoped resources.
* Note, for multi-user envs, they already included cluster-scoped resources.
* KFP core components live in `base/<component-name>` folders.
* If a component requires cluster-scoped resources, it should have a folder inside named `cluster-scoped` with related resources, but note that `base/<component-name>/kustomization.yaml` shouldn't include the `cluster-scoped` folder. `cluster-scoped` folders should be collected by top level `cluster-scoped-resources` folder.
* KFP core installations are in `base/installs/<install-type>`, they only include the core KFP components, not third party ones.
* Third party components live in `third-party/<component-name>` folders.
### For direct deployments
Env specific overlays live in `env/<env-name>` folders, they compose above components to get ready for directly deploying.
### For downstream consumers
Please compose `base/installs/<install-type>` and third party dependencies based on your own requirements.
### Rationale
Constraints for namespaced installation we need to comply with (that drove above structure):
* CRDs must be applied separately, because if we apply CRs in the same `kubectl apply` command, the CRD may not have been accepted by k8s api server (e.g. Application CRD).
* [A Kubeflow 1.0 constraint](https://github.com/kubeflow/pipelines/issues/2884#issuecomment-577158715) is that we should separate cluster scoped resources from namespace scoped resources, because sometimes different roles are required to deploy them. Cluster scoped resources usually need a cluster admin role, while namespaced resources can be deployed by individual teams managing a namespace.