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.
Neste artigo, você aprenderá a configurar clusters do Serviço Kubernetes do Azure (AKS) para usar um proxy HTTP para acesso de saída à Internet.
Os clusters AKS implantados em redes virtuais gerenciadas ou personalizadas têm certas dependências de saída que são 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 aos clusters AKS, expondo uma interface simples que se pode usar para proteger o tráfego de rede necessário para o AKS em ambientes dependentes de proxy. Com esse recurso, tanto os nós AKS quanto os pods 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 seguintes cenários não são suportados:
- Diferentes configurações de proxy por pool de nós
- Autenticação de usuário/senha
- Autoridades de certificação (CAs) personalizadas para comunicação com o servidor de API
- Clusters AKS com conjuntos de nós do Windows
- Pools de nós que utilizam Conjuntos de Disponibilidade de Máquinas Virtuais (VMAS)
- Usando * como coringa anexado a um sufixo de domínio para noProxy
httpProxy, httpsProxye trustedCa não têm valor por padrão. Os pods são injetados com as seguintes variáveis de ambiente:
HTTP_PROXYhttp_proxyHTTPS_PROXYhttps_proxyNO_PROXYno_proxy
Para desativar 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 mais informações, veja Get started with Azure Cloud Shell.
Se preferir executar comandos de referência da CLI localmente, instale o CLI do Azure. Se estiver a usar Windows ou macOS, considere executar o Azure CLI num contentor Docker. Para obter mais informações, consulte 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 os passos exibidos no seu terminal. Para outras opções de entrada, consulte Autenticar no Azure usando a CLI do Azure.
Quando solicitado, instale a extensão do Azure CLI na primeira utilização. Para obter mais informações sobre extensões, consulte Usar e gerenciar extensões com a CLI do Azure.
Execute az version para descobrir 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, httpsProxye noProxy. Se o seu ambiente exigir, forneça um valor para trustedCa.
O esquema para o arquivo de configuração tem esta aparência:
{
"httpProxy": "string",
"httpsProxy": "string",
"noProxy": [
"string"
],
"trustedCa": "string"
}
Rever 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, seráhttpProxyusado 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 proxy. -
trustedCa: Uma cadeia de caracteres que contém o conteúdo do certificado debase64 encodedautoridade de certificação alternativo. Atualmente, apenas oPEMformato é suportado.
Importante
Para compatibilidade com componentes baseados em Go que fazem parte do sistema Kubernetes, o certificado deve suportar Subject Alternative Names(SANs) em vez dos certificados de Nome Comum preteridos.
Existem diferenças nas aplicações sobre como cumprir com a variável http_proxyde ambiente , https_proxy, e no_proxy. Curl e Python não suportam CIDR no no_proxy, mas Ruby sim.
Exemplo de entrada:
{
"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 AKS com uma configuração de proxy HTTP durante a criação do cluster.
Use o
az aks createcomando e passe sua 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 do proxy HTTP está nos pods e nos nós, verificando se as variáveis de ambiente contêm os valores apropriados para
http_proxy,https_proxyeno_proxy, usando o comandokubectl describe pod.kubectl describe {any pod} -n kube-systemPara validar que as variáveis proxy são definidas em pods, você pode verificar 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 em 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 atualização de proxy HTTP
O --http-proxy-config parâmetro deve ser definido como um novo arquivo JSON com valores atualizados para httpProxy, httpsProxy, noProxye trustedCa se necessário. A atualização injeta variáveis de ambiente nos pods com os novos valores httpProxy, httpsProxy ou noProxy. Os pods devem ser girados para que os aplicativos o recebam, porque os valores das variáveis de ambiente são injetados por um webhook de admissão mutante.
Nota
Se mudar para um novo proxy, o novo proxy já deve 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
az aks updatecomando.Por exemplo, digamos que tu criaste um novo ficheiro com a string codificada em base64 do novo certificado CA chamado aks-proxy-config-2.json. Você pode atualizar a configuração de proxy no cluster com o seguinte comando:
az aks update --name $clusterName --resource-group $resourceGroup --http-proxy-config aks-proxy-config-2.json
Atenção
AKS reconfigura automaticamente todos os pools de nós no cluster quando se atualiza a configuração de proxy no cluster usando o comando az aks update. Você pode usar Pod Disruption Budgets (PDBs) para proteger contra a interrupção de pods críticos durante a reimagem.
Verifique se a configuração do proxy HTTP está nos pods e nos nós, verificando se as variáveis de ambiente contêm os valores apropriados para
http_proxy,https_proxyeno_proxy, usando o comandokubectl describe pod.kubectl describe {any pod} -n kube-systemPara validar que as variáveis proxy são definidas em pods, você pode verificar as variáveis de ambiente presentes nos nós.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Desabilitar proxy HTTP em um cluster existente (Visualização)
Instalar aks-preview extensão
Instale a
aks-previewextensão da CLI do Azure usando oaz extension addcomando.Importante
Os recursos de pré-visualização do AKS estão disponíveis numa base de autosserviço e adesão voluntária. As visualizações prévias são fornecidas "como estão" e "conforme disponíveis" e são excluídas dos contratos de nível de serviço e da garantia limitada. As versões de teste do AKS são parcialmente cobertas pelo suporte ao cliente numa base de melhor esforço. Assim sendo, estas funcionalidades não se destinam ao uso em produção. Para obter mais informações, consulte os seguintes artigos de suporte:
az extension add --name aks-previewAtualize para a versão mais recente da extensão usando o
az extension updatecomando. Desativar Proxy HTTP requer um mínimo de 18.0.0b13.az extension update --name aks-preview
Registrar sinalizador de funcionalidade DisableHTTPProxyPreview
Registe o sinalizador de funcionalidade
DisableHTTPProxyPreviewcom o comandoaz feature register.az feature register --namespace Microsoft.ContainerService --name DisableHTTPProxyPreviewVerifique o status do registro usando o
az feature showcomando. Leva alguns minutos para que o status mostre Registrado.az feature show --namespace Microsoft.ContainerService --name DisableHTTPProxyPreviewQuando o status refletir Registrado, atualize o registro do provedor de recursos Microsoft.ContainerService usando o comando
az provider register.az provider register --namespace Microsoft.ContainerService
Atualizar cluster a fim de desativar o proxy HTTP (pré-visualização)
Atualize o seu cluster para desativar o proxy HTTP usando o comando
az aks updatecom a flag--disable-http-proxy.az aks update --name $clusterName --resource-group $resourceGroup --disable-http-proxy
Atenção
AKS reconfigura automaticamente todos os pools de nós no cluster quando se atualiza a configuração de proxy no cluster usando o comando az aks update. Você pode usar Pod Disruption Budgets (PDBs) para proteger contra a interrupção de pods críticos durante a reimagem.
Verifique se o proxy HTTP está desativado, certificando-se de que a configuração do proxy HTTP não está ativada nos pods e nós usando o comando
kubectl describe pod.kubectl describe {any pod} -n kube-systemPara validar que as variáveis de proxy não estão definidas nos pods, pode-se verificar as variáveis de ambiente presentes nos nós.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Reativar 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, a configuração de proxy é salva no banco de dados, mas as variáveis de proxy são removidas dos pods e nós.
Para reativar o proxy HTTP em um cluster existente, use o az aks update comando com o --enable-http-proxy sinalizador.
az aks update --name $clusterName --resource-group $resourceGroup --enable-http-proxy
Atenção
AKS reconfigura automaticamente todos os pools de nós no cluster quando se atualiza a configuração de proxy no cluster usando o comando az aks update. Você pode usar Pod Disruption Budgets (PDBs) para proteger contra a interrupção de pods críticos durante a reimagem.
Importante
Se você tinha uma configuração de proxy HTTP no cluster antes de desabilitar, a configuração de proxy HTTP existente se aplica automaticamente quando você reativa o proxy HTTP nesse cluster. Recomendamos verificar a configuração para garantir que ela atenda aos seus requisitos atuais antes de prosseguir. Se você quiser alterar sua configuração de proxy HTTP depois de reativar 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 Azure Resource Manager (ARM)
Você pode implantar um cluster AKS com um proxy HTTP usando um modelo ARM.
Rever 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, seráhttpProxyusado 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 proxy. -
trustedCa: Uma cadeia de caracteres que contém o conteúdo do certificado debase64 encodedautoridade de certificação alternativo. Atualmente, apenas oPEMformato é suportado.
Importante
Para compatibilidade com componentes baseados em Go que fazem parte do sistema Kubernetes, o certificado deve suportar
Subject Alternative Names (SANs)em vez dos certificados de Nome Comum preteridos.Existem diferenças nas aplicações sobre como cumprir com a variável
http_proxyde ambiente ,https_proxy, eno_proxy. Curl e Python não suportam CIDR nono_proxy, mas Ruby sim.-
Crie um modelo com parâmetros de proxy HTTP. No modelo, forneça valores para
httpProxy,httpsProxyenoProxy. Se necessário, forneça um valor paratrustedCa. O mesmo esquema usado para a implantação daMicrosoft.ContainerService/managedClustersCLI existe na definição em"properties", conforme mostrado no exemplo a seguir:"properties": { ..., "httpProxyConfig": { "enabled": "true", "httpProxy": "string", "httpsProxy": "string", "noProxy": [ "string" ], "trustedCa": "string" } }Implante seu modelo ARM com a configuração de proxy HTTP. O seu cluster deve ser inicializado com o seu proxy HTTP configurado nos nós.
Atualizar uma configuração de proxy HTTP
Você pode atualizar as configurações de proxy HTTP em 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 atualização de proxy HTTP
O --http-proxy-config parâmetro deve ser definido como um novo arquivo JSON com valores atualizados para httpProxy, httpsProxy, noProxye trustedCa se necessário. A atualização injeta variáveis de ambiente nos pods com os novos valores httpProxy, httpsProxy ou noProxy. Os pods devem ser girados para que os aplicativos o recebam, porque os valores das variáveis de ambiente são injetados por um webhook de admissão mutante.
Nota
Se mudar para um novo proxy, o novo proxy já deve 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 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 a implantação da
Microsoft.ContainerService/managedClustersCLI existe na definição em"properties", conforme mostrado no exemplo a seguir:"properties": { ..., "httpProxyConfig": { "enabled": "true", "httpProxy": "string", "httpsProxy": "string", "noProxy": [ "string" ], "trustedCa": "string" } }Implante seu modelo ARM com a configuração de proxy HTTP atualizada.
Atenção
AKS reconfigura automaticamente todos os pools de nós no cluster quando se atualiza a configuração de proxy no cluster usando o comando az aks update. Você pode usar Pod Disruption Budgets (PDBs) para proteger contra a interrupção de pods críticos durante a reimagem.
Verifique se a configuração do proxy HTTP está nos pods e nos nós, verificando se as variáveis de ambiente contêm os valores apropriados para
http_proxy,https_proxyeno_proxy, usando o comandokubectl describe pod.kubectl describe {any pod} -n kube-systemPara validar que as variáveis proxy são definidas em pods, você pode verificar as variáveis de ambiente presentes nos nós.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Desabilitar proxy HTTP em um cluster existente usando um modelo ARM (Visualização)
Instalar aks-preview extensão
Instale a
aks-previewextensão da CLI do Azure usando oaz extension addcomando.Importante
Os recursos de pré-visualização do AKS estão disponíveis numa base de autosserviço e adesão voluntária. As visualizações prévias são fornecidas "como estão" e "conforme disponíveis" e são excluídas dos contratos de nível de serviço e da garantia limitada. As versões de teste do AKS são parcialmente cobertas pelo suporte ao cliente numa base de melhor esforço. Assim sendo, estas funcionalidades não se destinam ao uso em produção. Para obter mais informações, consulte os seguintes artigos de suporte:
az extension add --name aks-previewAtualize para a versão mais recente da extensão usando o
az extension updatecomando. Desativar Proxy HTTP requer um mínimo de 18.0.0b13.az extension update --name aks-preview
Registrar sinalizador de funcionalidade DisableHTTPProxyPreview
Registe o sinalizador de funcionalidade
DisableHTTPProxyPreviewcom o comandoaz feature register.az feature register --namespace Microsoft.ContainerService --name DisableHTTPProxyPreviewVerifique o status do registro usando o
az feature showcomando. Leva alguns minutos para que o status mostre Registrado.az feature show --namespace Microsoft.ContainerService --name DisableHTTPProxyPreviewQuando o status refletir Registrado, atualize o registro do provedor de recursos Microsoft.ContainerService usando o comando
az provider register.az provider register --namespace Microsoft.ContainerService
Atualizar cluster para desativar proxy HTTP
Atualize seu modelo ARM de cluster para desabilitar o proxy HTTP definindo
enabledcomofalse. O mesmo esquema usado para a implantação daMicrosoft.ContainerService/managedClustersCLI existe na definição em"properties", conforme mostrado no exemplo a seguir:"properties": { ..., "httpProxyConfig": { "enabled": "false", } }Implante seu modelo ARM com o Proxy HTTP desativado.
Atenção
AKS reconfigura automaticamente todos os pools de nós no cluster quando se atualiza a configuração de proxy no cluster usando o comando az aks update. Você pode usar Pod Disruption Budgets (PDBs) para proteger contra a interrupção de pods críticos durante a reimagem.
Verifique se o proxy HTTP está desativado 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 que as variáveis de proxy não estão definidas nos pods, pode-se verificar as variáveis de ambiente presentes nos nós.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Reativar 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 reativar o proxy HTTP, siga as etapas para Atualizar uma configuração de proxy HTTP usando um modelo ARM.
Istio add-on HTTP proxy para serviços externos
Se você estiver usando o complemento de malha de serviço baseado em Istio para AKS, deverá criar uma Entrada de Serviço para permitir que seus aplicativos na malha acessem recursos não relacionados ao 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
Monitorando a configuração do complemento
O proxy HTTP com o complemento de monitoramento suporta as seguintes configurações:
- Proxy de saída sem autenticação
- Proxy de saída com certificado confiável para endpoint do Log Analytics
A seguinte configuração não é suportada:
- Recursos de métricas personalizadas e alertas recomendados ao usar um proxy com certificados confiáveis
Próximos passos
Para obter mais informações sobre os requisitos de rede dos clusters AKS, consulte Controlar o tráfego de saída para nós de cluster no AKS.