Empfehlungen¶
Kurze Betriebsregeln für Workspaces und Blocks. Schema und Feldreferenzen stehen in den Konzeptseiten — hier nur das „wie wir’s machen“.
Workspace-Organisation¶
Speicherort und Struktur¶
Workspaces unter $HOME/.polycrate/workspaces/<organization>/<workspace>/ ablegen, damit polycrate workspace list, polycrate workspace clone und die üblichen Pfade stimmen.
acme-production-1/
├── workspace.poly
├── secrets.poly # bzw. secrets.poly.age
├── CHANGELOG.poly
├── Dockerfile.poly # optional
├── inventory.yml # optional, ein Inventory pro Workspace
├── blocks/
├── artifacts/
└── README.md
Naming¶
Schema: <org>-<purpose>-<count> (z. B. acme-production-1). Organization-Namen slugifiziert (acme, nicht ACME Corp.).
→ Regex und Regeln: Namenskonventionen
Eine Umgebung = ein Workspace¶
Keine Env-Variablen oder Templates in .poly-Dateien. Production und Staging sind getrennte Workspaces mit eigenen literalen Werten.
# acme-production-1/workspace.poly
name: acme-production-1
organization: acme
blocks:
- name: my-app
from: cargo.ayedo.cloud/acme/k8s/my-app:1.0.0
config:
replicas: 3
→ Warum keine Substitution: Konfiguration
Git und Changelog¶
- Regelmäßig
polycrate git sync(oder add/commit/pull/push). - Workspace-Änderungen in
CHANGELOG.polymitführen; anzeigen mitpolycrate workspace changelog.
→ Git
Inventory und Kubeconfig¶
Pro Workspace ein Inventory (inventory.yml im Root) und eine Kubeconfig (artifacts/secrets/kubeconfig.yml). kubeconfig.from / inventory.from an Block-Instanzen sind Legacy.
Blocks¶
Versionen¶
- Immer explizites Tag im
from::…/block:1.2.3, nie bare /:latestin Production. - Eine installierte Block-Version ist ein Singleton im Workspace — nach
blocks pullalle Instanzen anpassen, dann validieren:
→ Details: Dependencies – Singletons · Blöcke
Metadaten, Examples, CVE¶
Feldkataloge und Schema gehören in die Block-Doku:
| Thema | Quelle |
|---|---|
Empfohlene block.poly-Felder | Blöcke – Metadaten |
examples.poly | Blöcke – Examples |
vulnerability.products | Blöcke – Vulnerability Products · API |
Kurzregeln für Template-Blocks (Hub/Catalogue):
display_name,icon_url,kind/type/flavor,app_version, Upstream-URLs setzen.- Mindestens ein Example in
examples.poly. - Für CVE-Matching:
vulnerability.productspflegen. - Nach
blocks push(CLI ≥ 0.51.3): API-display_name= Registry-URL; menschenlesbarer Titel bleibt inblock.polyfür Hub/lokal.
Block-Schnitt¶
Ein App-Block = eine App = ein Chart = ein Namespace. Dependencies (DB, Cache) als eigene Blocks. CHANGELOG.poly am Block pflegen (SemVer, Conventional-Commit-type).
Polycrate-Labels unter block.labels an Helm/Manifeste durchreichen.
Actions und Workflows¶
Übliche Action-Namen: install, uninstall, update, backup/restore, status, validate. Kritische Schritte mit prompt:; in CI --force. Actions idempotent halten (Ansible).
Workflows für wiederkehrende Ketten (deploy-production, backup-databases); bei Bedarf allow_failure nur bewusst setzen.
Container¶
Image ist Ubuntu/Debian (apt-get, nicht apk). Zusätzliche Tools über Dockerfile.poly. Extra-Mounts: polycrate run … --mount host:container.
→ Der Polycrate Container · Konfiguration – Container
Sicherheit¶
- Pro Workspace eigene SSH-Keys unter
artifacts/secrets/(beiworkspace init); keine persönlichen Keys kopieren. - Sensible Workspaces verschlüsseln:
polycrate workspace encrypt. - Secrets nur in
secrets.poly(bzw..age), nie inworkspace.poly. Keine Env-Subst in.poly.
→ Workspace-Verschlüsselung · SSH
Logging¶
| Level | Einsatz |
|---|---|
| 0 | CI / minimal |
| 1 | Alltag (Default) |
| 2 | Debug einer Action |
| 3 | Trace (selten) |
Konfiguration (Verweis)¶
YAML-Anker in workspace.poly technisch möglich, aber nicht empfohlen (CLI/API schreiben die Datei neu). Wiederkehrende Werte literal setzen.