diff --git a/.gitignore b/.gitignore index 5c9d101..8589e0a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ .venv old-helm old -consignas.txt \ No newline at end of file +consignas.txt +other +*.tgz \ No newline at end of file diff --git a/helm/Chart.lock b/helm/Chart.lock new file mode 100644 index 0000000..4ce5381 --- /dev/null +++ b/helm/Chart.lock @@ -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" diff --git a/helm/Chart.yaml b/helm/Chart.yaml index bb49842..fa34dc8 100644 --- a/helm/Chart.yaml +++ b/helm/Chart.yaml @@ -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 diff --git a/helm/README.md b/helm/README.md index 472a461..89717e5 100644 --- a/helm/README.md +++ b/helm/README.md @@ -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. + diff --git a/helm/values.yaml b/helm/values.yaml index 5976261..82949ac 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -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: | + + @type http + port 9880 + + + @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 + + @type json + time_key time + time_format %Y-%m-%dT%H:%M:%S.%NZ + + + + @type kubernetes_metadata + \ No newline at end of file diff --git a/run.sh b/run.sh index b23bc59..b5163f9 100755 --- a/run.sh +++ b/run.sh @@ -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