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
- Provisionner un cluster. Reportez-vous à la section Workflow de provisionnement de clusters Tanzu Kubernetes à l'aide de TKGS v1alpha2 API.
- Connectez-vous au cluster. Reportez-vous à la section Se connecter à un cluster Tanzu Kubernetes en tant qu'utilisateur vCenter Single Sign-On.
- Télécharger le bundle d'extensions TKG 1.3.1 sur votre hôte client sur lequel vous exécutez kubectl.
- Applications requises pour l'installation des extensions TKG sur le cluster cible.
Déployer l'extension DSL
Conteneur | Type de ressource | Réplicas | Description |
---|---|---|---|
Fluent Bit | DaemonSet | 6 | Collecteur de journaux, agrégateur, redirecteur |
- Vérifiez que vous avez rempli chacune des conditions préalables de l’extension. Reportez-vous à la section Configuration requise pour l'extension.
- Remplacez le répertoire par celui de l'extension Fluent Bit.
cd /tkg-extensions-v1.3.1+vmware.1/extensions/logging/fluent-bit
- 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
- 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.
- 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
- 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"
- 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 nomstanzu-system-logging
. Effectuez la vérification à l'aide de la commande suivante :kubectl get secrets -n tanzu-system-logging
- 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
. - 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 deReconciling
àReconcile succeeded
. Si l'état estReconcile failed
, reportez-vous à la section Dépannage du Déploiement Fluent Bit. - Affichez l’état détaillé de l’application.
kubectl get app fluent-bit -n tanzu-system-logging -o yaml
- 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.
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.
- 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
- Mettez à jour les valeurs de données Fluent Bit dans
fluent-bit-data-values.yaml
. Reportez-vous à la section Configurer l'extension Fluent Bit. - 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, modifiezsyncPeriod
dansfluent-bit-extension.yaml
à une valeur inférieure et appliquez l'extension Fluent Bit à l'aide dekubectl apply -f fluent-bit-extension.yaml
. - Vérifiez l'état de l'extension.
kubectl get app fluent-bit -n tanzu-system-logging
- Affichez l'état détaillé et résolvez les problèmes.
kubectl get app fluent-bit -n tanzu-system-logging -o yaml
- Dépannez si nécessaire. Reportez-vous à la section Dépannage du Déploiement Fluent Bit.
Supprimer l'extension Fluent Bit
- Remplacez le répertoire par celui de l'extension Fluent Bit.
cd extensions/logging/fluent-bit/
- Supprimez l'application Fluent Bit.
kubectl delete app fluent-bit -n tanzu-system-logging
Résultat attendu :
app.kappctrl.k14s.io "fluent-bit" deleted
- 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
- 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
- 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
- Supprimez le déploiement Fluent Bit existant. Reportez-vous à la section Supprimer l'extension Fluent Bit.
- Déployez la dernière extension Fluent Bit. Reportez-vous à la section Déployer l'extension DSL.
Configurer l'extension Fluent Bit
extensions/logging/fluent-bit/<LOG_BACKEND>/fluent-bit-data-values.yaml
.
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 |