Saltar al contenido principal

Introducción

fluxcd-thor-network describe todo lo que se ejecuta dentro de los clústeres de Kubernetes: la red, el ingress, los certificados, la observabilidad, Keycloak y las aplicaciones. FluxCD lee el repositorio y aplica en el clúster lo que hay en Git; cambiar algo es hacer un commit.

El clúster lo crea el stack de Kubernetes de Horizon. FluxCD se encarga de todo lo que hay dentro a partir de la entrega.

consejo

El repositorio es público y pensado para usarse de base: haz un fork, ajústalo a tu red y despliégalo en tu clúster.

Entornos​

EntornoClústerRutaCanal de Slack
testingtanyaclusters/testing#fluxcd-testing
productionrimuruclusters/production#fluxcd-production

Ambos envían su telemetría a la misma máquina de monitorización, diferenciados por la etiqueta cluster. Los ejemplos de esta documentación usan testing.

Organización​

FluxCD aplica la plataforma por niveles. Cada nivel es un par de Kustomization de Flux, -controllers (el software) y después -configs (lo que lo usa), y espera al nivel anterior. Así las dependencias siempre están listas antes.

clusters/<entorno>/ lo que sigue el clúster: flux-instance.yaml, infra-level<N>.yaml, apps.yaml
infrastructure/base/<nivel>/ la definición de cada componente, compartida por los entornos
infrastructure/<entorno>/ valores, direcciones y secrets cifrados de cada entorno
apps/base/<aplicación>/ la definición de cada aplicación
apps/<entorno>/<aplicación>/ nombres y variante del chart de cada entorno
NivelComponentesDocumentación
0 · 00-bootstrapFlux Operator, SOPS + age, notificaciones de Slack, clases de prioridad, políticas de admisiónBootstrap
1 · 10-networkingCalico, MetalLB, Reloader, Metrics ServerPlataforma
2 · 20-ingresscert-manager, Traefik (intranet y extranet)Plataforma
3 · 30-observabilityGrafana Alloy, kube-state-metricsPlataforma
4 · 40-identityKeycloak Operator y KeycloakPlataforma
appsdocumoon, shizen, fumi, kirinAplicaciones

Reglas del clúster​

Reglas que cumple todo lo desplegado, aplicadas por el propio Kubernetes y FluxCD:

ReglaAplicada por
Sin volúmenes: crear un PersistentVolumeClaim se rechaza; el espacio temporal usa emptyDirValidatingAdmissionPolicy
Todo Ingress tiene clase intranet o extranet; olvidarla o equivocarse se rechazaValidatingAdmissionPolicy
Pods sin privilegios: restricted por defecto; privileged solo para lo que configura la red o lee los logs del nodoPod Security Admission
Todo pod declara sus recursos: requests medidos, límite de memoria y sin límite de CPUValores de cada chart
Una actualización fallida vuelve atrás: tres reintentos y rollback a la última versión que funcionabaRemediación de Flux
La plataforma sobrevive a las aplicaciones: platform-critical y platform-high; las aplicaciones no tienen prioridad y ceden primeroClases de prioridad

Política de versiones​

Cada componente se actualiza solo dentro de un rango, y Slack avisa de cada actualización.

RangoSignificadoAplicado a
<mayor>.<menor>.xParches automáticos, versiones menores con un commitLo que tumba el clúster si falla: Flux, Flux Operator, Calico, MetalLB, cert-manager, Traefik, Keycloak
<mayor>.xMenores y parches automáticosComponentes acotados: Reloader, Metrics Server, la observabilidad

Comandos habituales​

# Aplicar lo que se acaba de subir, sin esperar a la siguiente comprobación
flux reconcile kustomization flux-system --with-source

# Estado de todo lo que gestiona Flux
flux get all -A
kubectl -n flux-system get fluxreport/flux -o yaml

# Editar un secret
sops infrastructure/testing/20-ingress/configs/cloudflare-api-token-secret.yaml

Documentación​

Cada componente tiene su página en docs/: para qué sirve, cómo se instala, cómo se valida y cómo se actualiza.