Configura l'operatore Cluster Services for OpenShift Telemetry

Questo documento descrive come installare l'operatore Cluster Services for OpenShift Telemetry e configurarlo per la connessione a un cluster OpenShift in esecuzione su un'istanza Compute Engine.

Dopo l'installazione e la configurazione, questo operatore di telemetria deploy un daemon di telemetria di rete host che monitora continuamente lo stato e la configurazione del cluster. L'operatore invia le metriche raccolte a Workload Manager. Puoi quindi utilizzare la valutazione di Workload Manager per analizzare i carichi di lavoro eseguiti nel cluster per rilevare deviazioni dalle best practice per i cluster OpenShift.

Prima di iniziare

Prima di installare e configurare l'operatore di telemetria, devi assicurarti che siano soddisfatti i seguenti prerequisiti:

Abilitare l'accesso alle API Cloud

Compute Engine consiglia di configurare le istanze in modo da consentire tutti gli ambiti di accesso a tutte le API Cloud e di utilizzare solo le autorizzazioni IAM del account di servizio dell'istanza per controllare l'accesso alle risorseGoogle Cloud . Per maggiori informazioni, vedi Crea una VM che utilizza un service account gestito dall'utente.

Se limiti l'accesso alle API Cloud, l'operatore Cluster Services for OpenShift Telemetry richiede almeno i seguenti ambiti di accesso alle API Cloud nell'istanza di calcolo host:

https://www.googleapis.com/auth/cloud-platform

Per saperne di più, consulta le best practice per gli ambiti.

Se esegui un cluster OpenShift su un'istanza di computing che non ha un indirizzo IP esterno, devi attivare l'accesso privato Google sulla subnet dell'istanza in modo che l'operatore Cluster Services for OpenShift Telemetry possa accedere ai servizi e alle API di Google. Per informazioni su come attivare l'accesso privato Google, consulta Configurare l'accesso privato Google.

Autenticare gli utenti nel cluster OpenShift

Per eseguire azioni amministrative, tu o i tuoi utenti dovete essere autenticati al cluster OpenShift utilizzando la CLI OpenShift. Per autenticare gli utenti nel tuo cluster OpenShift, puoi scegliere tra le seguenti opzioni:

  • Esegui questo comando e segui le istruzioni:

    oc login "https://api.CLUSTER_DOMAIN:6443" -u kubeadmin
    
  • In alternativa, ottieni un token di autenticazione della sessione da utilizzare con il binario oc. Per ottenere questo token, apri il seguente URL in un browser web:

    https://oauth-openshift.apps.CLUSTER_DOMAIN/oauth/token/request
    

Sostituisci CLUSTER_DOMAIN con il dominio del tuo cluster OpenShift. Ad esempio: mycluster.google.com.

Autentica l'operatore su Google Cloud

Per consentire all'operatore di telemetria di autenticarsi e accedere alle risorse Google Cloud, devi creare un account di servizio per l'operatore nel tuo progetto Google Cloud .

Puoi autenticare l'operatore di telemetria come account di servizio utilizzando le seguenti opzioni:

Autenticare l'operatore utilizzando la federazione delle identità per i workload

Per autenticare l'operatore di telemetria come account di servizio utilizzando la federazione delle identità per i carichi di lavoro, completa i seguenti passaggi:

  1. Nel terminale, estrai il manifest CredentialsRequest dal pacchetto dell'operatore di telemetria in una directory locale:

    mkdir -p credrequests
    oc image extract us-docker.pkg.dev/workload-agent-products/cluster-services-for-openshift-telemetry/bundle:VERSION --path /manifests/:./credrequests --confirm
    

    Sostituisci VERSION con il numero di versione a cui hai eseguito la sottoscrizione per l'operatore di telemetria in OperatorHub. Puoi visualizzare l'elenco dei numeri di versione certificati per l'operatore di telemetria nel catalogo Red Hat Ecosystem.

  2. Utilizza l'utilità ccoctl per elaborare il file manifest CredentialsRequest estratto e il provisioning delle credenziali e dei binding IAM (Identity and Access Management): Google Cloud

    ccoctl gcp create-all \
      --name=cso-telemetry \
      --region=REGION \
      --project=PROJECT_ID \
      --credentials-requests-dir=./credrequests \
      --output-dir=./ccoctl-out
    

    Sostituisci quanto segue:

    • REGION: la regione Compute Engine in cui viene eseguito il cluster OpenShift
    • PROJECT_ID: l'ID progetto del progetto Google Cloud in cui viene eseguito il cluster OpenShift
  3. Applica al cluster i manifest del provider OpenID Connect (OIDC), dei ruoli IAM e dei secret generati:

    oc apply -f ./ccoctl-out/manifests/
    

I passaggi precedenti creano un account di servizio nel tuo progetto Google Cloud e gli assegnano i seguenti ruoli IAM:

Autenticare l'operatore utilizzando una chiave del account di servizio

Se la tua organizzazione non supporta l'utilizzo della federazione di Workload Identity per l'autenticazione, puoi autenticare l'operatore di telemetria utilizzando una chiave del account di servizio.

Per autenticare l'operatore di telemetria come account di servizio utilizzando una chiave account di servizio, completa i seguenti passaggi:

  1. Nel terminale, estrai il manifest CredentialsRequest dal pacchetto dell'operatore di telemetria in una directory locale:

    mkdir -p credrequests
    oc image extract us-docker.pkg.dev/workload-agent-products/cluster-services-for-openshift-telemetry/bundle:VERSION --path /manifests/:./credrequests --confirm
    
  2. Nel tuo progetto Google Cloud , crea un account di servizio per l'operatore di telemetria:

    gcloud iam service-accounts create cso-telemetry-agent \
      --description="Service account for OpenShift Telemetry Operator" \
      --display-name="CSO Telemetry Agent" \
      --project=PROJECT_ID
    

    Sostituisci PROJECT_ID con l'ID del progettoGoogle Cloud in cui viene eseguito il cluster OpenShift.

  3. Per consentire al account di servizio di accedere alle risorse Google Cloud , concedi al account di servizio i ruoli IAM definiti nel manifest CredentialsRequest. Questo manifest include il seguente insieme minimo di ruoli IAM necessari all'operatore:

    Per ogni ruolo IAM definito in questo manifest, esegui questo comando:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:cso-telemetry-agent@PROJECT_ID.iam.gserviceaccount.com" \
      --role="IAM_ROLE"
    

    Sostituisci IAM_ROLE con il ruolo IAM che vuoi concedere al account di servizio.

  4. Crea e scarica una chiave privata per l'account di servizio:

    gcloud iam service-accounts keys create ./sa_key.json \
      --iam-account=cso-telemetry-agent@PROJECT_ID.iam.gserviceaccount.com \
      --project=PROJECT_ID
    
  5. Nello spazio dei nomi openshift-operators, crea un secret denominato telemetry-agent-sa per la chiave delaccount di serviziot che hai creato:

    oc create secret generic telemetry-agent-sa \
      --from-file=workload_agent_sa_key.json=./sa_key.json \
      -n openshift-operators
    

Installa l'operatore Cluster Services for OpenShift Telemetry

Puoi installare l'operatore Cluster Services for OpenShift Telemetry utilizzando la console web Red Hat OpenShift Container Platform o i manifest YAML di sottoscrizione dichiarativa. Per informazioni su queste opzioni, consulta il documento Red Hat Aggiunta di operatori a un cluster.

Console web OpenShift

Per installare l'operatore di telemetria nel cluster OpenShift utilizzando la console web OpenShift Container Platform, completa i seguenti passaggi:

  1. Accedi alla console web Red Hat OpenShift.
  2. Verifica di trovarti nella prospettiva Amministratore.
  3. Nel riquadro di navigazione a sinistra, espandi la sezione Operatori e fai clic su OperatorHub.
  4. Nella barra di ricerca sotto Tutti gli elementi, inserisci Cluster Services for OpenShift Telemetry.

    In alternativa, puoi eseguire una ricerca inserendo Google. Questo filtro gli operatori forniti da Google, incluso l'operatore Cluster Services per OpenShift Telemetry.

  5. Fai clic sulla scheda denominata Cluster Services for OpenShift Telemetry.

  6. Nel riquadro Cluster Services for OpenShift Telemetry, fai clic su Installa.

  7. Nella pagina Installa operatore, completa i seguenti passaggi:

    1. Nel campo Canale di aggiornamento, seleziona stable.
    2. Nel campo Modalità di installazione, seleziona Uno spazio dei nomi specifico sul cluster.
    3. Nel campo Spazio dei nomi installato, seleziona il progetto openshift-operators o crea uno spazio dei nomi di monitoraggio personalizzato.
    4. Nel campo Strategia di approvazione, seleziona Automatica o Manuale.
    5. Fai clic su Installa.
  8. Per verificare che l'operatore sia stato installato correttamente, completa i seguenti passaggi:

    1. Vai a Operatori > Operatori installati.
    2. Nell'elenco degli operatori, cerca e verifica che sia presente l'operatore Cluster Services for OpenShift Telemetry.
    3. Verifica che la colonna Stato mostri il valore Riuscito o Aggiornato.
    4. (Facoltativo) Fai clic sull'operatore per visualizzarne i dettagli.

Interfaccia a riga di comando OpenShift

Per installare l'operatore di telemetria nel cluster OpenShift utilizzando l'interfaccia a riga di comando di OpenShift e un manifest YAML Subscription dichiarativo, completa i seguenti passaggi:

  1. Crea un manifest della risorsa personalizzata Subscription denominato subscription.yaml con la seguente configurazione:

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: google-cloud-cluster-services-for-openshift-telemetry
      namespace: openshift-operators
    spec:
      channel: stable
      installPlanApproval: Automatic
      name: google-cloud-cluster-services-for-openshift-telemetry
      source: certified-operators
      sourceNamespace: openshift-marketplace
    
  2. Applica l'abbonamento al tuo cluster:

    oc apply -f subscription.yaml
    
  3. Verifica che l'operatore di telemetria sia stato installato correttamente controllando lo stato di ClusterServiceVersion:

    oc get csv -n openshift-operators
    

    Nell'output, verifica che il valore nella colonna PHASE per cluster-services-for-openshift-telemetry sia Succeeded.

Abilita raccolta delle metriche

Per consentire all'operatore di raccogliere le metriche dal cluster OpenShift, devi applicare una risorsa personalizzata TelemetryConfig. Questa risorsa esegue il deployment dei pod daemon sui nodi del cluster per l'agente per i carichi di lavoro di Compute.

Per consentire all'operatore di raccogliere le metriche dal cluster OpenShift, completa i seguenti passaggi:

  1. Crea un manifest di risorse personalizzato TelemetryConfig denominato telemetryconfig.yaml:

    • Se hai configurato l'autenticazione per l'operatore di telemetria utilizzando la federazione delle identità per i carichi di lavoro, utilizza la seguente risorsa personalizzata minima. Questa risorsa personalizzata recupera automaticamente le credenziali memorizzate nel secret google-cloud-cluster-services-telemetry-agent-wif-secret.

      apiVersion: cluster-services-openshift.cloud.google.com/v1alpha1
      kind: TelemetryConfig
      metadata:
        name: telemetryconfig
        namespace: openshift-operators
      spec:
        enabled: true
      
    • Se hai configurato l'autenticazione per l'operatore di telemetria utilizzando una chiave dell'account di servizio, utilizza la seguente risorsa personalizzata:

      apiVersion: cluster-services-openshift.cloud.google.com/v1alpha1
      kind: TelemetryConfig
      metadata:
        name: telemetryconfig
        namespace: openshift-operators
      spec:
        enabled: true
        serviceAccountCredentialsSecretName: telemetry-agent-sa
        serviceAccountCredentialsPath: SERVICE_ACCOUNT_KEY_PATH
      

      Sostituisci SERVICE_ACCOUNT_KEY_PATH con il percorso in cui hai montato la chiave delaccount di serviziot. Il nome del punto di montaggio deve corrispondere al file JSON della chiave dell'account di servizio. Ad esempio: /var/run/secrets/google/workload_agent_sa_key.json.

  2. Applica la risorsa personalizzata al tuo cluster:

    oc apply -f telemetryconfig.yaml
    
  3. Verifica che lo stato del pod dell'agente di telemetria sia Running:

    oc get pods -n openshift-operators -l app.kubernetes.io/name=workloadagent-operator
    

    Puoi anche verificare la raccolta delle metriche esaminando i log del pod:

    "openshiftmetrics/openshiftmetrics.go:126","msg":"Metric payload after collection","pid":5,"context":"OpenShiftMetricCollection","payload":"version:\"v0.1.0-pre\" agent_version:\"1.3\"

Visualizza i log dell'operatore in Cloud Logging

Per impostazione predefinita, i log dell'operatore Cluster Services for OpenShift Telemetry vengono inviati a Cloud Logging. Puoi visualizzare questi log in Logging. Per visualizzare i log dell'operatore in Logging, completa i seguenti passaggi:

  1. Nella console Google Cloud , vai alla pagina Esplora log.

    Vai a Esplora log

  2. Nel riquadro della query, inserisci una query:

    • Per filtrare i log per il tuo progetto Google Cloud , utilizza la seguente query:

      logName="projects/PROJECT_ID/logs/google-cloud-workload-agent"

      Sostituisci PROJECT_ID con l'ID progetto del progettoGoogle Cloud in cui viene eseguito il cluster OpenShift.

    • Se esegui più cluster nel tuo progetto Google Cloud e vuoi filtrare i log di un cluster specifico, utilizza la seguente query:

      resource.labels.instance_id=("COMPUTE_INSTANCE_ID_1" OR "COMPUTE_INSTANCE_ID_2" OR "COMPUTE_INSTANCE_ID_3")

      Sostituisci COMPUTE_INSTANCE_ID con l'ID istanza delle istanze di Compute Engine che eseguono il cluster OpenShift. Per informazioni su come trovare l'ID istanza di Compute, vedi Visualizzare i dettagli di una VM.

  3. Fai clic su Esegui query.

Configura policy di avviso basate su log

Per impostazione predefinita, i log dell'operatore di telemetria vengono inviati a Cloud Logging. Ti consigliamo di configurare criteri di avviso basati sui log dell'operatore di telemetria, che ti avvisano quando nei log vengono visualizzati messaggi specifici. Questi avvisi ti aiutano a monitorare il funzionamento dell'operatore e a risolvere i problemi.

Per configurare un criterio di avviso in base ai log generati dall'operatore di telemetria, completa i seguenti passaggi:

  1. Verifica di aver soddisfatto i prerequisiti descritti nella sezione "Prima di iniziare" di Configurare i criteri di avviso basati sui log.

  2. Nella console Google Cloud , vai alla pagina Esplora log.

    Vai a Esplora log

  3. Nel riquadro della query, inserisci la query richiesta:

    logName="projects/PROJECT_ID/logs/google-cloud-workload-agent"
    severity=SEVERITY_LEVEL

    Sostituisci SEVERITY_LEVEL con un valore del livello di gravità supportato, che include: DEBUG, INFO, WARNING e ERROR. Ti consigliamo di utilizzare ERROR o un valore del livello di log superiore.

  4. Fai clic su Esegui query per convalidare la query.

  5. Crea un avviso log.

    Per scoprire come creare questo avviso, consulta il passaggio 3 della procedura descritta in Creare una criterio di avviso basata su log utilizzando Esplora log.

(Facoltativo) Abilitare le valutazioni specifiche per la produzione

Delle best practice supportate da Workload Manager per i cluster OpenShift, alcune vengono applicate solo agli ambienti di produzione. Workload Manager fa questa distinzione controllando il cluster, il deployment o il pod per l'etichetta environment. Se il valore associato a questa etichetta è production, Workload Manager considera questa risorsa come una risorsa di produzione.

Per comunicare a Workload Manager che un cluster appartiene a un ambiente di produzione, completa i seguenti passaggi:

  1. Crea uno spazio dei nomi workloadmanager:

    oc create namespace workloadmanager
    
  2. Crea un ConfigMap nello spazio dei nomi workloadmanager utilizzando la seguente configurazione:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: wlm-cluster-environment
      namespace: workloadmanager
    data:
      # Options: "production" or "non-production"
      environment: "production"
    

Per comunicare a Workload Manager che un deployment o un pod appartiene a un ambiente di produzione, aggiungi un'etichetta denominata environment alla definizione della risorsa utilizzando una delle seguenti opzioni:

  • Applica manualmente la seguente configurazione:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-app
      labels:
        # Options: "production" or "non-production"
        environment: "production"
    spec:
    ...
    
  • Esegui questo comando:

    oc label --overwrite deployments DEPLOYMENT_NAME environment=production
    

    Sostituisci DEPLOYMENT_NAME con il nome del deployment.

Se applichi l'etichetta environment al cluster OpenShift e a un deployment o pod in esecuzione sul cluster, Workload Manager dà la precedenza al valore dell'etichetta impostato per il deployment o il pod rispetto al valore dell'etichetta impostato per il cluster.

(Facoltativo) Attiva la raccolta delle metriche

Dopo aver configurato correttamente l'operatore Cluster Services for OpenShift Telemetry nel cluster OpenShift, l'operatore raccoglie le metriche dal cluster e le invia a Workload Manager ogni 30 minuti.

Facoltativamente, anziché attendere 30 minuti per la raccolta pianificata delle metriche, puoi attivare manualmente l'operatore per raccogliere le metriche e inviarle a Workload Manager.

Per attivare manualmente l'operatore per la raccolta delle metriche, completa i seguenti passaggi:

  1. Apri il terminale.

  2. Trova il nome del pod in esecuzione:

    POD_NAME=$(oc get pods -l app.kubernetes.io/name=workloadagent-operator --field-selector=status.phase=Running -o=name)
    
  3. Attiva l'operatore per raccogliere e inviare le metriche:

    oc debug -t $POD_NAME -- /openshift-docker-entrypoint.sh
    

Passaggi successivi