Partilhar via


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

Este artigo descreve dicas de solução de 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, consulte Solucionar problemas do Kubernetes habilitado para Azure Arc.

GitOps (Fluxo v2)

Nota

Você pode usar a extensão Flux v2 em um cluster Kubernetes habilitado para Azure Arc ou em um cluster do Serviço 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 quando você usa fluxConfigurations recursos, execute estes comandos da CLI do Azure com o --debug parâmetro:

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

Erros de execução seca do Webhook

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

Para obter mais informações, consulte Como resolvo erros "webhook não suporta execução seca"?.

Erros ao instalar a extensão microsoft.flux

A microsoft.flux extensão instala controladores Flux e agentes GitOps do Azure em um cluster Kubernetes habilitado para Azure Arc ou cluster do Serviço 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 Failed estado, certifique-se de que o cluster não tenha políticas que restrinjam a criação do flux-system namespace ou de qualquer um dos recursos nesse namespace.

Para um cluster AKS, verifique se o sinalizador Microsoft.ContainerService/AKS-ExtensionManager de recurso 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 para managedClusters Para um cluster AKS. Se a extensão foi instalada automaticamente quando você criou sua configuração do GitOps, o nome da microsoft.flux extensão é flux.

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

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

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

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

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

Se você tentar instalar a extensão Flux em um cluster que tenha uma identidade gerenciada pelo pod do Microsoft Entra, poderá ocorrer um erro no extension-agent pod. A saída é semelhante a 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 extension-agent pod tenta obter seu token do Serviço de Metadados de Instância do Azure no cluster, mas a solicitação de token é intercetada pela identidade do pod. Para corrigir esse problema, atualize para a versão mais recente da microsoft.flux extensão.

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

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

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

Nome do contentor CPU mínima Mínimo de memória CPU máxima Máximo de memória
fluxconfig-agent 5 metros 30 mi 50 metros 150 Mi
fluxconfig-controller 5 metros 30 mi 100 metros 150 Mi
fluent-bit 5 metros 30 mi 20 metros 150 Mi
helm-controller 100 metros 64 Mi 1.000 metros 1 Gi
source-controller 50 metros 64 Mi 1.000 metros 1 Gi
kustomize-controller 100 metros 64 Mi 1.000 metros 1 Gi
notification-controller 100 metros 64 Mi 1.000 metros 1 Gi
image-automation-controller 100 metros 64 Mi 1.000 metros 1 Gi
image-reflector-controller 100 metros 64 Mi 1.000 metros 1 Gi

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

Fluxo v1

Nota

Recomendamos que você migre 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 solucionar problemas com o sourceControlConfigurations recurso no Flux v1, execute estes comandos da CLI do Azure, incluindo o --debug parâmetro:

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

Azure Monitor Container Insights

Esta seção fornece ajuda com a solução de problemas com informações de contêiner no Azure Monitor para clusters Kubernetes habilitados para Azure Arc.

Habilitar o modo privilegiado para um cluster Kubernetes Canônico Encantado

O Azure Monitor Container Insights requer que seu Kubernetes DaemonSet seja executado no modo privilegiado. Para configurar com êxito um cluster Kubernetes Canonical Charmed para monitoramento, execute o seguinte comando:

juju config kubernetes-worker allow-privileged=true

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

Se você tentar instalar o Azure Monitor Agent (AMA) em um cluster Kubernetes Oracle Linux (Red Hat Enterprise Linux (RHEL)) 9.x, os pods AMA e AMA-RS podem não funcionar corretamente devido ao addon-token-adapter contêiner no pod. Quando você verifica os ama-logs-rs logs do pod, no addon-token-adapter container, você vê 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.

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

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

Nota

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

Azure Arc-enabled Open Service Mesh

Esta seção demonstra os comandos que você pode usar para validar e solucionar problemas de implantação de componentes de extensão OSM (Open Service Mesh) em seu cluster.

Verifique a implantação do controlador OSM

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

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

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

Verifique os pods do controlador OSM

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

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

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 um status de Evicted em um ponto, outro controlador tem o READY status 1/1 e Running com 0 reinicializações. Se o READY status for diferente de 1/1, a malha de serviço está em um estado quebrado. Se READY for 0/1, o contêiner do avião de controle está caindo.

Use o seguinte comando para inspecionar os logs do controlador:

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

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

Verifique 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, a saída semelhante ao exemplo a seguir será exibida:

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

Nota

O valor real para CLUSTER-IP será diferente deste exemplo. Os valores para NAME e PORT(S) devem corresponder ao que é mostrado neste exemplo.

Verifique os pontos finais do controlador OSM

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

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

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

Se o cluster não tiver ENDPOINTS o valor osm-controller, o plano de controle não estará íntegro. Esse estado não íntegro significa que o pod do controlador travou ou que nunca foi implantado corretamente.

Verifique a implantação do injetor OSM

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

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

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

Verifique o pod do injetor OSM

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

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

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

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

Verifique o serviço de injetor OSM

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

Se o injetor OSM estiver íntegro, a 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

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

Verifique os pontos finais do injetor OSM

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

Se o injetor OSM estiver íntegro, a 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 9090 da porta deve ser o mesmo.

Verifique webhooks: Validando e Mutando

Verifique o webhook Validando executando o seguinte comando:

kubectl get ValidatingWebhookConfiguration --selector app=osm-controller

Se o webhook Validating estiver íntegro, a saída semelhante ao exemplo a seguir será exibida:

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

Verifique o webhook Mutating executando o seguinte comando:

kubectl get MutatingWebhookConfiguration --selector app=osm-injector

Se o webhook Mutating estiver íntegro, a 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 CA) do webhook Validando usando este comando:

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

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

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

Verifique o serviço e o pacote de CA do webhook Mutating usando o seguinte comando:

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

Um webhook mutante 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 deu ao webhook Validating (ou Mutating) um pacote de CA 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

Saída de exemplo:

1845

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

Verifique o osm-mesh-config recurso

Verifique a existência do recurso:

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

Verifique o valor da configuração OSM meshconfig :

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 osm-mesh-config os valores de recursos:

Chave Type Default value Exemplos de comandos de patch Kubectl
spec.traffic.enableEgress booleano false kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"enableEgress":false}}}' --type=merge
spec.traffic.enablePermissiveTrafficPolicyMode booleano 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 booleano 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 booleano false kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"observability":{"tracing":{"enable":true}}}}' --type=merge
spec.sidecar.enablePrivilegedInitContainer booleano 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 booleano "true" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableWASMStats":"true"}}}' --type=merge
spec.featureFlags.enableEgressPolicy booleano "true" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableEgressPolicy":"true"}}}' --type=merge
spec.featureFlags.enableMulticlusterMode booleano "false" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableMulticlusterMode":"false"}}}' --type=merge
spec.featureFlags.enableSnapshotCacheMode booleano "false" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableSnapshotCacheMode":"false"}}}' --type=merge
spec.featureFlags.enableAsyncProxyServiceMapping booleano "false" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableAsyncProxyServiceMapping":"false"}}}' --type=merge
spec.featureFlags.enableIngressBackendPolicy booleano "true" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableIngressBackendPolicy":"true"}}}' --type=merge
spec.featureFlags.enableEnvoyActiveHealthChecks booleano "false" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableEnvoyActiveHealthChecks":"false"}}}' --type=merge

Verificar namespaces

Nota

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

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

Veja as anotações do bookbuyer namespace:

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

Deve estar presente a seguinte anotação:

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

Exiba os rótulos do bookbuyer namespace:

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

Deve estar presente o seguinte rótulo:

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

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

Nota

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

Verificar os CRDs SMI

Para o OSM Service Mesh Interface (SMI), verifique se o cluster tem as definições de recursos personalizados (CRDs) necessárias:

kubectl get crds

Certifique-se de que os CRDs correspondam às versões disponíveis na ramificação de versão. Para confirmar quais versões do CRD estão em uso, consulte Versões suportadas pelo SMI 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 CRDs estiverem faltando, use os seguintes comandos para instalá-los no cluster. Substitua a versão nesses 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 mudam entre as versões, consulte as notas de versão do OSM.

Solucionar problemas de gerenciamento de certificados

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

Enviado de atualização

Quando um novo pod é criado em um namespace monitorado pelo complemento, o OSM injeta um sidecar 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.