🚀 Flux Status API

Näytä palveluidesi tila GitHubissa reaaliajassa

Flux Status Deployments
📝 Voit jakaa tämän sivun URLin:
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 deployment
  • service.yaml - Service sovellukselle
  • ingressroute.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 sovelluksista
  • kubernetes/apps/my-app/*.yaml - Sovelluksen resurssit
  • kubernetes/infrastructure/kustomization.yaml - Infrastruktuurikomponentit (cert-manager, traefik, jne)

🎯 Pika-aloitus

Lisää nämä badget palvelusi GitHub README.md-tiedostoon:

# My Service

![Deployment Health](https://flux-status.k3s.kalle.works/namespace/YOUR-NAMESPACE/deployments/badge.svg)
![Flux Status](https://flux-status.k3s.kalle.works/namespace/YOUR-NAMESPACE/badge.svg)

## 🚀 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

🟢 Green (healthy) Kaikki replicat valmiina
🟡 Yellow (degraded) Osa replicoista valmiina
🔴 Red (error) Ei yhtään replicaa valmiina

Flux Status

🟢 Green (healthy) Kaikki resurssit synkronoitu
🔵 Blue (progressing) Resursseja synkronoidaan
🟡 Yellow (degraded) Joitain virheitä
🔴 Red (error) Vakavia virheitä

đź”— API Endpointit

Yleiset endpointit

GET /api/status
Kokonaisvaltainen Flux-tila JSON-muodossa
GET /api/resources
Lista kaikista Flux-resursseista
GET /api/namespaces
Lista namespacesta joissa on Flux-resursseja

Namespace-kohtaiset endpointit

GET /api/namespace/{namespace}/status
Flux-resurssien tila namespacessa
GET /api/namespace/{namespace}/badge
Flux-resurssien badge JSON (Shields.io-yhteensopiva)
GET /namespace/{namespace}/badge.svg
Flux-resurssien SVG-badge

Deployment health endpointit

GET /api/namespace/{namespace}/deployments
Deploymenttien terveys namespacessa
GET /api/namespace/{namespace}/deployments/badge
Deploymenttien badge JSON
GET /namespace/{namespace}/deployments/badge.svg
Deploymenttien 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

![Deployments](https://flux-status.k3s.kalle.works/namespace/production/deployments/badge.svg)
![Flux](https://flux-status.k3s.kalle.works/namespace/production/badge.svg)

# Staging Service

![Deployments](https://flux-status.k3s.kalle.works/namespace/staging/deployments/badge.svg)
![Flux](https://flux-status.k3s.kalle.works/namespace/staging/badge.svg)

⚡ 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