Add fluentd as helm dependency (log aggregator)

This commit is contained in:
Santiago Lo Coco 2023-11-20 10:16:57 -03:00
parent dc120f1f1f
commit 54d184c657
6 changed files with 106 additions and 2 deletions

4
.gitignore vendored
View File

@ -1,4 +1,6 @@
.venv
old-helm
old
consignas.txt
consignas.txt
other
*.tgz

6
helm/Chart.lock Normal file
View File

@ -0,0 +1,6 @@
dependencies:
- name: fluentd
repository: https://charts.bitnami.com/bitnami
version: 5.9.8
digest: sha256:c13e3eb419af0999e98934ba868da6dcbd55479935d51a3f42db8c24f63f839d
generated: "2023-11-20T09:50:04.363854758-03:00"

View File

@ -4,3 +4,9 @@ description: A Helm chart for Kubernetes
type: application
version: 0.1.0
appVersion: "1.16.0"
dependencies:
- name: fluentd
repository: https://charts.bitnami.com/bitnami
version: 5.9.8
condition: fluentd.enabled

View File

@ -1,3 +1,63 @@
# Decisiones de diseño del chart Helm
## Introducción
Este readme explica algunas de las decisiones de diseño tomadas durante el desarrollo del chart Helm. El objetivo es proporcionar información sobre las razones detrás de ciertas configuraciones en el archivo `values.yaml`.
## Valores predeterminados para eliminar redundancias
### Configuración del servicio
En el archivo `service.yaml`, se han establecido valores predeterminados para ciertos parámetros, como `type` y `targetPort`. Por ejemplo, el `type` se establece en "ClusterIP" de forma predeterminada, y `targetPort` se establece en `$port`.
**Beneficios:**
1. **Eliminación de redundancias:** Los valores predeterminados reducen la redundancia en el archivo `values.yaml`. Los usuarios pueden centrarse en personalizar valores específicos de su implementación.
2. **Flexibilidad:** Los usuarios tienen la libertad de modificar estos valores predeterminados en el archivo `values.yaml` sin necesidad de especificarlos explícitamente para cada servicio. Por ejemplo, cambiar el `type` a "NodePort" para el servicio `api` es tan simple como actualizar `values.yaml`.
```yaml
services:
- api:
name: "api"
tier: "backend"
port: 5000
type: "NodePort"
```
## Configuración de Ingress para flexibilidad de dominio
En el archivo `ingress.yaml`, el campo `host` se repite para cada ruta. Esta elección de diseño permite la flexibilidad de alojar la API en un dominio diferente si así se desea.
```yaml
ingress:
ssl: true
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "true"
hosts:
- host: kube.slc.ar
paths:
- path: /
name: "client"
port: 8080
pathType: "Prefix"
- host: api.kube.slc.ar
paths:
- path: /
name: "api"
port: 5000
pathType: "Prefix"
tls:
- secretName: exam-crt
hosts:
- kube.slc.ar
- api.kube.slc.ar
```
**Beneficio:**
- **Flexibilidad de dominio:** La repetición del campo `host` en cada ruta proporciona la flexibilidad de alojar la API en un dominio diferente (`api.kube.slc.ar` en este ejemplo). Los usuarios pueden personalizar fácilmente la sección `hosts` en el archivo `values.yaml` según sus requisitos de dominio específicos.
Estas elecciones de diseño buscan simplificar la gestión de la configuración, reducir la redundancia y proporcionar a los usuarios la flexibilidad de adaptar el chart Helm a sus necesidades de implementación.

View File

@ -99,3 +99,33 @@ deployments:
storage: pv-storage
probe:
command: ['/bin/sh', '-c', 'exec pg_isready -U "$POSTGRES_USER" -h 127.0.0.1 -p "${EXAM_DB_SERVICE_PORT-5432}";']
fluentd:
enabled: true
forwarder:
initContainers:
- name: fluentd-init
image: busybox
command: ['/bin/sh', '-c', 'until nc -z exam-fluentd-0.exam-fluentd-headless.exam.svc.cluster.local ${EXAM_FLUENTD_AGGREGATOR_SERVICE_PORT_TCP-24224}; do sleep 5; done;']
configMapFiles:
fluentd-inputs.conf: |
<source>
@type http
port 9880
</source>
<source>
@type tail
path /var/log/containers/exam-*.log
exclude_path /var/log/containers/*fluentd*.log
pos_file /opt/bitnami/fluentd/logs/buffers/fluentd-docker.pos
tag kubernetes.*
read_from_head true
<parse>
@type json
time_key time
time_format %Y-%m-%dT%H:%M:%S.%NZ
</parse>
</source>
<filter kubernetes.**>
@type kubernetes_metadata
</filter>

2
run.sh
View File

@ -74,4 +74,4 @@ fi
$START_MINIKUBE && minikube addons enable ingress
helm status exam > /dev/null 2>&1 && helm upgrade exam ./helm || helm install exam ./helm
helm status exam -n exam > /dev/null 2>&1 && helm upgrade exam ./helm -n exam || helm install exam ./helm -n exam