Compartilhar via


Solucionar problemas de extensão para clusters do Kubernetes habilitados para Azure Arc

Este artigo descreve dicas de solução de problemas para problemas comuns relacionados a extensões de cluster, como GitOps (Flux v2) no Azure ou Open Service Mesh (OSM).

Para obter ajuda com a solução de problemas do Kubernetes habilitado para Azure Arc em geral, confira Solucionar problemas do Kubernetes habilitado para Azure Arc.

GitOps (Flux v2)

Observação

Você pode usar a extensão Flux v2 em um cluster do Kubernetes habilitado para Azure Arc ou em um cluster do Serviço de Kubernetes do Azure (AKS). Essas dicas de solução de problemas geralmente se aplicam a todos os tipos de cluster.

Para obter ajuda geral com a solução de problemas ao usar recursos fluxConfigurations, execute estes comandos da CLI do Azure com o parâmetro --debug:

az provider show -n Microsoft.KubernetesConfiguration --debug
az k8s-configuration flux create <parameters> --debug

Erros de simulação de webhook

O Flux pode falhar e exibir um erro semelhante a dry-run failed, error: admission webhook "<webhook>" does not support dry run. Para resolver o problema, acesse ValidatingWebhookConfiguration ou MutatingWebhookConfiguration. Na configuração, defina o valor de sideEffects como None ou NoneOnDryRun.

Para obter mais informações, confira Como fazer para resolver os erros de "webhook não dá suporte a execução de teste"?

Erros ao instalar a extensão microsoft.flux

A extensão microsoft.flux instala controladores Flux e agentes do GitOps do Azure em um cluster do Kubernetes habilitado para Azure Arc ou em um cluster do Serviço de Kubernetes do Azure (AKS). Se a extensão ainda não estiver instalada em um cluster e você criar um recurso de configuração do GitOps para o cluster, a extensão será instalada automaticamente.

Se ocorrer um erro durante a instalação ou se a extensão mostrar um estado Failed, verifique se o cluster não tem políticas que restrinjam a criação do namespace flux-system ou de qualquer um dos recursos nesse namespace.

Para um cluster do AKS, verifique se o sinalizador de recurso Microsoft.ContainerService/AKS-ExtensionManager está habilitado na assinatura do Azure:

az feature register --namespace Microsoft.ContainerService --name AKS-ExtensionManager

Em seguida, execute o seguinte comando para determinar se há outros problemas. Defina o parâmetro de tipo de cluster (-t) como connectedClusters para um cluster habilitado para Azure Arc ou como managedClusters para um cluster do AKS. Se a extensão foi instalada automaticamente quando você criou a configuração do GitOps, o nome da extensão microsoft.flux será flux.

az k8s-extension show -g <RESOURCE_GROUP> -c <CLUSTER_NAME> -n flux -t <connectedClusters or managedClusters>

A saída pode ajudar a identificar o problema e como corrigi-lo. As possíveis ações de correção incluem:

  • Forçar a exclusão da extensão executando az k8s-extension delete --force -g <RESOURCE_GROUP> -c <CLUSTER_NAME> -n flux -t <managedClusters OR connectedClusters>.
  • Desinstale a versão do Helm executando helm uninstall flux -n flux-system.
  • Exclua o namespace flux-system do cluster executando kubectl delete namespaces flux-system.

Em seguida, você poderá criar uma configuração do Flux, que instala a extensão microsoft.flux automaticamente, ou instalar a extensão Flux manualmente.

Erros ao instalar a extensão microsoft.flux em um cluster que tem uma identidade gerenciada de pod do Microsoft Entra

Se você tentar instalar a extensão Flux em um cluster que tenha uma identidade gerenciada de pod do Microsoft Entra, poderá ocorrer um erro no pod extension-agent. A saída será parecida com este exemplo:

{"Message":"2021/12/02 10:24:56 Error: in getting auth header : error {adal: Refresh request failed. Status Code = '404'. Response body: no azure identity found for request clientID <REDACTED>\n}","LogType":"ConfigAgentTrace","LogLevel":"Information","Environment":"prod","Role":"ClusterConfigAgent","Location":"westeurope","ArmId":"/subscriptions/<REDACTED>/resourceGroups/<REDACTED>/providers/Microsoft.Kubernetes/managedclusters/<REDACTED>","CorrelationId":"","AgentName":"FluxConfigAgent","AgentVersion":"0.4.2","AgentTimestamp":"2021/12/02 10:24:56"}

O status da extensão retorna como Failed:

"{\"status\":\"Failed\",\"error\":{\"code\":\"ResourceOperationFailure\",\"message\":\"The resource operation completed with terminal provisioning state 'Failed'.\",\"details\":[{\"code\":\"ExtensionCreationFailed\",\"message\":\" error: Unable to get the status from the local CRD with the error : {Error : Retry for given duration didn't get any results with err {status not populated}}\"}]}}",

Nesse caso, o pod extension-agent tenta obter seu token do Serviço de Metadados de Instância do Azure no cluster, mas a solicitação de token é interceptada pela identidade do pod. Para corrigir esse problema, faça upgrade para a versão mais recente da extensão microsoft.flux.

Requisitos de memória e CPU para instalar a extensão microsoft.flux

Os controladores que são instalados no cluster do Kubernetes quando você instala a extensão microsoft.flux devem ter recursos de CPU e memória suficientes para agendar adequadamente em um nó de cluster do Kubernetes. Verifique se o cluster atende aos requisitos mínimos de memória e CPU.

A tabela a seguir lista os limites mínimos e máximos para possíveis requisitos de CPU e memória para este cenário:

Nome do contêiner Minimum CPU Memória mínima Limite máximo de CPU Máximo de memória
fluxconfig-agent 5min 30 Mi 50 m 150 Mi
fluxconfig-controller 5min 30 Mi 100 m 150 Mi
fluent-bit 5min 30 Mi 20 m 150 Mi
helm-controller 100 m 64 Mi 1.000 m 1 Gi
source-controller 50 m 64 Mi 1.000 m 1 Gi
kustomize-controller 100 m 64 Mi 1.000 m 1 Gi
notification-controller 100 m 64 Mi 1.000 m 1 Gi
image-automation-controller 100 m 64 Mi 1.000 m 1 Gi
image-reflector-controller 100 m 64 Mi 1.000 m 1 Gi

Se você habilitou uma política do Gatekeeper do Azure Policy personalizada ou interna que limita os recursos para contêineres em clusters do Kubernetes, verifique se os limites de recursos da política são maiores do que os limites mostrados na tabela anterior ou se o namespace flux-system faz parte do parâmetro excludedNamespaces na atribuição de política. Um exemplo de política nesse cenário é Kubernetes cluster containers CPU and memory resource limits should not exceed the specified limits.

Flux v1

Observação

Recomendamos que você faça a migração para o Flux v2 o mais rápido possível. O suporte para recursos de configuração de cluster baseados no Flux v1 que foram criados antes de 1º de janeiro de 2024 termina em 24 de maio de 2025. A partir de 1º de janeiro de 2024, você não poderá criar novos recursos de configuração de cluster baseados no Flux v1.

Para ajudar a resolver problemas com o recurso sourceControlConfigurations no Flux v1, execute estes comandos da CLI do Azure, incluindo o parâmetro --debug:

az provider show -n Microsoft.KubernetesConfiguration --debug
az k8s-configuration flux create <parameters> --debug

Insights de Contêiner do Azure Monitor

Essa seção fornece ajuda para solucionar problemas com Insights de Contêiner no Azure Monitor para clusters do Kubernetes habilitados para Azure Arc.

Habilitar o modo privilegiado para um cluster Canonical Charmed Kubernetes

Os Insights de Contêiner do Azure Monitor exigem que seu DaemonSet do Kubernetes seja executado no modo privilegiado. Para configurar com êxito um cluster Canonical Kubernetes reduzido para monitoramento, execute o seguinte comando:

juju config kubernetes-worker allow-privileged=true

Não é possível instalar pods do AMA no Oracle Linux 9.x

Se você tentar instalar o Agente do Azure Monitor (AMA) em um cluster do Kubernetes do Oracle Linux (Red Hat Enterprise Linux (RHEL)) 9.x, os pods do AMA e o pod AMA-RS poderão não funcionar corretamente devido ao contêiner addon-token-adapter no pod. Ao verificar os logs do pod ama-logs-rs, em addon-token-adapter container, você verá uma saída semelhante ao exemplo a seguir:

Command: kubectl -n kube-system logs ama-logs-rs-xxxxxxxxxx-xxxxx -c addon-token-adapter
 
Error displayed: error modifying iptable rules: error adding rules to custom chain: running [/sbin/iptables -t nat -N aad-metadata --wait]: exit status 3: modprobe: can't change directory to '/lib/modules': No such file or directory

iptables v1.8.9 (legacy): can't initialize iptables table `nat': Table does not exist (do you need to insmod?)

Perhaps iptables or your kernel needs to be upgraded.

Esse erro ocorre porque a instalação da extensão requer o módulo iptable_nat, mas este módulo não é carregado automaticamente nas distribuições do Oracle Linux (RHEL) 9.x.

Para corrigir esse problema, você deve carregar explicitamente o módulo iptables_nat em cada nó do cluster. Use o comando modprobe sudo modprobe iptables_nat. Depois de entrar em cada nó e adicionar manualmente o módulo iptable_nat, repita a instalação da AMA.

Observação

Executar esta etapa não torna o módulo iptables_nat persistente.

Open Service Mesh habilitado para o Azure Arc

Esta seção demonstra comandos que você pode usar para validar e solucionar problemas de implantação de componentes da extensão Malha de Serviços Aberta (OSM) no cluster.

Verificar a implantação do controlador OSM

kubectl get deployment -n arc-osm-system --selector app=osm-controller

Se o controlador de OSM estiver íntegro, você verá uma saída semelhante a:

NAME             READY   UP-TO-DATE   AVAILABLE   AGE
osm-controller   1/1     1            1           59m

Verificar pods do controlador OSM

kubectl get pods -n arc-osm-system --selector app=osm-controller

Se o controlador OSM estiver íntegro, será exibida uma saída semelhante ao exemplo a seguir:

NAME                            READY   STATUS    RESTARTS   AGE
osm-controller-b5bd66db-wglzl   0/1     Evicted   0          61m
osm-controller-b5bd66db-wvl9w   1/1     Running   0          31m

Mesmo que um controlador tenha status Evicted em um ponto, outro controlador terá o status READY 1/1 e Running com 0 reinicializações. Se o status READY for diferente de 1/1, a malha de serviços estará em um estado interrompido. Se READY for 0/1, o contêiner do painel de controle estará falhando.

Use o seguinte comando para inspecionar logs do controlador:

kubectl logs -n arc-osm-system -l app=osm-controller

Se o status READY for um número maior que 1 após a barra "/" (/), os sidecars serão instalados. O controlador OSM geralmente não funciona corretamente quando os sidecars estão anexados.

Verificar o serviço do controlador OSM

Para verificar o serviço do controlador OSM, execute este comando:

kubectl get service -n arc-osm-system osm-controller

Se o controlador OSM estiver íntegro, será exibida uma saída semelhante ao exemplo a seguir:

NAME             TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)              AGE
osm-controller   ClusterIP   10.0.31.254   <none>        15128/TCP,9092/TCP   67m

Observação

O valor real de CLUSTER-IP será diferente desse exemplo. Os valores de NAME e PORT(S) devem corresponder ao mostrado nesse exemplo.

Verificar pontos de extremidade do controlador OSM

kubectl get endpoints -n arc-osm-system osm-controller

Se o controlador OSM estiver íntegro, será exibida uma saída semelhante ao exemplo a seguir:

NAME             ENDPOINTS                              AGE
osm-controller   10.240.1.115:9092,10.240.1.115:15128   69m

Se o cluster não tiver ENDPOINTS com o valor osm-controller, o painel de controle não está íntegro. Esse estado não íntegro significa que o pod do controlador falhou ou que ele nunca foi implantado corretamente.

Verificar a implantação do injetor OSM

kubectl get deployments -n arc-osm-system osm-injector

Se o injetor OSM estiver íntegro, uma saída semelhante ao exemplo a seguir será exibida:

NAME           READY   UP-TO-DATE   AVAILABLE   AGE
osm-injector   1/1     1            1           73m

Verificar o pod do injetor OSM

kubectl get pod -n arc-osm-system --selector app=osm-injector

Se o injetor OSM estiver íntegro, uma saída semelhante ao exemplo a seguir será exibida:

NAME                            READY   STATUS    RESTARTS   AGE
osm-injector-5986c57765-vlsdk   1/1     Running   0          73m

O status READY deve ser 1/1. Qualquer outro valor indica um pod do injetador OSM não íntegro.

Verificar o serviço do injetor OSM

kubectl get service -n arc-osm-system osm-injector

Se o injetor OSM estiver íntegro, uma saída semelhante ao exemplo a seguir será exibida:

NAME           TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
osm-injector   ClusterIP   10.0.39.54   <none>        9090/TCP   75m

Verifique se o endereço IP listado para o serviço osm-injector é 9090. Não deve haver valor listado para EXTERNAL-IP.

Verificar pontos de extremidade do injetor osM

kubectl get endpoints -n arc-osm-system osm-injector

Se o injetor OSM estiver íntegro, uma saída semelhante ao exemplo a seguir será exibida:

NAME           ENDPOINTS           AGE
osm-injector   10.240.1.172:9090   75m

Para que o OSM funcione, deve haver pelo menos um ponto de extremidade para osm-injector. O endereço IP dos pontos de extremidade do injetor OSM varia, mas o valor da porta 9090 deve ser o mesmo.

Verificar webhooks: Validação e Mutação

Verifique o webhook Validação executando o seguinte comando:

kubectl get ValidatingWebhookConfiguration --selector app=osm-controller

Se o webhook Validação estiver íntegro, uma saída semelhante ao exemplo a seguir será exibida:

NAME                     WEBHOOKS   AGE
osm-validator-mesh-osm   1          81m

Verifique o webhook Mutação executando o seguinte comando:

kubectl get MutatingWebhookConfiguration --selector app=osm-injector

Se o webhook Mutação estiver íntegro, uma saída semelhante ao exemplo a seguir será exibida:

NAME                  WEBHOOKS   AGE
arc-osm-webhook-osm   1          102m

Verifique o serviço e o pacote da Autoridade de Certificação (pacote de AC) do webhook Validação usando este comando:

kubectl get ValidatingWebhookConfiguration osm-validator-mesh-osm -o json | jq '.webhooks[0].clientConfig.service'

Um webhook Validação bem configurado tem uma saída semelhante a este exemplo:

{
  "name": "osm-config-validator",
  "namespace": "arc-osm-system",
  "path": "/validate",
  "port": 9093
}

Verificar o serviço e o pacote de AC do webhook de Mutação ao usar o comando a seguir:

kubectl get MutatingWebhookConfiguration arc-osm-webhook-osm -o json | jq '.webhooks[0].clientConfig.service'

Um webhook Mutação bem configurado tem uma saída semelhante a este exemplo:

{
  "name": "osm-injector",
  "namespace": "arc-osm-system",
  "path": "/mutate-pod-creation",
  "port": 9090
}

Verifique se o controlador OSM forneceu um pacote de AC ao webhook Validação (ou Mutação) usando o seguinte comando:

kubectl get ValidatingWebhookConfiguration osm-validator-mesh-osm -o json | jq -r '.webhooks[0].clientConfig.caBundle' | wc -c
kubectl get MutatingWebhookConfiguration arc-osm-webhook-osm -o json | jq -r '.webhooks[0].clientConfig.caBundle' | wc -c

Exemplo de saída:

1845

O número na saída indica o número de bytes ou o tamanho do pacote de AC. Se a saída estiver vazia, for 0 ou um número inferior a 1.000, o pacote de AC não estará provisionado corretamente. Sem um pacote de AC correto, ValidatingWebhook gera um erro.

Verifique o recurso osm-mesh-config

Verifique a existência do recurso:

kubectl get meshconfig osm-mesh-config -n arc-osm-system

Verifique o valor da configuração meshconfig do OSM:

kubectl get meshconfig osm-mesh-config -n arc-osm-system -o yaml

Procure uma saída semelhante a este exemplo:

apiVersion: config.openservicemesh.io/v1alpha1
kind: MeshConfig
metadata:
  creationTimestamp: "0000-00-00A00:00:00A"
  generation: 1
  name: osm-mesh-config
  namespace: arc-osm-system
  resourceVersion: "2494"
  uid: 6c4d67f3-c241-4aeb-bf4f-b029b08faa31
spec:
  certificate:
    certKeyBitSize: 2048
    serviceCertValidityDuration: 24h
  featureFlags:
    enableAsyncProxyServiceMapping: false
    enableEgressPolicy: true
    enableEnvoyActiveHealthChecks: false
    enableIngressBackendPolicy: true
    enableMulticlusterMode: false
    enableRetryPolicy: false
    enableSnapshotCacheMode: false
    enableWASMStats: true
  observability:
    enableDebugServer: false
    osmLogLevel: info
    tracing:
      enable: false
  sidecar:
    configResyncInterval: 0s
    enablePrivilegedInitContainer: false
    logLevel: error
    resources: {}
  traffic:
    enableEgress: false
    enablePermissiveTrafficPolicyMode: true
    inboundExternalAuthorization:
      enable: false
      failureModeAllow: false
      statPrefix: inboundExtAuthz
      timeout: 1s
    inboundPortExclusionList: []
    outboundIPRangeExclusionList: []
    outboundPortExclusionList: []
kind: List
metadata:
  resourceVersion: ""
  selfLink: ""

A tabela a seguir lista os valores de recurso osm-mesh-config:

Chave Type Valor padrão Exemplos de comando de patch do Kubectl
spec.traffic.enableEgress bool false kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"enableEgress":false}}}' --type=merge
spec.traffic.enablePermissiveTrafficPolicyMode bool true kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"enablePermissiveTrafficPolicyMode":true}}}' --type=merge
spec.traffic.outboundPortExclusionList matriz [] kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"outboundPortExclusionList":[6379,8080]}}}' --type=merge
spec.traffic.outboundIPRangeExclusionList matriz [] kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"outboundIPRangeExclusionList":["10.0.0.0/32","1.1.1.1/24"]}}}' --type=merge
spec.traffic.inboundPortExclusionList matriz [] kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"inboundPortExclusionList":[6379,8080]}}}' --type=merge
spec.certificate.serviceCertValidityDuration string "24h" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"certificate":{"serviceCertValidityDuration":"24h"}}}' --type=merge
spec.observability.enableDebugServer bool false kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"observability":{"enableDebugServer":false}}}' --type=merge
spec.observability.osmLogLevel string "info" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"observability":{"tracing":{"osmLogLevel": "info"}}}}' --type=merge
spec.observability.tracing.enable bool false kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"observability":{"tracing":{"enable":true}}}}' --type=merge
spec.sidecar.enablePrivilegedInitContainer bool false kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"sidecar":{"enablePrivilegedInitContainer":true}}}' --type=merge
spec.sidecar.logLevel string "error" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"sidecar":{"logLevel":"error"}}}' --type=merge
spec.featureFlags.enableWASMStats bool "true" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableWASMStats":"true"}}}' --type=merge
spec.featureFlags.enableEgressPolicy bool "true" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableEgressPolicy":"true"}}}' --type=merge
spec.featureFlags.enableMulticlusterMode bool "false" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableMulticlusterMode":"false"}}}' --type=merge
spec.featureFlags.enableSnapshotCacheMode bool "false" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableSnapshotCacheMode":"false"}}}' --type=merge
spec.featureFlags.enableAsyncProxyServiceMapping bool "false" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableAsyncProxyServiceMapping":"false"}}}' --type=merge
spec.featureFlags.enableIngressBackendPolicy bool "true" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableIngressBackendPolicy":"true"}}}' --type=merge
spec.featureFlags.enableEnvoyActiveHealthChecks bool "false" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableEnvoyActiveHealthChecks":"false"}}}' --type=merge

Verificar namespaces

Observação

O namespace arc-osm-system nunca participa de uma malha de serviço e nunca é rotulado ou anotado com os pares de chave/valor mostrados aqui.

Você pode usar o comando osm namespace add para ingressar namespaces em uma malha de serviço específica. Quando um namespace do Kubernetes fizer parte da malha, conclua as etapas a seguir para confirmar que os requisitos foram atendidos.

Exibir as anotações do namespace bookbuyer:

kubectl get namespace bookbuyer -o json | jq '.metadata.annotations'

As anotações a seguir precisam estar presentes:

{
  "openservicemesh.io/sidecar-injection": "enabled"
}

Exibir os rótulos do namespace bookbuyer:

kubectl get namespace bookbuyer -o json | jq '.metadata.labels'

As etiquetas a seguir precisam estar presentes:

{
  "openservicemesh.io/monitored-by": "osm"
}

Se você não estiver usando a CLI osm, poderá adicionar essas anotações manualmente aos seus namespaces. Se um namespace não estiver anotado com "openservicemesh.io/sidecar-injection": "enabled" ou não estiver rotulado com "openservicemesh.io/monitored-by": "osm", o injetor OSM não adicionará sidecars Envoy.

Observação

Depois que osm namespace add é chamado, apenas pods novos são injetados com um sidecar do Envoy. Os pods existentes devem ser reiniciados usando o comando kubectl rollout restart deployment.

Verificar os CRDs do SMI

Para a Interface de Malha de Serviço (SMI) OSM, verifique se o cluster tem as definições de recurso personalizadas (CRDs) necessárias:

kubectl get crds

Verifique se os CRDs correspondem às versões disponíveis na ramificação de liberação. Para confirmar quais versões de CRD estão em uso, confira versões SMI com suporte e selecione sua versão no menu Versões.

Obtenha as versões dos CRDs instalados usando o seguinte comando:

for x in $(kubectl get crds --no-headers | awk '{print $1}' | grep 'smi-spec.io'); do
    kubectl get crd $x -o json | jq -r '(.metadata.name, "----" , .spec.versions[].name, "\n")'
done

Se os CRDs forem ignorados, use os comandos a seguir para instalá-los no cluster. Substitua a versão nestes comandos conforme necessário (por exemplo, em vez de v1.1.0, você pode usar release-v1.1).

kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm/release-v1.0/cmd/osm-bootstrap/crds/smi_http_route_group.yaml

kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm/release-v1.0/cmd/osm-bootstrap/crds/smi_tcp_route.yaml

kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm/release-v1.0/cmd/osm-bootstrap/crds/smi_traffic_access.yaml

kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm/release-v1.0/cmd/osm-bootstrap/crds/smi_traffic_split.yaml

Para ver como as versões do CRD são alteradas entre as versões, confira as notas sobre a versão do OSM.

Solucionar problemas de gerenciamento de certificados

Para obter informações sobre como o OSM emite e gerencia certificados para proxies Envoy em execução em pods de aplicativo, confira a documentação do OSM.

Atualizar o Envoy

Quando um novo pod é criado em um namespace monitorado pelo complemento, o OSM injeta um sidecar de proxy Envoy nesse pod. Se a versão do Envoy precisar ser atualizada, siga as etapas no Guia de Atualização na documentação do OSM.