Suporte a proxy HTTP no Serviço Kubernetes do Azure (AKS)
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 a clusters AKS, expondo uma interface simples que você pode usar para proteger o tráfego de rede necessário pelo 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
- Não há suporte para a configuração de clusters AKS existentes com um proxy HTTP; o recurso de proxy HTTP deve ser habilitado no momento da criação do cluster.
- Clusters baseados no Windows
- Pools de nós usando conjuntos de disponibilidade de máquina virtual (VMAS)
- Usando * como curinga anexado a um sufixo de domínio para noProxy
httpProxy
, httpsProxy
e trustedCa
não têm valor por padrão. Os pods são injetados com as seguintes variáveis de ambiente:
HTTP_PROXY
http_proxy
HTTPS_PROXY
https_proxy
NO_PROXY
no_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
- Você precisa da versão mais recente da CLI do Azure. Execute
az --version
para localizar a versão e executeaz upgrade
para atualizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI). - Verifique se há atualizações de cluster AKS disponíveis para garantir que você esteja executando a versão mais recente do AKS. Se precisar de atualizar, consulte Atualizar um cluster AKS.
- Os arquivos do sistema operacional necessários para atualizações de configuração de proxy só podem ser atualizados durante o processo de atualização da imagem do nó. Depois de configurar o proxy, você deve atualizar a imagem do nó para aplicar as alterações. Para obter mais informações, consulte Atualizar imagens do nó AKS.
Configurar um proxy HTTP usando a CLI do Azure
Você pode configurar um cluster AKS com um proxy HTTP durante a criação do cluster usando o comando e passando a az aks create
configuração como um arquivo JSON.
O esquema para o arquivo de configuração tem esta aparência:
{
"httpProxy": "string",
"httpsProxy": "string",
"noProxy": [
"string"
],
"trustedCa": "string"
}
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áhttpProxy
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 proxy.trustedCa
: Uma cadeia de caracteres que contém o conteúdo do certificado debase64 encoded
autoridade de certificação alternativo. Atualmente, apenas oPEM
formato é 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_proxy
de ambiente , https_proxy
, e no_proxy
. Curl e Python não suportam CIDR no no_proxy
, mas Ruby sim.
Exemplo de entrada:
Nota
O certificado da autoridade de certificação deve ser a cadeia de caracteres codificada em base64 do conteúdo do certificado do formato PEM.
{
"httpProxy": "http://myproxy.server.com:8080/",
"httpsProxy": "https://myproxy.server.com:8080/",
"noProxy": [
"localhost",
"127.0.0.1"
],
"trustedCA": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUgvVENDQmVXZ0F3SUJB...b3Rpbk15RGszaWFyCkYxMFlscWNPbWVYMXVGbUtiZGkvWG9yR2xrQ29NRjNURHg4cm1wOURCaUIvCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0="
}
Crie um arquivo e forneça valores para httpProxy
, httpsProxy
e noProxy
. Se o seu ambiente exigir, forneça um valor para trustedCa
o . Em seguida, você pode implantar o cluster usando o az aks create
comando com o --http-proxy-config
parâmetro definido para o arquivo criado. O cluster deve ser inicializado com o proxy HTTP configurado nos nós.
az aks create \
--name $clusterName \
--resource-group $resourceGroup \
--http-proxy-config aks-proxy-config.json \
--generate-ssh-keys
Configurar um proxy HTTP usando um modelo do Azure Resource Manager (ARM)
Você pode implantar um cluster AKS com um proxy HTTP usando um modelo ARM. O mesmo esquema usado para a implantação da Microsoft.ContainerService/managedClusters
CLI existe na definição em "properties"
, conforme mostrado no exemplo a seguir:
"properties": {
...,
"httpProxyConfig": {
"httpProxy": "string",
"httpsProxy": "string",
"noProxy": [
"string"
],
"trustedCa": "string"
}
}
No modelo, forneça valores para httpProxy
, httpsProxy
e noProxy
. Se necessário, forneça um valor para trustedCa
. Em seguida, você pode implantar o modelo. O cluster deve ser inicializado com o proxy HTTP configurado nos nós.
Atualizar configuração de proxy
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.
Você pode atualizar a configuração de proxy em seu cluster usando o az aks update
comando com o --http-proxy-config
parâmetro definido para um novo arquivo JSON com valores atualizados para httpProxy
, httpsProxy
, noProxy
e trustedCa
se necessário. A atualização injeta novas variáveis de ambiente em pods com os novos httpProxy
valores , 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. Para componentes no Kubernetes, como containerd e o próprio nó, isso não terá efeito até que uma atualização de imagem de nó seja executada.
Por exemplo, digamos que você criou um novo arquivo com a cadeia de caracteres codificada base64 do novo certificado de autoridade de certificação 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
Atualizar imagens de nó AKS
Depois de configurar o proxy, você deve atualizar a imagem do nó para aplicar as alterações. O processo de atualização da imagem do nó é a única maneira de atualizar os arquivos do sistema operacional necessários para atualizações de configuração de proxy. O processo de atualização da imagem do nó é uma atualização contínua que atualiza a imagem do sistema operacional em cada nó do pool de nós. O plano de controle AKS lida com o processo de atualização, que não causa interrupções na execução de aplicativos.
Para atualizar imagens de nó AKS, consulte Atualizar imagens de nó do Serviço Kubernetes do Azure (AKS).
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 autenticação de nome de usuário e senha
- Proxy de saída com certificado confiável para ponto de extremidade do Log Analytics
As seguintes configurações não são suportadas:
- 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.
Azure Kubernetes Service
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários