Delen via


Ondersteuning voor HTTP-proxy in Azure Kubernetes Service (AKS)

In dit artikel leert u hoe u AKS-clusters (Azure Kubernetes Service) configureert voor het gebruik van een HTTP-proxy voor uitgaande internettoegang.

AKS-clusters die zijn geïmplementeerd in beheerde of aangepaste virtuele netwerken, hebben bepaalde uitgaande afhankelijkheden die nodig zijn om goed te functioneren, waardoor problemen zijn ontstaan in omgevingen waarvoor internettoegang moet worden gerouteerd via HTTP-proxy's. Nodes hadden geen manier om de configuratie, omgevingsvariabelen en certificaten op te starten die nodig zijn om toegang te krijgen tot internetdiensten.

De HTTP-proxyfunctie voegt ondersteuning voor HTTP-proxy toe aan AKS-clusters en onthult een eenvoudige interface die je kunt gebruiken om het door AKS vereiste netwerkverkeer in proxy-afhankelijke omgevingen te beveiligen. Met deze functie worden zowel AKS-nodes als pods geconfigureerd om de HTTP-proxy te gebruiken. Met deze functie kunt u ook een vertrouwde certificeringsinstantie installeren op de knooppunten als onderdeel van het opstarten van een cluster. Complexere oplossingen vereisen mogelijk een vertrouwensketen om beveiligde communicatie in het netwerk tot stand te brengen.

Beperkingen en overwegingen

De volgende scenario's worden niet ondersteund:

  • Verschillende proxyconfiguraties per knooppuntgroep
  • Gebruiker/Wachtwoordverificatie
  • Aangepaste certificaatautoriteiten (CA's) voor API-servercommunicatie
  • AKS-clusters met Windows-knooppuntgroepen
  • Node pools die Virtual Machine Availability Sets (VMAS) gebruiken
  • * gebruiken als jokerteken dat is gekoppeld aan een domeinachtervoegsel voor noProxy

httpProxy, httpsProxyen trustedCa standaard geen waarde hebben. Pods worden geïnjecteerd met de volgende omgevingsvariabelen:

  • HTTP_PROXY
  • http_proxy
  • HTTPS_PROXY
  • https_proxy
  • NO_PROXY
  • no_proxy

Als u de injectie van de proxyomgevingsvariabelen wilt uitschakelen, moet u aantekeningen toevoegen aan de Pod met "kubernetes.azure.com/no-http-proxy-vars":"true".

Voordat je begint

U kunt een AKS-cluster configureren met een HTTP-proxy tijdens de creatie van het cluster door de az aks create-opdracht te gebruiken en de configuratie door te geven als een JSON-bestand.

  1. Maak een bestand aan en geef waarden op voor httpProxy, httpsProxy, en noProxy. Als uw omgeving dat vereist, geef dan een waarde op voor trustedCa.

Het schema voor het configuratiebestand ziet er als volgt uit:

{
  "httpProxy": "string",
  "httpsProxy": "string",
  "noProxy": [
    "string"
  ],
  "trustedCa": "string"
}

Controleer de vereisten voor elke parameter:

  • httpProxy: Een proxy-URL om te gebruiken voor het maken van HTTP-verbindingen buiten de cluster. Het URL-schema moet zijn http.
  • httpsProxy: Een proxy-URL om te gebruiken voor het maken van HTTPS-verbindingen buiten de cluster. Als niet anders aangegeven, dan wordt httpProxy gebruikt voor zowel HTTP- als HTTPS-verbindingen.
  • noProxy: Een lijst met doeldomeinnamen, domeinen, IP-adressen of andere netwerk-CIDR's om proxying uit te sluiten.
  • trustedCa: Een string die de base64 encoded alternatieve CA-certificaatinhoud bevat. Momenteel wordt alleen het PEM formaat ondersteund.

Belangrijk

Voor compatibiliteit met Go-gebaseerde componenten die deel uitmaken van het Kubernetes-systeem, moet het certificaat ondersteuning bieden aanSubject Alternative Names(SANs) in plaats van de verouderde Common Name-certificaten.

Er zijn verschillen in applicaties met betrekking tot hoe ze voldoen aan de omgevingsvariabelen http_proxy, https_proxy, en no_proxy. Curl en Python ondersteunen CIDR niet in no_proxy, maar Ruby wel.

Voorbeeldinvoer:

{
  "httpProxy": "http://myproxy.server.com:8080/", 
  "httpsProxy": "https://myproxy.server.com:8080/", 
  "noProxy": [
    "localhost",
    "127.0.0.1"
  ],
  "trustedCA": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUgvVENDQmVXZ0F3SUJB...b3Rpbk15RGszaWFyCkYxMFlscWNPbWVYMXVGbUtiZGkvWG9yR2xrQ29NRjNURHg4cm1wOURCaUIvCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0="
}
  1. Maak een cluster met behulp van de az aks create opdracht met de --http-proxy-config parameter die is ingesteld op het bestand dat u hebt gemaakt.
az aks create \
    --name $clusterName \
    --resource-group $resourceGroup \
    --http-proxy-config aks-proxy-config.json \
    --generate-ssh-keys

Je cluster moet initialiseren met de HTTP-proxy geconfigureerd op de nodes.

Cluster bijwerken om http-proxyconfiguratie in te schakelen of bij te werken

Opmerking

Als u overschakelt naar een nieuwe proxy, moet deze nieuwe proxy al bestaan om de update succesvol te laten zijn. Nadat de upgrade is voltooid, kun je de oude proxy verwijderen.

De HTTP-proxyconfiguratie kan worden ingeschakeld of bijgewerkt op een bestaand cluster met behulp van de az aks update opdracht. De --http-proxy-config parameter moet worden ingesteld op een nieuw JSON-bestand met bijgewerkte waarden voorhttpProxy, httpsProxynoProxyen trustedCa indien nodig. De update injecteert nieuwe omgevingsvariabelen in pods met de nieuwe httpProxy, httpsProxy of noProxy waarden. Pods moeten worden geroteerd zodat de apps de wijzigingen oppikken, omdat de omgevingsvariabelewaarden door een muterende toegangswebhook worden geïnjecteerd. Voor componenten binnen Kubernetes, zoals containerd en het knooppunt zelf, wordt dit pas van kracht wanneer een upgrade van de knooppunt-afbeelding is uitgevoerd.

Bijvoorbeeld, stel dat je een nieuw bestand hebt gemaakt met de base64-gecodeerde string van het nieuwe CA-certificaat met de naam aks-proxy-config-2.json. Je kunt de proxyconfiguratie op je cluster bijwerken met het volgende commando:

az aks update --name $clusterName --resource-group $resourceGroup --http-proxy-config aks-proxy-config-2.json

AKS-knooppuntinstallatiekopieën upgraden

Nadat u de proxy hebt geconfigureerd, moet u de node-image upgraden om de wijzigingen toe te passen. Het upgradeproces voor knooppuntinstallatiekopieën is de enige manier om de besturingssysteembestanden bij te werken die nodig zijn voor proxyconfiguratie-updates. Het upgradeproces voor knooppuntinstallatiekopieën is een rolling upgrade waarmee de installatiekopieën van het besturingssysteem op elk knooppunt in de knooppuntgroep worden bijgewerkt. Het AKS-besturingsvlak verwerkt het upgradeproces, dat geen verstoring veroorzaakt voor lopende toepassingen.

Zie AKS-knooppuntinstallatiekopieën upgraden om AKS-knooppuntinstallatiekopieën (Azure Kubernetes Service) bij te werken.

Bewaking van de add-on configuratie

HTTP-proxy met de monitoring-add-on ondersteunt de volgende configuraties:

  • Uitgaande proxy zonder authenticatie
  • Uitgaande proxy met gebruikersnaam en wachtwoord authenticatie
  • Uitgaande proxy met vertrouwde certificaat voor Log Analytics-eindpunt

De volgende configuraties worden niet ondersteund:

  • Maatwerkmetriek en Aanbevolen Waarschuwingen functies bij het gebruik van een proxy met vertrouwde certificaten

Volgende stappen

Voor meer informatie over de netwerkeisen van AKS-clusters, zie Egressverkeer beheren voor clusternodes in AKS.