From 68bdde101a0d07ef4e880c182d1e1aceaee2a20b Mon Sep 17 00:00:00 2001 From: Harshvir Potpose Date: Wed, 10 Sep 2025 02:33:30 +0530 Subject: [PATCH 1/8] use seaweedfs by default Signed-off-by: Harshvir Potpose --- README.md | 10 ++++++++++ example/kustomization.yaml | 6 ++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f45da6e2d..58ad26568 100644 --- a/README.md +++ b/README.md @@ -409,6 +409,16 @@ kustomize build common/istio/kubeflow-istio-resources/base | kubectl apply -f - Kubeflow Pipelines offers two deployment options to choose from, each designed for different use cases and operational preferences. The traditional database-based approach stores pipeline definitions in an external database, while the Kubernetes native API mode leverages Kubernetes custom resources for pipeline definition storage and management. +Note: Default artifact store (example install) +- The single-command installation using the `example` kustomization sets SeaweedFS as the default S3-compatible artifact store for Pipelines. It replaces `minio-service` to route S3 traffic to SeaweedFS and patches the Argo Workflow controller to use it. +- If you are following the step-by-step installation and want SeaweedFS as your Pipelines artifact store, apply the following overlay instead of the MinIO-based overlays: + +```sh path=null start=null +kustomize build experimental/seaweedfs/istio | kubectl apply -f - +``` + +To switch back to MinIO, use the standard upstream Pipelines overlays shown below. + ##### Pipeline Definitions Stored in the Database diff --git a/example/kustomization.yaml b/example/kustomization.yaml index 6b4be393d..673122df7 100644 --- a/example/kustomization.yaml +++ b/example/kustomization.yaml @@ -66,8 +66,10 @@ resources: - ../common/kubeflow-roles/base # Kubeflow Istio Resources - ../common/istio/kubeflow-istio-resources/base -# Kubeflow Pipelines -- ../applications/pipeline/upstream/env/cert-manager/platform-agnostic-multi-user # Pipeline Definitions Stored in the Database +# Kubeflow Pipelines (SeaweedFS default) +- ../experimental/seaweedfs/istio +# If you prefer MinIO instead, replace the line above with one of the following: +# - ../applications/pipeline/upstream/env/cert-manager/platform-agnostic-multi-user # Pipeline Definitions Stored in the Database # - ../applications/pipeline/upstream/env/cert-manager/platform-agnostic-multi-user-k8s-native # Pipeline Definitions Stored as Kubernetes Resources # Katib - ../applications/katib/upstream/installs/katib-with-kubeflow From ec6ed71b387e4088bcf09e47b96179c7ee3e8798 Mon Sep 17 00:00:00 2001 From: Harshvir Potpose Date: Wed, 10 Sep 2025 03:09:21 +0530 Subject: [PATCH 2/8] fix unit test Signed-off-by: Harshvir Potpose --- .../seaweedfs/base/seaweedfs/seaweedfs-networkpolicy.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/experimental/seaweedfs/base/seaweedfs/seaweedfs-networkpolicy.yaml b/experimental/seaweedfs/base/seaweedfs/seaweedfs-networkpolicy.yaml index ab1a6cc66..f0eb008ce 100644 --- a/experimental/seaweedfs/base/seaweedfs/seaweedfs-networkpolicy.yaml +++ b/experimental/seaweedfs/base/seaweedfs/seaweedfs-networkpolicy.yaml @@ -1,7 +1,7 @@ apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: - name: default-allow-same-namespace + name: default-allow-same-namespace-seaweedfs namespace: kubeflow spec: podSelector: {} From da6ca0a70856648fbc2c23f41ef7919cfb721bf8 Mon Sep 17 00:00:00 2001 From: Harshvir Potpose Date: Wed, 10 Sep 2025 14:52:36 +0530 Subject: [PATCH 3/8] rm redundant networkpolicy Signed-off-by: Harshvir Potpose --- .../base/seaweedfs/seaweedfs-networkpolicy.yaml | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/experimental/seaweedfs/base/seaweedfs/seaweedfs-networkpolicy.yaml b/experimental/seaweedfs/base/seaweedfs/seaweedfs-networkpolicy.yaml index f0eb008ce..0375f8327 100644 --- a/experimental/seaweedfs/base/seaweedfs/seaweedfs-networkpolicy.yaml +++ b/experimental/seaweedfs/base/seaweedfs/seaweedfs-networkpolicy.yaml @@ -1,18 +1,5 @@ apiVersion: networking.k8s.io/v1 kind: NetworkPolicy -metadata: - name: default-allow-same-namespace-seaweedfs - namespace: kubeflow -spec: - podSelector: {} - ingress: - - from: - - podSelector: {} - policyTypes: - - Ingress ---- -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy metadata: name: seaweedfs spec: From 46b7a257bb13655471426d005705db4eff9f0695 Mon Sep 17 00:00:00 2001 From: Harshvir Potpose Date: Wed, 10 Sep 2025 17:02:50 +0530 Subject: [PATCH 4/8] add back networkpolicy Signed-off-by: Harshvir Potpose --- .../base/seaweedfs/seaweedfs-networkpolicy.yaml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/experimental/seaweedfs/base/seaweedfs/seaweedfs-networkpolicy.yaml b/experimental/seaweedfs/base/seaweedfs/seaweedfs-networkpolicy.yaml index 0375f8327..c2ee7b73e 100644 --- a/experimental/seaweedfs/base/seaweedfs/seaweedfs-networkpolicy.yaml +++ b/experimental/seaweedfs/base/seaweedfs/seaweedfs-networkpolicy.yaml @@ -1,5 +1,18 @@ apiVersion: networking.k8s.io/v1 kind: NetworkPolicy +metadata: + name: allow-same-namespace-seaweedfs + namespace: kubeflow +spec: + podSelector: {} + ingress: + - from: + - podSelector: {} + policyTypes: + - Ingress +--- +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy metadata: name: seaweedfs spec: From d14c7d18621749306a7d1cdedc9c57dcdbe6477c Mon Sep 17 00:00:00 2001 From: Harshvir Potpose Date: Wed, 10 Sep 2025 17:04:17 +0530 Subject: [PATCH 5/8] add todo comment Signed-off-by: Harshvir Potpose --- example/kustomization.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/example/kustomization.yaml b/example/kustomization.yaml index 673122df7..805f2bde6 100644 --- a/example/kustomization.yaml +++ b/example/kustomization.yaml @@ -66,10 +66,10 @@ resources: - ../common/kubeflow-roles/base # Kubeflow Istio Resources - ../common/istio/kubeflow-istio-resources/base +# TODO uncommnet the below line after next KPF release +# - ../applications/pipeline/upstream/env/cert-manager/platform-agnostic-multi-user # Pipeline Definitions Stored in the Database # Kubeflow Pipelines (SeaweedFS default) - ../experimental/seaweedfs/istio -# If you prefer MinIO instead, replace the line above with one of the following: -# - ../applications/pipeline/upstream/env/cert-manager/platform-agnostic-multi-user # Pipeline Definitions Stored in the Database # - ../applications/pipeline/upstream/env/cert-manager/platform-agnostic-multi-user-k8s-native # Pipeline Definitions Stored as Kubernetes Resources # Katib - ../applications/katib/upstream/installs/katib-with-kubeflow From 70bb2103fb61d8c2914ff40fb04ae23e77fcf1de Mon Sep 17 00:00:00 2001 From: Harshvir Potpose Date: Wed, 10 Sep 2025 17:09:26 +0530 Subject: [PATCH 6/8] sync seaweedfs manifests Signed-off-by: Harshvir Potpose --- .../base/seaweedfs/seaweedfs-deployment.yaml | 11 +++++------ .../seaweedfs/base/seaweedfs/seaweedfs-pvc.yaml | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/experimental/seaweedfs/base/seaweedfs/seaweedfs-deployment.yaml b/experimental/seaweedfs/base/seaweedfs/seaweedfs-deployment.yaml index 99cee8b4c..635e8ac6e 100644 --- a/experimental/seaweedfs/base/seaweedfs/seaweedfs-deployment.yaml +++ b/experimental/seaweedfs/base/seaweedfs/seaweedfs-deployment.yaml @@ -24,12 +24,14 @@ spec: type: RuntimeDefault containers: - name: seaweedfs - image: 'chrislusf/seaweedfs:3.85' + image: 'chrislusf/seaweedfs:3.92' args: - 'server' - '-dir=/data' - '-s3' - '-iam' + - '-filer' + - '-master.volumePreallocate=false' ports: - containerPort: 8333 - containerPort: 8111 @@ -56,16 +58,13 @@ spec: capabilities: drop: - ALL - add: - - NET_BIND_SERVICE volumeMounts: - mountPath: /data name: data resources: - # Benchmark this, just taken from minio requests: - cpu: 20m - memory: 100Mi + cpu: 32m + memory: 128Mi volumes: - name: data persistentVolumeClaim: diff --git a/experimental/seaweedfs/base/seaweedfs/seaweedfs-pvc.yaml b/experimental/seaweedfs/base/seaweedfs/seaweedfs-pvc.yaml index 7d47bee65..b0302f9cb 100644 --- a/experimental/seaweedfs/base/seaweedfs/seaweedfs-pvc.yaml +++ b/experimental/seaweedfs/base/seaweedfs/seaweedfs-pvc.yaml @@ -8,4 +8,4 @@ spec: - ReadWriteOnce resources: requests: - storage: 5Gi + storage: 20Gi From 55f894228b799e06ecc7fbc77b980ebd78682d43 Mon Sep 17 00:00:00 2001 From: Harshvir Potpose Date: Wed, 10 Sep 2025 17:37:47 +0530 Subject: [PATCH 7/8] fix typos Signed-off-by: Harshvir Potpose --- example/kustomization.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/example/kustomization.yaml b/example/kustomization.yaml index 805f2bde6..c3156eb0e 100644 --- a/example/kustomization.yaml +++ b/example/kustomization.yaml @@ -66,8 +66,8 @@ resources: - ../common/kubeflow-roles/base # Kubeflow Istio Resources - ../common/istio/kubeflow-istio-resources/base -# TODO uncommnet the below line after next KPF release -# - ../applications/pipeline/upstream/env/cert-manager/platform-agnostic-multi-user # Pipeline Definitions Stored in the Database +# TODO: Uncomment the following line after the next KFP release +# - ../applications/pipeline/upstream/env/cert-manager/platform-agnostic-multi-user # Pipeline definitions stored in the database # Kubeflow Pipelines (SeaweedFS default) - ../experimental/seaweedfs/istio # - ../applications/pipeline/upstream/env/cert-manager/platform-agnostic-multi-user-k8s-native # Pipeline Definitions Stored as Kubernetes Resources From 9587f73e972a796735fba59f7b921162c88c0a23 Mon Sep 17 00:00:00 2001 From: Julius von Kohout <45896133+juliusvonkohout@users.noreply.github.com> Date: Wed, 10 Sep 2025 15:06:03 +0100 Subject: [PATCH 8/8] Update README.md Signed-off-by: Julius von Kohout <45896133+juliusvonkohout@users.noreply.github.com> --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 58ad26568..8773edd1b 100644 --- a/README.md +++ b/README.md @@ -409,9 +409,8 @@ kustomize build common/istio/kubeflow-istio-resources/base | kubectl apply -f - Kubeflow Pipelines offers two deployment options to choose from, each designed for different use cases and operational preferences. The traditional database-based approach stores pipeline definitions in an external database, while the Kubernetes native API mode leverages Kubernetes custom resources for pipeline definition storage and management. -Note: Default artifact store (example install) -- The single-command installation using the `example` kustomization sets SeaweedFS as the default S3-compatible artifact store for Pipelines. It replaces `minio-service` to route S3 traffic to SeaweedFS and patches the Argo Workflow controller to use it. -- If you are following the step-by-step installation and want SeaweedFS as your Pipelines artifact store, apply the following overlay instead of the MinIO-based overlays: +The default artifact store is now seaweedfs as explained [here](https://medium.com/@hpotpose26/kubeflow-pipelines-embraces-seaweedfs-9a7e022d5571). The single-command installation using the `example` kustomization sets SeaweedFS as the default S3-compatible artifact store for Pipelines. It replaces `minio-service` to route S3 traffic to SeaweedFS and patches the Argo Workflow controller to use it. +If you are following the step-by-step installation and want SeaweedFS as your Pipelines artifact store, apply the following overlay instead of the MinIO-based overlays: ```sh path=null start=null kustomize build experimental/seaweedfs/istio | kubectl apply -f - @@ -419,6 +418,8 @@ kustomize build experimental/seaweedfs/istio | kubectl apply -f - To switch back to MinIO, use the standard upstream Pipelines overlays shown below. +TODO MinIO Will be removed in the next releases. + ##### Pipeline Definitions Stored in the Database @@ -758,3 +759,4 @@ pre-commit run - **Q:** Why does Istio CNI fail on Google Kubernetes Engine (GKE) with "read-only file system" errors? **A:** GKE mounts `/opt/cni/bin` as read-only for security reasons, preventing the Istio CNI installer from writing the CNI binary. Use the GKE-specific overlay: `kubectl apply -k common/istio/istio-install/overlays/gke`. This overlay uses GKE's writable CNI directory at `/home/kubernetes/bin`. For more details, see [Istio CNI Prerequisites](https://istio.io/latest/docs/setup/additional-setup/cni/#prerequisites) and [Platform Prerequisites](https://istio.io/latest/docs/ambient/install/platform-prerequisites/).-` +