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
Instalando o controlador de entrada AGIC.
Crie um namespace para o serviço de aplicativo usando o comando
kubectl create ns
.kubectl create ns httpbin
Adicione o namespace à malha usando o comando
osm namespace add
da CLI do OSM.osm namespace add httpbin
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
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
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
Implante as seguintes configurações
Ingress
eIngressBackend
para permitir que clientes externos acessem o serviçohttpbin
na porta14001
usando o comadokubectl 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
Verifique se o objeto
Ingress
foi implantado com êxito usando o comandokubectl 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
Verifique se o objeto
IngressBackend
foi implantado com êxito usando o comandokubectl get ingressbackend
.kubectl get ingressbackend -n httpbin
Seu resultado deve ser semelhante ao seguinte exemplo de saída:
NAME STATUS httpbin committed
Verifique se você pode acessar o serviço
httpbin
usando o endereço IP externo do serviço de entrada e o comandocurl
a seguir.curl -sI http://<external-ip>/get
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.
Habilite as métricas para um namespace na malha usando o comando
osm metrics enable
.osm metrics enable --namespace myappnamespace
Crie um ConfigMap no namespace
kube-system
que permite que o Azure Monitor monitore seus namespaces. Por exemplo, crie ummonitor-configmap.yaml
com os conteúdos a seguir para monitorarmyappnamespace
: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
Aplique ConfigMap usando o comando
kubectl apply
.kubectl apply -f monitor-configmap.yaml
Navegue até o portal do Azure e selecione seu cluster do AKS.
Em Monitoramento, selecione Logs.
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.
Azure Kubernetes Service