Je pense avoir trouvé une solution (en utilisant un déploiement et un service).
Pour mon déploiement, j'ai utilisé deux conteneurs (webapp + redis) dans un pod, car il n'est pas logique qu'une webapp s'exécute sans instance redis active, et en plus elle se connecte à redis au démarrage de l'application. Je peux me tromper dans ce raisonnement, alors n'hésitez pas à me corriger si vous pensez le contraire.
Voici mon déploiement :
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app-deployment
spec:
selector:
matchLabels:
app: my-app-deployment
template:
metadata:
labels:
app: my-app-deployment
spec:
containers:
- name: redis
image: redis:latest
ports:
- containerPort: 6379
volumeMounts:
- mountPath: /srv/www
name: redis-storage
- name: my-app
image: my-app:latest
imagePullPolicy: Never
ports:
- containerPort: 8080
volumes:
- name: redis-storage
emptyDir: {}
Et voici la définition du service :
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
ports:
- port: 8080
protocol: TCP
type: NodePort
selector:
app: my-app-deployment
Je crée le déploiement avec :kubectl create -f deployment.yaml
Ensuite, je crée le service avec kubectl create -f service.yaml
Je lis l'IP avec minikube ip
et extrayez le port de la sortie de kubectl describe service my-app-service
.