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
|
||||
- **-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
|
||||
|
||||
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.
|
||||
|
||||
7. **Implementación de helm:**
|
||||
|
||||
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):**
|
||||
7. **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.
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
|
|
|
@ -89,6 +89,9 @@ spec:
|
|||
- mountPath: {{ .mountPath }}
|
||||
name: {{ .storage }}
|
||||
{{- end }}
|
||||
{{- if .grace }}
|
||||
terminationGracePeriodSeconds: 30
|
||||
{{- end }}
|
||||
{{- if .mountPath }}
|
||||
volumes:
|
||||
- name: {{ .storage }}
|
||||
|
|
|
@ -74,7 +74,7 @@ deployments:
|
|||
repository: api
|
||||
tag: prod
|
||||
port: *apiPort
|
||||
replicas: 3
|
||||
replicas: 2
|
||||
initContainer:
|
||||
command: ['/bin/sh', '-c', 'until nc -z exam-db "${EXAM_DB_SERVICE_PORT-5432}"; do sleep 1; done;']
|
||||
- client:
|
||||
|
|
Loading…
Reference in New Issue