Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo mostra como instalar o complemento de malha de serviço baseado em Istio para cluster do Serviço Kubernetes do Azure (AKS).
Para obter mais informações sobre o Istio e o complemento de malha de serviço, consulte Complemento de malha de serviço baseado em Istio para o Serviço Kubernetes do Azure.
Tip
Pode usar o Azure Copilot para ajudar a implementar o Istio nos seus clusters AKS no portal Azure. Para mais informações, consulte Trabalhar com clusters AKS de forma eficiente usando o Azure Copilot.
Antes de começar
O complemento requer a CLI do Azure versão 2.57.0 ou posterior instalada. Você pode executar
az --versionpara verificar a versão. Para instalar ou atualizar, consulte Instalar a CLI do Azure.Para encontrar informações sobre quais revisões de complementos do Istio estão disponíveis em uma região e sua compatibilidade com as versões de cluster padrão AKS e LTS, use o comando
az aks mesh get-revisions:az aks mesh get-revisions --location <location> -o tablePara obter mais informações sobre a compatibilidade do complemento Istio com o AKS, consulte a política de suporte de compatibilidade.
Em alguns casos, os CRDs Istio de instalações anteriores podem não ser limpos automaticamente na desinstalação. Certifique-se de que os CRDs existentes do Istio sejam eliminados:
kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')Recomenda-se também limpar outros recursos de instalações autogerenciadas do Istio, como ClusterRoles, MutatingWebhookConfigurations e ValidatingWebhookConfigurations.
Observe que, se você optar por usar qualquer
istioctlcomando da CLI, precisará incluir um sinalizador para apontar para a instalação complementar do Istio:--istioNamespace aks-istio-system
Definir variáveis de ambiente
export CLUSTER=<cluster-name>
export RESOURCE_GROUP=<resource-group-name>
export LOCATION=<location>
Instale o complemento Istio
Esta seção inclui etapas para instalar o complemento Istio durante a criação do cluster ou habilitar para um cluster existente usando a CLI do Azure. Se você quiser instalar o complemento usando o Bicep, consulte o guia para instalar um cluster AKS com o complemento de malha de serviço Istio usando o Bicep. Para saber mais sobre a definição de recurso do Bicep para um cluster AKS, consulte a referência Bicep managedCluster.
Note
Se você precisar dos istiod pods de gateway de entrada/saída agendados em nós específicos, você pode usar nós do sistema AKS ou o azureservicemesh/istio.replica.preferred rótulo do nó. Os pods têm afinidades de nó com uma preferência ponderada de 100 nos nós do sistema AKS (rotulados kubernetes.azure.com/mode: system) e de 50 nos nós rotulados azureservicemesh/istio.replica.preferred: true.
Seleção de revisão
Se você habilitar o complemento sem especificar uma revisão, uma revisão padrão suportada será instalada para você.
Para especificar uma revisão, execute as etapas a seguir.
- Use o
az aks mesh get-revisionscomando para verificar quais revisões estão disponíveis para diferentes versões de cluster AKS em uma região. - Com base nas revisões disponíveis, você pode incluir o
--revision asm-X-Ysinalizador (ex:--revision asm-1-24) no comando enable usado para instalação de malha.
Instalar malha durante a criação do cluster
Para instalar o complemento Istio ao criar o cluster, use o parâmetro --enable-azure-service-mesh ou --enable-asm.
az group create --name ${RESOURCE_GROUP} --location ${LOCATION}
az aks create \
--resource-group ${RESOURCE_GROUP} \
--name ${CLUSTER} \
--enable-asm \
--generate-ssh-keys
Instalar malha para cluster existente
O exemplo a seguir habilita o complemento Istio para um cluster AKS existente:
Important
Não é possível ativar o complemento Istio em um cluster existente se um complemento OSM já estiver no cluster. Desinstale o complemento OSM antes de instalar o complemento Istio. Para obter mais informações, consulte desinstalar o complemento OSM do cluster AKS. O complemento Istio só pode ser ativado em clusters AKS da versão >= 1.23.
az aks mesh enable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Verificar se a instalação foi bem-sucedida
Para verificar se o complemento Istio está instalado no cluster, execute o seguinte comando:
az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --query 'serviceMeshProfile.mode'
Confirme se a saída mostra Istio.
Use az aks get-credentials para obter as credenciais para seu cluster AKS:
az aks get-credentials --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Use kubectl para verificar se os pods do istiod (plano de controle Istio) estão a correr com êxito:
kubectl get pods -n aks-istio-system
Confirme se o istiod pod tem um status de Running. Por exemplo:
NAME READY STATUS RESTARTS AGE
istiod-asm-1-24-74f7f7c46c-xfdtl 1/1 Running 0 2m
istiod-asm-1-24-74f7f7c46c-4nt2v 1/1 Running 0 2m
Ativar injeção no carro lateral
Para instalar automaticamente o sidecar em qualquer novo pod, você precisa anotar seus namespaces com o rótulo de revisão correspondente à revisão do plano de controle atualmente instalada.
Se não tiver certeza de qual revisão está instalada, use:
az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --query 'serviceMeshProfile.istio.revisions'
Aplique o rótulo de revisão:
kubectl label namespace default istio.io/rev=asm-X-Y
Important
É necessária uma versão explícita que corresponda à revisão do plano de controlo (ex: istio.io/rev=asm-1-24).
O rótulo padrão istio-injection=enabled não funcionará e fará com que a injeção do sidecar ignore o namespace do complemento.
Para injeção manual de sidecar usando istioctl kube-inject, você precisa especificar parâmetros extras para istioNamespace (-i) e revision (-r). Por exemplo:
kubectl apply -f <(istioctl kube-inject -f sample.yaml -i aks-istio-system -r asm-X-Y) -n foo
Acionar a injeção de sidecar
Você pode implantar o aplicativo de exemplo fornecido para teste ou acionar a injeção de sidecar para cargas de trabalho existentes.
Aplicações existentes
Se tiver aplicações existentes a serem adicionadas à malha, assegure-se de que os seus namespaces estão etiquetados como na etapa anterior e, em seguida, reinicie as suas implementações para acionar a injeção de sidecar.
kubectl rollout restart -n <namespace> <deployment name>
Verifique se a injeção no sidecar foi bem-sucedida, assegurando que todos os contentores estejam prontos e procurando o contêiner istio-proxy na saída kubectl describe, por exemplo:
kubectl describe pod -n namespace <pod name>
O istio-proxy contentor é o sidecar Envoy. Seu aplicativo agora faz parte do plano de dados.
Implementar aplicação de exemplo
Use kubectl apply para implantar o aplicativo de exemplo no cluster:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.24/samples/bookinfo/platform/kube/bookinfo.yaml
Note
Os clusters que usam um proxy HTTP para acesso de saída à Internet precisarão configurar uma Entrada de Serviço. Para obter instruções de configuração, consulte Suporte a proxy HTTP no Serviço Kubernetes do Azure
Confirme se várias implantações e serviços foram criados em seu cluster. Por exemplo:
service/details created
serviceaccount/bookinfo-details created
deployment.apps/details-v1 created
service/ratings created
serviceaccount/bookinfo-ratings created
deployment.apps/ratings-v1 created
service/reviews created
serviceaccount/bookinfo-reviews created
deployment.apps/reviews-v1 created
deployment.apps/reviews-v2 created
deployment.apps/reviews-v3 created
service/productpage created
serviceaccount/bookinfo-productpage created
deployment.apps/productpage-v1 created
Use kubectl get services para verificar se os serviços foram criados com êxito:
kubectl get services
Confirme se os seguintes serviços foram implantados:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
details ClusterIP 10.0.180.193 <none> 9080/TCP 87s
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 15m
productpage ClusterIP 10.0.112.238 <none> 9080/TCP 86s
ratings ClusterIP 10.0.15.201 <none> 9080/TCP 86s
reviews ClusterIP 10.0.73.95 <none> 9080/TCP 86s
kubectl get pods
NAME READY STATUS RESTARTS AGE
details-v1-558b8b4b76-2llld 2/2 Running 0 2m41s
productpage-v1-6987489c74-lpkgl 2/2 Running 0 2m40s
ratings-v1-7dc98c7588-vzftc 2/2 Running 0 2m41s
reviews-v1-7f99cc4496-gdxfn 2/2 Running 0 2m41s
reviews-v2-7d79d5bd5d-8zzqd 2/2 Running 0 2m41s
reviews-v3-7dbcdcbc56-m8dph 2/2 Running 0 2m41s
Confirme se todos os pods têm status de Running com dois contentores na coluna READY. O segundo recipiente (istio-proxy) adicionado a cada pod é o sidecar Envoy injetado pelo Istio, e o outro é o recipiente de aplicação.
Para testar este aplicativo de exemplo em relação à entrada, confira as próximas etapas.
Próximos passos
- Implantar ingresses externos ou internos para o add-on de service mesh do Istio
- Dimensionar o istiod e o gateway de entrada HPA
- Recolher métricas para cargas de trabalho do complemento malha de serviços Istio no Azure Managed Prometheus
- Implantar gateways de saída para o complemento de malha de serviço Istio
- Ativar o CNI do Istio para o complemento de malha de serviço do Istio (Pré-visualização)