🦕 PolyHub¶

Was ist PolyHub?¶
hub.polycrate.io ist die zentrale Registry für Blocks, die von ayedo entwickelt und bereitgestellt werden. Der PolyHub bietet eine kuratierte Sammlung von Production-Ready Blocks für häufige Infrastructure-as-Code Patterns.
Alle Blocks auf PolyHub sind: - 🆓 Open Source - Apache 2.0 lizenziert - ✅ Production-Tested - In realen Projekten eingesetzt - 📖 Gut dokumentiert - Mit README, Beispielen und CHANGELOG - 🔄 Versioniert - Semantische Versionierung - 🧪 Erweiterbar - Durch Vererbung anpassbar
Disclaimer
Alle Blocks werden ohne Gewährleistung oder Garantie bereitgestellt und sollten auf eigene Verantwortung genutzt werden. Testen Sie Blocks gründlich vor dem Produktionseinsatz.
Verfügbare Block-Kategorien¶
Kubernetes Applications (k8sapp)¶
Deployment von Anwendungen auf Kubernetes-Clustern:
- postgres-base - PostgreSQL mit CloudNativePG Operator
- redis-base - Redis mit Sentinel HA
- mongodb-base - MongoDB mit Replica Sets
- nginx-base - NGINX Ingress Controller
- cert-manager-base - Let's Encrypt Certificate Management
- harbor-base - Container Registry und Vulnerability Scanning
- grafana-base - Monitoring und Visualisierung
- prometheus-base - Metrics Collection und Alerting
- vault-base - Secrets Management
- rabbitmq-base - Message Broker
Kubernetes Clusters (k8scluster)¶
Provisioning von Kubernetes-Clustern:
- k3s-base - Lightweight K3s Cluster
- rke2-base - Rancher RKE2 Cluster
- talos-base - Talos Linux Kubernetes
- kubeadm-base - Vanilla Kubernetes mit kubeadm
Linux Applications (linuxapp)¶
Configuration Management für Linux-Server:
- docker-host-base - Docker Host Setup
- haproxy-base - Load Balancer
- nfs-server-base - Network File System
- backup-server-base - Borg Backup Server
Docker Applications (dockerapp)¶
Docker Compose Deployments:
- wordpress-base - WordPress mit MySQL
- nextcloud-base - Nextcloud File Sharing
- gitea-base - Git Server
- mailserver-base - Complete Mail Server Stack
Libraries (library)¶
Wiederverwendbare Basis-Blocks:
- base - Generischer Basis-Block für alle Typen
- ansible-base - Ansible-spezifische Helper
- terraform-base - Terraform-spezifische Helper
Blocks vom Hub nutzen¶
Direkt pullen¶
# Neueste Version pullen
polycrate blocks pull postgres-base
# Spezifische Version pullen
polycrate blocks pull postgres-base:1.2.0
# Mit vollständiger Hub-URL
polycrate blocks pull hub.polycrate.io/ayedo/k8s/postgres-base:1.2.0
In workspace.poly referenzieren¶
name: my-workspace
blocks:
# Short form (ohne Registry-URL)
- name: my-postgres
from: postgres-base:1.2.0
config:
namespace: production
app:
persistence:
size: 100Gi
# Long form (mit vollständiger Hub-URL)
- name: my-redis
from: hub.polycrate.io/ayedo/k8s/redis-base:1.0.0
config:
namespace: production
Mit auto-pull verwenden¶
# Dependencies werden automatisch vom Hub gepullt
polycrate run my-postgres install --blocks-auto-pull
Hub-Integration¶
graph TB
Hub[PolyHub<br/>hub.polycrate.io] --> Search[Block Search]
Hub --> Browse[Browse Categories]
Hub --> Docs[Documentation]
Search --> Pull[polycrate blocks pull]
Browse --> Pull
Docs --> Pull
Pull --> Local[Lokaler Workspace]
Local --> Extend[Anpassen via Vererbung]
Extend --> Deploy[Deploy]
User[Entwickler] --> Search
User --> Browse
style Hub fill:#e1f5ff
style Local fill:#e1ffe1
style Deploy fill:#fff4e1 Praktische Beispiele¶
Beispiel 1: PostgreSQL Deployment¶
# 1. Block vom Hub pullen
polycrate blocks pull postgres-base:1.2.0
# 2. Eigenen Block erstellen der davon erbt
cat > workspace.poly <<EOF
name: my-workspace
blocks:
- name: prod-postgres
from: postgres-base:1.2.0
config:
namespace: production
app:
replicas: 3
persistence:
size: 100Gi
storageClass: fast-ssd
backup:
enabled: true
schedule: "0 2 * * *"
EOF
# 3. Deployen
polycrate run prod-postgres install --blocks-auto-pull
Beispiel 2: Complete Monitoring Stack¶
name: monitoring-workspace
blocks:
- name: prometheus
from: prometheus-base:2.0.0
config:
namespace: monitoring
retention: 30d
storage: 50Gi
- name: grafana
from: grafana-base:1.5.0
config:
namespace: monitoring
datasources:
- name: Prometheus
type: prometheus
url: http://prometheus:9090
- name: alertmanager
from: alertmanager-base:1.0.0
config:
namespace: monitoring
slack:
webhook_url: https://hooks.slack.com/services/xxx
workflows:
- name: deploy-monitoring
steps:
- name: deploy-prometheus
block: prometheus
action: install
- name: deploy-grafana
block: grafana
action: install
- name: deploy-alertmanager
block: alertmanager
action: install
Beispiel 3: K3s Cluster mit Apps¶
name: k3s-stack
blocks:
# Cluster provisioning
- name: k3s-cluster
from: k3s-base:1.0.0
config:
servers: 3
agents: 5
version: v1.28.5+k3s1
# Apps auf Cluster
- name: nginx-ingress
from: nginx-base:1.0.0
kubeconfig:
from: k3s-cluster
- name: cert-manager
from: cert-manager-base:1.0.0
kubeconfig:
from: k3s-cluster
- name: my-app
from: webapp-base:1.0.0
kubeconfig:
from: k3s-cluster
config:
domain: myapp.example.com
replicas: 3
workflows:
- name: deploy-complete-stack
steps:
- name: provision-cluster
block: k3s-cluster
action: provision
- name: setup-ingress
block: nginx-ingress
action: install
- name: setup-certs
block: cert-manager
action: install
- name: deploy-app
block: my-app
action: deploy
Block-Suche¶
Im PolyHub Browser¶
Besuchen Sie hub.polycrate.io und nutzen Sie:
- Search Bar - Volltextsuche über alle Blocks
- Categories - Browsen nach Block-Typ (k8sapp, linuxapp, etc.)
- Tags - Filtern nach Tags (database, monitoring, etc.)
- Popular - Meistgenutzte Blocks
- Recent - Neueste Releases
Via CLI¶
# Blocks durchsuchen (zukünftiges Feature)
polycrate hub search postgres
# Block-Details anzeigen
polycrate hub inspect postgres-base
# Verfügbare Versionen
polycrate hub versions postgres-base
Block-Dokumentation¶
Jeder Block auf PolyHub hat standardisierte Dokumentation:
README.md¶
Enthält: - Block-Beschreibung und Features - Voraussetzungen - Installation und Usage - Konfigurationsoptionen - Beispiele - Troubleshooting
CHANGELOG.poly¶
Versionierte Änderungshistorie:
- version: 1.2.0
date: 2025-01-30
changes:
- Added automated backup support
- Improved high-availability configuration
- Fixed connection pooling issues
breaking_changes:
- Renamed config.replicas to config.app.replicas
- version: 1.1.0
date: 2025-01-15
changes:
- Added monitoring integration
- Performance improvements
block.poly¶
Vollständige Block-Konfiguration mit: - Alle verfügbaren Actions - Config-Schema (als Beispiel) - Dependencies - Default-Werte
Best Practices¶
1. Pinne Versionen¶
# ✅ Gut: Spezifische Version
from: postgres-base:1.2.0
# ❌ Schlecht: Latest (kann unerwartet brechen)
from: postgres-base:latest
2. Lese die Dokumentation¶
# Block lokal pullen um Doku zu lesen
polycrate blocks pull postgres-base:1.2.0
# README lesen
cat blocks/postgres-base/README.md
# Changelog prüfen
cat blocks/postgres-base/CHANGELOG.poly
3. Teste in Staging zuerst¶
# Staging environment
blocks:
- name: staging-postgres
from: postgres-base:1.3.0 # Neue Version testen
config:
namespace: staging
# Production environment (alte Version)
blocks:
- name: prod-postgres
from: postgres-base:1.2.0 # Bewährte Version
config:
namespace: production
4. Customization via Vererbung¶
# Basis-Block vom Hub
- name: custom-postgres
from: postgres-base:1.2.0
config:
namespace: production
# Nur nötige Werte überschreiben
app:
persistence:
size: 200Gi # Custom value
# Alles andere wird geerbt
5. Updates regelmäßig prüfen¶
# Prüfe verfügbare Versionen
polycrate hub versions postgres-base
# Neuere Version pullen
polycrate blocks pull postgres-base:1.3.0
# Changelog review
cat blocks/postgres-base/CHANGELOG.poly
# Testen, dann workspace.poly updaten
Community und Contribution¶
Feature Requests¶
Wenn Sie ein Feature für einen Hub-Block wünschen:
- Prüfen Sie die Block-Dokumentation
- Öffnen Sie ein Issue im Block-Repository
- Beschreiben Sie Use Case und gewünschte Funktionalität
Bug Reports¶
Falls Sie einen Bug finden:
- Prüfen Sie ob Bug bereits gemeldet wurde
- Sammeln Sie Informationen:
- Block-Name und Version
- Polycrate Version
- Fehlermeldung / Logs
- Reproduktionsschritte
- Öffnen Sie ein Issue mit diesen Details
Eigene Blocks vorschlagen¶
Um einen Block zum PolyHub beizutragen:
- Entwickeln Sie den Block
- Dokumentieren Sie ihn vollständig (README, CHANGELOG)
- Testen Sie ihn gründlich
- Kontaktieren Sie ayedo für Review
- Nach Approval wird er auf PolyHub veröffentlicht
Hub vs. Private Registry¶
| Aspekt | PolyHub | Private Registry |
|---|---|---|
| Zugriff | Öffentlich | Team/Organization only |
| Use Case | Standard-Patterns | Custom/Proprietary Logic |
| Lizenz | Apache 2.0 | Beliebig |
| Support | Community | Team-intern |
| Updates | Von ayedo | Self-managed |
Recommendation: - Nutzen Sie PolyHub als Basis für Standard-Patterns - Erstellen Sie eigene Blocks (erben von Hub) für Custom-Logic - Teilen Sie diese in Private Registry mit Ihrem Team
# Kombinierter Ansatz
blocks:
# Basis von PolyHub
- name: company-postgres-base
from: hub.polycrate.io/ayedo/postgres-base:1.2.0
# Pushen zur Company Registry
# polycrate blocks push registry.company.com/infra/postgres-base
# Custom App verwendet Company Block
- name: my-app-postgres
from: registry.company.com/infra/postgres-base:1.0.0
config:
namespace: production
Zusammenhang mit anderen Konzepten¶
- Registry: PolyHub ist eine spezielle OCI-Registry
- Dependencies: Hub-Blocks sind Dependencies
- Vererbung: Hub-Blocks werden häufig als Basis-Blocks vererbt
- Blocks: PolyHub verteilt Blocks
PolyHub Quickstart
Browsen Sie hub.polycrate.io, finden Sie passende Blocks, pullen Sie sie mit polycrate blocks pull, passen Sie sie via Vererbung an und deployen Sie mit --blocks-auto-pull!