https://flux-status.k3s.kalle.works
📊 Mikä tämä on?
Flux Status API tarjoaa reaaliaikaisen näkymän Kubernetes-klusterin palveluiden tilaan. Voit lisätä dynaamiset badget palveluidesi GitHub-repositorioihin, jotka näyttävät:
- Deployment Health: Ovatko kaikki podit käynnissä ja valmiina?
- Flux Status: Onko FluxCD synkronoinut resurssit onnistuneesti?
🚀 Uuden palvelun lisääminen klusteriin
Miten Flux toimii?
FluxCD on GitOps-työkalu, joka synkronoi Kubernetes-klusterin tilan GitHub-repositorion kanssa.
Keskeinen rakenne:
- GitRepository: Flux seuraa GitHub-repositoriota (5 min intervalli)
- Kustomization: Määrittelee mitä resursseja sovelletaan klusteriin
- Kustomize: YAML-tiedostojen koostaja, lukee
kustomization.yaml-tiedostoja
Löytämisketju: Flux → GitRepository → kubernetes/apps/kustomization.yaml
→ Listaa kansiot → Soveltaa kaikki YAML-tiedostot kansioista klusteriin
Vaihe 1: Luo kansio palvelulle
mkdir -p kubernetes/apps/my-app
Vaihe 2: Lisää Kubernetes manifestit
Luo tarvittavat tiedostot kansioon kubernetes/apps/my-app/:
deployment.yaml- Sovelluksen deploymentservice.yaml- Service sovellukselleingressroute.yaml- Traefik IngressRoute (julkaisemiseen)certificate.yaml- SSL-sertifikaatti (HTTPS:lle)namespace.yaml- Namespace palvelulle
Vaihe 3: Päivitä kustomization.yaml
Lisää uusi palvelu tiedostoon kubernetes/apps/kustomization.yaml:
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - flux-status - my-app # Lisää tämä rivi
TÄRKEÄÄ: Tämä tiedosto kertoo Fluxille, mitkä kansiot sisältävät sovellettavia resursseja. Ilman tätä riviä Flux ei löydä uutta palveluasi!
Vaihe 4: Push Gitiin
git add . git commit -m "Add my-app service" git push
Synkronointi
Flux tarkistaa muutokset GitHubista automaattisesti 5 minuutin välein. Voit myös pakottaa välittömän synkronoinnin:
flux reconcile source git flux-system flux reconcile kustomization apps
Tarkista tila
Seuraa palvelusi tilaa:
kubectl get pods -n my-app kubectl get kustomizations -n flux-system flux logs
Koko prosessi esimerkillä
Tässä täydellinen esimerkki yksinkertaisesta web-sovelluksesta:
# 1. Luo kansiorakenne
mkdir -p kubernetes/apps/my-web-app
# 2. Luo namespace.yaml
cat > kubernetes/apps/my-web-app/namespace.yaml << 'EOF'
apiVersion: v1
kind: Namespace
metadata:
name: my-web-app
EOF
# 3. Luo deployment.yaml
cat > kubernetes/apps/my-web-app/deployment.yaml << 'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-web-app
namespace: my-web-app
spec:
replicas: 2
selector:
matchLabels:
app: my-web-app
template:
metadata:
labels:
app: my-web-app
spec:
containers:
- name: app
image: nginx:alpine
ports:
- containerPort: 80
EOF
# 4. Luo service.yaml
cat > kubernetes/apps/my-web-app/service.yaml << 'EOF'
apiVersion: v1
kind: Service
metadata:
name: my-web-app
namespace: my-web-app
spec:
selector:
app: my-web-app
ports:
- port: 80
EOF
# 5. Päivitä kubernetes/apps/kustomization.yaml
# Lisää "my-web-app" resources-listaan
# 6. Commit ja push
git add .
git commit -m "Add my-web-app service"
git push
# 7. Odota 5 min TAI pakota synkronointi:
flux reconcile kustomization apps --with-source
# 8. Tarkista
kubectl get pods -n my-web-app
kubectl get all -n my-web-app
Tärkeimmät tiedostot:
kubernetes/apps/kustomization.yaml- Päätason lista kaikista sovelluksistakubernetes/apps/my-app/*.yaml- Sovelluksen resurssitkubernetes/infrastructure/kustomization.yaml- Infrastruktuurikomponentit (cert-manager, traefik, jne)
🎯 Pika-aloitus
Lisää nämä badget palvelusi GitHub README.md-tiedostoon:
# My Service   ## 🚀 Deployment Status - **Deployment Health**: Näyttää onko kaikki podit valmiina - **Flux Status**: Näyttää onko FluxCD synkronoinut resurssit
Korvaa YOUR-NAMESPACE oman namespacesi nimellä (esim. my-app).
🎨 Status-värit
Deployment Health
Flux Status
đź”— API Endpointit
Yleiset endpointit
GET /api/statusKokonaisvaltainen Flux-tila JSON-muodossa
GET /api/resourcesLista kaikista Flux-resursseista
GET /api/namespacesLista namespacesta joissa on Flux-resursseja
Namespace-kohtaiset endpointit
GET /api/namespace/{namespace}/statusFlux-resurssien tila namespacessa
GET /api/namespace/{namespace}/badgeFlux-resurssien badge JSON (Shields.io-yhteensopiva)
GET /namespace/{namespace}/badge.svgFlux-resurssien SVG-badge
Deployment health endpointit
GET /api/namespace/{namespace}/deploymentsDeploymenttien terveys namespacessa
GET /api/namespace/{namespace}/deployments/badgeDeploymenttien badge JSON
GET /namespace/{namespace}/deployments/badge.svgDeploymenttien SVG-badge
💡 Esimerkkejä
Testaa API:a
# Hae kaikkien namespaceiden lista curl https://flux-status.k3s.kalle.works/api/namespaces # Hae monitoring-namespacen deployment-terveys curl https://flux-status.k3s.kalle.works/api/namespace/monitoring/deployments # Hae flux-system -namespacen Flux-resurssien tila curl https://flux-status.k3s.kalle.works/api/namespace/flux-system/status
Badget README:ssä
# Production Service   # Staging Service  
⚡ Rate Limiting
API rajoittaa 30 pyyntöä minuutissa per IP-osoite. Julkinen pääsy ilman autentikointia.
📚 Lisätietoja
Täydellinen dokumentaatio löytyy projektin GitHub-repositoriosta:
github.com/kalle-works/hetzner-k3s-flux