Integrações com a Malha de Serviço Aberta no AKS (Serviço de Kubernetes do Azure)

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

Observação

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

Importante

As integrações com projetos de código aberto não são cobertas pela política de suporte do AKS.

Entrada

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

Observação

Neste momento, o Controlador de Entrada do Gateway do Azure (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 Entrada do Gateway do Azure (AGIC) com o complemento do OSM para entrada HTTP

Importante

Você não pode configurar o Controlador de Entrada (AGIC) do Gateway do Azure para entrada HTTPS.

Criar um namespace e implantar o serviço de aplicativo

  1. Instalando o controlador de entrada AGIC.

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

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

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

    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 se o sidecar do Envoy foi injetado usando o comando kubectl get pods.

    kubectl get pods -n httpbin
    

    Seu resultado deve ser semelhante ao seguinte exemplo de saída:

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

    kubectl get svc -n httpbin
    

    Seu resultado deve ser semelhante ao seguinte exemplo de saída:

    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 as seguintes configurações Ingress e IngressBackend para permitir que clientes externos acessem o serviço httpbin na porta 14001 usando o comado kubectl apply.

    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 Ingress foi implantado com êxito usando o comando kubectl get ingress e anote o endereço IP externo.

    kubectl get ingress -n httpbin
    

    Seu resultado deve ser semelhante ao seguinte exemplo de saída:

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

    kubectl get ingressbackend -n httpbin
    

    Seu resultado deve ser semelhante ao seguinte exemplo de saída:

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

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

Observabilidade de métricas

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

Você também pode fazer a integração do OSM com o 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:

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

    osm metrics enable --namespace myappnamespace
    
  2. Crie um ConfigMap no namespace kube-system que permite que o Azure Monitor monitore seus namespaces. Por exemplo, crie um monitor-configmap.yaml com os conteúdos a seguir para monitorar 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 ConfigMap usando o comando kubectl apply.

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

  5. Em Monitoramento, selecione Logs.

  6. Na seção Monitoramento, consulte a tabela InsightsMetrics para exibir as métricas nos namespaces habilitados. Por exemplo, a consulta a seguir mostra as métricas envoy 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 os operadores e os desenvolvedores a criar e a lançar aplicativos. Por exemplo, o OSM integra-se ao Flagger para entrega progressiva e ao Dapr para a criação de aplicativos. As integrações do OSM com o Flagger e o Dapr não são cobertas pela política de suporte do AKS.

Autoridade 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 ao Open Policy Agent (OPA), mas essa integração não é coberta pela política de suporte do AKS.

Gerenciamento de certificados

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

Próximas etapas

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