Kubernetes provisioning del cluster

Per raccogliere i dati necessari a eseguire l'allocazione di un determinato cluster, è necessario distribuire IBM FinOps Agent, l'agente di raccolta dati di nuova generazione per Cloudability Containers.

Fornitura dell'agente metrico 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 Provisiona cluster.

  3. Compilare il modulo con il nome del cluster e la versione di Kubernetes o di OpenShift.

  4. 4. Fare clic su Avanti -> Genera comando.

Nota:

I dati del cluster dovrebbero essere visualizzati in Cloudability il giorno successivo. Se si verificano problemi con l'installazione, contattare il supporto di Apptio.

Google Kubernetes Istruzioni specifiche per il motore (GKE)

È necessario aggiungere un' etichetta di cluster in ogni cluster come segue:

  • chiave: gke-cluster
  • valore: Il nome del cluster impostato nel modulo/YAML. Ciò consente a Cloudability di mappare i cluster GKE alle voci del file di fatturazione di GCP e di assegnare i costi ai cluster.

Cloudability dovrà ingerire un file di fatturazione con le etichette del cluster aggiunte, il che può richiedere fino a 48 ore. Una volta che Apptio ha elaborato il nuovo file di fatturazione, è necessario creare una nuova mappatura dei tag nell'applicazione Cloudability. Impostare una dimensione Cloudability come gke-cluster e mapparla sul tag gke-cluster. Si tratta di un'esigenza unica, non per cluster.

Assicurarsi che l'account abbia il ruolo di cluster-admin prima di distribuire l'agente Metrics. Per impostazione predefinita, un account utente non ha il ruolo di cluster-admin. Usare il seguente comando sul cluster GKE per assegnare a un utente il ruolo di cluster-admin:

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

Distribuire l'agente

Prerequisiti:

Requisiti di rete:

Nel metrics-agent Cloudability i requisiti di rete erano documentati nel README.

L'agente unificato ha requisiti di rete aggiornati per funzionare correttamente e caricare i dati su Cloudability 's S3.

I nuovi requisiti di rete per l'agente sono i seguenti:

Il contenitore che ospita l'agente di metrica deve consentire le richieste di HTTPS ai seguenti endpoint:

  • https://frontdoor.apptio.com porta 443

    • https://frontdoor-eu.apptio.com se Cloudability è nell'UE

    • https://frontdoor-au.apptio.com se Cloudability è in AU

    • https://frontdoor-me.apptio.com se Cloudability è in ME

  • https://api.cloudability.com porta 443

    • https://api-eu.cloudability.com se Cloudability è nell'UE

    • https://api-au.cloudability.com se Cloudability è in AU

    • https://api-me.cloudability.com se Cloudability è in ME

Il contenitore che ospita l'agente di metriche deve avere accesso in scrittura ai seguenti bucket Apptio S3 :

  • apptio* (secchio con prefisso apptio)

    • Se desiderate informazioni più dettagliate sui requisiti di whitelist, contattate il nostro team di assistenza

Requisiti di stoccaggio:

L'opzione IBM -Finops-Agent richiede una richiesta di volume persistente configurabile (default 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:

Il IBM -Finops-Agent non è memorizzato in docker come il metrics-agent esistente. Il sito IBM -Finops-Agent è invece memorizzato in ICR. Quindi potrebbe essere necessario aggiornare la whitelist del registro dei container per consentire alla distribuzione IBM -Finops-Agent di estrarre l'immagine ICR. Il registro del contenitore IBM -Finops-Agent è:

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 metrics-agent di Cloudability ha utilizzato una chiave API specifica di Containers. L'agente IBM finops non utilizzerà/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:

È necessario che l'ambiente Frontdoor abbia le chiavi api abilitate per far funzionare la funzione Containers

Si consiglia ai clienti di creare un utente di servizio specifico per i container all'interno del proprio dominio per gestire la propria chiave api in futuro. In questo modo, la chiave api di 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".

    Creare un utente per gestire la chiave API del contenitore:

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

  7. Premete "Visualizza profilo utente"

  8. Aggiungere 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-xxxx-xxxxxxxx

Distribuzione dell'agente metrico con Helm

Prerequisiti:

  • Installare Helm deve essere installato per utilizzare i grafici. Per iniziare, consultare 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

Nota:

Si consiglia vivamente di utilizzare un codice univoco ClusterName per ogni cluster Kubernetes. L'uso di nomi duplicati può causare discrepanze nei dati o un'allocazione dei costi imprecisa nell' 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='<AccessKey>' \
--set agent.cloudability.secret.cloudabilitySecretKey='<SecretKey>' \
--set agent.cloudability.secret.cloudabilityEnvId='<EnvID>' \
--set clusterId='<ClusterName> \
--create-namespace -n ibm-finops-agent

Per disinstallare Helm Repo:

helm uninstall ibm-finops-agent

Se nel cluster è in esecuzione il vecchio Cloudability metrics-agent, è possibile mantenerlo in funzione fino a quando non si vedrà il nuovo ibm-finops-agent iniziare a caricare con successo per 24 ore. L'agente ibm-finops può essere installato ed eseguito in parallelo all'agente Cloudability metrics, ma si raccomanda di spegnere l'agente Cloudability metrics una volta che il nuovo agente è 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

ClusterName dovrebbe essere lo stesso valore di quello attualmente presente nel metrics-agent CLOUDABILITY_CLUSTER_NAME per evitare problemi di ingestione dei costi.

Nota:

L'agente unificato supporta molte delle stesse configurazioni dell'agente per le metriche in uscita Cloudability. Se il tuo agente di misurazione esistente ha configurazioni specifiche (ad esempio configurazioni PROXY), controlla 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 in cui ibm-finops-agent è in esecuzione e viene caricato con successo. Se è ancora in corso un'implementazione di Cloudability metrics-agent, è possibile smantellare tale infrastruttura e mantenere in funzione solo il diagramma di ibm-finops-agent.

Per ulteriori informazioni sul provisioning dei cluster di Kubernetes, vedere Cloudability Metrics Agent.