Configurar o operador do Cluster Services for OpenShift Telemetry

Este documento descreve como instalar o operador Cluster Services for OpenShift Telemetry e configurá-lo para se conectar a um cluster do OpenShift em execução em uma instância do Compute Engine.

Depois de instalado e configurado, esse operador de telemetria implanta um daemon de telemetria de rede de host que monitora continuamente a integridade e a configuração do cluster. O operador envia as métricas coletadas para o Gerenciador de cargas de trabalho. Em seguida, é possível usar a avaliação do Gerenciador de cargas de trabalho para verificar se as cargas de trabalho em execução no cluster apresentam desvios das 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:

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.Google 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 de escopos.

Se você estiver executando um cluster do OpenShift em uma instância de computação que não tenha 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 mais informações sobre 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 kubeadmin
    
  • Como alternativa, receba um token de autenticação de sessão para uso com o binário oc. Para receber esse token, abra o URL a seguir em um navegador da Web:

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

Substitua CLUSTER_DOMAIN pelo domínio do cluster do OpenShift. Por exemplo, mycluster.google.com.

Autenticar o operador no Google Cloud

Para permitir que o operador de telemetria se autentique e acesse Google Cloud recursos, crie uma conta de serviço para ele em seu Google Cloud projeto.

É possível autenticar o operador de telemetria como a conta de serviço usando as seguintes opções:

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:

  1. No terminal, extraia o manifesto CredentialsRequest do 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 --confirm
    

    Substitua VERSION pelo número da versão que você assinou para o operador de telemetria no OperatorHub. É possível conferir a lista de números de versão certificados para o operador de telemetria no Red Hat Ecosystem Catalog (em inglês).

  2. Usando o utilitário ccoctl, processe o manifesto CredentialsRequest extraído e provisione as vinculações Google Cloud do Identity and Access Management (IAM) e credenciais:

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

    Substitua:

    • REGION: a região do Compute Engine em que o cluster do OpenShift é executado
    • PROJECT_ID: o ID do projeto em que o cluster do OpenShift é executado Google Cloud
  3. Aplique o provedor OpenID Connect (OIDC) gerado, os papéis do IAM e os manifestos secretos ao cluster:

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

As etapas anteriores criam uma conta de serviço em seu Google Cloud projeto e atribuem a ela os seguintes papéis do IAM:

Autenticar o operador usando uma chave de conta de serviço

Se a organização não oferecer suporte ao uso da federação de identidade da carga de trabalho para fins de autenticação, será possível autenticar 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:

  1. No terminal, extraia o manifesto CredentialsRequest do 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 --confirm
    
  2. Em seu Google Cloud projeto, 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_ID
    

    Substitua PROJECT_ID pelo ID do Google Cloud projeto em que o cluster do OpenShift é executado.

  3. Para permitir que a conta de serviço acesse Google Cloud recursos, conceda a conta de serviço os papéis do IAM definidos no CredentialsRequest manifesto. Esse manifesto inclui o seguinte conjunto mínimo de papéis do IAM necessários para o operador:

    Para cada papel do IAM definido nesse 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_ROLE pelo papel do IAM que você quer conceder à conta de serviço.

  4. 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_ID
    
  5. No namespace openshift-operators, crie um secret chamado telemetry-agent-sa para 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 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 mais informações sobre essas opções, consulte o documento da Red Hat Como adicionar operadores a um cluster (em inglês).

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:

  1. Faça login no console da Web do Red Hat OpenShift.
  2. Verifique se você está na perspectiva Administrador.
  3. Na navegação à esquerda, expanda a seção Operadores e clique em OperatorHub.
  4. Na barra de pesquisa em Todos os itens, digite Cluster Services for OpenShift Telemetry.

    Como alternativa, é possível pesquisar digitando Google. Isso filtra os operadores fornecidos pelo Google, incluindo o operador Cluster Services for OpenShift Telemetry.

  5. Clique no card chamado Cluster Services for OpenShift Telemetry.

  6. No painel Cluster Services for OpenShift Telemetry, clique em Instalar.

  7. Na página Instalar operador, siga estas etapas:

    1. No campo Canal de atualização, selecione estável.
    2. No campo Modo de instalação, selecione Um namespace específico no cluster.
    3. No campo Namespace instalado, selecione o projeto openshift-operators ou crie um namespace de monitoramento personalizado.
    4. No campo Estratégia de aprovação, selecione Automático ou Manual.
    5. Clique em Instalar.
  8. Para verificar se o operador foi instalado corretamente, siga estas etapas:

    1. Acesse Operadores > Operadores instalados.
    2. Na lista de operadores, pesquise e verifique se o operador Cluster Services for OpenShift Telemetry está presente.
    3. Verifique se a coluna Status mostra o valor Concluído ou Atualizado.
    4. Opcional: clique no operador para conferir os detalhes dele.

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:

  1. Crie um manifesto de recurso personalizado Subscription chamado subscription.yaml com 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-marketplace
    
  2. Aplique a assinatura ao cluster:

    oc apply -f subscription.yaml
    
  3. Verifique se o operador de telemetria foi instalado corretamente conferindo o status de ClusterServiceVersion:

    oc get csv -n openshift-operators
    

    Na saída, verifique se o valor na coluna PHASE para cluster-services-for-openshift-telemetry é Succeeded.

Ativar coleta de métricas

Para permitir que o operador colete métricas do cluster do OpenShift, aplique um recurso personalizado TelemetryConfig. Esse recurso implanta pods de daemon nos nós do cluster para o agente de cargas de trabalho do Compute.

Para permitir que o operador colete métricas do cluster do OpenShift, siga estas etapas:

  1. Crie um manifesto de recurso personalizado TelemetryConfig chamado telemetryconfig.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: true
      
    • Se 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_PATH
      

      Substitua SERVICE_ACCOUNT_KEY_PATH pelo 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.

  2. Aplique o recurso personalizado ao cluster:

    oc apply -f telemetryconfig.yaml
    
  3. Verifique se o estado do pod do agente de telemetria é Em execução:

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

    També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\"

Conferir registros do operador no Cloud Logging

Por padrão, os registros do operador 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:

  1. No Google Cloud console do, acesse a página Análise de registros.

    Acessar o Explorador de registros

  2. No painel de consulta, digite uma consulta:

    • Para filtrar os registros do seu Google Cloud projeto, use a seguinte consulta:

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

      Substitua PROJECT_ID pelo ID do projeto em que o cluster do OpenShift é executado.Google Cloud

    • Se você estiver executando vários clusters em seu Google Cloud projeto e quiser filtrar 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_ID pelo ID da instância das instâncias do Compute Engine que executam o cluster do OpenShift. Para mais informações sobre como encontrar o ID da instância de computação, consulte Conferir os detalhes de uma VM.

  3. Clique em Executar consulta.

Configurar políticas de alertas com base 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 a resolver problemas.

Para configurar uma política de alertas com base nos registros gerados pelo operador de telemetria, siga estas etapas:

  1. 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.

  2. No Google Cloud console do, acesse a página Análise de registros.

    Acessar o Explorador de registros

  3. No painel de consulta, digite a consulta necessária:

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

    Substitua SEVERITY_LEVEL por um valor de nível de gravidade com suporte, que inclui: DEBUG, INFO, WARNING e ERROR. Recomendamos que você use ERROR ou um valor de nível de registro mais alto.

  4. Clique em Executar consulta para validar a consulta.

  5. Crie um alerta de registro.

    Para saber como criar esse alerta, consulte a terceira etapa do procedimento que está 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 Gerenciador de cargas de trabalho oferece suporte para clusters do OpenShift, algumas são aplicadas apenas a ambientes de produção. O Gerenciador de cargas de trabalho faz essa distinção verificando o cluster, a implantação ou o pod para o rótulo environment. Se o valor associado a esse rótulo for production, o Gerenciador de cargas de trabalho considerará esse recurso como um recurso de produção.

Para informar ao Gerenciador de cargas de trabalho que um cluster pertence a um ambiente de produção, siga estas etapas:

  1. Crie um namespace workloadmanager:

    oc create namespace workloadmanager
    
  2. Crie um ConfigMap no namespace workloadmanager usando 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 Gerenciador de cargas de trabalho 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=production
    

    Substitua DEPLOYMENT_NAME pelo nome da implantação.

Se você aplicar o rótulo environment no cluster do OpenShift e em uma implantação ou pod em execução no cluster, o Gerenciador de cargas de trabalho dará precedência ao valor do rótulo definido para a implantação ou o pod em relação ao valor do rótulo definido para o cluster.

Opcional: acionar a coleta de métricas

Depois de configurar o operador Cluster Services for OpenShift Telemetry no cluster do OpenShift, o operador coleta métricas do cluster e as envia para o Gerenciador de cargas de trabalho a cada 30 minutos.

Opcionalmente, em vez de esperar 30 minutos para a coleta programada de métricas, é possível acionar manualmente o operador para coletar métricas e enviá-las ao Gerenciador de cargas de trabalho.

Para acionar manualmente o operador para coleta de métricas, siga estas etapas:

  1. Abra o terminal.

  2. 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)
    
  3. Acione o operador para coletar e enviar métricas:

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

A seguir