Si tu veux tester Litmus Chaos en local sur un Mac avec puce Apple Silicon, voilà ce qui fonctionne vraiment sans passer des heures comme moi à déboguer pour trouver un moyen de faire tourner MongoDB sur ARM.
Dans cette situation, on a:
- Minikube avec le driver Docker
- Helm 3
kubectlconfiguré sur le cluster minikube- orbstack pour faire tourner Docker
minikube start --nodes 3 -p minikube-multinode --driver=docker
Le problème avec les images ARM
La plupart des images Bitnami sur docker.io sont en x86 uniquement. MongoDB en particulier ne tourne pas sur ARM sans une image adaptée. On utilise dlavrenuek/bitnami-mongodb-arm à la place.
Le fichier values.yaml
Il ressemble à ça:
mongodb:
image:
registry: docker.io
repository: dlavrenuek/bitnami-mongodb-arm
tag: 8.0.9
volumePermissions:
image:
registry: docker.io
repository: bitnami/os-shell
tag: "12"
portal:
server:
waitForMongodb:
image:
repository: dlavrenuek/bitnami-mongodb-arm
tag: 6.0.13
Attention au bug dans le chart officiel
Le chart litmuschaos/litmus du repo officiel a un bug : le template wait-for-mongodb préfixe l'image avec litmuschaos.docker.scarf.sh/litmuschaos/, ce qui donne un nom d'image invalide quand tu utilises une image Docker Hub personnalisée. Il faut patch les templates localement.
Dans charts/litmus/templates/server-deployment.yaml et auth-server-deployment.yaml, le initContainer doit ressembler à :
image: {{ .Values.portal.server.waitForMongodb.image.repository }}:{{ .Values.portal.server.waitForMongodb.image.tag }}
au lieu de :
image: {{ .Values.image.imageRegistryName }}/{{ .Values.portal.server.waitForMongodb.image.repository }}:{{ .Values.portal.server.waitForMongodb.image.tag }}
Installation
helm install chaos ./litmus-helm/charts/litmus \
--namespace=litmus \
--create-namespace \
--set portal.frontend.service.type=NodePort \
-f values.yaml
Accéder à l'interface
La façon la plus simple :
kubectl port-forward svc/chaos-litmus-frontend-service 9091:9091 -n litmus
ou
minikube service chaos-litmus-frontend-service -n litmus -p minikube-multinode --url
C'est tout !