Skip to content

Platform installation

Pre-requisistes

To be able to install the platform and its components, you need first a kubernetes cluster running.

You can use k3d, minikube or kind for example.

You will also need:

To compile and deploy the demo application, you will need:

  • Maven 3.9
  • JDK 17

You can install both using SDKMAN!.

To run the production web page, you will need:

  • npm (~10.1.0): you can install using https://github.com/nvm-sh/nvm
  • angular-cli (~17.1.3):
npm install -g @angular/cli

Platform components

In your kubernetes cluster, we'll start by installing Argo CD.

./scripts/install-argo-cd.sh

Once installed, we'll use Argo CD to deploy absolutely everything in the cluster. It will even watch and patch itself !

image

Using Argo CD, we will deploy some infrastructure components:

  • Ingress Nginx controller: to be able to expose ingresses to the Argo CD and Argo Workflows interfaces, and also act as a load balancer for our canary tests using Argo Rollouts
  • Docker-registry: to handle and serve our microservice images
  • Prometheus stack: to gather microservice's prometheus metrics and use them as analysis in our progressive rollout

It will also take care of installing the Argo Projects:

And a PetStore demo application in two phases: test and production.

Components installation

Once the Argo CD installation run, you can access the UI with a simple port-forward:

kubectl port-forward svc/argocd-server -n argocd 8080:80

This is only needed as long as we have not patched the installation with an additional ingress.

You can now access the Argo CD interface at "http://localhost:8080". You can connect using the "admin" user and the password retrieved by executing the command:

argocd admin initial-password -n argocd

You can now create an application using the 'New App' button.

image

You can use the following parameters as reference:

image

You should now have all components deployed in your cluster:

image

/!\ Do not mind the app namespaces in red, we'll push the application image in the step just after.

This is it. This was the last manual action you had to perform on the platform !

Push the PetStore demo app images

Go into the demo-app folder and simply run:

mvn deploy

The test and prod applications should turn green now.

Access the UI

You can now access the UI at:

Troubleshooting

In case the ArgoCD UI doesn't load (too many redirects), you might need to restart the argo-server pod to take into account the latest options.

kubectl rollout restart deployment argocd-server -n argocd

If some pods are in CrashLoop state with the error Too many open files, try:

sudo sysctl fs.inotify.max_user_instances=1280
sudo sysctl fs.inotify.max_user_watches=655360

Ref: https://github.com/kubeflow/manifests/issues/2087