Neste documento, descrevemos como instalar o operador de telemetria dos serviços de cluster para OpenShift e configurá-lo para se conectar a um cluster do OpenShift executado em uma instância do Compute Engine.
Depois de instalado e configurado, esse operador de telemetria implanta um daemon de telemetria de rede do host que monitora continuamente a integridade e a configuração do cluster. O operador envia as métricas coletadas para o Workload Manager. Em seguida, use a avaliação do Workload Manager para verificar se as cargas de trabalho executadas no cluster estão em conformidade com as práticas recomendadas para clusters do OpenShift.
Antes de começar
Antes de instalar e configurar o operador de telemetria, verifique se os seguintes pré-requisitos foram atendidos:
- Você está usando a versão 4.18 ou mais recente do Red Hat OpenShift Container Platform.
- Você implantou um cluster do OpenShift em uma ou mais instâncias de computação.
- Seu administrador concedeu a você a função ClusterAdmin para seu cluster no Red Hat OpenShift Container Platform.
- Você baixou e instalou a Google Cloud CLI no seu terminal. Se você estiver usando o Cloud Shell, poderá ignorar esse pré-requisito.
- Você instalou a CLI do OpenShift (
oc) no cluster. Para informações sobre como instalar essa CLI, consulte o documento da Red Hat Instalar a CLI do OpenShift. - Você instalou o utilitário do operador de credenciais do Cloud (
ccoctl). Para informações sobre como instalar esse utilitário, consulte o documento da Red Hat Como obter a ferramentaccoctlpara o OpenShift 4. - Você revisou as regiões compatíveis em que é possível criar avaliações do Workload Manager.
- Seu administrador concedeu a você papéis do IAM necessários para criar e executar avaliações do Workload Manager.
- Você ativou o acesso às APIs do Cloud.
Ativar o acesso às APIs do Cloud
O Compute Engine recomenda configurar as instâncias para permitir todos os escopos de acesso a todas as APIs do Cloud e usar apenas as permissões do IAM da conta de serviço da instância para controlar o acesso aos recursos doGoogle Cloud . Para mais informações, consulte Criar uma VM que usa uma conta serviço gerenciado pelo usuário.
Se você limitar o acesso às APIs do Cloud, o operador Cluster Services for OpenShift Telemetry exigirá no mínimo os seguintes escopos de acesso às APIs do Cloud na instância de computação do host:
https://www.googleapis.com/auth/cloud-platform
Para mais informações, consulte Práticas recomendadas para escopos.
Se você estiver executando um cluster do OpenShift em uma instância de computação que não tem um endereço IP externo, ative o Acesso Privado do Google na sub-rede da instância para que o operador Cluster Services for OpenShift Telemetry possa acessar as APIs e os serviços do Google. Para saber como ativar o Acesso privado do Google, consulte Configurar o Acesso privado do Google.
Autenticar usuários no cluster do OpenShift
Para realizar ações administrativas, você ou seus usuários precisam ser autenticados no cluster do OpenShift usando a CLI do OpenShift. Para autenticar usuários no cluster do OpenShift, escolha uma das seguintes opções:
Execute o comando a seguir e siga as instruções:
oc login "https://api.CLUSTER_DOMAIN:6443" -u kubeadminComo alternativa, receba um token de autenticação de sessão para usar com o binário
oc. Para receber esse token, abra o seguinte URL em um navegador da Web:https://oauth-openshift.apps.CLUSTER_DOMAIN/oauth/token/request
Substitua CLUSTER_DOMAIN pelo domínio do seu cluster do OpenShift. Por exemplo, mycluster.google.com.
Autenticar o operador em Google Cloud
Para permitir que o operador de telemetria se autentique e acesse recursos do Google Cloud, crie uma conta de serviço para ele no projeto Google Cloud .
É possível autenticar o operador de telemetria como a conta de serviço usando as seguintes opções:
- (Recomendado) Autenticar usando a federação de identidade da carga de trabalho
- Autenticar usando uma chave de conta de serviço
Autenticar o operador usando a federação de identidade da carga de trabalho
Para autenticar o operador de telemetria como a conta de serviço usando a federação de identidade da carga de trabalho, siga estas etapas:
No terminal, extraia o manifesto
CredentialsRequestdo pacote do operador de telemetria para um diretório local:mkdir -p credrequests oc image extract us-docker.pkg.dev/workload-agent-products/cluster-services-for-openshift-telemetry/bundle:VERSION --path /manifests/:./credrequests --confirmSubstitua
VERSIONpelo número da versão que você assinou para o operador de telemetria no OperatorHub. Confira a lista de números de versão certificados para o operador de telemetria no catálogo do ecossistema da Red Hat.Usando o utilitário
ccoctl, processe o manifestoCredentialsRequestextraído e provisione Google Cloud vinculações e credenciais do Identity and Access Management (IAM) :ccoctl gcp create-all \ --name=cso-telemetry \ --region=REGION \ --project=PROJECT_ID \ --credentials-requests-dir=./credrequests \ --output-dir=./ccoctl-outSubstitua:
REGION: a região do Compute Engine em que o cluster do OpenShift é executado.PROJECT_ID: o ID do projeto do Google Cloud em que seu cluster do OpenShift é executado
Aplique o provedor OpenID Connect (OIDC) gerado, as funções do IAM e os manifestos secretos ao cluster:
oc apply -f ./ccoctl-out/manifests/
As etapas anteriores criam uma conta de serviço no projeto Google Cloud e atribuem a ela os seguintes papéis do IAM:
- Para coletar métricas da instância de computação:
Leitor do Compute (
roles/compute.viewer) - Para gravar dados no data warehouse do Workload Manager:
Gravador de insights do gerenciador de cargas de trabalho (
roles/workloadmanager.insightWriter) - Para enviar registros do operador ao Cloud Logging:
Gravador de registros (
roles/logging.logWriter)
Autenticar o operador usando uma chave de conta de serviço
Se a organização não aceitar o uso da federação de identidade da carga de trabalho para fins de autenticação, autentique o operador de telemetria usando uma chave de conta de serviço.
Para autenticar o operador de telemetria como a conta de serviço usando uma chave de conta de serviço, siga estas etapas:
No terminal, extraia o manifesto
CredentialsRequestdo pacote do operador de telemetria para um diretório local:mkdir -p credrequests oc image extract us-docker.pkg.dev/workload-agent-products/cluster-services-for-openshift-telemetry/bundle:VERSION --path /manifests/:./credrequests --confirmNo projeto Google Cloud , crie uma conta de serviço para o operador de telemetria:
gcloud iam service-accounts create cso-telemetry-agent \ --description="Service account for OpenShift Telemetry Operator" \ --display-name="CSO Telemetry Agent" \ --project=PROJECT_IDSubstitua
PROJECT_IDpelo ID do projetoGoogle Cloud em que o cluster do OpenShift é executado.Para permitir que a conta de serviço acesse recursos do Google Cloud , conceda a ela os papéis do IAM definidos no manifesto do
CredentialsRequest. Esse manifesto inclui o seguinte conjunto mínimo de papéis do IAM que o operador precisa:- Para coletar métricas da instância de computação:
Leitor do Compute (
roles/compute.viewer) - Para gravar dados no data warehouse do Workload Manager:
Gravador de insights do gerenciador de cargas de trabalho (
roles/workloadmanager.insightWriter) - Para enviar registros do operador ao Cloud Logging:
Gravador de registros (
roles/logging.logWriter)
Para cada papel do IAM definido neste manifesto, execute o comando a seguir:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:cso-telemetry-agent@PROJECT_ID.iam.gserviceaccount.com" \ --role="IAM_ROLE"Substitua
IAM_ROLEpelo papel do IAM que você quer conceder à conta de serviço.- Para coletar métricas da instância de computação:
Leitor do Compute (
Crie e faça o download de uma chave privada para a conta de serviço:
gcloud iam service-accounts keys create ./sa_key.json \ --iam-account=cso-telemetry-agent@PROJECT_ID.iam.gserviceaccount.com \ --project=PROJECT_IDNo namespace
openshift-operators, crie um secret chamadotelemetry-agent-sapara a chave da conta de serviço que você criou:oc create secret generic telemetry-agent-sa \ --from-file=workload_agent_sa_key.json=./sa_key.json \ -n openshift-operators
Instalar o operador do Cluster Services for OpenShift Telemetry
É possível instalar o operador Cluster Services for OpenShift Telemetry usando o console da Web do Red Hat OpenShift Container Platform ou os manifestos YAML de assinatura declarativa. Para informações sobre essas opções, consulte o documento do Red Hat Adicionar operadores a um cluster.
Console da Web do OpenShift
Para instalar o operador de telemetria no cluster do OpenShift usando o console da Web do OpenShift Container Platform, siga estas etapas:
- Faça login no console da Web do Red Hat OpenShift.
- Verifique se você está na perspectiva Administrador.
- Na navegação à esquerda, expanda a seção Operadores e clique em OperatorHub.
Na barra de pesquisa em Todos os itens, digite Cluster Services for OpenShift Telemetry.
Você também pode pesquisar Google. Isso filtra os operadores fornecidos pelo Google, incluindo o operador dos Cluster Services for OpenShift Telemetry.
Clique no card Cluster Services for OpenShift Telemetry.
No painel Cluster Services for OpenShift Telemetry, clique em Instalar.
Na página Instalar operador, siga estas etapas:
- No campo Canal de atualização, selecione estável.
- No campo Modo de instalação, selecione Um namespace específico no cluster.
- No campo Namespace instalado, selecione o projeto openshift-operators ou crie um namespace de monitoramento personalizado.
- No campo Estratégia de aprovação, selecione Automática ou Manual.
- Clique em Instalar.
Para verificar se o operador foi instalado com sucesso, siga estas etapas:
- Acesse Operadores > Operadores instalados.
- Na lista de operadores, pesquise e verifique se o operador Cluster Services for OpenShift Telemetry está presente.
- Verifique se a coluna Status mostra o valor Concluído ou Atualizado.
- Se quiser, clique no operador para conferir os detalhes.
CLI do OpenShift
Para instalar o operador de telemetria no cluster do OpenShift
usando a CLI do OpenShift e um manifesto
YAML Subscription declarativo, siga estas etapas:
Crie um manifesto de recurso personalizado
Subscriptionchamadosubscription.yamlcom a seguinte configuração: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-marketplaceAplique a assinatura ao cluster:
oc apply -f subscription.yamlVerifique se o operador de telemetria foi instalado com sucesso conferindo o status de
ClusterServiceVersion:oc get csv -n openshift-operatorsNa saída, verifique se o valor na coluna
PHASEparacluster-services-for-openshift-telemetryéSucceeded.
Ativar coleta de métricas
Para permitir que o operador colete métricas do cluster do OpenShift, é necessário
aplicar um recurso personalizado TelemetryConfig. Esse recurso implanta pods de daemon nos nós do cluster para o Agente para cargas de trabalho computacionais.
Para permitir que o operador colete métricas do cluster do OpenShift, siga estas etapas:
Crie um manifesto de recurso personalizado
TelemetryConfigchamadotelemetryconfig.yaml:Se você configurou a autenticação para o operador de telemetria usando a federação de identidade da carga de trabalho, use o seguinte recurso personalizado mínimo. Esse recurso personalizado busca automaticamente as credenciais armazenadas no 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 você configurou a autenticação para o operador de telemetria usando uma chave de conta de serviço, use o seguinte recurso personalizado:
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_PATHSubstitua
SERVICE_ACCOUNT_KEY_PATHpelo caminho em que você montou a chave da conta de serviço. O nome da montagem precisa corresponder ao arquivo JSON da chave da conta de serviço. Por exemplo,/var/run/secrets/google/workload_agent_sa_key.json.
Aplique o recurso personalizado ao cluster:
oc apply -f telemetryconfig.yamlVerifique se o estado do pod do agente de telemetria é Em execução:
oc get pods -n openshift-operators -l app.kubernetes.io/name=workloadagent-operatorTambém é possível verificar a coleta de métricas inspecionando os registros do pod:
"openshiftmetrics/openshiftmetrics.go:126","msg":"Metric payload after collection","pid":5,"context":"OpenShiftMetricCollection","payload":"version:\"v0.1.0-pre\" agent_version:\"1.3\"
Ver registros do operador no Cloud Logging
Por padrão, os registros do operador do Cluster Services for OpenShift Telemetry são enviados para o Cloud Logging. É possível conferir esses registros no Logging. Para conferir os registros do operador no Logging, siga estas etapas:
No console do Google Cloud , acesse a página Análise de registros.
No painel de consulta, digite uma consulta:
Para filtrar os registros do seu projeto Google Cloud , use a seguinte consulta:
logName="projects/PROJECT_ID/logs/google-cloud-workload-agent"
Substitua
PROJECT_IDpelo ID do projeto do projetoGoogle Cloud em que o cluster do OpenShift é executado.Se você estiver executando vários clusters no seu projeto Google Cloud e quiser filtrar os registros de um cluster específico, use a seguinte consulta:
resource.labels.instance_id=("COMPUTE_INSTANCE_ID_1" OR "COMPUTE_INSTANCE_ID_2" OR "COMPUTE_INSTANCE_ID_3")Substitua
COMPUTE_INSTANCE_IDpelo ID da instância das instâncias do Compute Engine que executam seu cluster do OpenShift. Para informações sobre como encontrar o ID da instância de computação, consulte Ver os detalhes de uma VM.
Clique em Executar consulta.
Configurar políticas de alertas baseadas em registros
Por padrão, os registros do operador de telemetria são enviados para o Cloud Logging. Recomendamos que você configure políticas de alertas com base nos registros do operador de telemetria, que notificam quando mensagens específicas aparecem nos registros. Esses alertas ajudam a monitorar o funcionamento do operador e resolver problemas.
Para configurar uma política de alertas com base nos registros gerados pelo operador de telemetria, siga estas etapas:
Verifique se você atende aos pré-requisitos descritos na seção "Antes de começar" de Configurar políticas de alertas com base em registros.
No console do Google Cloud , acesse a página Análise de registros.
No painel de consulta, insira a consulta necessária:
logName="projects/PROJECT_ID/logs/google-cloud-workload-agent" severity=SEVERITY_LEVEL
Substitua
SEVERITY_LEVELpor um valor de nível de gravidade compatível, que inclui:DEBUG,INFO,WARNINGeERROR. Recomendamos usarERRORou um valor de nível de registro mais alto.Clique em Executar consulta para validar a consulta.
Crie um alerta de registro.
Para saber como criar esse alerta, consulte a etapa três do procedimento descrito em Criar uma política de alertas com base em registros usando a Análise de registros.
Opcional: ativar avaliações específicas de produção
Das práticas recomendadas que o Workload Manager oferece suporte para clusters do OpenShift, algumas são aplicadas apenas a ambientes de produção.
O Workload Manager faz essa distinção verificando se o cluster, a implantação ou o pod tem o rótulo environment. Se o valor associado a esse rótulo for production, o Workload Manager vai considerar esse recurso como de produção.
Para informar ao Workload Manager que um cluster pertence a um ambiente de produção, siga estas etapas:
Crie um namespace
workloadmanager:oc create namespace workloadmanagerCrie um
ConfigMapno namespaceworkloadmanagerusando a seguinte configuração:apiVersion: v1 kind: ConfigMap metadata: name: wlm-cluster-environment namespace: workloadmanager data: # Options: "production" or "non-production" environment: "production"
Para informar ao Workload Manager que uma implantação ou um pod pertence a um
ambiente de produção, adicione um rótulo chamado environment à definição de
recurso usando uma das seguintes opções:
Aplique manualmente a seguinte configuração:
apiVersion: apps/v1 kind: Deployment metadata: name: my-app labels: # Options: "production" or "non-production" environment: "production" spec: ...Execute este comando:
oc label --overwrite deployments DEPLOYMENT_NAME environment=productionSubstitua
DEPLOYMENT_NAMEpelo nome da implantação.
Se você aplicar o rótulo environment no cluster do OpenShift e em uma
implantação ou pod executado no cluster, o Workload Manager
vai dar precedência ao valor do rótulo definido para a implantação ou o pod em vez do valor
definido para o cluster.
Opcional: acionar a coleta de métricas
Depois de configurar o operador do Cluster Services for OpenShift Telemetry no cluster do OpenShift, o operador coleta métricas do cluster e as envia ao Workload Manager a cada 30 minutos.
Se quiser, em vez de esperar 30 minutos para a coleta programada de métricas, acione manualmente o operador para coletar e enviar métricas ao Workload Manager.
Para acionar manualmente o operador para coleta de métricas, siga estas etapas:
Abra o terminal.
Encontre o nome do pod em execução:
POD_NAME=$(oc get pods -l app.kubernetes.io/name=workloadagent-operator --field-selector=status.phase=Running -o=name)Acione o operador para coletar e enviar métricas:
oc debug -t $POD_NAME -- /openshift-docker-entrypoint.sh
A seguir
- Criar e executar uma avaliação
- Saiba mais sobre as práticas recomendadas do Workload Manager para OpenShift