Configuring External MinIO
This article describes how to configure external MinIO for Kubeflow. You can perform this action before or after deploying Kubeflow on your Kubernetes cluster.
Before Deploying Kubeflow
To configure external MinIO before deploying Kubeflow on your Kubernetes cluster:
- Connect through
ssh
to the Kubernetes master node. - Make sure the
kubeflow-minio
namespace exists. If it does not exist, create it now by executing the following in the shell:if ! kubectl get ns kubeflow-minio > /dev/null 2> /dev/null; then kubectl create ns kubeflow-minio fi
- Create a secret with the external MinIO config:
- If minio is deployed in the
kubeflow
namespace, execute the following command:
For example:kubectl -n kubeflow-minio create secret generic kubeflow-external-minio --from-literal='host=<minio service address>' --from-literal='port=<minio service port>' --from-literal='insecure=<true/false>' --from-literal='accesskey=<minio access key>' --from-literal='secretkey=<minio secret key>' -n kubeflow-minio
kubectl -n kubeflow-minio create secret generic kubeflow-external-minio --from-literal='host=minio-service.minio.svc.cluster.local' --from-literal='port=9000' --from-literal='secure=false' --from-literal='accesskey=minio' --from-literal='secretkey=minio123'
- If minio is not deployed in the
kubeflow
namespace, you must provide an additional optionnamespace
tokubeflow-external-minio-secret
. The default value is set tokubeflow
.Execute the following command:kubectl create secret generic kubeflow-external-minio --from-literal='namespace=<minio namespace>' --from-literal='host=<minio service address>' --from-literal='port=<minio service port>' --from-literal='secure=<true/false>' --from-literal='accesskey=<minio access key>' --from-literal='secretkey=<minio secret key>' -n kubeflow-minio
- If minio is deployed in the
- Transfer the artifacts from the Kubeflow MinIO to your external S3 storage. Find the necessary instructions and scripts here (link opens an external website in a new browser tab or window).
- Deploy Kubeflow, as described in Kubeflow Installation.
After Deploying Kubeflow
To configure external MinIO after deploying Kubeflow on your Kubernetes cluster:
- Edit the secret
mlpipeline-minio-artifact
in the namespacekubeflow
:
Edit the secretkubectl edit secret mlpipeline-minio-artifact -n kubeflow
mlpipeline-minio-artifact
in all other profile (user) namespaces:
Change the data in the secret so that it matches your MinIO configuration. All values must be encoded inkubectl edit secret mlpipeline-minio-artifact -n <profile_namespace>
base64
format.For
base64
encoding, you can use this tool. - Transfer the artifacts from the Kubeflow MinIO to your external S3 storage. Find the necessary instructions and scripts here (link opens an external website in a new browser tab or window).
- Restart the
ml-pipeline
andworkflow-controller
deployments:kubectl rollout restart deploy -n kubeflow ml-pipeline
kubectl rollout restart deploy -n kubeflow workflow-controller
- To apply changes, restart the
ml-pipeline-ui-artifact
pod in each profile namespace:kubectl delete ml-pipeline-ui-artifact-xxx -n <profile_namespace>