This project automates deployment of Kubeflow, MLflow, Aim, and LakeFS into a unified webapp deployed in kind.
Before getting started, ensure you have the following prerequisites installed:
- kind - https://kind.sigs.k8s.io/docs/user/quick-start/#installing-with-a-package-manager
- check
kind version
- check
- docker - https://docs.docker.com/desktop/
- check
docker version
- check
- kubectl - https://kubernetes.io/docs/tasks/tools/#kubectl
- check
kubectl version
- check
- kustomize - https://kubectl.docs.kubernetes.io/installation/kustomize/
- check
kustomize version
- check
- helm - https://helm.sh/docs/intro/install/
- check
helm version
- check
Make sure docker is configured for 16 GB of ram and 8 CPU cores.
These tools may help manage the cluster and monitor progress during install:
- k9s - https://k9scli.io/topics/install/
- check
k9s version
- check
The project contains several scripts:
- .\Make - Primary Windows-native batch script for deploying and managing AI-Streamliner
- Makefile - Original macOS/Linux/WSL script for deploying and managing AI-Streamliner
- To check if all prerequisite tools are installed:
.\Make check
- To deploy all AI-Streamliner resources in a single command:
.\Make streamliner
- Ignore any errors or outputs in the terminal. If installation doesn't complete in 15 minutes, try again. The installation will either succeed or fail no intervention is necessary while installing.
- To monitor deployment in a new terminal:
$env:KUBECONFIG="$env:TEMP\kubeflow-config" kubectl config use-context kind-kubeflow k9s
- To access all AI-Streamliner tools:
.\Make access
Note: The access command automatically waits for all pods to be ready before starting port-forwarding. If some components are still in the ContainerCreating state, the script will wait until they are running.
-
To check if all prerequisite tools are installed:
make check-dependencies
-
To deploy all AI-Streamliner resources in a single command:
make streamliner
-
Ignore any errors or outputs in the terminal. If installation doesn't complete in 15 minutes, try again. The installation will either succeed or fail no intervention is necessary while installing.
-
To monitor deployment in a new terminal (make sure to set the context in other terminals before running make commands ):
export KUBECONFIG=/tmp/kubeflow-config; kubectl config use-context kind-kubeflow k9s
-
To access all AI-Streamliner tools:
make access
Note: The access command automatically waits for all pods to be ready before starting port-forwarding. If some components are still in the ContainerCreating state, the script will wait until they are running.
- You can install a stand-alone tool using the following template:
make <TOOL>
The available stand-alone deployments are kubeflow, mlflow, lakefs, and aim.
- You can uninstall retry any installation as well.
make delete-<TOOL>
-
You can install a stand-alone tool using the native Windows Makefile:
.\Make kubeflow .\Make mlflow .\Make aim .\Make lakefs
-
You can uninstall any installation:
.\Make delete-mlflow .\Make delete-aim .\Make delete-lakefs
-
To destroy the cluster:
.\Make destroy-cluster
-
To access AI Streamliner:
make access
This will open the dashboard at http://localhost:8080. Sign in with [email protected]/12341234
-
You can access individual tools using the following template:
make access-<TOOL>
-
To access AI Streamliner:
.\Make access
-
You can access individual tools using:
.\Make access-kubeflow .\Make access-mlflow .\Make access-aim .\Make access-lakefs
The available stand-alone deployments are kubeflow, mlflow, lakefs, and aim.
Stay tuned, as we will be releasing easy installation scripts for the following tools:
- minio
- keycloak
- mlflow
- aimstack
- lakefs
- Kubeflow Authentication Issues
-
If you encounter errors like "Jwks doesn't have key to match kid or alg from Jwt" when accessing Kubeflow, this is likely related to the
oauth2_proxy_kubeflowcookie:- Clear Browser Cookies:
- Open your browser developer tools (F12 or right-click -> Inspect)
- Go to the Application/Storage tab
- Find and delete cookies for localhost, particularly
oauth2_proxy_kubeflow - Refresh the page
- Clear Browser Cookies:
-
- When you create the kind cluster it sets the env var KUBECONFIG to the temporary kind config. If you find yourself missing your previous kubernetes contexts then use the command
unset KUBECONFIGto use the default config file typically found here: ~/.kube/config. And if you need to use the kind context again use the commandexport KUBECONFIG=/tmp/kubeflow-config;. - the /tmp directory might clean up the config file after some time. Use
kind get kubeconfig --name kubeflow > /tmp/kubeflow-configto recreate it. Bug fix wanted (good first issue). - If you find want to troubleshoot a faulty installation step look at the makefile to identify which command is failing. Connect to the cluster and attempt to run the command manually. If it succeeds, run the make streamliner command again to continue with the full installation.
First ensures a Kind cluster exists by executing the make cluster command, then pull the streamliner image and execute the deployment script.
- Docker installed and running
- Kind cluster tooling available
- Kubectl and Kustomize
- Helm
make cluster
docker run --rm -v $(pwd)/output:/output 905418165254.dkr.ecr.us-east-1.amazonaws.com/aistreamliner:latest && cd output && ./deploy-ai-streamliner.sh
- Follow the same steps as Linux
- If you encounter permission errors during the build process, run:
sudo chmod -R 755 custom-centraldashboard/ kubeflow-source/ sudo chown -R $(whoami):$(whoami) custom-centraldashboard/ kubeflow-source/
- Then retry deployment command from the output directory: ./deploy-ai-streamliner.sh
To build and publish a new multi-arch (linux/amd64, linux/arm64) release of AI Streamliner, use the dedicated release.mk file. It logs in to ECR, builds per-arch images, creates a clean multi-arch index tag, and can verify and output digests.
- Login to ECR
make -f release.mk image-login REGISTRY_ID=709825985650 REGION=us-east-1- Build and publish version 1.0.3
make -f release.mk image-release VERSION=1.0.3 REGISTRY_ID=709825985650 REPO=ardent-mc/aistreamlinerThis publishes:
- Multi-arch tag: 709825985650.dkr.ecr.us-east-1.amazonaws.com/ardent-mc/aistreamliner:1.0.3
- Per-arch tags: ...:1.0.3-amd64 and ...:1.0.3-arm64
- Verify index contents
make -f release.mk image-verify VERSION=1.0.3 REGISTRY_ID=709825985650 REPO=ardent-mc/aistreamliner- Output per-arch digests (for scanners/Marketplace)
make -f release.mk image-digests VERSION=1.0.3 REGISTRY_ID=709825985650 REPO=ardent-mc/aistreamlinerNote: Security scanners should scan the per-arch image digests (amd64 and arm64). The multi-arch tag is an OCI index that points to those images and is used for distribution.