Update
This commit is contained in:
parent
af59f6d678
commit
80c3b30b0f
41
README.md
41
README.md
|
@ -26,6 +26,24 @@ El script `run.sh` automatiza el proceso de implementación para un entorno de `
|
||||||
- **-u:** Desinstalar el chart
|
- **-u:** Desinstalar el chart
|
||||||
- **-d:** Agrega datos básicos a la DB
|
- **-d:** Agrega datos básicos a la DB
|
||||||
|
|
||||||
|
## Ejemplos
|
||||||
|
|
||||||
|
### Cambio de versión de postgres
|
||||||
|
|
||||||
|
Si se quiere modificar la versión de la base de datos se puede hacer simplemente:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./run.sh -p 13.1
|
||||||
|
```
|
||||||
|
|
||||||
|
Esto actualizará todo lo que sea necesario para que se pueda hacer este cambio.
|
||||||
|
|
||||||
|
### Especificar número de réplicas para la API
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./run.sh -r 6
|
||||||
|
```
|
||||||
|
|
||||||
## Funcionalidad del script
|
## Funcionalidad del script
|
||||||
|
|
||||||
1. **Verificación del estado de minikube:**
|
1. **Verificación del estado de minikube:**
|
||||||
|
@ -66,29 +84,8 @@ El script `run.sh` automatiza el proceso de implementación para un entorno de `
|
||||||
|
|
||||||
Para realizar la configuración y el envío a un backend de registros como `elasticsearch`, podés editar `fluentd.yaml` según tus necesidades.
|
Para realizar la configuración y el envío a un backend de registros como `elasticsearch`, podés editar `fluentd.yaml` según tus necesidades.
|
||||||
|
|
||||||
7. **Implementación de helm:**
|
7. **Configuración de Secrets (opcional):**
|
||||||
|
|
||||||
Verifica la existencia de un release de helm llamado "exam" y lo actualiza o instala según sea necesario.
|
|
||||||
|
|
||||||
8. **Configuración de Secrets (opcional):**
|
|
||||||
|
|
||||||
Para no mantener los secretos en el SVC (si se utiliza uno), se pueden pasar a `helm` mediante un archivo `secrets.yaml` con la opción `-f`. Si existe `./helm/secrets.yaml` (en la carpeta `./helm`, es decir en la misma ubicación que `values.yaml`), se utilizarán estos valores; de lo contrario, se utilizarán los definidos en `values.yaml`. Estos valores sobrescribirán los existentes.
|
Para no mantener los secretos en el SVC (si se utiliza uno), se pueden pasar a `helm` mediante un archivo `secrets.yaml` con la opción `-f`. Si existe `./helm/secrets.yaml` (en la carpeta `./helm`, es decir en la misma ubicación que `values.yaml`), se utilizarán estos valores; de lo contrario, se utilizarán los definidos en `values.yaml`. Estos valores sobrescribirán los existentes.
|
||||||
|
|
||||||
Cabe destacar que al crear `./helm/secrets.yaml`, el script `run.sh` lo detectará automáticamente y lo utilizará al ejecutar `helm`. Por lo tanto, no es necesario realizar acciones adicionales, ya que el script gestionará la detección y el paso de este archivo a `helm`.
|
Cabe destacar que al crear `./helm/secrets.yaml`, el script `run.sh` lo detectará automáticamente y lo utilizará al ejecutar `helm`. Por lo tanto, no es necesario realizar acciones adicionales, ya que el script gestionará la detección y el paso de este archivo a `helm`.
|
||||||
|
|
||||||
### Uso
|
|
||||||
|
|
||||||
```bash
|
|
||||||
./build.sh -d <dominio> -b -v <versión>
|
|
||||||
```
|
|
||||||
|
|
||||||
### Opciones
|
|
||||||
|
|
||||||
- `-b`: Construye las imágenes de `docker`.
|
|
||||||
- `-v <version>`: Especifica la versión de `postgreSQL`.
|
|
||||||
|
|
||||||
### Ejemplo
|
|
||||||
|
|
||||||
```bash
|
|
||||||
./build.sh -d ejemplo.com -b -v 13.3
|
|
||||||
```
|
|
|
@ -79,7 +79,11 @@ Note que si se hace un upgrade solo NO se regenerará el `exam-crt`. Esto es esp
|
||||||
|
|
||||||
## Stateful para postgres
|
## Stateful para postgres
|
||||||
|
|
||||||
Se eligió usar stateful debido ya que necesitamos que sea una aplicación "Stable, persistent storage" (ver (documentación)[https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#using-statefulsets]). Además, en un futuro, si quisieramos tener READ replicas se podría hacer muy fácilmente agregando containers y la lógica necesaria. Para ese caso se debe usar si o si un stateful set para mantener al master siempre identificado. Lo dejé como algo más bien future-proof.
|
Se eligió implementar un archivo `stateful.yaml` ya que necesitamos que postgres sea una aplicación con "Stable, persistent storage" (ver (documentación)[https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#using-statefulsets]). Además, en un futuro, si quisieramos tener READ replicas se podría hacer muy fácilmente agregando containers y la lógica necesaria. Para ese caso se debe usar si o si un stateful set para mantener al master siempre identificado. Lo dejé como algo más bien future-proof.
|
||||||
|
|
||||||
|
Notemos que de usar un deployment tendríamos muchos problemas con el `stop` de la aplicación ya que están compartiendo el mismo volumen de datos al mismo tiempo (pues hasta que no levante correctamente el nuevo pod el viejo seguirá activo y luego parará). Esto podría pasar que se corrompa la base de datos. Se arregla simplemente con un StatefulSet este problema.
|
||||||
|
|
||||||
|
Por otro lado, si estuvisemos usando un cluster el `RollingUpdate` nos salvaría de una imagen que no existe por ejemplo ya que empieza por los pods con cardinal más alto y si alguno falla no sigue actualizando.
|
||||||
|
|
||||||
## Tests de conexión
|
## Tests de conexión
|
||||||
|
|
||||||
|
|
|
@ -89,6 +89,9 @@ spec:
|
||||||
- mountPath: {{ .mountPath }}
|
- mountPath: {{ .mountPath }}
|
||||||
name: {{ .storage }}
|
name: {{ .storage }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- if .grace }}
|
||||||
|
terminationGracePeriodSeconds: 30
|
||||||
|
{{- end }}
|
||||||
{{- if .mountPath }}
|
{{- if .mountPath }}
|
||||||
volumes:
|
volumes:
|
||||||
- name: {{ .storage }}
|
- name: {{ .storage }}
|
||||||
|
|
|
@ -74,7 +74,7 @@ deployments:
|
||||||
repository: api
|
repository: api
|
||||||
tag: prod
|
tag: prod
|
||||||
port: *apiPort
|
port: *apiPort
|
||||||
replicas: 3
|
replicas: 2
|
||||||
initContainer:
|
initContainer:
|
||||||
command: ['/bin/sh', '-c', 'until nc -z exam-db "${EXAM_DB_SERVICE_PORT-5432}"; do sleep 1; done;']
|
command: ['/bin/sh', '-c', 'until nc -z exam-db "${EXAM_DB_SERVICE_PORT-5432}"; do sleep 1; done;']
|
||||||
- client:
|
- client:
|
||||||
|
|
Loading…
Reference in New Issue