Skip to main content

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.

tip

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​

EntornClústerRutaCanal de Slack
testingtanyaclusters/testing#fluxcd-testing
productionrimuruclusters/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
NivellComponentsDocumentació
0 · 00-bootstrapFlux Operator, SOPS + age, notificacions de Slack, classes de prioritat, polítiques d'admissióBootstrap
1 · 10-networkingCalico, MetalLB, Reloader, Metrics ServerPlataforma
2 · 20-ingresscert-manager, Traefik (intranet i extranet)Plataforma
3 · 30-observabilityGrafana Alloy, kube-state-metricsPlataforma
4 · 40-identityKeycloak Operator i KeycloakPlataforma
appsdocumoon, shizen, fumi, kirinAplicacions

Regles del clúster​

Regles que compleix tot el que es desplega, aplicades pel mateix Kubernetes i FluxCD:

ReglaAplicada per
Sense volums: crear un PersistentVolumeClaim es rebutja; l'espai temporal fa servir emptyDirValidatingAdmissionPolicy
Tot Ingress té classe intranet o extranet; oblidar-la o equivocar-se es rebutjaValidatingAdmissionPolicy
Pods sense privilegis: restricted per defecte; privileged només per al que configura la xarxa o llegeix els logs del nodePod Security Admission
Tot pod declara els seus recursos: requests mesurats, límit de memòria i sense límit de CPUValors de cada chart
Una actualització fallida torna enrere: tres reintents i rollback a l'última versió que funcionavaRemediació de Flux
La plataforma sobreviu a les aplicacions: platform-critical i platform-high; les aplicacions no tenen prioritat i cedeixen primerClasses de prioritat

Política de versions​

Cada component s'actualitza sol dins d'un rang, i Slack avisa de cada actualització.

RangSignificatAplicat a
<major>.<menor>.xPegats automàtics, versions menors amb un commitEl que fa caure el clúster si falla: Flux, Flux Operator, Calico, MetalLB, cert-manager, Traefik, Keycloak
<major>.xMenors i pegats automàticsComponents 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.