Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste artigo, você aprenderá a configurar clusters do Serviço de Kubernetes do Azure (AKS) para usar um proxy HTTP para acesso à Internet de saída.
Os clusters do AKS implantados em redes virtuais gerenciadas ou personalizadas têm determinadas dependências de saída necessárias para funcionar corretamente, o que criou problemas em ambientes que exigem que o acesso à Internet seja roteado por meio de proxies HTTP. Os nós não tinham como inicializar a configuração, as variáveis de ambiente e os certificados necessários para acessar os serviços da Internet.
O recurso de proxy HTTP adiciona suporte a proxy HTTP a clusters do AKS, expondo uma interface simples que você pode usar para proteger o tráfego de rede necessário para o AKS em ambientes dependentes de proxy. Com este recurso, nós e pods do AKS são configurados para usar o proxy HTTP. O recurso também permite a instalação de uma autoridade de certificação confiável nos nós como parte da inicialização de um cluster. Soluções mais complexas podem exigir a criação de uma cadeia de confiança para estabelecer comunicações seguras em toda a rede.
Limitações e considerações
Os cenários a seguir não têm suporte:
- Configurações de proxy diferentes por pool de nós
- Autenticação de usuário/senha
- ACs (autoridades de certificação) personalizadas para comunicação do servidor de API
- Clusters do AKS com pools de nós do Windows
- Pools de nós que usam os VMAS (Conjuntos de Disponibilidade de Máquinas Virtuais)
- Usar * como curinga junto a um sufixo de domínio para noProxy
httpProxy, httpsProxy e trustedCa não têm nenhum valor por padrão. Os pods são injetados com as seguintes variáveis de ambiente:
HTTP_PROXYhttp_proxyHTTPS_PROXYhttps_proxyNO_PROXYno_proxy
Para desabilitar a injeção das variáveis de ambiente proxy, você precisa anotar o pod com "kubernetes.azure.com/no-http-proxy-vars":"true".
Antes de começar
Utilize o ambiente Bash no Azure Cloud Shell. Para obter mais informações, confira Introdução ao Azure Cloud Shell.
Se preferir executar os comandos de referência da CLI localmente, instale a CLI do Azure. Se você estiver executando no Windows ou no macOS, considere executar a CLI do Azure em um contêiner do Docker. Para obter mais informações, confira Como executar a CLI do Azure em um contêiner do Docker.
Se você estiver usando uma instalação local, entre na CLI do Azure usando o comando az login . Para concluir o processo de autenticação, siga as etapas exibidas em seu terminal. Para obter outras opções de entrada, consulte Autenticar no Azure usando a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure no primeiro uso. Para obter mais informações sobre extensões, confira Usar e gerenciar extensões com a CLI do Azure.
Execute o comando az version para localizar a versão e as bibliotecas dependentes que estão instaladas. Para atualizar para a versão mais recente, execute az upgrade.
Criar um arquivo de configuração com valores de proxy HTTP
Crie um arquivo e forneça valores para httpProxy, httpsProxy e noProxy. Se o ambiente exigir, forneça um valor para trustedCa.
O esquema para o arquivo de configuração tem a seguinte aparência:
{
"httpProxy": "string",
"httpsProxy": "string",
"noProxy": [
"string"
],
"trustedCa": "string"
}
Examine os requisitos para cada parâmetro:
-
httpProxy: uma URL de proxy a ser usada para criar conexões HTTP fora do cluster. O esquema de URL deve serhttp. -
httpsProxy: uma URL de proxy a ser usada para criar conexões HTTPS fora do cluster. Se não for especificado,httpProxyserá usado para conexões HTTP e HTTPS. -
noProxy: uma lista de nomes de domínio de destino, domínios, endereços IP ou outros CIDRs de rede para excluir o proxy. -
trustedCa: uma cadeia de caracteres que contém o conteúdo alternativo do certificado de autoridade de certificaçãobase64 encoded. Atualmente, há suporte apenas para o formatoPEM.
Importante
Para a compatibilidade com os componentes baseados em Go que fazem parte do sistema Kubernetes, o certificado deverá dar suporteSubject Alternative Names(SANs), em vez dos certificados de Nome Comum preteridos.
Há diferenças entre os aplicativos quanto à conformidade com as variáveis de ambiente http_proxy, https_proxy, e no_proxy. O Curl e o Python não dão suporte a CIDR em no_proxy, mas o Ruby dá.
Entrada de exemplo:
{
"httpProxy": "http://myproxy.server.com:8080",
"httpsProxy": "https://myproxy.server.com:8080",
"noProxy": [
"localhost",
"127.0.0.1"
],
"trustedCA": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUgvVENDQmVXZ0F3SUJB...S0tLS0="
}
Criar um cluster com uma configuração de proxy HTTP usando a CLI do Azure
Você pode configurar um cluster do AKS com uma configuração de proxy HTTP durante a criação do cluster.
Use o comando
az aks createe transmita a configuração como um arquivo JSON.az aks create \ --name $clusterName \ --resource-group $resourceGroup \ --http-proxy-config aks-proxy-config.json \ --generate-ssh-keysO cluster deve ser inicializado com o proxy HTTP configurado nos nós.
Verifique se a configuração de proxy HTTP está nos pods e nós verificando se as variáveis de ambiente contêm os valores apropriados para
http_proxy,https_proxyeno_proxyusando o comandokubectl describe pod.kubectl describe {any pod} -n kube-systemPara validar se as variáveis de proxy estão definidas em pods, verifique as variáveis de ambiente presentes nos nós.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Atualizar uma configuração de proxy HTTP
Você pode atualizar as configurações de proxy HTTP nos clusters existentes, incluindo:
- Atualizar um cluster existente para habilitar o proxy HTTP e adicionar uma nova configuração de proxy HTTP.
- Atualizar um cluster existente para alterar uma configuração de proxy HTTP.
Considerações sobre a atualização de proxy HTTP
O --http-proxy-config parâmetro deve ser definido como um novo arquivo JSON com valores atualizados parahttpProxy, httpsProxye noProxytrustedCa se necessário. A atualização injeta novas variáveis de ambiente em pods com os novos valores httpProxy, httpsProxy ou noProxy. Os pods devem ser girados para que os aplicativos os capturem, pois os valores da variável de ambiente são injetados por um webhook de admissão mutável.
Observação
Se mudar para um novo proxy, ele já deverá existir para que a atualização seja bem-sucedida. Depois que a atualização for concluída, você poderá excluir o proxy antigo.
Atualizar um cluster para atualizar ou habilitar o proxy HTTP
Habilite ou atualize as configurações de proxy HTTP em um cluster existente usando o comando
az aks update.Por exemplo, digamos que você criou um novo arquivo com a cadeia de caracteres codificada em base64 do novo certificado de AC chamado aks-proxy-config-2.json. Você pode atualizar a configuração de proxy em seu cluster com o seguinte comando:
az aks update --name $clusterName --resource-group $resourceGroup --http-proxy-config aks-proxy-config-2.json
Cuidado
O AKS recria automaticamente a imagem de todos os pools de nós no cluster quando você atualiza a configuração de proxy no cluster por meio do comando az aks update. Você pode usar PDBs (orçamentos de interrupção do pod) para proteger a interrupção em pods críticos durante a recriação da imagem.
Verifique se a configuração de proxy HTTP está nos pods e nós verificando se as variáveis de ambiente contêm os valores apropriados para
http_proxy,https_proxyeno_proxyusando o comandokubectl describe pod.kubectl describe {any pod} -n kube-systemPara validar se as variáveis de proxy estão definidas em pods, verifique as variáveis de ambiente presentes nos nós.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Desabilitar o proxy HTTP em um cluster existente (versão prévia)
Instalar aks-preview extensão
Instale a extensão
aks-previewda CLI do Azure usando o comandoaz extension add.Importante
As funcionalidades em versão preliminar do AKS estão disponíveis de forma optativa e por autoatendimento. As versões prévias são fornecidas “no estado em que se encontram” e “conforme disponíveis” e são excluídas dos contratos de nível de serviço e da garantia limitada. As versões prévias do AKS são parcialmente cobertas pelo suporte ao cliente em uma base de melhor esforço. Dessa forma, esses recursos não são destinados ao uso em produção. Para obter mais informações, consulte os seguintes artigos:
az extension add --name aks-previewAtualize para a última versão da extensão usando o comando
az extension update. A desabilitação do proxy HTTP exige, no mínimo, a versão 18.0.0b13.az extension update --name aks-preview
Registrar o sinalizador de recurso DisableHTTPProxyPreview
Registre o sinalizador de recurso
DisableHTTPProxyPreviewusando o comandoaz feature register.az feature register --namespace Microsoft.ContainerService --name DisableHTTPProxyPreviewVerifique o status do registro usando o comando
az feature show. Demora alguns minutos para o status mostrar Registrado.az feature show --namespace Microsoft.ContainerService --name DisableHTTPProxyPreviewQuando o status reflete Registrado, atualize o registro do provedor de recursos Microsoft.ContainerService usando o comando
az provider register.az provider register --namespace Microsoft.ContainerService
Atualizar o cluster para desabilitar o proxy HTTP (versão prévia)
Atualize o cluster para desabilitar o proxy HTTP usando o comando
az aks updatecom o sinalizador--disable-http-proxy.az aks update --name $clusterName --resource-group $resourceGroup --disable-http-proxy
Cuidado
O AKS recria automaticamente a imagem de todos os pools de nós no cluster quando você atualiza a configuração de proxy no cluster por meio do comando az aks update. Você pode usar PDBs (orçamentos de interrupção do pod) para proteger a interrupção em pods críticos durante a recriação da imagem.
Verifique se o proxy HTTP está desabilitado validando se a configuração de proxy HTTP não está definida nos pods e nós usando o comando
kubectl describe pod.kubectl describe {any pod} -n kube-systemPara validar se as variáveis de proxy não estão definidas em pods, verifique as variáveis de ambiente presentes nos nós.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Habilitar novamente o proxy HTTP em um cluster existente
Quando você cria um cluster, o proxy HTTP é habilitado por padrão. Depois que você desabilitar o proxy HTTP em um cluster, a configuração de proxy será salva no banco de dados, mas as variáveis de proxy serão removidas dos pods e nós.
Para habilitar novamente o proxy HTTP em um cluster existente, use o comando az aks update com o sinalizador --enable-http-proxy.
az aks update --name $clusterName --resource-group $resourceGroup --enable-http-proxy
Cuidado
O AKS recria automaticamente a imagem de todos os pools de nós no cluster quando você atualiza a configuração de proxy no cluster por meio do comando az aks update. Você pode usar PDBs (orçamentos de interrupção do pod) para proteger a interrupção em pods críticos durante a recriação da imagem.
Importante
Se você tiver uma configuração de proxy HTTP no cluster antes da desabilitação, a configuração de proxy HTTP existente será aplicada automaticamente quando você reabilitar o proxy HTTP nesse cluster. Recomendamos verificar a configuração para garantir que ela atenda aos seus requisitos atuais antes de continuar. Se você quiser alterar a configuração de proxy HTTP depois de reabilitar o proxy HTTP, siga as etapas para Atualizar a configuração de proxy HTTP em um cluster existente.
Configurar uma configuração de proxy HTTP usando um modelo do ARM (Azure Resource Manager)
Você pode implantar um cluster do AKS com um proxy HTTP usando um modelo do ARM.
Examine os requisitos para cada parâmetro:
-
httpProxy: uma URL de proxy a ser usada para criar conexões HTTP fora do cluster. O esquema de URL deve serhttp. -
httpsProxy: uma URL de proxy a ser usada para criar conexões HTTPS fora do cluster. Se não for especificado,httpProxyserá usado para conexões HTTP e HTTPS. -
noProxy: uma lista de nomes de domínio de destino, domínios, endereços IP ou outros CIDRs de rede para excluir o proxy. -
trustedCa: uma cadeia de caracteres que contém o conteúdo alternativo do certificado de autoridade de certificaçãobase64 encoded. Atualmente, há suporte apenas para o formatoPEM.
Importante
Para a compatibilidade com os componentes baseados em Go que fazem parte do sistema Kubernetes, o certificado deverá dar suporte
Subject Alternative Names (SANs), em vez dos certificados de Nome Comum preteridos.Há diferenças entre os aplicativos quanto à conformidade com as variáveis de ambiente
http_proxy,https_proxy, eno_proxy. O Curl e o Python não dão suporte a CIDR emno_proxy, mas o Ruby dá.-
Crie um modelo com parâmetros de proxy HTTP. Em seu modelo, forneça valores para
httpProxy,httpsProxyenoProxy. Se necessário, forneça um valor paratrustedCa. O mesmo esquema usado para implantação da CLI existe na definiçãoMicrosoft.ContainerService/managedClustersabaixo de"properties", conforme mostrado no exemplo a seguir:"properties": { ..., "httpProxyConfig": { "enabled": "true", "httpProxy": "string", "httpsProxy": "string", "noProxy": [ "string" ], "trustedCa": "string" } }Implante o modelo do ARM com a configuração de proxy HTTP. O cluster deve ser inicializado com o proxy HTTP configurado nos nós.
Atualizar uma configuração de proxy HTTP
Você pode atualizar as configurações de proxy HTTP nos clusters existentes, incluindo:
- Atualizar um cluster existente para habilitar o proxy HTTP e adicionar uma nova configuração de proxy HTTP.
- Atualizar um cluster existente para alterar uma configuração de proxy HTTP.
Considerações sobre a atualização de proxy HTTP
O --http-proxy-config parâmetro deve ser definido como um novo arquivo JSON com valores atualizados parahttpProxy, httpsProxye noProxytrustedCa se necessário. A atualização injeta novas variáveis de ambiente em pods com os novos valores httpProxy, httpsProxy ou noProxy. Os pods devem ser girados para que os aplicativos os capturem, pois os valores da variável de ambiente são injetados por um webhook de admissão mutável.
Observação
Se mudar para um novo proxy, ele já deverá existir para que a atualização seja bem-sucedida. Depois que a atualização for concluída, você poderá excluir o proxy antigo.
Atualizar um modelo do ARM para configurar o proxy HTTP
No modelo, forneça novos valores para
httpProxy,httpsProxyenoProxy. Se necessário, forneça um valor paratrustedCa.O mesmo esquema usado para implantação da CLI existe na definição
Microsoft.ContainerService/managedClustersabaixo de"properties", conforme mostrado no exemplo a seguir:"properties": { ..., "httpProxyConfig": { "enabled": "true", "httpProxy": "string", "httpsProxy": "string", "noProxy": [ "string" ], "trustedCa": "string" } }Implante o modelo do ARM com a configuração atualizada do Proxy HTTP.
Cuidado
O AKS recria automaticamente a imagem de todos os pools de nós no cluster quando você atualiza a configuração de proxy no cluster por meio do comando az aks update. Você pode usar PDBs (orçamentos de interrupção do pod) para proteger a interrupção em pods críticos durante a recriação da imagem.
Verifique se a configuração de proxy HTTP está nos pods e nós verificando se as variáveis de ambiente contêm os valores apropriados para
http_proxy,https_proxyeno_proxyusando o comandokubectl describe pod.kubectl describe {any pod} -n kube-systemPara validar se as variáveis de proxy estão definidas em pods, verifique as variáveis de ambiente presentes nos nós.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Desabilitar o proxy HTTP em um cluster existente usando um modelo do ARM (versão prévia)
Instalar aks-preview extensão
Instale a extensão
aks-previewda CLI do Azure usando o comandoaz extension add.Importante
As funcionalidades em versão preliminar do AKS estão disponíveis de forma optativa e por autoatendimento. As versões prévias são fornecidas “no estado em que se encontram” e “conforme disponíveis” e são excluídas dos contratos de nível de serviço e da garantia limitada. As versões prévias do AKS são parcialmente cobertas pelo suporte ao cliente em uma base de melhor esforço. Dessa forma, esses recursos não são destinados ao uso em produção. Para obter mais informações, consulte os seguintes artigos:
az extension add --name aks-previewAtualize para a última versão da extensão usando o comando
az extension update. A desabilitação do proxy HTTP exige, no mínimo, a versão 18.0.0b13.az extension update --name aks-preview
Registrar o sinalizador de recurso DisableHTTPProxyPreview
Registre o sinalizador de recurso
DisableHTTPProxyPreviewusando o comandoaz feature register.az feature register --namespace Microsoft.ContainerService --name DisableHTTPProxyPreviewVerifique o status do registro usando o comando
az feature show. Demora alguns minutos para o status mostrar Registrado.az feature show --namespace Microsoft.ContainerService --name DisableHTTPProxyPreviewQuando o status reflete Registrado, atualize o registro do provedor de recursos Microsoft.ContainerService usando o comando
az provider register.az provider register --namespace Microsoft.ContainerService
Atualizar o cluster para desabilitar o proxy HTTP
Atualize o modelo do ARM do cluster para desabilitar o proxy HTTP definindo
enabledcomofalse. O mesmo esquema usado para implantação da CLI existe na definiçãoMicrosoft.ContainerService/managedClustersabaixo de"properties", conforme mostrado no exemplo a seguir:"properties": { ..., "httpProxyConfig": { "enabled": "false", } }Implante o modelo do ARM com o proxy HTTP desabilitado.
Cuidado
O AKS recria automaticamente a imagem de todos os pools de nós no cluster quando você atualiza a configuração de proxy no cluster por meio do comando az aks update. Você pode usar PDBs (orçamentos de interrupção do pod) para proteger a interrupção em pods críticos durante a recriação da imagem.
Verifique se o proxy HTTP está desabilitado validando se a configuração do proxy HTTP não está definida nos pods e nós usando o comando
kubectl describe pod.kubectl describe {any pod} -n kube-systemPara validar se as variáveis de proxy não estão definidas em pods, verifique as variáveis de ambiente presentes nos nós.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Habilitar novamente o proxy HTTP em um cluster existente
Quando você cria um cluster, o proxy HTTP é habilitado por padrão. Depois de desabilitar o proxy HTTP em um cluster, você não poderá mais adicionar configurações de proxy HTTP a esse cluster.
Se você quiser habilitar novamente o proxy HTTP, siga as etapas para Atualizar uma configuração de proxy HTTP usando um modelo do ARM.
Proxy HTTP do complemento do Istio para serviços externos
Se você estiver usando o complemento de malha de serviço baseado em Istio para AKS, crie uma entrada de serviço para permitir que os aplicativos na malha acessem recursos que não são do cluster ou externos por meio do proxy HTTP.
Por exemplo:
apiVersion: networking.istio.io/v1
kind: ServiceEntry
metadata:
name: proxy
spec:
hosts:
- my-company-proxy.com # ignored
addresses:
- $PROXY_IP/32
ports:
- number: $PROXY_PORT
name: tcp
protocol: TCP
location: MESH_EXTERNAL
Crie um arquivo e forneça valores para
PROXY_IPePROXY_PORT.Você pode implantar a Entrada de Serviço usando:
kubectl apply -f service_proxy.yaml
Monitoramento da configuração do complemento
O proxy HTTP com o complemento de monitoramento dá suporte às seguintes configurações:
- Proxy de saída sem autenticação
- Proxy externo com certificado confiável para endpoint do Log Analytics
Não há suporte para a seguinte configuração:
- Métricas personalizadas e recursos de alertas recomendados ao usar um proxy com certificados confiáveis
Próximas etapas
Para obter mais informações sobre os requisitos de rede de clusters do AKS, confira Controlar o tráfego de saída para nós de cluster no AKS.