Warum Polycrate

Benutzerfreundliches Interface

Mit Hilfe von simplen Actions können komplexe, vor-konfigurierte Infrastruktur-Prozesse abstrahiert und technisch weniger versierten Anwendern zugänglich gemacht werden.

# block.poly
name: nginx
actions:
  - name: install
    script:
      - kubectl run nginx --image=nginx --port=80
  - name: uninstall
    script:
      - kubectl delete deployment nginx
  - name: status
    script:
      - kubectl get deployment nginx

Obige Actions können ohne Kenntnis der eigentlichen Implementierung durch den Anwender ausgeführt werden:

  • polycrate run nginx install
  • polycrate run nginx status
  • polycrate run nginx uninstall

Cloud-native Toolchain im Gepäck

Polycrate hat cloud-native Tools wie Ansible, Terraform oder Python im Gepäck. Dadurch können Anwender direkt mit der Entwicklung von Blöcken und Programm-Logik beginnen, ohne sich Gedanken zu machen, welche Version von Ansible sie für Ihr Betriebssystem installieren müssen und ob diese Version Abhängigkeits-Probleme mit älteren Python-Versionen hervorruft.

Komplexe Prozesse einfach abstrahiert

Um Actions auszuführen ist kein Wissen über die eigentliche Implementierung einer Action notwendig. Ein Polycrate Workspace kann als sehr simples, benutzer-freundliches Interface für komplexe Anwendungs-Logik gestaltet werden - es liegt ganz in der Hand des Workspace Entwicklers, die komplexität des Workspaces vor dem Benutzer zu verstecken und ihm einfache Mittel an die Hand zu geben, Infrastruktur mit Hilfe des Workspace zu verwalten.

Nur eine Konfigurations-Datei

Ein Workspace wird über eine einzelne Datei - die Workspace Konfigurations-Datei (workspace.poly) beschrieben und konfiguriert. Alle Blöcke eines Workspace erben von dieser Datei. Das macht es unglaublich einfach, selbst komplexe Systeme an einer zentralen Stelle zu beschreiben und instrumentierbar zu machen.

Keine neue Sprache

Polycrate baut auf Industrie-Standards wie YAML auf. Im Gegensatz zu Tools wie Terraform ist es nicht nötig, eine neue DSL oder Programmiersprache zu lernen, um mit Polycrate Erfolge zu erzielen.

Für Teamwork gemacht

Blöcke mit verständlichen Actions erlauben es auch nicht-technischen Kollegen Tasks rund um einen Workspace zu übernehmen, ohne die Implementierungs-Details (z.B. Terraform) zu kennen. Das Installieren von Anwendungen oder Infrastruktur kann so einfach sein wie polycrate run app install oder polycrate run app restart.

# block.poly
name: myapp
kubeconfig:
  from: aks
actions:
  - name: dns-logs
    script:
      - kubectl --namespace kube-system logs -l k8s-app=kube-dns
  - name: ingress-logs
    script:
      - kubectl --namespace ingress-nginx logs -l app.kubernetes.io/name=ingress-nginx
  - name: restart-myapp
    script:
      - kubectl rollout restart deployment myapp

Funktioniert mit existenten Tools

Es ist nicht nötig, existierenden Code für die Arbeit mit Polycrate umzuschreiben. Polycrate kann wie eine Runtime betrachtet werden, die Code einfach nur ausführt. Entsprechend kann z.B. aus einem existenten Python-Script, das Daten aus einem Zielsystem abholt, einfach ein Block gemacht werden, der dann im Workspace nutzbar ist:

# block.poly
name: random-data
actions:
  - name: get
    script:
      - python get-random-data.py
  - name: delete
    script:
      - python delete-random-data.py

Mit Ansible integriert

Polycrate hat eine sehr tiefe Integration in Ansible, welches Unterstützung für die meisten der aktuell verfügbaren Systeme und Provider im cloud-nativen Ökosystem mitbringt. Dadurch ergeben sich zahlreiche Möglichkeiten, mit Ansible Automatisierungen zu erstellen, Kubernetes oder Docker Deployments zu machen oder Infrastruktur bei einem Cloud-Provider zu erstellen.

# block.poly
name: docker
inventory:
  from: servers
actions:
  - name: install
    script:
      - ansible-playbook install.yml

Polycrate stellt sicher, dass Ansible ein gültiges Inventory zur Verfügung gestellt wird und Verbindungs-relevante Komponenten wie SSH-Keys oder ein Kubeconfig-File bei Ausführung von Ansible richtig integriert sind.

Block-Registry

Polycrate nutzt OCI-kompatible Registries als Medium um Blöcke mit Anderen teilen zu können. Blöcke können mit Polycrate in eine Registry gepusht oder aus einer Registry gepullt werden, was auf Workspace-Ebene ein seichtes Dependency-Management ermöglicht.

Häufig genutzte Blöcke können generalisiert und der Allgemeinheit oder anderen internen Teams zur Nutzung zur Verfügung gestellt werden.

Polycrate macht keinen Unterschied zwischen SaaS-Registries wie dem Docker Hub oder selbst-gehosteten Registries wie Harbor oder der offiziellen Docker Container Registry. Blöcke werden verpackt wie reguläre Docker Images und können auch ohne die Polycrate CLI mittels docker pull oder docker push transportiert werden.

  • Block pullen: polycrate block pull ayedo/hcloud/k8s:0.0.1
  • Block pushen: polycrate block push my-registry.io/my/secret/block

Block-Namen können analog zum Verhalten von Docker mit oder ohne Registry-Prefix definiert werden. Wird das Prefix ausgelassen, fällt Polycrate zurück auf die Default Registry des Polycrate Hub: cargo.ayedo.cloud

Mit Git integriert

Ein Workspace ist wie eine Blackbox und enthält alle nötigen Informationen und Komponenten um zu funktionieren. Entsprechend kann ein Workspace mit Hilfe von Git versioniert, verwaltet und mit anderen geteilt werden.

Polycrate hat außerdem eine automatische Logging-Funktion, die bei Ausführung der CLI getriggert wird und Informationen zum letzten Stand des Workspaces bei Ausführung einer Action in Form eines Snapshots im Workspace persistiert und (sofern mit Git integriert) die Änderungen in Form eines Commits im Repository festhält.

Kontaktieren Sie uns

Unsere Container-Experten beraten Sie gerne und individuell.

Fleet Team
Fleet Team
Fleet Team
Fleet Team
Fleet Team
Fleet Team
Fleet Team

Wir antworten in der Regel innerhalb weniger Stunden auf Ihre Nachricht.