Cette rubrique décrit comment déployer l'extension TKG v1.3.1 pour Fluent Bit. Fluent Bit est un processeur et un redirecteur de journaux rapides et légers qui vous permet de collecter des données et des journaux d'applications de différentes sources, de les unifier et de les envoyer vers plusieurs destinations. Déployez l'extension TKG pour Fluent Bit afin de collecter et de transférer les journaux du cluster Tanzu Kubernetes vers la destination de votre choix.

Configuration requise pour l'extension

Respectez les exigences suivantes avant de déployer l'extension TKG v1.3.1 pour Fluent Bit.

Déployer l'extension DSL

L'extension TKG pour Fluent Bit installe un conteneur Fluent Bit sur le cluster. Pour plus d'informations sur ce conteneur, consultez https://fluentbit.io/.
Conteneur Type de ressource Réplicas Description
Fluent Bit DaemonSet 6 Collecteur de journaux, agrégateur, redirecteur
L'extension est configurée pour extraire les conteneurs du registre public VMware à l'adresse https://projects.registry.vmware.com/. Si vous utilisez un registre privé, modifiez l'URL du point de terminaison dans les valeurs de données et les fichiers de configuration de l'extension pour qu'elle corresponde. Pour obtenir une description des champs et des options, reportez-vous à la section Configurer l'extension Fluent Bit.
  1. Vérifiez que vous avez rempli chacune des conditions préalables de l’extension. Reportez-vous à la section Configuration requise pour l'extension.
  2. Remplacez le répertoire par celui de l'extension Fluent Bit.
    cd /tkg-extensions-v1.3.1+vmware.1/extensions/logging/fluent-bit
  3. Créez l'espace de noms tanzu-system-logging, ainsi que le compte de service et les objets de rôle Fluent Bit.
    kubectl apply -f namespace-role.yaml
  4. Décidez de la destination du journal à utiliser pour Fluent Bit. Les sorties prises en charge incluent Elasticsearch, HTTP, Kafka, Splunk et Syslog. Consultez https://docs.fluentbit.io/manual/pipeline/outputs pour plus d'informations.
  5. Créez un fichier de valeurs de données Fluent Bit pour la destination de journal sélectionnée en copiant l'un des fichiers <LOG_BACKEND>/fluent-bit-data-values.example.yaml.
    Il existe un exemple de fichier de valeurs de données pour chaque destination de journal prise en charge. L'exemple fournit la configuration minimale pour cette destination de journal.
    cp elasticsearch/fluent-bit-data-values.yaml.example elasticsearch/fluent-bit-data-values.yaml
    cp http/fluent-bit-data-values.yaml.example http/fluent-bit-data-values.yaml
    cp kafka/fluent-bit-data-values.yaml.example kafka/fluent-bit-data-values.yaml
    cp splunk/fluent-bit-data-values.yaml.example splunk/fluent-bit-data-values.yaml
    cp syslog/fluent-bit-data-values.yaml.example syslog/fluent-bit-data-values.yaml
  6. Configurez l'extension Fluent Bit en renseignant le fichier <LOG_BACKEND>/fluent-bit-data-values.yaml. Pour obtenir une description des champs et des options, reportez-vous à la section Configurer l'extension Fluent Bit.
    Par exemple, la configuration Syslog Fluent Bit requiert les valeurs suivantes :
    logging:
      image:
        repository: projects.registry.vmware.com/tkg # Public registry
    tkg:
      instance_name: "<TKG_INSTANCE_NAME>" #mandatory but arbitrary; appears in logs
      cluster_name: "<CLUSTER_NAME>" #name of the target tkgs cluster
    fluent_bit:
      output_plugin: "syslog"
      syslog:
        host: "<SYSLOG_HOST>"
        port: "<SYSLOG_PORT>"
        mode: "<SYSLOG_MODE>"
        format: "<SYSLOG_FORMAT>"
    Un fichier de valeurs de données rempli pour le journal Syslog de Fluent Bit peut avoir la configuration suivante :
    logging:
      image:
        repository: projects.registry.vmware.com/tkg
    tkg:
      instance_name: "tkgs-cluster-1"
      cluster_name: "tkgs-cluster-1"
    fluent_bit:
      output_plugin: "syslog"
      syslog:
        host: "10.192.175.59"
        port: "514"
        mode: "tcp"
        format: "rfc5424"
  7. Créez un secret en bits fluides avec des valeurs de données pour votre destination de journal.
    kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=elasticsearch/fluent-bit-data-values.yaml -n tanzu-system-logging
    kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=kafka/fluent-bit-data-values.yaml -n tanzu-system-logging
    kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=splunk/fluent-bit-data-values.yaml -n tanzu-system-logging
    kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=http/fluent-bit-data-values.yaml -n tanzu-system-logging
    kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=syslog/fluent-bit-data-values.yaml -n tanzu-system-logging
    secret/fluent-bit-data-values est créé dans l'espace de noms tanzu-system-logging. Effectuez la vérification à l'aide de la commande suivante :
    kubectl get secrets -n tanzu-system-logging
  8. Déployez l'application Fluent Bit.
    kubectl apply -f fluent-bit-extension.yaml

    En cas de réussite, vous devez voir app.kappctrl.k14s.io/fluent-bit created.

  9. Vérifiez l'état de l'application Fluent Bit.
    kubectl get app fluent-bit -n tanzu-system-logging
    En cas de réussite, l'état doit passer de Reconciling à Reconcile succeeded. Si l'état est Reconcile failed, reportez-vous à la section Dépannage du Déploiement Fluent Bit.
  10. Affichez l’état détaillé de l’application.
    kubectl get app fluent-bit -n tanzu-system-logging -o yaml
  11. Effectuez la vérification du DeamonSet Fluent Bit.
    kubectl get daemonsets -n tanzu-system-logging
    En cas de réussite, vous devez voir les éléments suivants :
    NAME         DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    fluent-bit   6         6         6       6            6           <none>          105s

Dépannage du Déploiement Fluent Bit

En cas d'échec du déploiement ou du rapprochement, exécutez kubectl get pods -A pour afficher l'état de l'espace. Les espaces fluent-bit doivent être à l'état Running. Si l'état de l'espace est ImagePullBackOff ou ImageCrashLoopBackOff, l'image de conteneur n'a pas pu être extraite. Vérifiez l'URL du registre dans les valeurs de données et les fichiers YAML de l'extension, et assurez-vous qu'elles sont correctes.

Vérifiez les journaux du conteneur, où name-XXXX est le nom d'espace unique que vous pouvez voir lorsque vous exécutez kubectl get pods -A :
kubectl logs pod/fluent-bit-XXXXX -c fluent-bit -n tanzu-system-logging

Mettre à jour l'extension Fluent Bit

Mettez à jour l'extension Fluent Bit qui est déployée sur un cluster Tanzu Kubernetes.

  1. Obtenez des valeurs de données Fluent Bit à partir du secret.
    kubectl get secret fluent-bit-data-values -n tanzu-system-logging -o 'go-template={{ index .data "values.yaml" }}' | base64 -d > fluent-bit-data-values.yaml
    
  2. Mettez à jour les valeurs de données Fluent Bit dans fluent-bit-data-values.yaml. Reportez-vous à la section Configurer l'extension Fluent Bit.
  3. Mettez à jour le secret des valeurs de données Fluent Bit.
    kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=fluent-bit-data-values.yaml -n tanzu-system-logging -o yaml --dry-run | kubectl replace -f-
    
    L'extension Fluent Bit sera de nouveau rapprochée des valeurs de données ci-dessus.
    Note : Par défaut, kapp-controller synchronise les applications toutes les 5 minutes. La mise à jour doit prendre effet en 5 minutes ou moins. Si vous souhaitez que la mise à jour prenne effet immédiatement, modifiez syncPeriod dans fluent-bit-extension.yaml à une valeur inférieure et appliquez l'extension Fluent Bit à l'aide de kubectl apply -f fluent-bit-extension.yaml.
  4. Vérifiez l'état de l'extension.
    kubectl get app fluent-bit -n tanzu-system-logging
  5. Affichez l'état détaillé et résolvez les problèmes.
    kubectl get app fluent-bit -n tanzu-system-logging -o yaml
  6. Dépannez si nécessaire. Reportez-vous à la section Dépannage du Déploiement Fluent Bit.

Supprimer l'extension Fluent Bit

Supprimez l'extension Fluent Bit sur un cluster Tanzu Kubernetes.
Note : Suivez la procédure dans l'ordre. Ne supprimez pas l'espace de noms, le compte de service et les objets de rôle avant la suppression complète de l'application Fluent Bit. Cela pourrait entraîner des erreurs système.
  1. Remplacez le répertoire par celui de l'extension Fluent Bit.
    cd extensions/logging/fluent-bit/
  2. Supprimez l'application Fluent Bit.
    kubectl delete app fluent-bit -n tanzu-system-logging

    Résultat attendu : app.kappctrl.k14s.io "fluent-bit" deleted

  3. Vérifiez que l'application Fluent Bit est supprimée.
    kubectl get app fluent-bit -n tanzu-system-logging

    Résultat attendu : apps.kappctrl.k14s.io "fluent-bit" not found

  4. Supprimez l'espace de noms tanzu-system-logging, ainsi que le compte de service et les objets de rôle de l'extension Fluent Bit.
    kubectl delete -f namespace-role.yaml

Mettre à niveau l'extension Fluent Bit

Si vous avez déployé une extension Fluent Bit existante, vous pouvez la mettre à niveau vers la dernière version.
  1. Exportez le configmap Fluent Bit.
    kubectl get configmap fluent-bit -n tanzu-system-logging -o 'go-template={{ index .data "fluent-bit.yaml" }}' > fluent-bit-configmap.yaml
    
  2. Supprimez le déploiement Fluent Bit existant. Reportez-vous à la section Supprimer l'extension Fluent Bit.
  3. Déployez la dernière extension Fluent Bit. Reportez-vous à la section Déployer l'extension DSL.

Configurer l'extension Fluent Bit

Les valeurs de configuration sont définies dans extensions/logging/fluent-bit/<LOG_BACKEND>/fluent-bit-data-values.yaml.
Tableau 1. Configurations de l'extension Fluent Bit
Paramètre Description Type Par défaut
logging.namespace Espace de noms où Fluent Bit sera déployé string tanzu-system-logging
logging.service_account_name Nom du compte de service Fluent Bit string fluent-bit
logging.cluster_role_name Nom du rôle de cluster qui accorde les autorisations Obtenir, Visionner et Lister à Fluent Bit string fluent-bit-read
logging.image.name Nom de l'image Fluent Bit string fluent-bit
logging.image.tag Balise d'image Fluent Bit. Il peut être nécessaire de mettre à jour cette valeur si vous mettez à niveau la version. string v1.6.9_vmware.1
logging.image.repository Emplacement du référentiel avec l'image Fluent Bit. La valeur par défaut est le registre VMware public. Modifiez cette valeur si vous utilisez un référentiel privé (par exemple, un environnement air-gapped). string projects.registry.vmware.com/tkg
logging.image.pullPolicy Stratégie d'extraction d'image Fluent Bit string IfNotPresent
logging.update_strategy Mettre à jour la stratégie à utiliser lors de la mise à jour du DaemonSet string RollingUpdate
tkg.cluster_name Nom du cluster Tanzu Kubernetes string Null (paramètre obligatoire)
tkg.instance_name Nom défini par l'utilisateur de l'instance de TKG, partagée par le cluster superviseur et tous les clusters Tanzu Kubernetes dans un seul déploiement . Vous pouvez utiliser n'importe quel nom associé à l'installation. string Null (paramètre obligatoire)
Note : Ce champ est obligatoire, mais arbitraire. Il s'agit d'un nom qui figure dans les journaux.
fluent_bit.log_level Niveau de journal à utiliser pour Fluent Bit string info
fluent_bit.output_plugin Définissez le serveur principal sur lequel Fluent Bit doit vider les informations qu'il collecte string Null (paramètre obligatoire)
fluent_bit.elasticsearch.host Adresse IP ou nom d'hôte de l'instance Elasticsearch cible string Null (paramètre obligatoire lorsque output_plugin est une recherche élastique)
fluent_bit.elasticsearch.port Port TCP de l'instance Elasticsearch cible entier Null (paramètre obligatoire lorsque output_plugin est une recherche élastique)
fluent_bit.elasticsearch.buffer_size Spécifiez la taille du tampon utilisé pour lire la réponse du service Elasticsearch. Définit comme illimité si la valeur est False string False
fluent_bit.elasticsearch.tls Spécifiez le paramètre par défaut pour TLS pour Elasticsearch string Désactivé
fluent_bit.kafka.broker_service_name Entrée unique d'une liste de Brokers Kafka multiples, par exemple : 192.168.1.3:9092 string Null (paramètre obligatoire lorsque output_plugin est kafka)
fluent_bit.kafka.topic_name Entrée unique ou liste de thèmes séparés par (,) que Fluent Bit utilisera pour envoyer des messages à Kafka string Null (paramètre obligatoire lorsque output_plugin est kafka)
fluent_bit.splunk.host Adresse IP ou nom d'hôte du serveur Splunk cible string Null (paramètre obligatoire lorsque output_plugin est splunk)
fluent_bit.splunk.port Port TCP du serveur Splunk cible entier Null (paramètre obligatoire lorsque output_plugin est splunk)
fluent_bit.splunk.token Spécifier le jeton d'authentification pour l'interface du collecteur d'événements HTTP string Null (paramètre obligatoire lorsque output_plugin est splunk)
fluent_bit.http.host Adresse IP ou nom d'hôte du serveur HTTP cible string Null (paramètre obligatoire lorsque output_plugin est http)
fluent_bit.http.port Port TCP du serveur HTTP cible entier Null (paramètre obligatoire lorsque output_plugin est http)
fluent_bit.http.mode Spécifier une URI HTTP pour le serveur Web cible string Null (paramètre obligatoire lorsque output_plugin est http)
fluent_bit.http.header_key_value Paire clé/valeur d'en-tête HTTP. Plusieurs en-têtes peuvent être définis string Null (paramètre obligatoire lorsque output_plugin est http)
fluent_bit.http.format Spécifier le format de données à utiliser dans le corps de la demande HTTP string Null (paramètre obligatoire lorsque output_plugin est http)
fluent_bit.syslog.host Domaine ou adresse IP du serveur Syslog distant string Null (paramètre obligatoire lorsque output_plugin est Syslog)
fluent_bit.syslog.port Port TCP ou UDP du serveur Syslog distant entier Null (paramètre obligatoire lorsque output_plugin est Syslog)
fluent_bit.syslog.mode Spécifiez le type de transport parmi TCP, UDP et TLS string Null (paramètre obligatoire lorsque output_plugin est Syslog)
fluent_bit.syslog.format Spécifier le format de données à utiliser dans le corps de la demande HTTP string Null (paramètre obligatoire lorsque output_plugin est Syslog)
host_path.volume_1 Chemin d'accès au répertoire du système de fichiers du nœud hôte vers l'espace, pour le volume 1 string /var/log
host_path.volume_2 Chemin d'accès au répertoire du système de fichiers du nœud hôte vers l'espace, pour le volume 2 string /var/lib/docker/containers
host_path.volume_3 Chemin d'accès au répertoire du système de fichiers du nœud hôte à l'espace, pour le volume 3 string /run/log
systemd.path Chemin d'accès au répertoire du journal Systemd string /var/log/journal