Aller au contenu
Conteneurs & Orchestration high

Installer CAST AI Anywhere

22 min de lecture

logo cast AI

Ce guide vous permet d'installer CAST AI Anywhere sur votre cluster Kubernetes. Vous choisirez parmi trois méthodes selon votre contexte : onboarding console (rapide), Helm manuel (contrôle), ou API (automatisation CI/CD).

Ce que vous apprendrez :

  • Vérifier les prérequis (metrics-server, connectivité)
  • Choisir la bonne méthode d'installation
  • Installer et valider les composants CAST AI
  • Diagnostiquer les problèmes courants

Les trois méthodes installent exactement les mêmes composants, elles se distinguent par le degré de contrôle et de reproductibilité. La console génère un script prêt à l'emploi contenant déjà vos identifiants, pratique pour un premier essai mais difficile à rejouer à l'identique. Helm et l'API demandent plus de préparation et vous rendent maîtres des versions déployées, ce qui est indispensable dès qu'un cluster de production est concerné.

MéthodeUsageAvantage
Console (recommandé)Premier déploiement, découverteScript généré, tout-en-un
Helm manuelProduction, Infrastructure as CodeContrôle des versions et values
APICI/CD, multi-clustersAutomatisation complète

Vérifiez ces points avant de commencer : un manque à ce stade se manifeste bien plus tard, sous la forme d'une erreur qui ne le désigne pas.

Ces trois outils s'exécutent depuis votre poste, pas sur le cluster. helm n'est nécessaire que pour la méthode manuelle, le script de la console embarquant sa propre logique d'installation.

OutilVersion minimumVérification
kubectl1.18+kubectl version --client
helm3.14.0+ (si Helm manuel)helm version --short
curl-curl --version

L'installation crée des ressources à l'échelle du cluster, notamment des CRD (Custom Resource Definitions) et des webhooks, d'où l'exigence d'un rôle cluster-admin. Le trafic sortant est également indispensable, l'agent ouvrant lui-même la connexion vers l'API.

  • Cluster Kubernetes fonctionnel avec accès cluster-admin
  • Connectivité réseau vers l'API CAST AI (port 443)
  • Compte CAST AI gratuit sur console.cast.ai

Le choix de l'endpoint détermine où vos données de télémétrie sont stockées. Il se fait à la création du cluster dans la console et doit être repris à l'identique dans tous les composants installés, une incohérence se traduisant par un cluster qui n'apparaît jamais comme connecté.

RégionURL
Global (US)https://api.cast.ai
Europe (EU)https://api.eu.cast.ai

Choisissez l'endpoint selon votre région ou vos exigences de résidence des données. Documentation AI Enabler

CAST AI collecte les métriques CPU/mémoire via metrics-server. Vérifiez qu'il est installé :

Fenêtre de terminal
kubectl get deployment metrics-server -n kube-system

Confirmez que votre contexte kubectl pointe bien sur le cluster à connecter, une erreur de contexte se traduisant par une installation sur le mauvais environnement :

Fenêtre de terminal
kubectl get nodes

Tous les nœuds doivent être en état Ready.

Quelle que soit la méthode, vous aurez besoin de ces informations (générées depuis la console). La clé d'API authentifie l'agent, l'identifiant de cluster lui indique à quelle entrée de votre organisation rattacher les données. Ces deux valeurs sont créées avant l'installation : la console enregistre le cluster dès que vous validez son nom, bien avant qu'un composant ne tourne.

VariableDescriptionOù la trouver
CASTAI_API_KEYClé d'authentification APIConsole → API Access Keys
CASTAI_CLUSTER_IDIdentifiant unique du clusterConsole → Cluster → Settings
CASTAI_API_URLEndpoint API (US ou EU)https://api.cast.ai ou https://api.eu.cast.ai

C'est la méthode la plus simple pour un premier déploiement. CAST AI génère un script personnalisé pour votre cluster.

  1. Connectez-vous à console.cast.ai

  2. Cliquez sur "Connect cluster" en haut à droite

  3. Sélectionnez "Anywhere" comme provider

    Cette option fonctionne pour tous les clusters non-AWS/GCP/Azure (OKS, OVH, Scaleway, on-prem, bare-metal).

  4. Nommez votre cluster (exemple : production-oks, demo-cluster)

  5. Cliquez sur "Generate script"

    CAST AI génère un script d'onboarding personnalisé contenant :

    • Votre CASTAI_API_KEY
    • Votre CASTAI_CLUSTER_ID
    • Les charts Helm préconfigurés
  6. Enregistrez le script dans un fichier, relisez-le, puis exécutez-le

    La console propose une commande qui télécharge et exécute le script d'un seul tenant. Ne la collez pas telle quelle : coupez l'étape en deux pour garder la possibilité de lire ce qui va s'exécuter avec vos droits cluster-admin.

    Fenêtre de terminal
    curl -fsSL "URL_DU_SCRIPT_GENERE" -o castai-install.sh
    less castai-install.sh
    bash castai-install.sh

console onboarding

Selon la documentation Anywhere, le script installe ces composants dans le namespace castai-agent :

ComposantRôle
castai-agentCollecte les métriques, synchronise avec l'API
cluster-controllerApplique les recommandations, gère les CRDs
workload-autoscalerCalcule les recommandations VPA
workload-autoscaler-exporterExpose les métriques Prometheus
evictorConsolidation des pods (optionnel)

Pour un contrôle complet des versions et de la configuration, installez chaque composant via Helm. Cette méthode demande quatre étapes : préparer les identifiants, déclarer le dépôt de charts, créer le namespace, puis installer les composants dans l'ordre de leurs dépendances. Elle est aussi la seule qui vous permette de figer la version de chaque chart, condition d'une installation reproductible d'un environnement à l'autre.

Ces variables sont reprises dans toutes les commandes qui suivent. Exportez-les dans le shell courant plutôt que de recopier les valeurs, et évitez de les inscrire dans un fichier d'historique en préfixant la commande d'un espace si votre shell l'ignore :

Fenêtre de terminal
# Récupérez ces valeurs depuis la console CAST AI
export CASTAI_API_KEY="votre-api-key"
export CASTAI_CLUSTER_ID="votre-cluster-id"
export CASTAI_API_URL="https://api.cast.ai" # ou https://api.eu.cast.ai

Le dépôt public de CAST AI héberge tous les charts utilisés ici. La commande helm repo update rafraîchit l'index local, sans quoi les versions publiées après votre dernier ajout resteraient invisibles :

Fenêtre de terminal
helm repo add castai-helm https://castai.github.io/helm-charts
helm repo update castai-helm

Listez les versions disponibles d'un chart pour choisir celle que vous allez figer :

Fenêtre de terminal
helm search repo castai-helm/castai-agent --versions

Tous les composants cohabitent dans le namespace castai-agent, ce qui simplifie la supervision et la désinstallation. Créez-le avant les installations, les charts ne le fabriquent pas d'office :

Fenêtre de terminal
kubectl create namespace castai-agent

Respectez l'ordre des onglets : l'agent enregistre le cluster auprès de l'API, les composants suivants supposent cet enregistrement déjà fait. L'option --wait bloque la commande jusqu'à ce que les pods soient prêts, ce qui évite d'enchaîner sur une installation dont la précédente n'a pas abouti.

L'agent collecte les métriques et synchronise avec l'API CAST AI :

Fenêtre de terminal
helm upgrade --install castai-agent castai-helm/castai-agent \
--namespace castai-agent \
--set apiKey="$CASTAI_API_KEY" \
--set apiURL="$CASTAI_API_URL" \
--set provider=anywhere \
--wait --timeout 5m

Vérification :

Fenêtre de terminal
kubectl get pods -n castai-agent -l app.kubernetes.io/name=castai-agent

Quatre charts forment le socle minimal, les deux derniers restent facultatifs. L'oubli le plus fréquent porte sur l'exporter du workload-autoscaler : son absence ne provoque aucune erreur visible, elle prive simplement Prometheus des métriques de recommandation.

ChartObligatoireDescription
castai-agentCollecte métriques
castai-cluster-controllerApplique recommandations
castai-workload-autoscalerGénère recommandations
castai-workload-autoscaler-exporterMétriques Prometheus
castai-evictorConsolidation (optionnel)
castai-pod-mutatorPod Mutations (feature séparée)

Documentation Helm charts


Pour l'automatisation CI/CD ou le déploiement multi-clusters, utilisez l'API CAST AI. Le principe reste celui de la console, à ceci près que le script d'onboarding est récupéré par un appel HTTP authentifié au lieu d'un copier-coller depuis l'interface. C'est la voie à suivre quand des dizaines de clusters doivent être connectés de façon identique.

L'appel authentifie la requête par l'en-tête X-API-Key et écrit le script dans un fichier. Conservez l'étape de relecture même en contexte automatisé, au moins lors de la mise au point du pipeline :

Fenêtre de terminal
# Variables
CASTAI_API_KEY="votre-api-key"
CASTAI_CLUSTER_ID="votre-cluster-id"
CASTAI_API_URL="https://api.cast.ai"
# Récupérer le script d'onboarding
curl -s "$CASTAI_API_URL/v1/kubernetes/external-clusters/$CASTAI_CLUSTER_ID/onboarding-script" \
-H "X-API-Key: $CASTAI_API_KEY" \
-o castai-onboarding.sh
# Inspecter avant d'exécuter
less castai-onboarding.sh
# Exécuter
bash castai-onboarding.sh

Pour une approche Infrastructure as Code, CAST AI fournit :

Documentation API Reference


Une installation réussie se constate à deux endroits complémentaires : sur le cluster, où les pods doivent tourner sans redémarrage, et dans la console, où le cluster doit passer à l'état connecté. Les deux vérifications sont nécessaires, des pods en bon état n'impliquant pas que la communication vers l'API aboutisse. Ajoutez le contrôle des CRD, qui conditionne la remontée des recommandations.

La colonne READY compte les conteneurs prêts sur le total du pod : 2/2 sur l'agent est normal, celui-ci embarquant un conteneur secondaire. Une valeur de RESTARTS qui augmente signale un problème d'authentification ou de connectivité.

Fenêtre de terminal
kubectl get pods -n castai-agent

Tous les pods doivent être Running :

NAME READY STATUS RESTARTS AGE
castai-agent-xxxxx-xxxxx 2/2 Running 0 5m
castai-cluster-controller-xxxxx-xxxxx 2/2 Running 0 5m
castai-workload-autoscaler-xxxxx-xxxxx 1/1 Running 0 5m
castai-workload-autoscaler-exporter-xxxxx-xxxxx 1/1 Running 0 5m

Les recommandations de dimensionnement sont stockées dans le cluster sous forme d'objets Kubernetes, ce qui suppose que leur définition de ressource personnalisée ait bien été créée. Si la commande répond NotFound, le cluster-controller n'a pas terminé son initialisation :

Fenêtre de terminal
kubectl get crd recommendations.autoscaling.cast.ai

Ce dernier contrôle prouve que le trafic sortant atteint bien l'API et que les identifiants sont valides. Les workloads n'apparaissent pas immédiatement, l'agent envoyant ses premières données par lots.

  1. Allez sur console.cast.ai
  2. Votre cluster doit apparaître avec le statut "Connected" (icône verte)
  3. Après quelques minutes, les workloads apparaissent dans Workload Optimization

Relevez les images réellement déployées et notez-les quelque part : c'est cette liste, et non le numéro du chart, qui vous permettra de reproduire l'installation ou de comparer deux clusters en cas de comportement divergent.

Fenêtre de terminal
# Toutes les images CAST AI
kubectl get pods -n castai-agent -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.containers[*].image}{"\n"}{end}'

Presque tous les incidents d'installation se ramènent à trois causes : des identifiants erronés, un blocage réseau vers l'API, ou un webhook injoignable depuis le serveur d'API. Procédez du général au particulier, en partant de la liste de contrôle ci-dessous avant d'ouvrir les journaux d'un composant précis.

Avant de chercher une erreur spécifique, vérifiez ces points :

VérificationCommandeAttendu
Pods runningkubectl get pods -n castai-agentTous en Running
Logs sans erreurkubectl logs -n castai-agent -l app.kubernetes.io/name=castai-agent --tail=20Pas d'erreurs répétées
CRD présentkubectl get crd recommendations.autoscaling.cast.aiCRD listé
Connectivité APIVoir test ci-dessousConnexion établie

Test de connectivité vers l'API :

Fenêtre de terminal
kubectl run test-api --rm --restart=Never --image=curlimages/curl --attach -- \
curl -s -o /dev/null -w "%{http_code}" --connect-timeout 5 https://api.cast.ai

Résultat attendu : 302 (redirect vers la console, confirme que l'API est joignable). Le pod de test s'appuie ici sur une image publique dont le tag n'est pas figé ; sur un cluster de production, utilisez une image de votre propre registre épinglée par digest @sha256:.

Chaque onglet part d'un symptôme observable et remonte vers sa cause probable. Ouvrez celui qui correspond à ce que vous constatez, les diagnostics n'ont pas de raison d'être enchaînés.

Symptôme : Pods en CrashLoopBackOff

Diagnostic :

Fenêtre de terminal
kubectl logs -n castai-agent -l app.kubernetes.io/name=castai-agent --tail=50

Causes et solutions :

ErreurCauseSolution
invalid API keyClé incorrecte ou expiréeRégénérer depuis la console
connection refusedPas de connectivité réseauVérifier firewall, proxy, DNS
certificate errorProxy HTTPS interceptantConfigurer certificat CA
cluster not foundCLUSTER_ID incorrectVérifier l'ID dans la console

La désinstallation se fait dans l'ordre inverse de l'installation : releases Helm, namespace, puis ressources créées à l'échelle du cluster. Ces dernières survivent à la suppression du namespace et doivent être retirées explicitement, sans quoi une réinstallation ultérieure se heurtera à des webhooks pointant vers des services inexistants. Les 2>/dev/null || true de l'exemple absorbent l'erreur des composants optionnels qui n'auraient jamais été installés.

Fenêtre de terminal
# Supprimer les releases Helm
helm uninstall castai-agent -n castai-agent
helm uninstall castai-cluster-controller -n castai-agent
helm uninstall castai-workload-autoscaler -n castai-agent
helm uninstall castai-workload-autoscaler-exporter -n castai-agent
helm uninstall castai-evictor -n castai-agent 2>/dev/null || true
helm uninstall castai-pod-mutator -n castai-agent 2>/dev/null || true
# Supprimer le namespace
kubectl delete namespace castai-agent
# Supprimer les webhooks orphelins
kubectl delete mutatingwebhookconfigurations -l app.kubernetes.io/managed-by=castai 2>/dev/null || true

  • Trois méthodes : Console (simple), Helm (contrôle), API (automatisation)
  • Console recommandée pour un premier déploiement : script généré et personnalisé
  • Helm manuel : n'oubliez pas le workload-autoscaler-exporter
  • metrics-server requis (installé automatiquement par le script console)
  • Sécurité : ne pas versionner les clés, inspecter les scripts avant exécution
  • Validation : tous les pods Running + cluster "Connected" dans la console
  • 24h+ pour des recommandations fiables (full confidence)

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn