Integrações com Open Service Mesh no Serviço Kubernetes do Azure (AKS)

O complemento Open Service Mesh (OSM) integra-se com recursos fornecidos pelo Azure e alguns projetos de código aberto.

Nota

Com a desativação do Open Service Mesh (OSM) pela Cloud Native Computing Foundation (CNCF), recomendamos identificar suas configurações OSM e migrá-las para uma configuração Istio equivalente. Para obter informações sobre como migrar do OSM para o Istio, consulte Diretrizes de migração para configurações do Open Service Mesh (OSM) para o Istio.

Importante

As integrações com projetos open source não são abrangidas pela Política de suporte do AKS.

Entrada

A entrada permite que o tráfego externo à malha seja encaminhado para serviços dentro da malha. Com o OSM, você pode configurar a maioria das soluções de entrada para trabalhar com sua malha, mas o OSM funciona melhor com uma das seguintes soluções:

Nota

No momento, o Azure Gateway Ingress Controller (AGIC) só funciona para back-ends HTTP. Se você configurar o OSM para usar o AGIC, o AGIC não será usado para outros back-ends, como HTTPS e mTLS.

Usar o Controlador de Ingresso do Gateway do Azure (AGIC) com o complemento OSM para entrada HTTP

Importante

Não é possível configurar o Azure Gateway Ingress Controller (AGIC) para entrada HTTPS.

Criar um namespace e implantar o serviço de aplicativo

  1. Instalação do controlador de entrada AGIC.

  2. Crie um namespace para o serviço de aplicativo usando o kubectl create ns comando.

    kubectl create ns httpbin
    
  3. Adicione o namespace à malha usando o osm namespace add comando OSM CLI.

    osm namespace add httpbin
    
  4. Implante o serviço de aplicativo no namespace usando o kubectl apply comando.

    export RELEASE_BRANCH=release-v1.2
    kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm-docs/$RELEASE_BRANCH/manifests/samples/httpbin/httpbin.yaml -n httpbin
    
  5. Verifique se os pods estão em funcionamento e injete o sidecar do enviado usando o kubectl get pods comando.

    kubectl get pods -n httpbin
    

    Sua saída deve ser semelhante à saída de exemplo a seguir:

    NAME                      READY   STATUS    RESTARTS   AGE
    httpbin-7c6464475-9wrr8   2/2     Running   0          6d20h
    
  6. Liste os detalhes do serviço usando o kubectl get svc comando.

    kubectl get svc -n httpbin
    

    Sua saída deve ser semelhante à saída de exemplo a seguir:

    NAME      TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)     AGE
    httpbin   ClusterIP   10.0.92.135   <none>        14001/TCP   6d20h
    

Implantar as configurações de entrada e verificar o acesso ao serviço de aplicativo

  1. Implante o seguinte Ingress e IngressBackend as configurações para permitir que clientes externos acessem o serviço na porta 14001 usando o httpbinkubectl apply comando.

    kubectl apply -f <<EOF
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: httpbin
      namespace: httpbin
      annotations:
        kubernetes.io/ingress.class: azure/application-gateway
    spec:
      rules:
     - http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: httpbin
                port:
                  number: 14001
    ---
    kind: IngressBackend
    apiVersion: policy.openservicemesh.io/v1alpha1
    metadata:
      name: httpbin
      namespace: httpbin
    spec:
      backends:
     - name: httpbin
        port:
          number: 14001 # targetPort of httpbin service
          protocol: http
      sources:
     - kind: IPRange
        name: 10.0.0.0/8
    EOF
    
  2. Verifique se o objeto foi implantado com êxito usando o comando e anote o Ingresskubectl get ingress endereço IP externo.

    kubectl get ingress -n httpbin
    

    Sua saída deve ser semelhante à saída de exemplo a seguir:

    NAME      CLASS    HOSTS   ADDRESS         PORTS   AGE
    httpbin   <none>   *       20.85.173.179   80      6d20h
    
  3. Verifique se o objeto foi implantado com êxito usando o IngressBackendkubectl get ingressbackend comando.

    kubectl get ingressbackend -n httpbin
    

    Sua saída deve ser semelhante à saída de exemplo a seguir:

    NAME      STATUS
    httpbin   committed
    
  4. Verifique se você pode acessar o serviço usando o endereço IP externo do serviço de entrada e o httpbin comando a seguir curl .

    curl -sI http://<external-ip>/get
    
  5. Confirme que recebeu uma resposta com status 200.

Observabilidade de métricas

A observabilidade de métricas permite que você visualize as métricas de sua malha e as implantações em sua malha. Com o OSM, você pode usar o Prometheus e o Grafana para observabilidade de métricas, mas essas integrações não são cobertas pela política de suporte do AKS.

Você também pode integrar o OSM ao Azure Monitor.

Antes de habilitar as métricas em sua malha para integração com o Azure Monitor, verifique se você tem os seguintes pré-requisitos:

  • Habilite o Azure Monitor em seu cluster.
  • Habilite o complemento OSM para seu cluster AKS.
  • Integre seus namespaces de aplicativo à malha.
  1. Habilite métricas para um namespace na malha usando o osm metrics enable comando.

    osm metrics enable --namespace myappnamespace
    
  2. Crie um ConfigMap no namespace que permite que o kube-system Azure Monitor monitore seus namespaces. Por exemplo, crie um monitor-configmap.yaml com o seguinte conteúdo para monitorar o myappnamespace:

    kind: ConfigMap
    apiVersion: v1
    data:
      schema-version: v1
      config-version: ver1
      osm-metric-collection-configuration: |-
        # OSM metric collection settings
        [osm_metric_collection_configuration]
          [osm_metric_collection_configuration.settings]
              # Namespaces to monitor
              monitor_namespaces = ["myappnamespace"]
    metadata:
      name: container-azm-ms-osmconfig
      namespace: kube-system
    
  3. Aplique o ConfigMap usando o kubectl apply comando.

    kubectl apply -f monitor-configmap.yaml
    
  4. Navegue até o portal do Azure e selecione seu cluster AKS.

  5. Em Monitoramento, selecione Logs.

  6. Na seção Monitoramento, consulte a InsightsMetrics tabela para exibir métricas nos namespaces habilitados. Por exemplo, a consulta a seguir mostra as métricas do enviado para o namespace padrão :

    InsightsMetrics
    |     where Name contains "envoy"
    |     extend t=parse_json(Tags)
    |     where t.namespace == "default"
    

Ferramentas de automação e desenvolvimento

O OSM pode se integrar a determinados projetos de automação e ferramentas de desenvolvedor para ajudar operadores e desenvolvedores a criar e liberar aplicativos. Por exemplo, o OSM integra-se com o Flagger para entrega progressiva e o Dapr para criar aplicativos. As integrações OSM com Flagger e Dapr não são cobertas pela política de suporte do AKS.

Autorização externa

A autorização externa permite descarregar a autorização de solicitações HTTP para um serviço externo. O OSM pode usar a autorização externa integrando-se com o Open Policy Agent (OPA), mas essa integração não é coberta pela política de suporte do AKS.

Gestão de certificados

O OSM tem vários tipos de certificados que usa para operar em seu cluster AKS. O OSM inclui seu próprio gerenciador de certificados chamado Tresor, que é usado por padrão. Como alternativa, o OSM permite que você se integre ao Hashicorp Vault e ao cert-manager, mas essas integrações não são cobertas pela política de suporte do AKS.

Próximos passos

Este artigo abordou as integrações do complemento Open Service Mesh (OSM) com recursos fornecidos pelo Azure e alguns projetos de código aberto. Para saber mais sobre o OSM, consulte Sobre o OSM no AKS.