Kubernetes Configurazione dei cluster

Per raccogliere i dati necessari all'allocazione dei costi dei container, è necessario distribuire IBM FinOps Agent, l'agente di raccolta dati di nuova generazione per Cloudability Containers. In questo documento sono riportate alcune indicazioni relative a uno scenario di migrazione dall'agente di misurazione legacy Cloudability; se state effettuando la configurazione per la prima volta, potete tranquillamente ignorarle.

Configurazione dell' IBM FinOps Agent per Cloudability

Ciò si ottiene attraverso un'implementazione HELM fornita per ogni cluster. I comandi HELM possono essere generati seguendo i seguenti passaggi:

  1. Spostarsi su Insights > Containers.

  2. Selezionare il pulsante "Provision Clusters ".

  3. Compila il modulo indicando il nome del tuo cluster e specificando se utilizzi la versione Kubernetes o la versione OpenShift.

  4. Fare clic su Avanti > Genera comando.

Installare l'Unified Agent

Prerequisiti:

Google Kubernetes Engine ( GKE ) istruzioni specifiche

È necessario aggiungere un 'etichettadi cluster in ciascun cluster come segue:

  • Legenda: gke-cluster
  • Valore: il nome del cluster specificato nell' Helm e come ID del cluster. Ciò consente a Cloudability di associare i cluster di GKE alle singole voci del file di fatturazione di GCP e di allocare i costi ai vostri cluster. Deve essere univoco in tutti i cluster creati tramite GKE.

Cloudability sarà necessario importare un file di fatturazione contenente le etichette del cluster che hai aggiunto; l'operazione potrebbe richiedere fino a 48 ore. Una volta che Apptio avrà elaborato il nuovo file di fatturazione, dovrai creare una nuova mappatura dei tag in Cloudability. Imposta una dimensione del tag Cloudability come "Nome cluster GKE " e associala al gke-cluster tag.

Assicurati che il tuo account disponga del ruolo di amministratore del cluster prima di distribuire l'agente delle metriche. Per impostazione predefinita, un account utente non ha il ruolo di cluster-admin. Eseguire il seguente comando sul cluster GKE per assegnare a un utente il ruolo di amministratore del cluster:

"kubectl create clusterrolebinding username-cluster-admin-binding --
clusterrole=cluster-admin --user=username@emailaddress.com"

Requisiti di rete

L'agente unificato richiede l'accesso in uscita alle seguenti posizioni:

  • Cloudability Punti di interfaccia API
  • Endpoint dell'API Frontdoor
  • S3 Bucket di caricamento

Per i dettagli sulla rete in uscita, consultare il file README su GitHub relativo all'agente unificato disponibile qui: IBM FinOps Agent Helm Chart

Requisiti di stoccaggio:

L'agente IBM FinOps richiede una richiesta di volume persistente configurabile (impostazione predefinita: 8Gi ). Questa modifica è stata apportata per ridurre la possibilità di perdita di dati se/quando l'agente viene riprogrammato. L'agente ora memorizza i campioni su questo volume e cercherà di recuperare tutti i campioni dopo un riavvio. Questo miglioramento migliora notevolmente la capacità dell'agente di recuperare i dati in caso di guasti.

Container Registry cambiamento:

L'agente IBM FinOps non viene memorizzato in Docker come l'attuale metrics-agent. L'agente IBM FinOps è invece memorizzato in ICR. Potrebbe quindi essere necessario aggiornare la lista bianca del registro dei container per consentire all'agente IBM FinOps di scaricare l'immagine ICR. Il registro dei container di Agent di IBM FinOps è:

icr.io/ibm-finops/agent:vx.x.x

Se è necessario estrarre l'immagine localmente per copiarla nel registro del contenitore. È possibile eseguire il seguente comando docker/podman pull:

 podman pull icr.io/ibm-finops/agent:v0.0.25 --platform=linux/amd64

Autenticazione:

È importante sottolineare che il vecchio agente di misurazione di Cloudability utilizzava una chiave API specifica per i container. L'agente IBM FinOps non utilizzerà né supporterà più questa chiave API. I clienti devono invece creare una chiave API per l'agente in Frontdoor e raccogliere il loro ID ambiente Frontdoor.

Creare un utente per gestire la chiave API del contenitore:

Affinché la funzione Container Insights funzioni, è necessario che nell'ambiente Frontdoor siano abilitate le chiavi API

Si consiglia ai clienti di creare un utente "account di servizio" specifico per il container all'interno del proprio dominio, al fine di gestire la propria chiave API in futuro. In questo modo, la chiave API per il caricamento non è associata a un utente specifico che potrebbe essere disattivato in futuro. La persona che crea il nuovo utente e la chiave API deve essere un utente amministratore nel proprio ambiente Frontdoor.

  1. Andare a "Access Wizard" in "Access Administration", selezionare "Add User(s)", impostare "Customer" e "Environment". Infine, premere "Conferma"

  2. Immettere le informazioni sull'utente e premere "Avanti"

  3. Selezionare "Assegnazione di ruoli", "Non inviare all'utente un'e-mail di attivazione" e premere "Conferma" per creare l'utente

  4. Assicurarsi che l'utente sia selezionato per l'assegnazione dei ruoli

  5. Assegnare il ruolo “CloudabilityContainerUploader” all'utente e premere "Avanti"/"Conferma".

  6. Andare in "Home", cercare l'utente appena creato e fare clic sul suo "Nome utente"

  7. Premete "Visualizza profilo utente"

  8. Aggiungi una chiave API per l'utente

  9. Immettere un nome per la chiave API (ad esempio: IBM -Finops-agent), impostare "No Expiration" (nessuna scadenza) se non è già stato impostato e premere conferma.

  10. Memorizzare le credenziali della chiave API (chiave pubblica e chiave privata ) da utilizzare successivamente nell'installazione dell'agente.

  11. Premete "Concedere l'accesso"

  12. Selezionare l'ambiente e premere "Avanti"

  13. Aggiungere il ruolo “CloudabilityContainerUploader” alla chiave e premere "Avanti". Questo ruolo ha accesso limitato all'endpoint di caricamento dei contenitori.

  14. Verificare che la chiave sia stata creata e abbia il ruolo corretto

Raccolta dell'ID dell'ambiente della porta d'ingresso

  1. Andare alla porta d'ingresso

  2. In alto a destra selezionate il logo del profilo e fate clic su "Account utente"

  3. Passare alla scheda Accesso all'ambiente

  4. Raccogliere l'ID dell'ambiente nella scheda Ambiente della tabella

    1. Assicurarsi che l'ambiente sia lo stesso utilizzato per l'accesso Cloudability

    2. Esempio di formato ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Distribuzione dell'agente di monitoraggio con Helm

Prerequisiti:

  • Per poter utilizzare i grafici è necessario installare Helm. Per iniziare, consulta la documentazione di Helm.

  • Aggiornare le politiche di rete del cluster per consentire i nuovi requisiti di rete (se necessario)

  • Raccogliere le chiavi pubbliche e private dell'API

  • Raccogliere l'ID dell'ambiente della porta d'ingresso

Importante:

Consigliamo vivamente di utilizzare un nome univoco clusterId (nome del cluster) per ogni cluster di Kubernetes. L'uso di nomi duplicati può causare discrepanze nei dati o un'allocazione dei costi non accurata nei report di " Cloudability ".

Una volta che Helm è stato configurato correttamente, aggiungere il repo come segue:

helm repo add ibm-finops https://kubecost.github.io/finops-agent-chart

Se questo repo è già stato aggiunto in precedenza, aggiornarlo:

helm repo update

Installare Helm Repo

helm install ibm-finops-agent ibm-finops/finops-agent \   
--set agent.cloudability.enabled=true \
--set agent.cloudability.uploadRegion=<uploadRegion> \      
--set agent.cloudability.parseMetricData=false \
--set agent.cloudability.secret.create=true \
--set agent.cloudability.secret.cloudabilityAccessKey="<PublicKey>" \
--set agent.cloudability.secret.cloudabilitySecretKey="<PrivateKey>" \
--set agent.cloudability.secret.cloudabilityEnvId="<FDEnvID>" \
--set clusterId="<ClusterName>" \
--create-namespace -n ibm-finops-agent

Per disinstallare Helm Repo:

helm uninstall ibm-finops-agent

Se il tuo cluster sta attualmente utilizzando il vecchio agente di metriche Cloudability, puoi tranquillamente lasciarlo in esecuzione finché non verifichi che il nuovo agente FinOps IBM abbia completato con successo il caricamento dei dati per 24 ore. L'agente IBM FinOps può essere installato ed eseguito in parallelo all'agente Cloudability, ma si consiglia di disattivare l'agente Cloudability una volta che il nuovo agente sarà stabile nel cluster.

UploadRegion dipende dalla regione in cui si trova l'ambiente Cloudability del cliente. I valori supportati sono i seguenti

  • US: us (o us-west-2 )

  • UE: eu (o eu-central-1 )

  • AU: au (o ap-southeast-2 )

  • ME: io (o me-central-1 )

  • CA: ca (o ca-central-1 )

  • Hybrid EU (clienti che hanno una porta d'ingresso EU ma caricano i dati dei contenitori nella regione USA) : hybrid-eu

  • AU ibrido (clienti che hanno la porta d'ingresso AU ma caricano i dati dei contenitori nella regione USA): hybrid-au

  • ME ibrido (clienti che hanno ME frontdoor ma caricano i dati dei contenitori nella regione USA) : hybrid-me

Il nome del clusterId cluster deve essere univoco e, se è stato precedentemente configurato dal vecchio agente di misurazione, deve corrispondere a quello specificato CLOUDABILITY_CLUSTER_NAME per evitare eventuali problemi nell'acquisizione dei costi.

Nota:

L'agente unificato supporta molte delle stesse configurazioni dell'agente per le metriche in uscita Cloudability. Se il tuo agente di monitoraggio attuale presenta configurazioni specifiche (ad esempio, configurazioni PROXY), ti invitiamo a consultare qui i parametri supportati da Helm.

È possibile aggiungerli al comando di installazione, ad esempio:

helm install ibm-finops-agent ibm-finops/finops-agent \   
--set agent.cloudability.enabled=true \
--set agent.cloudability.uploadRegion=<uploadRegion> \      
--set agent.cloudability.parseMetricData=false \
--set agent.cloudability.secret.create=true \
--set agent.cloudability.secret.cloudabilityAccessKey="<PublicKey>" \
--set agent.cloudability.secret.cloudabilitySecretKey="<PrivateKey>" \
--set agent.cloudability.secret.cloudabilityEnvId="<FDEnvID>" \
--set agent.cloudability.outboundProxy="http://x.x.x.x:8080" \
--set agent.cloudability.parseMetricsData="true"
--set clusterId="<ClusterName>" \
--create-namespace -n ibm-finops-agent
  1. Assicurarsi che il pod ibm-finops-agent sia in esecuzione

    kubectl get pods -n ibm-finops-agent
    
    ### Example Output Below ###
    NAME                                READY   STATUS    RESTARTS   AGE
    ibm-finops-agent-7bbf99d9fb-kmhh9   1/1     Running   0          1m
  2. Controllare i log dei pod per verificare che l'agente stia caricando correttamente i dati su Cloudability. Ci vorranno 10 minuti per vedere il primo log di caricamento riuscito.

    kubectl logs <POD_NAME> -n ibm-finops-agent
    
    ### Example Output Below ###
    INF Starting IBM Finops Agent...
    DBG HTTP server started on port 9003
    INF Initializing cldy emitter
    INF emitting sample to Cldy 0
    INF added sample to Cldy
    INF emitting sample to Cldy 1
    INF added sample to Cldy
    INF emitting sample to Cldy 2
    INF added sample to Cldy
    INF Attempt 1: performing login request to FrontDoor using KeyAccess and KeySecret
    INF Attempt 1: acquiring presigned URL from Cloudability with acquired Open-token
    INF Attempt 1: uploading sample to Cloudability S3 using presigned URL
    INF successfully uploaded metric sample xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx-xx-xx-xx.tgz to cloudability

Ancora una volta, ci vorranno 10 minuti prima che venga visualizzato il log "successfully uploaded metric sample to cloudability". Questo è un punto comune di fallimento negli agenti se non hanno attivato le impostazioni corrette di whitelisting/proxy.

Dopo 24 ore dall'avvio dell'agente IBM FinOps e dal completamento del caricamento. Se stai ancora utilizzando un'implementazione dell'agente di metriche Cloudability, ora puoi rimuovere tale infrastruttura e mantenere attivo solo il chart Helm di IBM FinOps Agent.

Nota:

I dati del cluster dovrebbero essere disponibili in Container Insights entro 24-48 ore. Se dovessi riscontrare problemi con l'implementazione, contatta il supporto di IBM Apptio.

Configurazione dei contenitori avanzati di Cloudability

Se hai effettuato l'aggiornamento a Advanced Containers dell' Cloudability, puoi iniziare facilmente a configurare i cluster utilizzando la guida alla configurazione integrata nel prodotto, disponibile nella pagina di configurazione degli agenti all'interno del tuo ambiente ( https://api.cloudability.com/v3/kubecost/monitor:clusters:connect ). La guida supporta le nuove installazioni, gli aggiornamenti da versioni precedenti dell'agente e gli ambienti in cui lo stato attuale dell'agente è sconosciuto. Fornisce istruzioni dettagliate per installare l'agente, verificare la connettività e accertarsi che l'installazione sia andata a buon fine.

Durante l'installazione, la procedura guidata configura entrambi gli emettitori necessari: l'emettitore Container Insights, che gestisce i report esistenti relativi ai container di Cloudability, e l'emettitore Advanced Containers, che consente l'allocazione dei costi di Kubernetes, fornisce consigli di ottimizzazione e offre funzionalità di reporting aggiuntive. Dopo l'installazione, potrebbero essere necessari alcuni minuti prima che i dati del cluster vengano visualizzati in " Cloudability : Advanced Containers".