Faça a gestão dos registos de fluxo

Use os registos de fluxo para guardar metadados do tráfego de rede, incluindo 5-tuplos, no Google Distributed Cloud (GDC) isolado da Internet na pilha de observabilidade sob a forma de registos consultáveis. Use estes registos para:

  • Compreender os fluxos de tráfego de um determinado serviço numa organização.
  • Compreender e identificar problemas com o estado da rede de uma carga de trabalho do Kubernetes
  • Validar as políticas de rede do Kubernetes.

O registo de fluxo é uma funcionalidade do GDC baseada no projeto de código aberto Hubble: https://github.com/cilium/hubble. Configure os registos de fluxo com o FlowLog recurso da API Networking.

Antes de começar

  • Tem de obter autorização para gerir ou ver registos de fluxo a partir da consola do GDC. Para gerir registos de fluxo, peça ao administrador de IAM da organização para lhe conceder a função de administrador de registos de fluxo (flowlog-admin). Para ver apenas os registos de fluxo existentes, peça ao administrador de IAM da organização para lhe conceder a função de visualizador de registos de fluxo (flowlog-viewer).

    Para informações sobre como definir associações de funções a partir da consola do GDC, consulte o artigo Conceda acesso a recursos.

  • Antes de consultar e ver registos de fluxo em painéis de controlo, tem de obter acesso à instância de monitorização. Para mais informações, consulte o artigo Consulte e veja métricas.

Crie um registo de fluxo

Crie um registo de fluxo para guardar metadados do tráfego de rede filtrados por um determinado conjunto de especificações.

Crie um registo de fluxo com filtros de protocolo e espaço de nomes

  1. Crie um ficheiro denominado example-flowlog.yaml com o seguinte conteúdo:

    apiVersion: networking.gdc.goog/v1
    kind: FlowLog
    metadata:
      name: "FLOW_LOG_NAME"
      namespace: "platform"
    spec:
      filters:
        - l4Protocols:
            - tcp
          source:
            namespacePodSelectors:
              - namespace: gpc-system
              - namespace: kube-system
          destination:
            namespacePodSelectors:
              - namespace: kube-system
      lifetime:
        duration: "1h"
    

    Substitua FLOW_LOG_NAME pelo nome escolhido para o registo de fluxo.

    Neste exemplo, o registo de fluxo captura todos os fluxos para os quais uma ligação TCP foi iniciada por qualquer pod no espaço de nomes gpc-system ou kube-system para qualquer pod no espaço de nomes kube-system. Interrompe a gravação de registos uma hora após a criação do objeto.

  2. Crie o objeto de registo de fluxo:

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yaml
    

    Substitua MANAGEMENT_API_SERVER pelo caminho kubeconfig do servidor da API Management zonal.

  3. Valide se o valor FLOW_LOG_NAME foi reconciliado corretamente e se o processo de registo foi iniciado examinando o campo Status:

    kubectl --kubeconfig MANAGEMENT_API_SERVER describe -n platform FLOW_LOG_NAME
    

    Exemplo de estado:

    Status:
      Clusters:
        Cluster:  org-1-infra-cluster
        Conditions:
          Last Transition Time:  2024-01-19T01:46:11Z
          Message:
          Observed Generation:   1
          Reason:                ResourcesPropagated
          Status:                True
          Type:                  Propagated
        Name:                    cilium-flowlog-config
        Namespace:               kube-system
        Node:                    org-1-infra
        Cluster:                 user-vm-1-cluster
        Conditions:
          Last Transition Time:  2024-01-19T01:46:11Z
          Message:
          Observed Generation:   1
          Reason:                ResourcesPropagated
          Status:                True
          Type:                  Propagated
        Name:                    cilium-flowlog-config
        Namespace:               kube-system
        Node:                    user-vm-1
        Cluster:                 user-vm-2-cluster
        Conditions:
          Last Transition Time:  2024-01-19T01:46:11Z
          Message:
          Observed Generation:   1
          Reason:                ResourcesPropagated
          Status:                True
          Type:                  Propagated
        Name:                    cilium-flowlog-config
        Namespace:               kube-system
        Node:                    user-vm-2
      Conditions:
        Last Transition Time:  2024-01-18T19:17:53Z
        Message:
        Observed Generation:   1
        Reason:                Active
        Status:                True
        Type:                  Logging
        Last Transition Time:  2024-01-19T01:46:11Z
        Message:
        Observed Generation:   1
        Reason:                ResourcesPropagated
        Status:                True
        Type:                  Propagated
        Last Transition Time:  2024-01-18T19:17:53Z
        Message:
        Observed Generation:   1
        Reason:                Succeeded
        Status:                True
        Type:                  Reconciled
      Start Time:              2024-01-18T19:17:53Z
      End Time:              2024-01-18T20:17:53Z
    

    O resultado deste exemplo contém as seguintes condições:

    • Propagated: a configuração do registo de fluxo foi enviada para os clusters user-vm-1, user-vm-2 e org-1-infra.
    • Reconciled: o registo de fluxo foi programado com êxito nos clusters user-vm-1, user-vm-2 e org-1-infra.
    • Logging: o registo de fluxo não expirou nem está desativado, não encontrou nenhum erro e pode produzir registos se os filtros corresponderem aos fluxos.
    • A Start Time e a End Time indicam que a tarefa foi iniciada às 19:17:53 e expira às 20:17:53.

    Para que este registo de fluxo possa produzir entradas de registo com êxito, todas as condições Propagated, Reconciled e Logging têm de ser verdadeiras.

Modifique o registo de fluxo

Para modificar um registo de fluxo existente, modifique a definição do objeto de registo de fluxo criado no ficheiro example-flowlog.yaml e aplique-o novamente:

kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yaml

Veja os registos de fluxo no painel de controlo de monitorização

  1. Abra o painel de controlo de registos operacionais. Para mais informações, consulte o artigo Consulte registos operacionais.

  2. Defina o valor da lista pendente identifier como network-flow-logs e, de seguida, clique em add json parser e indique o seguinte valor para a consulta: {identifier="network-flow-logs"} | json:

    Defina o identificador

  3. Clique em Run query. São apresentadas as entradas de registo de fluxo guardadas:

    Executar consulta

  4. Use os filtros para refinar ainda mais os resultados. Por exemplo, indique o valor user-vm-1 na lista pendente cluster para ver apenas os fluxos recolhidos do cluster user-vm-1:

    Refine os filtros

  5. Procure entradas de registo de fluxo, expanda a entrada para ver os detalhes e adicione mais filtros de etiquetas conforme necessário com o ícone de atalho. Neste exemplo, queremos filtrar ainda mais os fluxos pelo respetivo endereço IP de origem:

    Entrada do registo do Flow

  6. Clique no ícone de atalho + para filtrar fluxos por um campo de metadados específico.

    Atalho do filtro de etiquetas

Veja os resultados por nome do registo de fluxo

Quando são criados vários registos de fluxo, pode criar um filtro de etiquetas adicional para ver os resultados de um ou mais registos de fluxo.

Para ver os resultados limitados aos registos produzidos por FLOW_LOG_NAME, crie um filtro de etiquetas com os seguintes valores:

  • Label definido como On. É sensível a maiúsculas e minúsculas.
  • Operator definido como ~=. Usa um comparador de expressões regulares.
  • Value definido como /FLOW_LOG_NAME/. O valor FLOW_LOG_NAME tem de estar entre /.

Filtre os resultados para ver apenas os registos produzidos por flowlog1:

Filtro de etiquetas por nome do fluxo

Referências