En este instructivo, se describe cómo personalizar los registros de Fluentd para un clúster de Google Kubernetes Engine. Aprenderás a alojar tu propio daemonset de Fluentd configurable para enviar registros a Cloud Logging, en lugar de seleccionar la opción de registro en la nube cuando creas el clúster de Google Kubernetes Engine (GKE), que no permite la configuración del daemon de Fluentd.
Objetivos
- Implementar tu propio daemonset de Fluentd en un clúster de Google Kubernetes Engine, configurado para registrar datos en Cloud Logging. Suponemos que ya conoces Kubernetes
- Personalizar el registro de GKE para quitar datos sensibles de los registros de Cloud Logging
- Personaliza el registro de GKE para agregar eventos a nivel de nodo a los registros de Cloud Logging.
Costos
En este instructivo, se usan componentes facturables de Google Cloud, que incluyen lo siguiente:
- Un clúster de tres nodos de Google Kubernetes Engine
La Calculadora de precios estima que el costo de este entorno es de alrededor de $1.14 por 8 horas.
Antes de comenzar
- Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Habilita las API de Google Kubernetes Engine, Compute Engine.
-
En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Habilita las API de Google Kubernetes Engine, Compute Engine.
Inicializa variables comunes
Debes definir muchas variables que controlen dónde se implementan los elementos de la infraestructura.
Con un editor de texto, edita la siguiente secuencia de comandos y sustituye el ID de tu proyecto por
[YOUR_PROJECT_ID]
. La secuencia de comandos establece la región comous-east-1
. Si realizas cambios a la secuencia de comandos, asegúrate de que los valores de zona hagan referencia a la región que especificas.export region=us-east1 export zone=${region}-b export project_id=[YOUR_PROJECT_ID]
Dirígete a Cloud Shell.
Copia la secuencia de comandos en tu ventana de Cloud Shell y ejecútala.
Ejecuta los siguientes comandos para establecer la zona predeterminada y el ID del proyecto a fin de que no tengas que especificar estos valores en cada comando posterior:
gcloud config set compute/zone ${zone} gcloud config set project ${project_id}
Crea el clúster de GKE
En Cloud Shell, clona el repositorio de muestra:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-customize-fluentd
El repositorio de muestra incluye los manifiestos de Kubernetes para el daemonset de Fluentd y un programa de prueba de registro que implementarás más adelante en este instructivo.
Cambia tu directorio de trabajo al repositorio clonado:
cd kubernetes-engine-customize-fluentd
Crea el clúster de GKE solo con el registro y la supervisión del sistema:
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
Implementa la aplicación de registro de prueba
De forma predeterminada, la aplicación de muestra que implementas emite instrucciones de registro aleatorias de forma continua. El contenedor de Docker se compila a partir del código fuente en el subdirectorio test-logger
.
En Cloud Shell, compila la imagen de contenedor
test-logger
:docker build -t test-logger test-logger
Etiqueta el contenedor antes de enviarlo al registro:
docker tag test-logger gcr.io/${project_id}/test-logger
Envía la imagen del contenedor:
docker push gcr.io/${project_id}/test-logger
Actualiza el archivo de implementación:
envsubst < kubernetes/test-logger.yaml > kubernetes/test-logger-deploy.yaml
Implementa la aplicación
test-logger
en el clúster de GKE:kubectl apply -f kubernetes/test-logger-deploy.yaml
Ver el estado de los pods
test-logger
:kubectl get pods
Repite este comando hasta que el resultado sea similar al siguiente, con los tres pods
test-logger
en ejecución:
Implementa el daemonset de Fluentd en tu clúster
A continuación, configura y, luego, implementa tu daemonset de Fluentd.
En Cloud Shell, implementa la configuración de Fluentd:
kubectl apply -f kubernetes/fluentd-configmap.yaml
Implementa el daemonset de Fluentd:
kubectl apply -f kubernetes/fluentd-daemonset.yaml
Comprueba que los Pods de Fluentd se iniciaron:
kubectl get pods --namespace=kube-system
Si están en ejecución, verás un resultado como este:
Verifica que veas registros en Logging. En la consola, en el lado izquierdo, selecciona Logging > Explorador de registros y, luego, Contenedor de Kubernetes como un tipo de recurso en la lista de Recursos.
Haga clic en Ejecutar consulta.
En el Explorador de campos de registros, selecciona test-logger para CONTAINER_NAME:
Filtra información en el archivo de registro
El paso siguiente es especificar a Fluentd que filtre ciertos datos para que no se registren. En este instructivo, debes filtrar los números de identificación personal, de tarjeta de crédito y las direcciones de correo electrónico. A fin de realizar esta actualización, debes cambiar el daemonset para usar un ConfigMap diferente que contenga estos filtros. Usa la función de actualizaciones progresivas de Kubernetes y conserva la versión anterior del ConfigMap.
Abre el archivo
kubernetes/fluentd-configmap.yaml
en un editor.Quita el comentario de las líneas intermedias y excluye las líneas
### sample log scrubbing filters
y### end sample log scrubbing filters
:Para cambiar el nombre del ConfigMap de
fluentd-gcp-config
afluentd-gcp-config-filtered
, edita el campometadata.name
:Guarde y cierre el archivo.
Actualiza el daemonset de Fluentd para usar la configuración nueva
Ahora cambia kubernetes/fluentd-daemonset.yaml
para activar el ConfigMap fluentd-gcp-config-filtered
en lugar de fluentd-gcp-config
.
Abre el archivo
kubernetes/fluentd-daemonset.yaml
en un editor.Para cambiar el nombre del ConfigMap de
fluentd-gcp-config
afluentd-gcp-config-filtered
, edita el campoconfigMap.name
:Implementa la versión nueva del ConfigMap en tu clúster:
kubectl apply -f kubernetes/fluentd-configmap.yaml
Implementa la versión nueva del daemonset:
kubectl apply -f kubernetes/fluentd-daemonset.yaml
Implementa la actualización y espera a que se complete:
kubectl rollout status ds/fluentd-gcp --namespace=kube-system
Cuando finalices el lanzamiento, actualiza los registros de Logging y verifica que se hayan filtrado los datos del número de identificación personal, el número de tarjeta de crédito y la dirección de correo electrónico.
Registra eventos a nivel de nodo
Si quieres que los eventos que ocurren en los nodos de GKE también aparezcan en Logging, agrega las siguientes líneas al ConfigMap y sigue las instrucciones que se detallan en la última sección:
<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>
Limpia
Una vez que hayas terminado el instructivo, puedes limpiar los recursos que creaste en Google Cloud para que no se te cobre por ellos en el futuro.
Borra el proyecto
La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.
Para borrar el proyecto, sigue estos pasos:
- En la consola de Google Cloud, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
- En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.
Borra el clúster de GKE
Si no quieres borrar todo el proyecto, ejecuta el comando siguiente para borrar el clúster de GKE:
gcloud container clusters delete gke-with-custom-fluentd --zone us-east1-b
¿Qué sigue?
- Revisa con más detenimiento la documentación de Fluentd.
- Revisa con más detenimiento la documentación de Google Kubernetes Engine.
- Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.