Dans ce projet, je voulais appliquer les concepts de Kubernetes tels que les conteneurs d'initialisation et les conteneurs side-car, mais je ne voulais pas simplement suivre un tutoriel.
Mon objectif était de construire quelque chose de mémorable.
Après quelques réflexions, je vous présente la Get Me App !
L'Get Me App est conçue pour récupérer et afficher dynamiquement le contenu de divers référentiels GitHub. L'application s'exécute dans un pod Kubernetes et comprend deux composants principaux :
Conteneur Nginx : il sert d'application principale, hébergeant le contenu récupéré dynamiquement. Il est léger et efficace, ce qui le rend idéal pour diffuser des pages Web statiques.
Conteneur Sidecar : il s'exécute parallèlement au conteneur nginx principal. Il est chargé d'actualiser le contenu toutes les 5 secondes en récupérant le dernier code HTML à partir d'une page GitHub sélectionnée au hasard. Cela garantit que le contenu servi par Nginx est toujours à jour.
Init Container : Ceci initialise l'environnement avant le démarrage des conteneurs principaux. Il vérifie la disponibilité du service Get Me App en résolvant son entrée DNS. Cette étape garantit que l'application est prête à interagir avec le service une fois son exécution démarrée. Lire la suite ici (je devais)
Le conteneur nginx sert ensuite la page Web HTML mise à jour, la rendant accessible via un navigateur via un service NodePort.
Avant de commencer, assurez-vous de disposer d'un fichier de configuration pour créer le cluster Kubernetes. Reportez-vous au guide de démarrage rapide Kind pour obtenir des instructions détaillées sur la configuration de votre cluster Kind.
Créez un fichier nommé config.yml avec le contenu suivant pour définir votre cluster Kind :
kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 name: cka-cluster nodes: - role: control-plane extraPortMappings: - containerPort: 30001 # Change this to match the NodePort hostPort: 30001 listenAddress: "0.0.0.0" protocol: tcp - role: worker - role: worker
Exécutez la commande suivante pour créer le cluster :
kind create cluster --name kind-cka-cluster --config config.yml
Utilisez la commande suivante pour définir le contexte du nouveau cluster :
kubectl config use-context kind-kind-cka-cluster
Tout d'abord, configurez la structure des répertoires et des fichiers du projet.
mkdir get-me-app cd get-me-app nano get-me-app.yml
Dans le fichier get-me-app.yml, nous définirons un pod Kubernetes qui inclut le conteneur nginx, un conteneur side-car pour l'actualisation du contenu et un conteneur init pour la récupération initiale des données.
kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 name: cka-cluster nodes: - role: control-plane extraPortMappings: - containerPort: 30001 # Change this to match the NodePort hostPort: 30001 listenAddress: "0.0.0.0" protocol: tcp - role: worker - role: worker
conteneur nginx : il s'agit du conteneur principal, servant du contenu sur le port 80. Le volumeMount rend le répertoire /usr/share/nginx/html disponible dans le volume workdir du pod.
Conteneur side-car (content-refresher) : ce conteneur exécute une boucle while true, téléchargeant la dernière version de la page Web toutes les 5 secondes. Cela garantit que le contenu du volume workdir reste à jour.
Conteneur d'initialisation (init-myservice) : ceci attend que le service get-me-app-devienne disponible en effectuant en permanence une recherche DNS. Il ne s'exécute qu'une seule fois lors de l'initialisation et ne redémarre pas une fois terminé.
Volumes : le volume workdir (un type emptyDir) est partagé entre les conteneurs, permettant au conteneur d'initialisation, au side-car et à nginx d'accéder et de servir le même contenu.
Pour rendre l'application accessible via un navigateur sur votre ordinateur local, configurez un service NodePort pour exposer le port 80 du pod.
Ajoutez cette définition de service dans get-me-app-service.yml :
kind create cluster --name kind-cka-cluster --config config.yml
Déployez la configuration avec :
kubectl config use-context kind-kind-cka-cluster
Accédez-y en visitant http://localhost:30001 dans votre navigateur, et vous devriez accéder à la page github. Actualisez la page après 5 secondes et vous devriez voir une autre page github.
Ce projet m'a aidé à comprendre comment les conteneurs d'initialisation peuvent initialiser des ressources partagées et comment les conteneurs side-car maintiennent ces ressources à jour pour l'application principale. C'est une manière intéressante d'expérimenter et d'en apprendre davantage sur la gestion des données en temps réel dans Kubernetes.
Voici le contenu formaté de la section que vous avez fournie :
Notes de fin : N'oubliez pas que ce projet ne fait pas partie des didacticiels vidéo. Je voulais construire quelque chose par moi-même en utilisant les concepts du tutoriel comme guide général.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!