Créer une vidéo explicative Kubernetes
Le résultat est un MP4 pour une conférence : graphique, animé, presque pas de texte, pas de sous-titres.
Argument voiceover=on|off (par défaut on). on narre avec la voix locale Kokoro TTS ; off produit une vidéo silencieuse et n’installe ni ne charge jamais Kokoro.
Argument setup : installation uniquement, pas de vidéo. Effectuez l’étape « Vérifier l’environnement » ci-dessous, puis arrêtez-vous.
Deux dossiers. SKILL est le répertoire de base de la compétence (le dossier contenant ce fichier). Il contient .venv/, icons/, references/ et scripts/. OUT est <répertoire de travail de l'utilisateur>/<sujet>, créé par vidéo. Le fichier de scène, media/ et le MP4 final résident dans OUT, jamais dans SKILL (la mise à jour ou la suppression de la compétence supprime SKILL). Utilisez des chemins absolus ; ne vous fiez pas au répertoire courant.
Ce qui est fourni avec cette compétence
icons/: les icônes officielles de la communauté Kubernetes (ensemble étiqueté, CC-BY-4.0). Utilisez uniquement ces icônes pour les composants et ressources Kubernetes. Ne les redessinez jamais, ne les recoloriez pas en autre chose et ne remplacez pas un composant qui a une icône ici par une forme générique. Pour les concepts sans icône (CSR, certificat, paquet, règles iptables), utilisez des formes simples commeDocetPacketde la référence.references/node_join.py: un exemple complet et approuvé (ajout de nœud kubeadm). Copiez son style, sa palette et ses classes d’aide.references/kokoro_service.py: Kokoro-82M intégré dans manim-voiceover.references/kit.py: palette partagée, aides et la scène de baseExplainerplusvoiced(Scene). Les nouvelles scènes l’importent.scripts/setup.sh [voiceover=on|off] [--yes]: signale ce qui manque et affiche le plan d’installation (macOS, Arch, Debian/Ubuntu) ; n’installe qu’avec--yes.
| fichier | composant | fichier | composant | fichier | composant |
|---|---|---|---|---|---|
| api | kube-apiserver | pod | Pod | cm | ConfigMap |
| etcd | etcd | rs | ReplicaSet | secret | Secret |
| sched | kube-scheduler | deploy | Deployment | pv | PersistentVolume |
| c-m | kube-controller-manager | sts | StatefulSet | pvc | PersistentVolumeClaim |
| c-c-m | cloud-controller-manager | ds | DaemonSet | sc | StorageClass |
| kubelet | kubelet | job | Job | ns | Namespace |
| k-proxy | kube-proxy | cronjob | CronJob | sa | ServiceAccount |
| control-plane | nœud de plan de contrôle | svc | Service | role / c-role | Role / ClusterRole |
| node | nœud worker | ep | Endpoints | rb / crb | RoleBinding / ClusterRoleBinding |
| hpa | HorizontalPodAutoscaler | ing | Ingress | quota | ResourceQuota |
| crd | CustomResourceDefinition | netpol | NetworkPolicy | limits | LimitRange |
Manim supprime le texte intégré dans ces SVG, et api, c-m, sched, kubelet, k-proxy partagent le même glyphe d’engrenage. Étiquetez toujours les icônes avec l’aide Icon(name, label).
Flux de travail
1. Vérifier l’environnement
Exécutez bash SKILL/scripts/setup.sh voiceover=<on|off>. S’il affiche Prêt., continuez. Sinon, il affiche ce qui manque et le plan (premier lancement sur cette machine) : montrez le plan à l’utilisateur et demandez avant d’installer.
- Après confirmation, exécutez-le à nouveau avec
--yes. C’est lent (torch, paquets système), alors exécutez-le en arrière-plan ou avec un long délai d’attente. - Si le plan contient une ligne
sudoet que vous ne pouvez pas taper le mot de passe : donnez à l’utilisateur la commande à exécuter lui-même (! bash SKILL/scripts/setup.sh voiceover=<on|off> --yes). - Kokoro est gratuit, sous licence Apache-2.0 (acceptable pour les cours payants), hors ligne et de qualité quasi commerciale ; si l’utilisateur ne le souhaite pas, suggérez
voiceover=off.
2. Se mettre d’accord sur le storyboard
Demandez le sujet s’il n’a pas été donné. Proposez ensuite un storyboard dans le chat et attendez l’approbation, car le rendu prend plusieurs minutes :
- 6 à 12 séquences, chacune avec : un intitulé d’étape de 1 à 3 mots, ce qui se déplace à l’écran, une phrase parlée.
- L’histoire racontée par le mouvement : icônes dans des boîtes, paquets sur des arcs, changements de couleur pour l’état. Seulement de courtes étiquettes à l’écran.
- Les faits doivent être corrects pour la version actuelle de Kubernetes. En cas de doute sur un détail, dites-le plutôt que de deviner.
3. Écrire la scène
Modelez-la sur references/node_join.py :
- Un dictionnaire
NARRATION(séquence → phrase) comme attribut de classe, une méthode par séquence ;Explainer.constructles parcourt en boucle à l’intérieur dewith self.voice(line). - Écrivez
OUT/<sujet>.pyavecfrom references.kit import *, sous-classezExplainer, et ajoutez<Nom>Voiced = voiced(<Nom>)en bas. Les séquences sontdef beat(self, i). Le<Nom>silencieux et le<Nom>Voicednarré proviennent du même code. - Ne nommez jamais le fichier de scène d’après un module de la bibliothèque standard (
operator.pycasse les importations Python). - Réutilisez la palette (fond sombre
#0b1220, bleu k8s#326ce5, jeton or, réseau sarcelle, ambre NotReady, vert Ready) et les aidesIcon,Packet,Doc,Step,Pill,send. - Classes petites, code minimal.
- Épelez les termes comme ils sont prononcés dans la narration : kubeadm → « kube admin », etcd → « et-see-dee », kubectl → « kube control ».
4. Prévisualiser, puis rendre
Exécutez manim comme PYTHONPATH=SKILL SKILL/.venv/bin/manim --media_dir OUT/media ... depuis OUT.
- Prévisualisation :
... -ql <sujet>.py <Nom>, puis extrayez ~8 images avec ffmpeg en une seule planche contact et regardez-la une fois. Corrigez les chevauchements, les étiquettes coupées et le texte sombre ou illisible. - Rendu final :
... -qh <sujet>.py <Nom>quandvoiceover=off, ou<Nom>Voicedquandvoiceover=on. CopiezOUT/media/videos/<sujet>/1080p60/<Nom>.mp4versOUT/<sujet>.mp4. - Avec
voiceover=on, confirmez que le MP4 a un flux audio (ffprobe). - Ouvrez le MP4 une fois terminé (
opensur macOS ;xdg-opensur Linux, ou s’il n’y a pas d’affichage, imprimez simplement le chemin).
Signalez le chemin absolu du MP4, la durée, tout élément à écouter (prononciation de termes inhabituels) et rappelez à l’utilisateur que les icônes nécessitent le crédit « Icônes de la communauté Kubernetes, CC BY 4.0 » (l’outro l’affiche déjà). Options vocales : af_heart (par défaut), am_michael, am_fenrir ; passez-en une comme voiced(<Nom>, voice="am_michael").