PerfectScalePerfectScale

PerfectScale

Kubecost Helm-Chart: 2.x vs. 3.x, Installation und 6 Best Practices

Diese Seite ist auch in English, Español, Français, Italiano, 日本語 und Português verfügbar.

Tania Duggal
By Tania Duggal
Oct 16, 202611 min read

Was ist das Kubecost Helm-Chart?

Sie können Kubecost über das offizielle Helm-Chart aus dem cost-analyzer-Repository installieren. Dieses Chart ist ein Paket, um Kubecost mit Helm in einem Kubernetes-Cluster bereitzustellen. Es definiert die Kubernetes-Ressourcen, die Kubecost benötigt, etwa Deployments, Services, Konfiguration und zugehörige Komponenten. Helm verwaltet diese Ressourcen als ein einziges Release, wodurch sich Kubecost einfacher installieren, aktualisieren, konfigurieren und entfernen lässt.

Was das Chart enthält:

Das Kubecost Helm-Chart bündelt die Kubernetes-Ressourcen und konfigurierbaren Abhängigkeiten, die für den Betrieb von Kubecost erforderlich sind. Je nach konfigurierten Values kann das Kubecost-Anwendungskomponenten, die Prometheus-Integration, Kubernetes-Metrik-Komponenten, persistenten Storage, Services und Ingress, Monitoring-Ressourcen, die Erfassung von Netzwerkkosten, Network Policies sowie Pricing-Integrationen der Cloud-Anbieter umfassen.

Best Practices für die Konfiguration:

  • Kubecost Helm-Chart-Versionen pinnen: Geben Sie eine explizite Chart-Version an, um Deployments vorhersehbar zu halten und unerwartete Änderungen durch neuere Releases zu vermeiden.
  • Helm-Values in der Versionskontrolle pflegen: Legen Sie Konfigurations-Overrides in einer versionierten values.yaml-Datei ab und halten Sie Zugangsdaten und andere Secrets aus dem Repository heraus.
  • Separate Values-Dateien für verschiedene Umgebungen verwenden: Pflegen Sie umgebungsspezifische Konfigurationen für Entwicklung, Staging und Produktion, statt Chart-Manifeste zu duplizieren oder zu verändern.
  • Passende Resource Requests und Limits setzen: Dimensionieren Sie die CPU- und Speichereinstellungen der Kubecost-Komponenten entsprechend der Clustergröße und passen Sie sie anhand des beobachteten Ressourcenverbrauchs an.
  • Persistenten Storage für die Produktion konfigurieren: Wählen Sie eine geeignete Kapazität für Persistent Volumes und eine zuverlässige StorageClass auf Basis Ihrer Anforderungen an Aufbewahrung, Wachstum, Backup und Wiederherstellung.
  • Helm-Upgrades vor der Produktion testen: Validieren Sie neue Chart-Versionen und bestehende eigene Values in einer Nicht-Produktionsumgebung und halten Sie einen getesteten Rollback-Pfad bereit.

In diesem Artikel:

Die zwei Kubecost Helm-Charts: cost-analyzer vs. kubecost

Diagramm zum Vergleich der Kubecost Helm-Charts 2.x und 3.x: 2.x nutzt das cost-analyzer-Chart und den cost-model-Agent, 3.x nutzt das kubecost-Chart, den finops-agent und ClickHouse-basierten Storage; der Upgrade-Pfad verläuft von 2.8 über 2.9 zu 3.0

Kubecost hat inzwischen zwei Helm-Chart-Linien, denen Administratoren begegnen können: das ältere cost-analyzer-Chart für Kubecost-2.x-Deployments und das neuere kubecost-Chart, das mit Kubecost 3.x eingeführt wurde. Das aktuelle Kubecost-Repository weist Version 2.8 als letztes Feature-Release der 2.x-Linie aus, Version 2.9 als Zwischenschritt für das Upgrade und Version 3.0 als erstes Kubecost-3.x-Release.

Das cost-analyzer-Chart ist die Legacy-Deployment-Methode, die durchgängig in Kubecost 2.x verwendet wurde. Bestehende Umgebungen referenzieren möglicherweise weiterhin Befehle wie kubecost/cost-analyzer, und Kubecost pflegt für ältere Deployments und Upgrade-Szenarien nach wie vor die zugehörigen Repositories.

Für Kubecost 3.x heißt das primäre Chart nun kubecost. Neue Installationen nutzen das Chart kubecost/kubecost aus dem Kubecost-Helm-Repository. Kubecost 3.x bringt zudem erhebliche Architekturänderungen mit, darunter ClickHouse-basierten Storage und einen neuen finops-agent, der den bisherigen cost-model-Agent aus 2.x ersetzt.

Organisationen, die ein bestehendes Kubecost-2.x-Deployment aktualisieren, sollten den Wechsel daher nicht als bloße Umbenennung des Charts behandeln. Kubecost empfiehlt, die Agents vor dem Wechsel zu 3.x zunächst auf Version 2.9 zu aktualisieren und die Zwischenversion eine Zeit lang laufen zu lassen, bevor die Migration abgeschlossen wird. Bestehende cost-analyzer-Values sollten außerdem geprüft werden, statt anzunehmen, dass sie sich direkt auf das neue kubecost-Chart übertragen lassen – denn Komponentennamen, Storage-Architektur und Konfigurationsoptionen haben sich geändert.

Was das Helm-Chart enthält

Das Kubecost Helm-Chart enthält die Kubernetes-Templates und konfigurierbaren Abhängigkeiten, die für den Betrieb von Kubecost erforderlich sind. Welche Ressourcen genau bereitgestellt werden, hängt von der Chart-Version und den aktivierten Values ab, in der Regel deckt das Chart jedoch folgende Komponenten ab:

  • Kubecost-Anwendungskomponenten: Deployments, Services, ConfigMaps, Secrets, Service Accounts und weitere Ressourcen, die für den Betrieb von Kubecost und seine Funktionen zum Kosten-Monitoring erforderlich sind.
  • Metrik-Erfassung (finops-agent): Das Chart stellt den finops-agent bereit, einen schlanken Agent, der die Cluster-Metriken erfasst, die Kubecost für die Kostenzuordnung nutzt – ohne separates Prometheus-Deployment.
  • Kubernetes-Metrik-Komponenten: Je nach Konfiguration kann das Chart unterstützende Komponenten wie kube-state-metrics und den Node Exporter bereitstellen, die Metriken zu Kubernetes-Objekten und Nodes liefern.
  • Persistenter Storage: Über Helm-Values lassen sich Persistent Volume Claims für Kubecost- und Prometheus-Daten anlegen, mit konfigurierbaren Speichergrößen und StorageClasses.
  • Ingress- und Service-Konfiguration: Das Chart bietet Einstellungen, um Kubecost über Kubernetes Services verfügbar zu machen – und, wenn aktiviert, über einen Ingress mit konfigurierbaren Hosts, Pfaden, Annotations und TLS-Einstellungen.
  • Monitoring-Ressourcen: Optionale Ressourcen wie ServiceMonitor und PrometheusRule können für Umgebungen mit dem Prometheus Operator erstellt werden.
  • Optionale Features und Integrationen: Über Helm-Values lassen sich zusätzliche Funktionen wie die Erfassung von Netzwerkkosten, Network Policies, Pricing-Integrationen der Cloud-Anbieter und weitere Kubecost-Features aktivieren – ohne die generierten Kubernetes-Manifeste manuell zu verändern.

Da diese Komponenten über die values.yaml des Charts gesteuert werden, können Organisationen gezielt nur die benötigten Ressourcen aktivieren oder Kubecost in bereits vorhandene Monitoring- und Infrastrukturkomponenten im Cluster integrieren.

Passender Lesetipp: Unser Leitfaden zur Kubernetes-Kostenoptimierung

So installieren Sie Kubecost mit Helm

Kubecost lässt sich mit Helm installieren, indem Sie das offizielle Kubecost-Chart-Repository hinzufügen und das Chart in einem dedizierten Namespace bereitstellen. Das aktuelle Helm-Chart-Repository von Kubecost stellt das Chart kubecost/kubecost für Kubecost 3.x bereit.

Fügen Sie zunächst das Kubecost-Helm-Repository hinzu und aktualisieren Sie Ihren lokalen Chart-Index:

Terminal window
helm repo add kubecost https://kubecost.github.io/kubecost/
helm repo update

Installieren Sie Kubecost anschließend in einem kubecost-Namespace:

Terminal window
helm install kubecost kubecost/kubecost \
--namespace kubecost \
--create-namespace

Kubecost unterstützt auch die Installation direkt über die Repository-URL. Das offizielle Beispiel setzt global.clusterId, um den Cluster zu identifizieren:

Terminal window
helm install kubecost \
--repo https://kubecost.github.io/kubecost kubecost \
--namespace kubecost \
--create-namespace \
--set global.clusterId=my-cluster

Vor dem Deployment in die Produktion können Sie die von einer bestimmten Chart-Version unterstützten Values einsehen:

Terminal window
helm show values kubecost/kubecost --version <chart-version>

Anschließend können Sie die benötigte Konfiguration in einer eigenen values.yaml-Datei ablegen und Kubecost so installieren:

Terminal window
helm install kubecost kubecost/kubecost \
--namespace kubecost \
--create-namespace \
--values values.yaml

Eine Values-Datei erleichtert es, Konfigurationen für Storage, Ressourcenzuweisung, Monitoring und Kubecost-Komponenten zu versionieren und zu reproduzieren. Das offizielle Kubecost-Repository empfiehlt außerdem, bei der Wahl eines Releases die Kompatibilität von Chart- und Kubernetes-Version zu prüfen; so zielen die Kubecost-3.0-Charts beispielsweise auf neuere Kubernetes-Versionen ab als die letzten Kubecost-2.x-Releases.

Kubecost Helm-Chart vs. Kubernetes-Manifeste

Sowohl Helm-Charts als auch Kubernetes-Manifeste eignen sich, um Anwendungen in Kubernetes bereitzustellen – sie verwalten Konfiguration jedoch unterschiedlich. Kubecost empfiehlt Helm als primäre Installationsmethode; das offizielle Chart bündelt die benötigten Ressourcen und macht die Konfiguration über Helm-Values zugänglich.

Kubecost Helm-Chart Kubernetes-Manifeste
Deployment Installiert Kubecost als Helm-Release auf Basis eines paketierten Charts. Ressourcen werden direkt mit kubectl apply angewendet.
Konfiguration Einstellungen werden zentral in values.yaml gepflegt oder per --set übergeben. Konfigurationsänderungen erfolgen durch das Bearbeiten einzelner YAML-Ressourcendefinitionen.
Upgrades Helm verfolgt das Release und kann Chart-Versions- und Konfigurationsänderungen per helm upgrade anwenden. Aktualisierte Manifeste müssen in der Regel manuell angewendet und gepflegt werden.
Anpassung Chart-Values bieten konfigurierbare Optionen für Komponenten, Storage, Prometheus, Resource Limits und weitere Einstellungen. Bietet direkte Kontrolle über jedes Kubernetes-Objekt, erfordert aber mehr manuelle Pflege.
Reproduzierbarkeit Eine Chart-Version plus Values-Datei macht das Deployment über Cluster hinweg leichter reproduzierbar. Teams müssen ihre eigene Manifest-Sammlung pflegen und synchron halten.
Lifecycle-Management Helm bietet integrierte Release-Installation, Upgrades, Rollback-Funktionen und Deinstallation. Kubernetes verwaltet einzelne Ressourcen statt eines Helm-Release-Lifecycles.
Am besten geeignet für Die meisten Kubecost-Deployments, insbesondere Umgebungen mit Bedarf an reproduzierbarer Konfiguration und fortlaufenden Upgrades. Umgebungen, die ausdrücklich direkte Kontrolle über statische Kubernetes-Ressourcen benötigen oder Helm nicht einsetzen können.

Kubecost bietet historisch auch ein Deployment per statischer Manifeste als Alternative an, die Dokumentation empfiehlt jedoch Helm – insbesondere für Produktions-Deployments. Helm erleichtert zudem das Anpassen von Abhängigkeiten und Einstellungen (zum Beispiel, ob Kubecost die mitgelieferten Monitoring-Komponenten oder bestehende Infrastruktur nutzt), ohne modifizierte Kopien jeder einzelnen Kubernetes-Ressource pflegen zu müssen.

Best Practices für das Kubecost Helm-Chart

Nachfolgend einige bewährte Vorgehensweisen für die Arbeit mit dem Kubecost Helm-Chart.

1. Kubecost Helm-Chart-Versionen pinnen

Geben Sie eine explizite Kubecost-Chart-Version an, statt Helm automatisch das neueste verfügbare Release installieren zu lassen. Helm unterstützt die Auswahl einer bestimmten Chart-Version über die Option --version; wird sie weggelassen, kann die neueste Chart-Version ausgewählt werden.

Das Pinnen von Versionen macht Deployments vorhersehbarer und verhindert, dass eine automatisierte Installation oder CI/CD-Pipeline unerwartet ein neueres Chart mit geänderten Defaults oder Abhängigkeiten übernimmt. Prüfen Sie Release Notes und Kompatibilitätsanforderungen von Kubecost, bevor Sie die gepinnte Version gezielt aktualisieren.

2. Helm-Values in der Versionskontrolle pflegen

Legen Sie die Kubecost-Konfiguration, die Sie überschreiben, in einer dedizierten values.yaml-Datei ab und verwalten Sie diese in der Versionskontrolle. Helm-Values sind der Standardmechanismus, um Chart-Defaults zu überschreiben – einschließlich Einstellungen für Anwendungskomponenten, Storage, Ingress und weitere Deployment-Optionen.

Versionskontrolle liefert eine Historie der Konfigurationsänderungen und erleichtert es, Kubecost-Deployments zu prüfen, zu reproduzieren oder zurückzusetzen. Legen Sie Zugangsdaten oder andere sensible Secrets nicht direkt im Repository ab; nutzen Sie stattdessen einen geeigneten Kubernetes- oder externen Secrets-Management-Mechanismus.

3. Separate Values-Dateien für verschiedene Umgebungen verwenden

Pflegen Sie separate Values-Dateien für Entwicklung, Staging und Produktion, wenn diese Umgebungen unterschiedliche Kubecost-Konfigurationen erfordern. Helm ist darauf ausgelegt, dasselbe Chart mit unterschiedlichen Values bereitzustellen – so entfällt die Pflege separater Kopien der zugrunde liegenden Kubernetes-Manifeste.

Die Produktion kann beispielsweise größere Persistent Volumes und Ressourcenzuweisungen nutzen, während ein Entwicklungscluster mit kleineren Einstellungen auskommt. Umgebungsspezifische Overrides getrennt zu halten, senkt zudem das Risiko, versehentlich eine Entwicklungs-Konfiguration in der Produktion anzuwenden.

4. Passende Resource Requests und Limits setzen

Konfigurieren Sie CPU- und Memory-Requests und -Limits für die Kubecost-Komponenten entsprechend der Größe und Auslastung des Clusters. Requests helfen Kubernetes, ausreichend Ressourcen für die Kubecost-Pods zu reservieren, während Limits verhindern können, dass einzelne Komponenten übermäßig Clusterkapazität beanspruchen.

Vermeiden Sie es, dieselbe Ressourcenkonfiguration einfach auf Cluster deutlich unterschiedlicher Größe zu übertragen. Überwachen Sie den tatsächlichen Ressourcenverbrauch von Kubecost nach dem Deployment und passen Sie die Helm-Values an, wenn die Zahl der Nodes, Workloads und erfassten Metriken wächst.

5. Persistenten Storage für die Produktion konfigurieren

Nutzen Sie persistenten Storage für Kubecost-Komponenten, deren Daten Pod-Neustarts oder Rescheduling überdauern müssen. Das Kubecost-Chart stellt die Persistent-Volume-Konfiguration bereit – etwa ob Persistenz aktiviert ist, die Volume-Größe und die verwendete Kubernetes-StorageClass.

Wählen Sie für Produktions-Deployments eine zuverlässige StorageClass und provisionieren Sie ausreichend Kapazität für das erwartete Datenwachstum. Die Storage-Einstellungen sollten zudem zu den Backup-, Aufbewahrungs- und Disaster-Recovery-Anforderungen der Organisation passen.

6. Helm-Upgrades vor der Produktion testen

Wenden Sie Kubecost-Chart-Upgrades zunächst in einem Entwicklungs- oder Staging-Cluster an, bevor Sie die Produktion aktualisieren. Testen Sie sowohl die neue Chart-Version als auch Ihre bestehenden eigenen Values, denn Chart-Upgrades können neue Einstellungen einführen, Defaults verändern oder Kubernetes-Ressourcen anpassen.

Helm unterstützt das Prüfen und Steuern von Upgrade-Values sowie das Zurücksetzen eines Releases auf eine frühere Revision, falls nötig. Bewahren Sie die vorherige Chart-Version und Konfiguration auf, damit Sie einen getesteten Rollback-Pfad haben, falls das Produktions-Upgrade Probleme verursacht.

Kubernetes-Kosten über Kubecost hinaus optimieren – mit PerfectScale

PerfectScale by DoiT bietet verantwortungsvolle Kostenoptimierung, die verschwendete Ressourcen eliminiert, ohne Stabilität und Performance von Kubernetes zu beeinträchtigen. Kubecost konzentriert sich in erster Linie auf das Kubernetes-Kosten-Monitoring. PerfectScale geht weiter: Es optimiert Ihre Umgebung kontinuierlich für optimale Performance und Kosteneffizienz und bietet erweiterte Transparenz und Governance über Node Groups, Namespaces, Container und Workloads hinweg. Das Kubecost Helm-Chart stellt Prometheus und zugehörige Metrik-Komponenten bereit und pflegt sie. PerfectScale läuft stattdessen als einzelner, zustandsloser Agent mit minimalem Footprint – ganz ohne Prometheus.

Zentrale Funktionen von PerfectScale:

  • Autonome Kostenoptimierung: Optimiert Ihre Kubernetes-Umgebung autonom mit GitOps-integrierten Aktionen – Einsparungen werden kontinuierlich umgesetzt, statt nur in Dashboards angezeigt zu werden.
  • Umfassendes Right-Sizing: Liefert CPU- und Memory-Empfehlungen sowohl für Requests als auch für Limits. Diese Empfehlungen berücksichtigen Code-Änderungen und die HPA-Konfiguration.
  • Zustandsloses Agent-Deployment: Wird als einzelner, schlanker Agent mit minimalem Wartungsaufwand installiert. Es gibt keine Prometheus-Implementierung, die eingerichtet oder gepflegt werden müsste.
  • Granulare Kostentransparenz und -zuordnung: Bietet Kostentransparenz und -zuordnung, Prognosen für Kosten und Verschwendung sowie Einblick in kurzlebige Workloads. Zeigt außerdem Node-Zuweisung, Auslastung und ungenutzte Kapazität, unterstützt Node Groups und ermöglicht es, kurzlebige Workloads individuell zu gruppieren.
  • Erkennung und Behebung von Resilienzproblemen: Identifiziert OOM-Events, CPU-Throttling, mutmaßliche Memory Leaks, häufige Neustarts, Evictions und Workloads am Replica-Limit. Bietet zudem automatische Priorisierung von Resilienzrisiken, anpassbare Alerts und autonome Behebung.
  • Läuft überall, wo Kubernetes läuft: Unterstützt EKS, GKE, AKS, OpenShift und On-Prem-Cluster.

Bereit für den Schritt vom Kosten-Monitoring zur autonomen Kubernetes-Optimierung? Sehen Sie, wie PerfectScale im Vergleich zu Kubecost abschneidet und starten Sie die kostenlose 30-Tage-Testphase.