This MLOps project combines the power of Helm and ArgoCD to deploy a film recommendation system into a Local Kubernetes environment. It is a part of the movie-recommander project created during the Datascientest training courses to obtain the diploma of Machine Learning Engineer. Leveraging Helm charts offers a streamlined and scalable approach to deploy and manage the film recommendation services.
- Local Kubernetes cluster: Docker Desktop + Turn on Kubernetes
- Helm 3
# Install Helm
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh
# Install Argo CD
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
# Install Argo CD CLI
curl -sSL -o argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
sudo install -m 555 argocd-linux-amd64 /usr/local/bin/argocd
rm argocd-linux-amd64
# Access Argo CD API Server
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'
kubectl port-forward svc/argocd-server -n argocd 80:443
- Clone the current
oct23_cmlops_reco_films_helm
repository. - Navigate to the repository local directory on your computer.
- Deploy the movie recommender Helm chart to your Kubernetes cluster using:
helm install my-film-reco-films-DEV ./DEV/
Navigate to the repository ../oct23_cmlops_reco_films_helm/DEV
directory on your computer.
With ArgoCD deploy Application, Airflow and MLflow Helm releases.
./install_app.sh
Use "admin" and auto-generated password to access to ArgoCD API Server.
Delete ArgoCD deployments of Application, Airflow and MLflow Helm releases.
./uninstall_app.sh
After successful deployment, the film recommendation application will be accessible via FastAPI, Streamlit, and other services hosted on a local Kubernetes cluster through a web browser:
ArgoCD - localhost:80 (admin - auto-generated password check the ./install.sh log)
FastApi Application* - localhost:8001/docs (test1 - testuser)
Airflow - localhost:8080 (admin - admin)
MLflow - localhost:5001
Streamlit - localhost:8504 (test1 - testuser)
Prometheus - localhost:9090
Grafana - localhost:3000 (admin - admin)
PostgreSQL - DBNAME=postgres, USER=postgres, PASSWORD=recommendation_films_oct_23_MLOPS, HOST=localhost, PORT=5431
* The api needs 10-15 mins to be started because of PostrgeSQL database init
- Docker
- Kubernetes
- Helm
- ArgoCD