Détails
- 7 Sections
- 26 Lessons
- 3 Hours
- Introduction:4
- Installation et Fonctionnement d'Argo CD5
- Sécuriser les Mots de Passe des Applications dans Vos Dépôts Git4
- Déployer une Application de Blog avec Argo CD2
- Interface Web ArgoCD1
- Gestion des Accès4
- Argo Rollouts6
Aperçu du Manifest
Ce manifeste Kubernetes décrit la configuration de déploiement et de service pour une application de blog multi-composants. Le manifeste est divisé en plusieurs sections, chacune responsable d’un aspect différent de l’application, y compris la création de namespace, les StatefulSets, les Deployments et les Services.
Définition du Namespace
La première section du manifeste définit un namespace nommé blog-app. Les namespaces dans Kubernetes permettent de segmenter et d’organiser les ressources au sein du cluster.
apiVersion: v1
kind: Namespace
metadata:
name: blog-app
StatefulSet et Service pour MongoDB
Le manifeste inclut un StatefulSet pour MongoDB, garantissant que la base de données conserve une identité cohérente et un stockage stable.
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mongodb
namespace: blog-app
spec:
serviceName: mongodb
replicas: 1
selector:
matchLabels:
app: mongodb
template:
metadata:
labels:
app: mongodb
spec:
containers:
- name: mongodb
image: mongo:6-jammy
imagePullPolicy: Always
ports:
- containerPort: 27017
envFrom:
- secretRef:
name: mongodb-creds
volumeMounts:
- name: mongodb-data
mountPath: /data/db
volumes:
- name: mongodb-data
persistentVolumeClaim:
claimName: mongodb-data
volumeClaimTemplates:
- metadata:
name: mongodb-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
Cela est accompagné d’une définition de Service pour exposer MongoDB en interne au sein du cluster.
apiVersion: v1
kind: Service
metadata:
name: mongodb
namespace: blog-app
spec:
clusterIP: None
selector:
app: mongodb
ports:
- protocol: TCP
port: 27017
targetPort: 27017
Déploiement et Service pour les Posts
Le manifeste spécifie un Deployment et un Service correspondant pour le composant posts de l’application de blog. Ce composant interagit avec MongoDB pour le stockage des données.
apiVersion: apps/v1
kind: Deployment
metadata:
name: posts
namespace: blog-app
spec:
replicas: 1
selector:
matchLabels:
app: posts
template:
metadata:
labels:
app: posts
spec:
containers:
- name: posts
image: bharamicrosystems/mdo-posts:cf19661
imagePullPolicy: Always
ports:
- containerPort: 5000
env:
- name: MONGODB_USERNAME
valueFrom:
secretKeyRef:
name: mongodb-creds
key: MONGO_INITDB_ROOT_USERNAME
- name: MONGODB_PASSWORD
valueFrom:
secretKeyRef:
name: mongodb-creds
key: MONGO_INITDB_ROOT_PASSWORD
apiVersion: v1
kind: Service
metadata:
name: posts
namespace: blog-app
spec:
selector:
app: posts
ports:
- protocol: TCP
port: 5000
targetPort: 5000
Déploiement et Service pour les Reviews
Tout comme le composant posts, le composant reviews est également déployé avec son propre Deployment et Service.
apiVersion: apps/v1
kind: Deployment
metadata:
name: reviews
namespace: blog-app
spec:
replicas: 1
selector:
matchLabels:
app: reviews
template:
metadata:
labels:
app: reviews
spec:
containers:
- name: reviews
image: bharamicrosystems/mdo-reviews:b67b213
imagePullPolicy: Always
ports:
- containerPort: 5000
env:
- name: MONGODB_USERNAME
valueFrom:
secretKeyRef:
name: mongodb-creds
key: MONGO_INITDB_ROOT_USERNAME
- name: MONGODB_PASSWORD
valueFrom:
secretKeyRef:
name: mongodb-creds
key: MONGO_INITDB_ROOT_PASSWORD
apiVersion: v1
kind: Service
metadata:
name: ratings
namespace: blog-app
spec:
selector:
app: ratings
ports:
- protocol: TCP
port: 5000
targetPort: 5000
Déploiement et Service pour les Utilisateurs
Le composant users, comme les autres, est défini avec un Deployment et un Service.
apiVersion: apps/v1
kind: Deployment
metadata:
name: users
namespace: blog-app
spec:
replicas: 1
selector:
matchLabels:
app: users
template:
metadata:
labels:
app: users
spec:
containers:
- name: users
image: bharamicrosystems/mdo-users:baaed8f
imagePullPolicy: Always
ports:
- containerPort: 5000
env:
- name: MONGODB_USERNAME
valueFrom:
secretKeyRef:
name: mongodb-creds
key: MONGO_INITDB_ROOT_USERNAME
- name: MONGODB_PASSWORD
valueFrom:
secretKeyRef:
name: mongodb-creds
key: MONGO_INITDB_ROOT_PASSWORD
apiVersion: v1
kind: Service
metadata:
name: users
namespace: blog-app
spec:
selector:
app: users
ports:
- protocol: TCP
port: 5000
targetPort: 5000
Déploiement et Service pour le Frontend
Enfin, le composant frontend est déployé et exposé via un service NodePort
apiVersion: apps/v1
kind: Deployment
metadata:
name: frontend
namespace: blog-app
spec:
replicas: 1
selector:
matchLabels:
app: frontend
template:
metadata:
labels:
app: frontend
spec:
containers:
- name: frontend
image: bharamicrosystems/mdo-frontend:59b77fb
imagePullPolicy: Always
ports:
- containerPort: 5000
---
apiVersion: v1
kind: Service
metadata:
name: frontend
namespace: blog-app
spec:
selector:
app: frontend
type: NodePort
ports:
- protocol: TCP
port: 80
targetPort: 5000
nodePort: 30080
apiVersion: v1
kind: Service
metadata:
name: frontend
namespace: blog-app
spec:
selector:
app: frontend
type: LoadBalancer
ports:
- protocol: TCP
port: 80
targetPort: 5000
Ce fichier manifeste est un exemple complet de configuration d’une application multi-composants dans Kubernetes. Il inclut :
- Namespace : Une partition logique du cluster.
- StatefulSet : Pour MongoDB, afin de gérer des applications avec état.
- Deployments : Pour différents microservices (posts, reviews, ratings, users, frontend).
- Services : Pour exposer les applications à l’intérieur et à l’extérieur du cluster.
En organisant les composants de cette manière, chaque microservice est géré et mis à l’échelle de manière indépendante, tout en assurant une séparation claire des responsabilités et une maintenance simplifiée.