Maison > interface Web > js tutoriel > Déploiement d'une application de chat sur Kubernetes à l'aide de Kind, Metallb et Ingress

Déploiement d'une application de chat sur Kubernetes à l'aide de Kind, Metallb et Ingress

Susan Sarandon
Libérer: 2025-01-02 19:39:40
original
933 Les gens l'ont consulté

Ce guide fournit des instructions étape par étape pour déployer une application de discussion complète sur Kubernetes à l'aide de Kind, Metallb et Ingress. Il est conçu pour aider les développeurs à mettre en place un cluster Kubernetes robuste pour héberger des applications conteneurisées sur un serveur privé virtuel (VPS).

Le déploiement comprend la configuration des outils Kubernetes essentiels, la configuration d'un équilibreur de charge, l'intégration de SSL pour une communication sécurisée et le déploiement des services frontend et backend. De plus, des sections facultatives couvrent la surveillance de l'application avec Prometheus et Grafana pour une observabilité et un suivi des performances améliorés.

Que vous déployiez une application de chat pour la production ou que vous exploriez les fonctionnalités de Kubernetes, ce guide servira de feuille de route complète pour que votre application soit opérationnelle et efficace.

? Premiers pas pour les K8

Le tableau ci-dessous vous aide à naviguer rapidement vers la section d'installation de l'outil particulière.

Tech stack Installation
Docker Install and configure Docker
Kind & Kubectl Install and configure Kind & Kubectl
Metallb Install Metallb
Ingress Install and configure Ingress
Helm Helm Install and configure
SSL Certificate Install and configure Cert Manager
Project Deploy Project Deploy and Others
Monitoring Namespace Create for Groping Prometheus and grafana and Other
Prometheus Install and configure Prometheus
Grafana Install and configure Grafana

? Pré-requis pour mettre en œuvre ce projet :

[!Note]
besoin minimum de vps

  • RAM - 4 Go
  • CPU - 2 cœurs
  • Stockage - 20 Go
  • Un domaine

? Docker Installer et configurer

sudo apt-get update

sudo apt-get install docker.io -y
sudo usermod -aG docker $USER && newgrp docker

Copier après la connexion
Copier après la connexion
Copier après la connexion

? Kind & Kubectl Installer et configurer

Installez KIND et kubectl à l'aide du script fourni. Créez le fichier kind_kubectl_config.yaml :

#!/bin/bash

# For AMD64 / x86_64
[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.26.0/kind-linux-amd64
chmod +x ./kind
sudo cp ./kind /usr/local/bin/kind

VERSION="v1.31.0"
URL="https://dl.k8s.io/release/${VERSION}/bin/linux/amd64/kubectl"
INSTALL_DIR="/usr/local/bin"

curl -LO "$URL"
chmod +x kubectl
sudo mv kubectl $INSTALL_DIR/
kubectl version --client

rm -f kubectl
rm -rf kind

echo "kind & kubectl installation complete."
Copier après la connexion
Copier après la connexion
Copier après la connexion
./kind_kubectl_config.yaml
Copier après la connexion
Copier après la connexion
Copier après la connexion

[!Note]
Si votre Vps ARM64, utilisez ceci [ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.26.0/kind-linux-amd64
Exécutez ce script et créez Kubectl et un environnement aimable.
Type Installer Plus d'informations

?️ Mise en place du cluster KIND

Créez un fichier kind-cluster-config.yaml :

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4

nodes:
- role: control-plane
  image: kindest/node:v1.31.2
- role: worker
  image: kindest/node:v1.31.2
- role: worker
  image: kindest/node:v1.31.2
  extraPortMappings:
  - containerPort: 80
    hostPort: 80
    protocol: TCP
  - containerPort: 443
    hostPort: 443
    protocol: TCP
Copier après la connexion
Copier après la connexion
Copier après la connexion

Créez le cluster à l'aide du fichier de configuration :

kind create cluster --config kind-cluster-config.yaml --name my-kind-cluster
Copier après la connexion
Copier après la connexion
Copier après la connexion

Vérifiez le cluster :

kubectl get nodes
kubectl cluster-info
Copier après la connexion
Copier après la connexion
Copier après la connexion

[!Note]
Ici, j'ajoute extraPortMappings pour exécuter Ingress

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

? Installation de Metallb

[!Note]
J'utilise Metallb pour utiliser LoadBalance. Supposons que vous utilisiez Aws/Azure/DigitalOcean ect dont la fonction Kubernates LoadBalance n'a alors pas besoin de Metallb. Ici, j'achète un VPS auprès d'une entreprise locale. Ils donnent une adresse IP pour accéder au VPS.

kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.9/config/manifests/metallb-frr.yaml

Copier après la connexion
Copier après la connexion
Copier après la connexion

Vérifier la configuration de Metallb

kubectl get all -n metallb-system
Copier après la connexion
Copier après la connexion

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

?️ Créez un fichier metallb_config.yaml :

apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: first-pool
  namespace: metallb-system
spec:
  addresses:
  - 160.191.163.33-160.191.163.33
Copier après la connexion
Copier après la connexion

appliquer le fichier metallb_config.yaml

kubectl apply -f metallb_config.yaml
Copier après la connexion
Copier après la connexion

[!Note]
Mon adresse IP VPS est 160.191.163.33. Modifiez cette adresse IP selon vos besoins

♻️ Ingress Installer et configurer

kubectl apply -f https://kind.sigs.k8s.io/examples/ingress/deploy-ingress-nginx.yaml
Copier après la connexion

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

[!Note]
Ici, service/ingress-nginx-controller show EXTERNAL-IP est votre IP VPS. Mon IP VPS est 160.191.163.33. Cela garantit que notre Metallb LoadBalance fonctionne.

? Helm Installer et configurer

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh

./get_helm.sh
Copier après la connexion

Vérifier la version du casque

helm version
Copier après la connexion

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

?? Installer et configurer Cert Manager || Certificat SSL

sudo apt-get update

sudo apt-get install docker.io -y
sudo usermod -aG docker $USER && newgrp docker

Copier après la connexion
Copier après la connexion
Copier après la connexion

Installation des CRD du gestionnaire de certificats

#!/bin/bash

# For AMD64 / x86_64
[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.26.0/kind-linux-amd64
chmod +x ./kind
sudo cp ./kind /usr/local/bin/kind

VERSION="v1.31.0"
URL="https://dl.k8s.io/release/${VERSION}/bin/linux/amd64/kubectl"
INSTALL_DIR="/usr/local/bin"

curl -LO "$URL"
chmod +x kubectl
sudo mv kubectl $INSTALL_DIR/
kubectl version --client

rm -f kubectl
rm -rf kind

echo "kind & kubectl installation complete."
Copier après la connexion
Copier après la connexion
Copier après la connexion

https://artifacthub.io/packages/helm/cert-manager/cert-manager

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

? Déploiement de projet et autres

Première étape

Clonez le projet ci-dessous dans votre VPS

./kind_kubectl_config.yaml
Copier après la connexion
Copier après la connexion
Copier après la connexion

Deuxième étape

Allez dans le dossier k8s et vous pouvez voir ce fichier

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

Troisième étape

Créer un espace Nampe

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4

nodes:
- role: control-plane
  image: kindest/node:v1.31.2
- role: worker
  image: kindest/node:v1.31.2
- role: worker
  image: kindest/node:v1.31.2
  extraPortMappings:
  - containerPort: 80
    hostPort: 80
    protocol: TCP
  - containerPort: 443
    hostPort: 443
    protocol: TCP
Copier après la connexion
Copier après la connexion
Copier après la connexion

Quatrième étape

Appliquer tous les fichiers secrets

kind create cluster --config kind-cluster-config.yaml --name my-kind-cluster
Copier après la connexion
Copier après la connexion
Copier après la connexion

Cinquième étape

Déclarer les volumes Mongodb et autres

kubectl get nodes
kubectl cluster-info
Copier après la connexion
Copier après la connexion
Copier après la connexion

Sixième étape

Appliquer le reste des autres fichiers

kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.9/config/manifests/metallb-frr.yaml

Copier après la connexion
Copier après la connexion
Copier après la connexion

Septième étape

Configurer le domaine du certificat SSL. Ouvrez ssl_certificate.yaml et modifiez le nom de domaine souhaité

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

Appliquer le fichier ssl_certificate.yaml

kubectl get all -n metallb-system
Copier après la connexion
Copier après la connexion

Étape huit

Configurer le fichier Ingress. Ouvrez ingress.yaml et ajoutez le nom de domaine souhaité.

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

Appliquer le fichier ingress.yaml

apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: first-pool
  namespace: metallb-system
spec:
  addresses:
  - 160.191.163.33-160.191.163.33
Copier après la connexion
Copier après la connexion

Vérifier le certificat

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

Vérifier l'espace de noms

kubectl apply -f metallb_config.yaml
Copier après la connexion
Copier après la connexion

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

? Vue du navigateur

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

? Conclusion

Félicitations ! Vous avez déployé avec succès l'Application de chat Full-Stack . Vous pouvez maintenant accéder à votre application de chat.

? Surveillance et autres [Facultatif]

Nous proposons désormais des fonctionnalités supplémentaires telles que la surveillance. Il vous aide à en savoir plus sur les serveurs et les applications.

Créer un espace de noms

sudo apt-get update

sudo apt-get install docker.io -y
sudo usermod -aG docker $USER && newgrp docker

Copier après la connexion
Copier après la connexion
Copier après la connexion

Vérifier l'espace de noms

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

[!Note]
Cet espace de noms aide à contrôler toutes les applications de surveillance comme Prometheus, Grafana, Loki ect

Installation et configuration de Prometheus et Grafana

Installer

#!/bin/bash

# For AMD64 / x86_64
[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.26.0/kind-linux-amd64
chmod +x ./kind
sudo cp ./kind /usr/local/bin/kind

VERSION="v1.31.0"
URL="https://dl.k8s.io/release/${VERSION}/bin/linux/amd64/kubectl"
INSTALL_DIR="/usr/local/bin"

curl -LO "$URL"
chmod +x kubectl
sudo mv kubectl $INSTALL_DIR/
kubectl version --client

rm -f kubectl
rm -rf kind

echo "kind & kubectl installation complete."
Copier après la connexion
Copier après la connexion
Copier après la connexion

Exécutez Prometheus via le port

./kind_kubectl_config.yaml
Copier après la connexion
Copier après la connexion
Copier après la connexion

Vous pouvez désormais accéder à Prometheus en utilisant ce port. J'aime

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4

nodes:
- role: control-plane
  image: kindest/node:v1.31.2
- role: worker
  image: kindest/node:v1.31.2
- role: worker
  image: kindest/node:v1.31.2
  extraPortMappings:
  - containerPort: 80
    hostPort: 80
    protocol: TCP
  - containerPort: 443
    hostPort: 443
    protocol: TCP
Copier après la connexion
Copier après la connexion
Copier après la connexion

[!Note]
Changer l'adresse IP

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

Installer et configurer Grafana
Exécutez Grafana via le port

kind create cluster --config kind-cluster-config.yaml --name my-kind-cluster
Copier après la connexion
Copier après la connexion
Copier après la connexion

Obtenez le nom d'utilisateur et le mot de passe Grafana

Nom d'utilisateur

kubectl get nodes
kubectl cluster-info
Copier après la connexion
Copier après la connexion
Copier après la connexion

mot de passe

kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.9/config/manifests/metallb-frr.yaml

Copier après la connexion
Copier après la connexion
Copier après la connexion

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

[!Note]
Vous pouvez changer le mot de passe

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

Tableau de bord Grafana.

Ici, vous pouvez choisir différents types de tableaux de bord d'algorithmes

Chat App Deploy on Kubernetes Using Kind, Metallb and Ingress

C'est tout. Bon apprentissage :) .
[si c'est utile, donner une étoile au référentiel ?]

Lien Github du projet
https://github.com/kamruzzamanripon/k8-node-react-mongodb-app

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!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal