Annotations und Labels Best Practices
Annotations und Labels
Best Practices für die Verwendung von Kubernetes Annotations und Labels.
Was sind Labels?
Labels sind Key-Value-Paare, die an Kubernetes-Objekte angehängt werden. Sie werden verwendet, um Objekte auszuwählen und zu gruppieren. Sie werden oft verwendet, um Objekte nach Umgebung (z.B. env=prod, env=staging, env=dev), nach Applikation (z.B. app=myapp) oder nach Team (z.B. team=myteam) zu gruppieren.
Sie können auch verwendet werden, um Objekte nach anderen Kriterien zu gruppieren, zum Beispiel um Objekte für spezifische Tools und Bibliotheken auszuwählen (wie Ingress Controller, Prometheus oder ArgoCD).
Was sind Annotations?
Annotations sind Key-Value-Paare, die an Kubernetes-Objekte angehängt werden. Im Gegensatz zu Labels, die verwendet werden, um Objekte auszuwählen und zu gruppieren, werden Annotations verwendet, um beliebige, nicht-identifizierende Metadaten anzuhängen. Diese Daten werden oft von Tools und Bibliotheken (wie Ingress Controller, Prometheus oder ArgoCD) verwendet, um spezifische Verhalten oder Konfigurationen auszulösen.
Offizielle Kubernetes Annotations Dokumentation
Häufige Labels und Annotations für Natron
Natron verwendet Labels und Annotations, um das Verhalten seiner Komponenten zu steuern. Die folgenden Labels und Annotations werden von Natron verwendet:
gitops.natron.io/allow-prometheus: Erlaubt Prometheus, den Metrics-Endpoint zu scrapen.gitops.natron.io/allow-ingress-internal
Namespace Labels
| Key | Values | Beschreibung |
|---|---|---|
pod-security.kubernetes.io/enforce | privileged baseline restricted | Pod Security Standards. Siehe auch Pod Security Standards. |
pod-security.kubernetes.io/enforce-version | z.B. v1.33 | Version von Kubernetes PSS. |
gitops.natron.io/trusted | true | Trusted Label (z.B. für Kyverno Policies), das nur für alle Natron Managed Namespaces gelten sollte. |
Pod Labels
Gemäss Well-Known Labels, Annotations and Taints.
| Key | Values | Beschreibung |
|---|---|---|
topology.kubernetes.io/region | nts-north nts-south | RZ Standort |
topology.kubernetes.io/zone | nts-north-1 nts-north-2 nts-south-1 nts-south-2 | Stromkreis im Rack, 1 & 2 sind verschiedene Kreise (noch nicht implementiert) |
cilium.io/bgp-peering-policy | pfsense | Cilium BGP-Peering-Policy (siehe Service Announcements) |
gitops.natron.io/allow-ingress-external | true | Erlaubt Ingress Controller Pod, Pods in anderen Namespaces zu erreichen |
gitops.natron.io/allow-ingress-internal | true | Erlaubt Ingress Controller Pod, Pods in anderen Namespaces zu erreichen |
gitops.natron.io/allow-prometheus | true | Erlaubt Prometheus Pod, Pods in anderen Namespaces zu erreichen |
gitops.natron.io/allow-teleport | true | Erlaubt teleport-kube-agent Pod, Pods in anderen Namespaces zu erreichen |
gitops.natron.io/lb-pool | internal external … | Service Label Selektor für CiliumLoadBalancerIPPool |
gitops.natron.io/loki-rule | true | Loki Alerting-Rule Label (Siehe Loki Alerting) |
grafana_dashboard | {tenant-number} (z.B. 1) | Grafana Dashboard Label |
Annotations
| Key | Values | Beschreibung |
|---|---|---|
gitops.natron.io/application | - | Name der Applikation |
gitops.natron.io/customer | - | Name des Kunden |
gitops.natron.io/stage | poc dev test prod … | Name der Stage |