Conceptos y vocabulario¶
rendimiento tiene un vocabulario pequeño. Una vez claras estas palabras, cualquier otro capítulo se lee con facilidad.
erDiagram
REPOSITORIO ||--|| APLICACION : "se despliega como"
APLICACION ||--|{ SERVICIO : "tiene"
APLICACION ||--o{ TAREA_PROGRAMADA : "tiene"
APLICACION ||--o{ EJECUCION : "se construye en"
EJECUCION ||--|{ PASO : "se compone de"
EJECUCION ||--o| VERSION : "produce (rama principal)"
VERSION }o--|| OBJETO_APP : "es apuntada por"
OBJETO_APP ||--|{ CARGA_DE_TRABAJO : "se concilia en"
SERVICIO ||--o{ NECESIDAD : "declara"
DEFINICION_COMPLEMENTO ||--|| OBJETO_ADDON : "se sincroniza en"
OBJETO_ADDON ||--|{ CARGA_DE_TRABAJO : "se concilia en"
Las aplicaciones y de qué están hechas¶
- Aplicación
- Una aplicación desplegada, creada al incorporar un repositorio de GitHub. Tiene un nombre (que también es su espacio de nombres en Kubernetes), un repositorio, la instalación de la aplicación de GitHub que puede leerlo y una rama principal. Una aplicación existe en dos lugares: una fila en la base de datos de la plataforma (historial, ejecuciones, versiones) y un objeto
Appen Kubernetes (lo que debería estar en ejecución). Vea Datos y estado. rendimiento.yaml- El único archivo que necesita el repositorio de una aplicación. Enumera los servicios de la aplicación (y, si quiere, sus tareas programadas) y cómo ejecutarlos. El asistente lo genera; usted lo edita como cualquier otro código, y los cambios se despliegan al integrarlos. Su tipo en Go es
spec.Spec. Referencia completa. - Servicio
- Una parte desplegable de una aplicación: se construye a partir de una carpeta del repositorio (o de una imagen lista para usar, como
postgres:17-alpine), se ejecuta como un Deployment de Kubernetes con su Service y, si quiere, recibe un dominio público (con DNS y certificado), rutas, un volumen, secretos, una comprobación de estado, una GPU, una dirección en la red local y necesidades. - Tarea programada
- Una tarea que se ejecuta según un horario (una CronJob de Kubernetes), por ejemplo una extracción de datos cada noche. Usa la imagen de un servicio, su propia carpeta o una imagen lista para usar.
- Necesidad
- Algo de lo que depende un servicio y que rendimiento provee y conecta:
postgres(una base de datos para la aplicación,DATABASE_URL),redis(una caché,REDIS_URL) o{service: espacio/nombre}(la dirección de otro servicio). Necesidades.
De un envío a código en ejecución¶
- Ejecución
- Una ejecución de integración continua para una confirmación de una aplicación. Un envío a la rama principal produce una ejecución de despliegue; un envío a otra rama produce una ejecución que solo construye y reporta una comprobación en GitHub. Una ejecución se compone de pasos.
- Paso
- Una unidad de trabajo de integración continua, ejecutada como un pod: un paso de pruebas (un comando en un contenedor, por ejemplo
pytest) o un paso de construcción (una imagen construida por BuildKit y enviada al registro). Los pasos de distintos servicios corren en paralelo; la construcción de un servicio espera a sus pruebas. - Detección de cambios y reutilización
- En un envío a la rama principal, los servicios cuyas carpetas no cambiaron conservan la imagen de la última versión; sus pasos aparecen como reutilizados.
- Versión
- El resultado de una ejecución de despliegue correcta: para cada servicio, la imagen por su huella (
registro/app-web@sha256:…), más la especificación de esa confirmación. Las versiones se numeran por aplicación. Una reversión crea una versión nueva con las imágenes y la especificación de una versión anterior. - Objeto
App - El recurso personalizado de Kubernetes (
apps.rendimiento.ai) que guarda lo que debería ejecutarse: los servicios, las tareas programadas y las imágenes publicadas. La plataforma lo escribe; el controlador de aplicaciones lo lee. - Conciliar
- Lo que hace un controlador una y otra vez: comparar lo que debería existir con lo que existe, y hacer que la diferencia desaparezca. Por eso vuelve un Deployment borrado, y así es como una versión se convierte en pods. El controlador de aplicaciones.
- Adoptar (asumir el control)
- Poner bajo la administración de rendimiento, en su lugar, algo que ya está en ejecución (desplegado con ArgoCD, Helm o
kubectl), sin volver a crearlo ni cortar el tráfico. Espacio de nombres compartido significa que rendimiento ejecuta sus servicios en un espacio de nombres que pertenece a otra cosa, sin crear, etiquetar ni borrar nunca ese espacio de nombres. - Desconectar
- Dejar de administrar una aplicación sin detener nada de lo que está en ejecución. Eliminar la quita junto con todo lo que ejecuta.
Alrededor de las aplicaciones¶
- Instalación
- La aplicación de GitHub instalada en una cuenta. Le da a rendimiento avisos web de cada repositorio y tokens de corta vida para leerlos, abrir solicitudes de incorporación y reportar comprobaciones.
- Comprobación
- El estado que rendimiento reporta en cada confirmación y solicitud de incorporación en GitHub (la ✓ o la ✗ junto a una confirmación).
- Complemento
- Programas que rendimiento instala y mantiene sincronizados para el clúster. Los complementos instalados son paquetes de Helm o carpetas de manifiestos (Longhorn, umami, el grupo de BuildKit…), cada uno definido por un archivo en
p0dxD/gitops/addons/y representado en Kubernetes por un objetoAddon(kubectl get radd). Los complementos integrados son funciones de la propia plataforma; hoy es Renovate. Complementos. - Vista previa
- Antes de que un complemento cambie algo, cada objeto se prueba en seco contra el clúster y se compara: qué se crearía, qué se actualizaría y qué se eliminaría.
- Sincronización manual
- Un modo de complemento en el que los cambios esperan a que usted revise la vista previa y presione Sincronizar (se usa con Longhorn).
- Gancho de Helm
- Una tarea que un paquete ejecuta en un momento de su vida (antes de una actualización, antes de eliminarse…). rendimiento los ejecuta igual que Helm.
- Catálogo de servicios
- Cada Service del clúster, agrupado por lo que hace (bases de datos, inteligencia artificial, almacenamiento…), con su origen, lo que expone, cómo conectarse y quién ya lo llama. Necesidades y el catálogo.
- Entorno
- La salud de todo aquello de lo que depende rendimiento (clúster, entrada, certificados, almacenamiento, BuildKit, registro, DNS, GitHub), con soluciones para lo que falte.
Dónde se ejecuta cada cosa¶
- Grupo de BuildKit
- Los constructores de imágenes: un demonio de BuildKit por cada nodo trabajador. Cada imagen siempre se construye en el mismo demonio, así su caché se mantiene caliente. Construir imágenes.
- Railpack
- El constructor para los servicios sin Dockerfile: detecta el lenguaje y construye directamente desde el código fuente.
- El espacio de nombres de construcción (
rendimiento-builds) - Donde corren los pods de integración continua: sin credenciales de Kubernetes, sin acceso al clúster ni a la red local, solo a internet (para las dependencias) y a BuildKit.
- El espacio de nombres de la plataforma (
rendimiento-system) - Donde se ejecutan rendimiento y su Postgres.