Introducció
fluxcd-thor-network descriu tot el que s'executa dins dels clústers de Kubernetes: la xarxa, l'ingress, els certificats, l'observabilitat, Keycloak i les aplicacions. FluxCD llegeix el repositori i aplica al clúster el que hi ha a Git; canviar alguna cosa és fer un commit.
El clúster el crea l'stack de Kubernetes d'Horizon. FluxCD s'encarrega de tot el que hi ha dins a partir del lliurament.
El repositori és públic i pensat per fer-se servir de base: fes-ne un fork, ajusta'l a la teva xarxa i desplega'l al teu clúster.
Entorns
| Entorn | Clúster | Ruta | Canal de Slack |
|---|---|---|---|
| testing | tanya | clusters/testing | #fluxcd-testing |
| production | rimuru | clusters/production | #fluxcd-production |
Tots dos envien la seva telemetria a la mateixa màquina de monitorització, diferenciats per l'etiqueta cluster. Els exemples d'aquesta documentació fan servir testing.
Organització
FluxCD aplica la plataforma per nivells. Cada nivell és un parell de Kustomization de Flux, -controllers (el programari) i després -configs (el que el fa servir), i espera el nivell anterior. Així les dependències sempre estan llestes abans.
clusters/<entorn>/ el que segueix el clúster: flux-instance.yaml, infra-level<N>.yaml, apps.yaml
infrastructure/base/<nivell>/ la definició de cada component, compartida pels entorns
infrastructure/<entorn>/ valors, adreces i secrets xifrats de cada entorn
apps/base/<aplicació>/ la definició de cada aplicació
apps/<entorn>/<aplicació>/ noms i variant del chart de cada entorn
| Nivell | Components | Documentació |
|---|---|---|
0 · 00-bootstrap | Flux Operator, SOPS + age, notificacions de Slack, classes de prioritat, polítiques d'admissió | Bootstrap |
1 · 10-networking | Calico, MetalLB, Reloader, Metrics Server | Plataforma |
2 · 20-ingress | cert-manager, Traefik (intranet i extranet) | Plataforma |
3 · 30-observability | Grafana Alloy, kube-state-metrics | Plataforma |
4 · 40-identity | Keycloak Operator i Keycloak | Plataforma |
| apps | documoon, shizen, fumi, kirin | Aplicacions |
Regles del clúster
Regles que compleix tot el que es desplega, aplicades pel mateix Kubernetes i FluxCD:
| Regla | Aplicada per |
|---|---|
Sense volums: crear un PersistentVolumeClaim es rebutja; l'espai temporal fa servir emptyDir | ValidatingAdmissionPolicy |
Tot Ingress té classe intranet o extranet; oblidar-la o equivocar-se es rebutja | ValidatingAdmissionPolicy |
Pods sense privilegis: restricted per defecte; privileged només per al que configura la xarxa o llegeix els logs del node | Pod Security Admission |
| Tot pod declara els seus recursos: requests mesurats, límit de memòria i sense límit de CPU | Valors de cada chart |
| Una actualització fallida torna enrere: tres reintents i rollback a l'última versió que funcionava | Remediació de Flux |
La plataforma sobreviu a les aplicacions: platform-critical i platform-high; les aplicacions no tenen prioritat i cedeixen primer | Classes de prioritat |
Política de versions
Cada component s'actualitza sol dins d'un rang, i Slack avisa de cada actualització.
| Rang | Significat | Aplicat a |
|---|---|---|
<major>.<menor>.x | Pegats automàtics, versions menors amb un commit | El que fa caure el clúster si falla: Flux, Flux Operator, Calico, MetalLB, cert-manager, Traefik, Keycloak |
<major>.x | Menors i pegats automàtics | Components acotats: Reloader, Metrics Server, l'observabilitat |
Ordres habituals
# Aplicar el que s'acaba de pujar, sense esperar la comprovació següent
flux reconcile kustomization flux-system --with-source
# Estat de tot el 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ó
Cada component té la seva pàgina a docs/: per a què serveix, com s'instal·la, com es valida i com s'actualitza.