Cet article détaille le processus de déploiement de l'API COCO, un outil essentiel pour la vision par ordinateur, au sein d'un cluster Kubernetes. L'objectif est de mettre en place un environnement de développement performant et scalable.
1. Prérequis : Vérification de l'environnement
Avant de commencer, assurez-vous de disposer des éléments suivants :
- Un cluster Kubernetes (version 1.20 ou ultérieure)
- Un environnement Docker fonctionnel
- Git installé
Clonez le dépôt du projet avec la commande suivante :
git clone https://gitcode.com/gh_mirrors/co/cocoapi
2. Création de l'image Docker pour l'API COCO
2.1 Rédaction du Dockerfile
Créez un fichier Dockerfile à la racine du projet :
FROM python:3.9-slim
WORKDIR /app
COPY PythonAPI/ /app/PythonAPI/
WORKDIR /app/PythonAPI
RUN pip install --no-cache-dir -r requirements.txt
RUN python setup.py install
EXPOSE 8080
2.2 Construction et envoi de l'image
Exécutez les commandes ci-dessous pour construire l'image et la pousser vers un registre :
docker build -t mon-registre/cocoapi:v1 .
docker push mon-registre/cocoapi:v1
3. Configuraton du déploiement Kubernetes
3.1 Fichier de déploiement (Deployment)
Créez le fichier cocoapi-deployment.yaml :
apiVersion: apps/v1
kind: Deployment
metadata:
name: api-coco-deployment
spec:
replicas: 3
selector:
matchLabels:
app: api-coco
template:
metadata:
labels:
app: api-coco
spec:
containers:
- name: conteneur-coco
image: mon-registre/cocoapi:v1
ports:
- containerPort: 8080
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"
3.2 Application du déploiement
Déployez la configuration avec la commande :
kubectl apply -f cocoapi-deployment.yaml
4. Exposition du service
4.1 Définition du Service
Créez le fichier cocoapi-service.yaml pour exposer l'API :
apiVersion: v1
kind: Service
metadata:
name: service-api-coco
spec:
selector:
app: api-coco
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: LoadBalancer
4.2 Obtention de l'adresse d'accès
Appliquez le service et récupérez l'URL externe :
kubectl apply -f cocoapi-service.yaml
kubectl get service service-api-coco
5. Vérification du bon fonctionnement
Utilisez un pod pour exécuter une démonstration :
kubectl exec -it $(kubectl get pods -l app=api-coco -o jsonpath="{.items[0].metadata.name}") -- python PythonAPI/pycocoDemo.ipynb
6. Optimisations possibles
- Gestion des ressources : Adaptez les limites de CPU et mémoire dans le fichier YAML de déploiement selon la charge.
- Stockage persistant : Ajoutez un
PersistentVolumeClaimpour conserver les jeux de données et les résultats. - Mise à l'échelle automatique : Configurez un
HorizontalPodAutoscalerpour ajuster dynamiquement le nombre de réplicas.
Ce déploiement simplifie l'installation de l'API COCO et améliore la flexibilité de l'environnement de développement. Les fichiers clés à explorer pour des modifications avancées sont PythonAPI/pycocotools/coco.py (fonctions principales) et PythonAPI/pycocotools/cocoeval.py (évaluation).