Maison >développement back-end >Golang >Explication détaillée de l'orchestration des conteneurs et du déploiement automatisé du framework Gin
Gin framework est un framework web léger adapté au développement rapide d'API et d'applications web. Il se caractérise par des performances élevées, une évolutivité facile et de nombreuses fonctions implémentées via un middleware, telles que l'authentification, le routage, les journaux de requêtes, etc. Dans le développement réel, nous pouvons utiliser des conteneurs Docker pour gérer les applications Gin et les déployer automatiquement à l'aide de clusters Kubernetes.
1. Orchestration de conteneurs Docker
Docker est une technologie de conteneurisation efficace et légère qui nous permet de déployer et d'exécuter rapidement des applications sur n'importe quelle plateforme. Nous pouvons utiliser Docker pour empaqueter des applications Gin et les déployer sur des serveurs locaux ou cloud. Les étapes spécifiques sont les suivantes :
1. Écrivez un Dockerfile
Tout d'abord, nous devons écrire un Dockerfile, qui décrit le processus de construction du conteneur Docker. Dans le Dockerfile, nous devons spécifier l'image de base, installer les packages dépendants, copier l'application dans le conteneur et d'autres opérations. Voici un exemple simple de Dockerfile :
FROM golang:1.16-alpine WORKDIR /app COPY . . RUN go build -o main . EXPOSE 8080 CMD ["./main"]
Dans ce Dockerfile, nous utilisons l'image officielle de Golang 1.16 comme image de base, définissons le répertoire de travail sur /app et enregistrons tous les fichiers dans le répertoire actuel. Copiez-le dans le répertoire /app du conteneur. Nous avons ensuite exécuté la commande go build pour compiler l'application et l'avons nommée main. Enfin, nous avons exposé le port 8080 dans le conteneur et démarré l'application via la commande CMD.
2. Construisez l'image Docker
Après avoir écrit le fichier Docker, nous devons utiliser la commande docker build pour construire l'image Docker. Exécutez la commande suivante dans le terminal :
docker build -t gin-app:latest .
Cette commande construira une image Docker nommée gin-app dans le répertoire courant, et l'étiquette de cette image est la plus récente.
3. Exécutez le conteneur Docker
Après avoir construit l'image Docker, nous pouvons utiliser la commande docker run pour exécuter le conteneur. Avant d'exécuter le conteneur, nous devons déterminer sur quel port nous souhaitons exposer l'application. Dans cet exemple, nous mapperons le port 8080 du conteneur au port 8080 de l'hôte local. Exécutez la commande suivante :
docker run -d -p 8080:8080 gin-app:latest
Cette commande exécutera un conteneur nommé gin-app en arrière-plan et mappera le port 8080 du conteneur au port 8080 de l'hôte. A cette étape, l'application Gin devrait déjà être accessible sur localhost via le port 8080.
2. Déploiement automatisé de Kubernetes
Kubernetes est un système d'orchestration de conteneurs qui peut nous aider à déployer, développer et gérer automatiquement des applications. Dans Kubernetes, nous pouvons définir le déploiement d'applications et les services via des fichiers yaml. Les étapes spécifiques sont les suivantes :
1. Écrivez un fichier de déploiement
Le déploiement est un concept de base utilisé par Kubernetes pour déployer et mettre à jour des applications. Dans Déploiement, nous définissons des propriétés telles que le nombre de copies de l'application, les images de conteneur, les variables d'environnement et les volumes montés. Voici un exemple de déploiement simple :
apiVersion: apps/v1 kind: Deployment metadata: name: gin-app-deployment spec: replicas: 2 selector: matchLabels: app: gin-app template: metadata: labels: app: gin-app spec: containers: - name: gin-app image: gin-app:latest ports: - containerPort: 8080
Dans cet exemple, nous définissons un objet de déploiement nommé gin-app-deployment et spécifions le nombre de copies de l'application comme étant 2. Le sélecteur est utilisé pour sélectionner le Pod à déployer. Ici, nous avons sélectionné le Pod avec le label app=gin-app. Dans le modèle Pod, nous définissons un conteneur nommé gin-app, l'associons à l'image Docker précédemment construite gin-app:latest et spécifions que le port du conteneur exposé aux autres conteneurs est 8080.
2. Écrivez le fichier Service
Service est un objet utilisé dans Kubernetes pour fournir des services d'équilibrage de charge. Il peut acheminer les requêtes au sein du cluster vers le bon pod. Voici un exemple de service simple :
apiVersion: v1 kind: Service metadata: name: gin-app-service spec: selector: app: gin-app ports: - name: http port: 80 targetPort: 8080 type: LoadBalancer
Dans cet exemple, nous définissons un objet de service nommé gin-app-service et spécifions le Pod avec l'étiquette app=gin-app comme Sur le backend, le le port de service est 80 et transmet la demande au port 8080 du conteneur. L'option type spécifie le type de service comme LoadBalancer, donc Kubernetes créera un équilibreur de charge externe pour ce service afin que nous puissions accéder à ce service de l'extérieur.
3. Déploiement d'applications
Après avoir écrit les fichiers de déploiement et de service, nous pouvons utiliser la commande kubectl pour les déployer sur le cluster Kubernetes. Exécutez les commandes suivantes dans le terminal :
kubectl create -f gin-app-deployment.yaml kubectl create -f gin-app-service.yaml
Ces deux commandes créeront respectivement les deux objets Kubernetes gin-app-deployment et gin-app-service et les déploieront sur le cluster Kubernetes. Une fois le déploiement terminé, nous pouvons utiliser la commande kubectl get pour afficher son statut :
kubectl get deployments kubectl get services
Dans le résultat de ces deux commandes, nous devrions pouvoir voir les objets de déploiement et de service que nous avons créés et afficher eux Leur nombre respectif de copies, leur adresse IP, leur numéro de port et d’autres informations.
3. Résumé
Grâce à l'orchestration de conteneurs Docker mentionnée ci-dessus et au déploiement automatisé de Kubernetes, nous pouvons déployer rapidement des applications Gin dans n'importe quel environnement. Cette approche peut considérablement améliorer l'efficacité du développement et réduire la charge de travail de déploiement et de maintenance. Dans le même temps, les fonctionnalités de haute disponibilité et d’évolutivité de Kubernetes nous permettent également d’étendre facilement l’échelle des applications pour répondre aux besoins changeants de l’entreprise.
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!