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:
- Utilizzi la versione 4.18 o successive di Red Hat OpenShift Container Platform.
- Hai eseguito il deployment di un cluster OpenShift su una o più istanze di computing.
- L'amministratore ti ha concesso il ruolo ClusterAdmin per il tuo cluster in Red Hat OpenShift Container Platform.
- Hai scaricato e installato Google Cloud CLI nel terminale. Se utilizzi Cloud Shell, puoi saltare questo prerequisito.
- Hai installato la CLI OpenShift (
oc) nel cluster. Per informazioni su come installare questa CLI, consulta il documento Red Hat Installing the OpenShift CLI. - Hai installato l'utilità Cloud Credentials Operator (
ccoctl). Per informazioni su come installare questa utilità, consulta il documento Red Hat Come ottenere lo strumentoccoctlper OpenShift 4. - Hai esaminato le regioni supportate in cui puoi creare valutazioni di Workload Manager.
- L'amministratore ti ha concesso i ruoli IAM necessari per creare ed eseguire le valutazioni di Workload Manager.
- Hai abilitato l'accesso alle API Cloud.
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 kubeadminIn 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:
- (Consigliato) Esegui l'autenticazione utilizzando la federazione di Workload Identity
- Autenticarsi utilizzando una account di servizio account
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:
Nel terminale, estrai il manifest
CredentialsRequestdal 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 --confirmSostituisci
VERSIONcon 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.Utilizza l'utilità
ccoctlper elaborare il file manifestCredentialsRequestestratto e il provisioning delle credenziali e dei binding IAM (Identity and Access Management): Google Cloudccoctl gcp create-all \ --name=cso-telemetry \ --region=REGION \ --project=PROJECT_ID \ --credentials-requests-dir=./credrequests \ --output-dir=./ccoctl-outSostituisci quanto segue:
REGION: la regione Compute Engine in cui viene eseguito il cluster OpenShiftPROJECT_ID: l'ID progetto del progetto Google Cloud in cui viene eseguito il cluster OpenShift
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:
- Per raccogliere le metriche dall'istanza di Compute:
Visualizzatore Compute (
roles/compute.viewer) - Per scrivere dati nel data warehouse di Workload Manager:
Workload Manager Insights Writer (
roles/workloadmanager.insightWriter) - Per inviare i log dell'operatore a Cloud Logging:
Scrittore log (
roles/logging.logWriter)
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:
Nel terminale, estrai il manifest
CredentialsRequestdal 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 --confirmNel 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_IDSostituisci
PROJECT_IDcon l'ID del progettoGoogle Cloud in cui viene eseguito il cluster OpenShift.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 raccogliere le metriche dall'istanza di Compute:
Visualizzatore Compute (
roles/compute.viewer) - Per scrivere dati nel data warehouse di Workload Manager:
Workload Manager Insights Writer (
roles/workloadmanager.insightWriter) - Per inviare i log dell'operatore a Cloud Logging:
Scrittore log (
roles/logging.logWriter)
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_ROLEcon il ruolo IAM che vuoi concedere al account di servizio.- Per raccogliere le metriche dall'istanza di Compute:
Visualizzatore Compute (
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_IDNello spazio dei nomi
openshift-operators, crea un secret denominatotelemetry-agent-saper 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:
- Accedi alla console web Red Hat OpenShift.
- Verifica di trovarti nella prospettiva Amministratore.
- Nel riquadro di navigazione a sinistra, espandi la sezione Operatori e fai clic su OperatorHub.
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.
Fai clic sulla scheda denominata Cluster Services for OpenShift Telemetry.
Nel riquadro Cluster Services for OpenShift Telemetry, fai clic su Installa.
Nella pagina Installa operatore, completa i seguenti passaggi:
- Nel campo Canale di aggiornamento, seleziona stable.
- Nel campo Modalità di installazione, seleziona Uno spazio dei nomi specifico sul cluster.
- Nel campo Spazio dei nomi installato, seleziona il progetto openshift-operators o crea uno spazio dei nomi di monitoraggio personalizzato.
- Nel campo Strategia di approvazione, seleziona Automatica o Manuale.
- Fai clic su Installa.
Per verificare che l'operatore sia stato installato correttamente, completa i seguenti passaggi:
- Vai a Operatori > Operatori installati.
- Nell'elenco degli operatori, cerca e verifica che sia presente l'operatore Cluster Services for OpenShift Telemetry.
- Verifica che la colonna Stato mostri il valore Riuscito o Aggiornato.
- (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:
Crea un manifest della risorsa personalizzata
Subscriptiondenominatosubscription.yamlcon 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-marketplaceApplica l'abbonamento al tuo cluster:
oc apply -f subscription.yamlVerifica che l'operatore di telemetria sia stato installato correttamente controllando lo stato di
ClusterServiceVersion:oc get csv -n openshift-operatorsNell'output, verifica che il valore nella colonna
PHASEpercluster-services-for-openshift-telemetrysiaSucceeded.
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:
Crea un manifest di risorse personalizzato
TelemetryConfigdenominatotelemetryconfig.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: trueSe 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_PATHSostituisci
SERVICE_ACCOUNT_KEY_PATHcon 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.
Applica la risorsa personalizzata al tuo cluster:
oc apply -f telemetryconfig.yamlVerifica che lo stato del pod dell'agente di telemetria sia Running:
oc get pods -n openshift-operators -l app.kubernetes.io/name=workloadagent-operatorPuoi 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:
Nella console Google Cloud , vai alla pagina Esplora log.
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_IDcon 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_IDcon 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.
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:
Verifica di aver soddisfatto i prerequisiti descritti nella sezione "Prima di iniziare" di Configurare i criteri di avviso basati sui log.
Nella console Google Cloud , vai alla pagina Esplora log.
Nel riquadro della query, inserisci la query richiesta:
logName="projects/PROJECT_ID/logs/google-cloud-workload-agent" severity=SEVERITY_LEVEL
Sostituisci
SEVERITY_LEVELcon un valore del livello di gravità supportato, che include:DEBUG,INFO,WARNINGeERROR. Ti consigliamo di utilizzareERRORo un valore del livello di log superiore.Fai clic su Esegui query per convalidare la query.
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:
Crea uno spazio dei nomi
workloadmanager:oc create namespace workloadmanagerCrea un
ConfigMapnello spazio dei nomiworkloadmanagerutilizzando 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=productionSostituisci
DEPLOYMENT_NAMEcon 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:
Apri il terminale.
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)Attiva l'operatore per raccogliere e inviare le metriche:
oc debug -t $POD_NAME -- /openshift-docker-entrypoint.sh
Passaggi successivi
- Crea ed esegui una valutazione
- Scopri di più sulle best practice di Gestore workload per OpenShift