Partilhar via


Complemento baseado no Istio para malha de serviços no Azure Kubernetes Service

Istio aborda os desafios que os desenvolvedores e operadores enfrentam com uma arquitetura distribuída ou de microserviços. A extensão da malha de serviços baseada em Istio fornece uma integração oficialmente suportada e testada para o Azure Kubernetes Service (AKS).

O que é uma Malha de Serviços?

Aplicações modernas são tipicamente arquitetadas como coleções distribuídas de microsserviços, com cada coleção de microsserviços realizando alguma função empresarial específica. Uma malha de serviços é uma camada de infraestrutura dedicada que pode ser adicionada às suas aplicações. Permite-lhe adicionar capacidades como observabilidade, gestão de tráfego e segurança de forma transparente, sem as adicionar ao seu próprio código. O termo service mesh descreve tanto o tipo de software que se utiliza para implementar este padrão, como o domínio de segurança ou de rede que se cria ao usar esse software.

À medida que a implementação de serviços distribuídos, como num sistema baseado em Kubernetes, cresce em tamanho e complexidade, pode tornar-se mais difícil de compreender e gerir. Poderá precisar de implementar capacidades como descoberta, equilíbrio de carga, recuperação de falhas, métricas e monitorização. Um service mesh também pode abordar requisitos operacionais mais complexos, como testes A/B, implementações canário, limitação de taxa, controle de acesso, criptografia e autenticação de ponta a ponta.

A comunicação entre serviços é o que torna possível uma aplicação distribuída. Encaminhar esta comunicação, tanto dentro como entre clusters de aplicações, torna-se cada vez mais complexo à medida que o número de serviços aumenta. O Istio ajuda a reduzir esta complexidade, aliviando a pressão sobre as equipas de desenvolvimento.

O que é Istio?

Istio é uma malha de serviço de código aberto que se integra de forma transparente a aplicações distribuídas existentes. As poderosas funcionalidades do Istio oferecem uma forma uniforme e mais eficiente de proteger, conectar e monitorizar serviços. Istio permite balanceamento de carga, autenticação de serviço para serviço e monitorização – com poucas ou nenhumas alterações no código de serviço. A sua poderosa plataforma de controlo traz funcionalidades vitais, incluindo:

  • Assegure a comunicação de serviço para serviço num cluster com encriptação TLS (Transport Layer Security), autenticação forte baseada em identidade e autorização.
  • Balanceamento de carga automático para tráfego HTTP, gRPC, WebSocket e TCP.
  • Controlo detalhado do comportamento do tráfego com regras de encaminhamento avançadas, tentativas de retransmissão, failovers e injeção de falhas.
  • Uma camada de políticas plugável e uma API de configuração que suporta controles de acesso, limites de taxa e cotas.
  • Métricas, registos e rastreamentos automáticos para todo o tráfego dentro de um cluster, incluindo entrada e saída de cluster.

Como o complemento difere do Istio de código aberto?

Este complemento de malha de serviço usa e constrói sobre o Istio de código aberto. O sabor adicional proporciona os seguintes benefícios extra:

  • As versões do Istio são testadas e verificadas para serem compatíveis com as versões suportadas do Azure Kubernetes Service.
  • Microsoft lida com dimensionamento e configuração do plano de controle Istio
  • A Microsoft ajusta a escalabilidade dos componentes AKS como coredns quando Istio está ativado.
  • A Microsoft fornece um ciclo de vida gerido (atualizações) para componentes Istio quando acionado pelo utilizador.
  • Configuração de entrada externa e interna verificada.
  • Verificado para funcionar com o Azure Monitor managed service for Prometheus e o Azure Managed Grafana.
  • Suporte oficial da Azure fornecido para o complemento.

Limitações

A extensão de malha de serviços baseada em Istio para AKS tem as seguintes limitações:

  • O add-on não funciona em clusters AKS que estão a usar o add-on Open Service Mesh para AKS.

  • O complemento não funciona em clusters AKS com instalações autogeridas do Istio.

  • A extensão não suporta a adição de pods associados a nós virtuais para serem adicionados sob a malha.

  • O add-on ainda não suporta o modo Ambiente sem sidecar. A Microsoft está atualmente a contribuir para o fluxo de trabalho Ambient no âmbito do projeto de código aberto Istio. A integração do produto para o modo Ambiente está no roteiro e está a ser continuamente avaliada à medida que o fluxo de trabalho do Ambiente evolui.

  • O complemento ainda não suporta implementações de multi-cluster.

  • O complemento ainda não oferece suporte a contêineres do Windows Server. Os contêineres do Windows Server ainda não são suportados no Istio de código aberto no momento. O acompanhamento de issues para este pedido de funcionalidade pode ser encontrado aqui.

  • A personalização da malha através dos seguintes recursos personalizados está atualmente bloqueada - ProxyConfig, WorkloadEntry, WorkloadGroup, IstioOperator, WasmPlugin.

  • O suplemento permite o uso dos seguintes tipos de filtro EnvoyFilter, bloqueando outros tipos de filtro.

    • Lua (type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua).
    • Compressor (type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor)
    • Limite de taxa local (type.googleapis.com/envoy.extensions.filters.http.local_ratelimit.v3.LocalRateLimit)

    Nota

    Embora esses EnvoyFilters sejam permitidos, qualquer problema decorrente deles (por exemplo, do script Lua ou da biblioteca de compressão) está fora do escopo de suporte do complemento Istio. Consulte o documento de política de suporte para obter mais informações sobre as categorias de suporte para recursos de complementos e opções de configuração do Istio.

  • A API Gateway para o gateway de entrada do Istio ou para gerir o tráfego da malha (GAMMA) atualmente ainda não é suportada com o add-on do Istio. No entanto, a API do Gateway para o gerenciamento de tráfego de ingresso do Istio está atualmente em desenvolvimento ativo para o complemento. Embora o complemento suporte anotações e externalTrafficPolicy personalização para os gateways de entrada do Istio, a configuração de portas ou protocolos atualmente não é suportada.

  • O complemento suporta a personalização de um subconjunto dos campos no MeshConfig. Outras personalizações podem ser permitidas, mas sem suporte ou totalmente desautorizadas, conforme detalhado aqui.

Feedback e solicitação de funcionalidades

O feedback e os pedidos de funcionalidades para o complemento Istio podem ser fornecidos através da criação de issues com o rótulo 'service-mesh' no repositório GitHub do AKS.

Próximos passos