Déployer des applications dans Kubernetes peut être complexe, surtout pour les débutants. Voici Argo CD, un outil déclaratif propulsé par GitOps conçu pour automatiser les déploiements d’applications Kubernetes. Dans cet atelier, vous apprendrez à configurer et à utiliser Argo CD pour déployer des applications sans heurts, avec une approche étape par étape conçue pour les débutants complets.
Ce que vous apprendrez
- Installer et configurer Argo CD.
- Déployer des applications en utilisant les principes GitOps.
- Surveiller les déploiements et résoudre les problèmes.
- Revenir en arrière et gérer les versions des applications.
- Sécuriser Argo CD pour une utilisation en production.
Pourquoi Argo CD ?
Argo CD simplifie la gestion des applications dans Kubernetes en synchronisant en permanence votre cluster avec des manifests définis dans des référentiels Git. Les avantages incluent :
- Gestion déclarative : Définir l’état désiré du cluster dans Git.
- Livraison continue : Automatiser les déploiements avec une synchronisation en temps réel.
- Contrôle de version : Revenir facilement à des versions précédentes.
Conditions préalables
Avant de commencer, assurez-vous d’avoir :
- Un cluster Kubernetes (utilisez Minikube, Kind, ou un service géré comme GKE, EKS, AKS).
kubectl
installé et configuré pour se connecter à votre cluster.- Un compte GitHub ou GitLab pour héberger vos manifestes Kubernetes.
- Une connaissance de base de la syntaxe YAML (abordée dans cet atelier si vous êtes novice).
Guide étape par étape
1. Configuration d’un cluster Kubernetes
Étape 1 : Installer Minikube
Si vous n’avez pas de cluster, utilisez Minikube:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
chmod +x minikube-linux-amd64
sudo mv minikube-linux-amd64 /usr/local/bin/minikube
Étape 2 : Démarrer Minikube
Exécutez la commande minikube start
après avoir installé Minikube sur votre système :
minikube start
Étape 3 : Vérifier le cluster
Confirmez que le cluster fonctionne :
kubectl cluster-info
kubectl get nodes
2. Installation d’Argo CD
Étape 1 : Créer un espace de noms
Argo CD s’exécute dans son propre espace de noms pour l’isolation :
kubectl create namespace argocd
Étape 2 : Installer Argo CD
Appliquez les manifestes officiels pour installer Argo CD :
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
Étape 3 : Vérifier l’installation
Vérifiez les pods Argo CD :
kubectl get pods -n argocd
3. Accéder à l’interface utilisateur Argo CD
Étape 1 : Exposer Argo CD
Exposez le argocd-server
sur votre machine locale :
kubectl port-forward svc/argocd-server -n argocd 8080:443
Étape 2: Récupérer les identifiants d’administration
Récupérer le mot de passe d’administration par défaut:
kubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath="{.data.password}" | base64 -d
Étape 3: Connexion à l’interface utilisateur
- Ouvrez https://localhost:8080 dans votre navigateur.
- Connectez-vous avec :
- Nom d’utilisateur : admin
- Mot de passe : Récupéré à l’étape précédente.
4. Connecter Argo CD à votre référentiel Git
Étape 1: Préparer un référentiel Git
- Créez un référentiel Git (par exemple, sur GitHub).
- Ajoutez vos manifestes Kubernetes au référentiel. Utilisez ce
deployment.yaml
d’exemple :
apiVersion apps/v1
kind Deployment
metadata
name nginx-deployment
labels
app nginx
spec
replicas2
selector
matchLabels
app nginx
template
metadata
labels
app nginx
spec
containers
name nginx
image nginx1.19
ports
containerPort80
Étape 2: Ajouter le référentiel à Argo CD
Depuis l’interface utilisateur :
- Accédez à Paramètres > Référentiels.
- Ajoutez l’URL de votre référentiel Git et les détails d’authentification (SSH ou HTTPS).
Ou utilisez l’interface de ligne de commande :
argocd repo add <REPO_URL> --username <USERNAME> --password <PASSWORD>
5. Déployer votre première application
Étape 1: Créer une application
Dans l’interface utilisateur Argo CD :
- Cliquez sur Nouvelle app.
-
- Nom de l’application: nginx-app
- Projet: par défaut
- URL du dépôt: Votre URL de dépôt Git
- Chemin: Chemin vers
deployment.yaml
- URL du cluster:
https://kubernetes.default.svc
- Espace de noms: par défaut
Étape 2 : Synchroniser l’application
Après avoir créé l’application:
- Cliquez sur Synchroniser dans l’interface utilisateur d’Argo CD.
- Observez le déploiement de l’application sur votre cluster Kubernetes.
6. Automatiser les déploiements
Étape 1 : Activer la synchronisation automatique
Activer la synchronisation continue:
argocd app set nginx-app --sync-policy automated
Étape 2 : Tester les modifications
- Modifiez le
deployment.yaml
dans Git. - Envoyez les modifications au dépôt.
- Argo CD détectera les modifications et les synchronisera automatiquement sur le cluster.
7. Surveillance et dépannage
Étape 1 : Surveiller la santé de l’application
Dans l’interface utilisateur, vérifiez :
- Santé : Indique si l’application fonctionne comme prévu.
- État de synchronisation : Assure que l’état du cluster correspond à Git.
Étape 2 : Afficher les journaux
En cas de problème :
kubectl logs -n argocd <POD_NAME>
Étape 3 : Annuler les modifications
Revenir à un état antérieur :
argocd app rollback nginx-app <REVISION>
8. Sécuriser Argo CD
Étape 1 : Changer le mot de passe administrateur par défaut
Changer le mot de passe administrateur par défaut en utilisant la commande argocd account update-password
:
argocd account update-password
Étape 2 : Intégrer le SSO
Pour les environnements de production, intégrez des solutions de connexion unique (SSO) telles que GitHub ou LDAP.
Meilleures pratiques GitOps
- Stratégies de branches : Utilisez des branches distinctes pour le développement, la mise en scène et la production.
- Examens de code : Appliquez des examens par les pairs pour les modifications de manifestes.
- Journaux d’audit : Passez régulièrement en revue les journaux d’Argo CD pour la conformité et le débogage.
Conclusion
Argo CD offre une manière conviviale mais puissante de gérer les déploiements Kubernetes en utilisant les principes GitOps. Cet atelier vous équipe des compétences nécessaires pour déployer, surveiller et gérer efficacement des applications. En respectant ces pratiques, vous êtes bien parti pour maîtriser la livraison continue de Kubernetes.
Source:
https://dzone.com/articles/deploying-applications-in-kubernetes-with-argo-cd