Aller au contenu

Documentation de l’agent

Reliez un cluster Kubernetes à Onicost en quelques commandes.

L’agent Onicost tourne dans votre cluster et envoie son inventaire et l’usage des conteneurs une fois par minute. Cette page donne chaque étape, des prérequis à la désinstallation. Le chart Helm est public : vous pouvez le lire d’abord.

Mis à jour le 10 novembre 2026

Essai Team de 14 jours sans carte bancaire. Free reste disponible : 1 cluster, 32 cœurs et 2 membres.

Liste des nœuds dans Onicost comparant capacité, ressources demandées et utilisées et coûts estimés, avec des données de démonstration
Vue du produit avec des données de démonstration. Les montants estimés ne sont pas des économies réalisées.

Prérequis

L’agent fonctionne en lecture seule par défaut : il n’a accès ni aux Secrets ni aux ConfigMaps. Il agit seulement dans le mode actions du scheduler ou avec l’auto-resize, que vous activez, avec des droits dédiés, et chaque action est inscrite au journal.

Il vous faut :

  • Kubernetes 1.22 ou supérieur.
  • kubectl avec des droits cluster-admin, car le chart crée un ClusterRole.
  • Helm 3.14 ou supérieur.
  • Un accès HTTPS sortant du cluster vers le point d’entrée Onicost, direct ou par un proxy.
  • Le jeton d’agent du cluster, affiché dans l’interface Onicost quand vous ajoutez le cluster. Chaque cluster a le sien.

Stocker le jeton et installer le chart

Le jeton se saisit sans s’afficher, puis rejoint un Secret du namespace. Il n’apparaît ni sur une ligne de commande ni dans les valeurs Helm, et le chart n’accepte aucun jeton en valeur.

Dans la dernière commande, remplacez <version> par la dernière version du changelog, 0.6.0 à l’écriture de cette page. L’interface Onicost donne la même commande avec la version remplie. La valeur endpoint est obligatoire : c’est l’URL de base de la passerelle d’ingestion, sans barre oblique finale.

Lancez ces commandes dans l’ordre, dans le même shell :

  • Créez le namespace : kubectl create namespace onicost
  • Saisissez le jeton : printf "Agent token: " && read -rs ONICOST_TOKEN && echo
  • Stockez-le dans un Secret : printf "%s" "$ONICOST_TOKEN" | kubectl create secret generic onicost-agent-token --namespace onicost --from-file=token=/dev/stdin
  • Installez le chart : helm upgrade --install onicost-agent oci://ghcr.io/onicost/charts/onicost-agent --version <version> --namespace onicost --set endpoint=https://ingest.onicost.com

Vérifier l’agent

Le pod passe Running et prêt (1/1) en une minute. Au démarrage, le log indique si l’API server et le point d’entrée répondent, et nomme tout flux bloqué.

Commencez par les deux premières commandes, puis suivez les cas ci-dessous si quelque chose ne va pas :

  • Lister les pods : kubectl --namespace onicost get pods
  • Lire les logs : kubectl --namespace onicost logs deployment/onicost-agent
  • Pod bloqué en ContainerCreating : le Secret du jeton manque. Vérifiez avec kubectl --namespace onicost get secret onicost-agent-token
  • Pod lancé mais jamais prêt : l’agent n’atteint pas l’API server, en général à cause d’une NetworkPolicy qui refuse tout par défaut. Cherchez kubernetes api unreachable dans les logs, puis activez la politique réseau décrite plus bas.
  • Aucune donnée dans Onicost : cherchez gateway unreachable ou un 401 dans les logs. Vérifiez que le Secret contient le jeton en cours, puis contrôlez le point d’entrée et le proxy avec helm get values onicost-agent --namespace onicost

Proxy, politique réseau et kubelets

Ajoutez ces options à la commande d’installation ou de mise à jour.

  • Proxy sortant. Il sert seulement à joindre le point d’entrée. Des identifiants dans l’URL apparaissent en clair dans la spec du pod : préférez un proxy qui n’en demande pas. Option : --set proxy.url=http://proxy.internal:3128
  • Politique réseau. Si le namespace refuse le trafic par défaut, l’agent en a besoin pour devenir prêt. Elle autorise la sortie vers le DNS du cluster et vers les ports TCP 443, 6443 et 10250, pour le point d’entrée, l’API server et les kubelets. Option : --set networkPolicy.enabled=true
  • Autres ports : ajoutez le port du proxy ou de l’API server à networkPolicy.egressPorts. Trouvez le port de l’API server avec kubectl get endpointslices -n default -l kubernetes.io/service-name=kubernetes
  • Autre DNS, comme NodeLocal DNSCache : --set networkPolicy.dns.namespaceSelector=null --set networkPolicy.dns.podSelector=null autorise le port 53 vers toute destination.
  • Liste de destinations : networkPolicy.egressCidrs doit couvrir l’API server, les adresses des nœuds et le point d’entrée. Laissez-la vide avec Cilium, qui ne reconnaît pas par défaut les adresses de nœuds avec ipBlock.
  • Certificats kubelet : sur certains clusters managés, comme Scaleway Kapsule, l’agent ne peut pas les vérifier. --set kubelet.apiServerProxy=true passe par l’API server et accorde get sur nodes/proxy, qui ouvre toute l’API kubelet de chaque nœud, logs de pods compris. Réservez cette option aux cas où les logs montrent errorClass: tls_verification.

Mettre à jour et désinstaller

Lisez le changelog avant chaque mise à jour et passez toujours une version. L’option --reset-then-reuse-values part des valeurs par défaut de la nouvelle version du chart et garde vos options. Pour retirer une option, remettez sa valeur par défaut, par exemple avec --set proxy.url= dans la commande.

En mode actions, mettez en pause ou supprimez les règles du scheduler dans Onicost et attendez le retour des workloads avant de désinstaller. La désinstallation supprime aussi le ClusterRole et le ClusterRoleBinding. La suppression du namespace emporte le Secret du jeton.

  • Mettre à jour : helm upgrade onicost-agent oci://ghcr.io/onicost/charts/onicost-agent --version <version> --namespace onicost --reset-then-reuse-values
  • Voir ce qui tourne : helm list --namespace onicost
  • Désinstaller : helm uninstall onicost-agent --namespace onicost
  • Supprimer le namespace : kubectl delete namespace onicost

Ce que l’agent envoie et ce que vous contrôlez

L’agent envoie l’inventaire (nœuds, namespaces, workloads avec leurs labels, requests et limits, pods, volumes) et l’usage (CPU et mémoire de chaque conteneur, throttling, OOM kills, réseau, volumes), agrégé par minute. Il ne collecte ni Secrets, ni ConfigMaps, ni logs, ni données applicatives. Vos données restent en France, chez Scaleway, en région de Paris, pendant 13 mois.

Pour envoyer moins, exclude.namespaces retire des namespaces entiers et exclude.labelKeys retire des clés de label. Gardez les labels GPU et eks.amazonaws.com/compute-type : Onicost s’en sert pour le prix des nœuds GPU et Fargate. Pour le scheduler, ajoutez --set actions.enabled=true (chart 0.5.0 ou supérieur). Cette option accorde des droits d’écriture sur les workloads : lisez d’abord la page sécurité.

L’essai Team de 14 jours, sans carte, démarre avec les premières données de l’agent, au plus tard 30 jours après la création de votre organisation.

Questions fréquentes

Comment renouveler le jeton ?

Écrivez le nouveau jeton dans le même Secret, par exemple en ajoutant --dry-run=client -o yaml | kubectl apply -f - à la commande kubectl create secret. L’agent le prend en compte sous deux minutes, sans redémarrage.

Comment superviser l’agent ?

Le port 8080 sert /healthz, /readyz et /metrics au format Prometheus. Le chart ne crée aucun Service. Avec la politique réseau active, autorisez Prometheus avec networkPolicy.metricsFrom.

Documentation de référence

Essayer Onicost

Essai Team de 14 jours sans carte bancaire. Free reste disponible : 1 cluster, 32 cœurs et 2 membres.