Ce tutoriel explique comment personnaliser la journalisation Fluentd pour un cluster Google Kubernetes Engine. Vous apprendrez à héberger votre propre daemonset Fluentd configurable pour envoyer des journaux à Cloud Logging,au lieu de sélectionner l'option de journalisation sur le cloud lors de la création du cluster Kubernetes Engine, cette option ne permettant pas de configurer le daemon Fluentd.
Objectifs
- Déployez votre propre daemonset Fluentd sur un cluster Google Kubernetes Engine, configuré pour enregistrer les données dans Cloud Logging. Nous partons du principe que vous connaissez déjà Kubernetes.
- Personnalisez la journalisation GKE pour supprimer les données sensibles des journaux Cloud Logging.
- Personnalisez la journalisation GKE pour ajouter les événements au niveau du nœud aux journaux Cloud Logging.
Coûts
Ce tutoriel utilise des composants facturables de Google Cloud, dont :
- Un cluster Google Kubernetes Engine à trois nœuds.
Le simulateur de coût estime le coût de cet environnement à environ 1,14 $ pour 8 heures.
Avant de commencer
- Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud.
-
Activer les API Google Kubernetes Engine, Compute Engine.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud.
-
Activer les API Google Kubernetes Engine, Compute Engine.
Initialiser des variables communes
Vous devez définir plusieurs variables qui contrôlent l'emplacement où sont déployés les éléments de l'infrastructure.
À l'aide d'un éditeur de texte, modifiez le script suivant en remplaçant votre ID du projet par
[YOUR_PROJECT_ID]
. Le script définit la région surus-east-1
. Si vous apportez des modifications au script, assurez-vous que les valeurs de zone font référence à la région spécifiée.export region=us-east1 export zone=${region}-b export project_id=[YOUR_PROJECT_ID]
Accédez à Cloud Shell.
Copiez le script dans votre fenêtre Cloud Shell et exécutez-le.
Exécutez les commandes suivantes pour définir la zone et l'ID du projet par défaut afin que vous n'ayez pas à spécifier ces valeurs dans chacune des commandes suivantes :
gcloud config set compute/zone ${zone} gcloud config set project ${project_id}
Créer le cluster GKE
Dans Cloud Shell, clonez l'exemple de dépôt :
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-customize-fluentd
L'exemple de dépôt comprend les fichiers manifestes Kubernetes pour le daemonset Fluentd et un programme de journalisation de tests que vous déploierez plus tard dans ce tutoriel.
Changez votre répertoire de travail dans le dépôt cloné :
cd kubernetes-engine-customize-fluentd
Créez le cluster GKE avec la journalisation et la surveillance du système seulement :
gcloud container clusters create gke-with-custom-fluentd \ --zone us-east1-b \ --logging=SYSTEM \ --tags=gke-cluster-with-customized-fluentd \ --scopes=logging-write,storage-rw
Déployer l'application de l'enregistreur de test
Par défaut, l'exemple d'application que vous déployez émet en continu des instructions de journalisation aléatoires. Le conteneur Docker est créé à partir du code source du sous-répertoire test-logger
.
Dans Cloud Shell, créez l'image de conteneur
test-logger
:docker build -t test-logger test-logger
Ajoutez un tag au conteneur avant de le transférer vers le registre :
docker tag test-logger gcr.io/${project_id}/test-logger
Envoyez l'image du conteneur :
docker push gcr.io/${project_id}/test-logger
Mettez à jour le fichier de déploiement :
envsubst < kubernetes/test-logger.yaml > kubernetes/test-logger-deploy.yaml
Déployer l'application
test-logger
sur le cluster GKE :kubectl apply -f kubernetes/test-logger-deploy.yaml
Afficher l'état des pods
test-logger
:kubectl get pods
Répétez cette commande jusqu'à ce que la sortie ressemble à ce qui suit, avec les trois pods
test-logger
en cours d'exécution :
Déployer l'élément daemonset Fluentd sur votre cluster
Vous allez ensuite configurer et déployer le daemonset Fluentd.
Dans Cloud Shell, déployez la configuration Fluentd:
kubectl apply -f kubernetes/fluentd-configmap.yaml
Déployez le daemonset Fluentd :
kubectl apply -f kubernetes/fluentd-daemonset.yaml
Vérifiez que les pods Fluentd ont démarré :
kubectl get pods --namespace=kube-system
S'ils s'exécutent, la sortie est la suivante :
Vérifiez que les journaux s'affichent dans Logging. Dans la console, sur la gauche, sélectionnez Logging > Logs Explorer (Logging > Explorateur de journaux), puis sélectionnez Kubernetes Container (Conteneur Kubernetes) en tant que Type de ressource dans la liste Ressource.
Cliquez sur Exécuter la requête (Run Query).
Dans le panneau Logs field explorer (Explorateur de champs de journaux), sélectionnez test-logger pour CONTAINER_NAME :
Filtrer les informations du fichier journal
Dans l'étape suivante, vous allez indiquer à Fluentd de filtrer certaines données afin qu'elles ne soient pas journalisées. Pour ce tutoriel, vous devez filtrer les numéros de sécurité sociale, les numéros de carte de crédit et les adresses e-mail. Pour effectuer cette mise à jour, vous modifiez l'élément daemonset afin d'utiliser un autre ConfigMap contenant ces filtres. Vous utilisez la fonctionnalité de mises à jour progressives de Kubernetes et conservez l'ancienne version de ConfigMap.
Ouvrez le fichier
kubernetes/fluentd-configmap.yaml
dans un éditeur.Effacez les commentaires situés entre les lignes (non incluses)
### sample log scrubbing filters
et### end sample log scrubbing filters
:Modifiez le nom de ConfigMap de
fluentd-gcp-config
versfluentd-gcp-config-filtered
en modifiant le champmetadata.name
:Enregistrez et fermez le fichier.
Mettre à jour le daemonset Fluentd pour utiliser la nouvelle configuration
Vous allez maintenant modifier kubernetes/fluentd-daemonset.yaml
pour installer le composant ConfigMap fluentd-gcp-config-filtered
à la place de fluentd-gcp-config
.
Ouvrez le fichier
kubernetes/fluentd-daemonset.yaml
dans un éditeur.Modifiez le nom de ConfigMap de
fluentd-gcp-config
versfluentd-gcp-config-filtered
en modifiant le champconfigMap.name
:Déployez la nouvelle version de ConfigMap sur votre cluster :
kubectl apply -f kubernetes/fluentd-configmap.yaml
Déployez la nouvelle version du daemonset :
kubectl apply -f kubernetes/fluentd-daemonset.yaml
Déployez la mise à jour et attendez qu'elle soit terminée :
kubectl rollout status ds/fluentd-gcp --namespace=kube-system
Une fois le déploiement terminé, actualisez les journaux Logging et assurez-vous que le numéro de sécurité sociale, le numéro de carte de crédit et les données d'adresse e-mail ont été filtrés.
Configurer la journalisation des événements au niveau du nœud
Si vous souhaitez que les événements qui se produisent sur vos nœuds GKE s'affichent également dans Logging, ajoutez les lignes suivantes à votre ConfigMap et suivez les instructions décrites dans la dernière section :
<source> @type systemd filters [{ "SYSLOG_IDENTIFIER": "sshd" }] pos_file /var/log/journal/gcp-journald-ssh.pos read_from_head true tag sshd </source> <source> @type systemd filters [{ "SYSLOG_IDENTIFIER": "sudo" }] pos_file /var/log/journal/gcp-journald-sudo.pos read_from_head true tag sudo </source>
Nettoyer
Une fois que vous avez terminé le tutoriel, vous pouvez nettoyer les ressources que vous avez créées sur Google Cloud afin qu'elles ne vous soient plus facturées.
Supprimer le projet
Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.
Pour supprimer le projet :
- Dans la console Google Cloud, accédez à la page Gérer les ressources.
- Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
- Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.
Supprimer le cluster GKE
Si vous ne souhaitez pas supprimer l'ensemble du projet, exécutez la commande suivante pour supprimer le cluster GKE :
gcloud container clusters delete gke-with-custom-fluentd --zone us-east1-b
Étapes suivantes
- Consultez la documentation Fluentd plus en détail.
- Consultez la documentation de Google Kubernetes Engine plus en détail.
- Découvrez des architectures de référence, des schémas et des bonnes pratiques concernant Google Cloud. Consultez notre Centre d'architecture cloud.