HTTP-proxyondersteuning 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. Knooppunten hadden geen manier om de configuratie, omgevingsvariabelen en certificaten op te starten die nodig zijn voor toegang tot internetservices.

De functie HTTP-proxy voegt HTTP-proxyondersteuning toe aan AKS-clusters, waardoor een eenvoudige interface beschikbaar is die u kunt gebruiken om AKS-vereist netwerkverkeer in proxyafhankelijke omgevingen te beveiligen. Met deze functie worden zowel AKS-knooppunten als pods geconfigureerd voor het gebruik van de HTTP-proxy. 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
  • Gebruikers-/wachtwoordverificatie
  • Aangepaste certificeringsinstanties (CA's) voor communicatie tussen API-servers
  • Windows-clusters
  • Knooppuntgroepen met beschikbaarheidssets voor virtuele machines (VMAS)
  • * 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 u begint

  • U hebt de nieuwste versie van de Azure CLI nodig. Voer az --version deze uit om de versie te vinden en voer deze uit az upgrade om de versie te upgraden. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.
  • Controleer op beschikbare AKS-clusterupgrades om ervoor te zorgen dat u de nieuwste versie van AKS uitvoert. Zie Een AKS-cluster upgraden als u een upgrade wilt uitvoeren.
  • De besturingssysteembestanden die vereist zijn voor proxyconfiguratie-updates kunnen alleen worden bijgewerkt tijdens het upgradeproces van de knooppuntinstallatiekopieën. Nadat u de proxy hebt geconfigureerd, moet u de knooppuntinstallatiekopieën upgraden om de wijzigingen toe te passen. Zie AKS-knooppuntinstallatiekopieën upgraden voor meer informatie.

Een HTTP-proxy configureren met behulp van de Azure CLI

U kunt een AKS-cluster configureren met een HTTP-proxy tijdens het maken van het cluster met behulp van de az aks create opdracht en de configuratie doorgeven als een JSON-bestand.

Het schema voor het configuratiebestand ziet er als volgt uit:

{
  "httpProxy": "string",
  "httpsProxy": "string",
  "noProxy": [
    "string"
  ],
  "trustedCa": "string"
}
  • httpProxy: Een proxy-URL die moet worden gebruikt voor het maken van HTTP-verbindingen buiten het cluster. Het URL-schema moet zijn http.
  • httpsProxy: Een proxy-URL die moet worden gebruikt voor het maken van HTTPS-verbindingen buiten het cluster. Als dit niet is opgegeven, wordt deze 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 tekenreeks die de inhoud van het base64 encoded alternatieve CA-certificaat bevat. Momenteel wordt alleen de PEM indeling ondersteund.

Belangrijk

Voor compatibiliteit met op Go gebaseerde onderdelen die deel uitmaken van het Kubernetes-systeem, moet het certificaat ondersteuning bieden Subject Alternative Names(SANs) in plaats van de afgeschafte algemene naamcertificaten.

Er zijn verschillen in toepassingen over het voldoen aan de omgevingsvariabele http_proxy, https_proxyen no_proxy. Curl en Python bieden geen ondersteuning voor CIDR in no_proxy, maar Ruby wel.

Voorbeeldinvoer:

Notitie

Het CA-certificaat moet de base64-gecodeerde tekenreeks van de certificaatinhoud van de PEM-indeling zijn.

{
  "httpProxy": "http://myproxy.server.com:8080/", 
  "httpsProxy": "https://myproxy.server.com:8080/", 
  "noProxy": [
    "localhost",
    "127.0.0.1"
  ],
  "trustedCA": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUgvVENDQmVXZ0F3SUJB...b3Rpbk15RGszaWFyCkYxMFlscWNPbWVYMXVGbUtiZGkvWG9yR2xrQ29NRjNURHg4cm1wOURCaUIvCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0="
}

Maak een bestand en geef waarden op voor httpProxy, httpsProxyen noProxy. Als uw omgeving dit vereist, geeft u een waarde op voor trustedCa. Vervolgens kunt u het cluster implementeren met behulp van de az aks create opdracht met de --http-proxy-config parameter die is ingesteld op het bestand dat u hebt gemaakt. Uw cluster moet worden geïnitialiseerd met de HTTP-proxy die is geconfigureerd op de knooppunten.

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

Een HTTP-proxy configureren met behulp van een ARM-sjabloon (Azure Resource Manager)

U kunt een AKS-cluster implementeren met een HTTP-proxy met behulp van een ARM-sjabloon. Hetzelfde schema dat wordt gebruikt voor CLI-implementatie, bestaat in de Microsoft.ContainerService/managedClusters definitie onder "properties", zoals wordt weergegeven in het volgende voorbeeld:

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

Geef in uw sjabloon waarden op voor httpProxy, httpsProxyen noProxy. Geef indien nodig een waarde op voor trustedCa. Vervolgens kunt u de sjabloon implementeren. Uw cluster moet worden geïnitialiseerd met uw HTTP-proxy die is geconfigureerd op de knooppunten.

Proxyconfiguratie bijwerken

Notitie

Als u overschakelt naar een nieuwe proxy, moet de nieuwe proxy al bestaan om de update te laten slagen. Nadat de upgrade is voltooid, kunt u de oude proxy verwijderen.

U kunt de proxyconfiguratie op uw cluster bijwerken met behulp van de az aks update opdracht waarbij de --http-proxy-config parameter is 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, httpsProxyof noProxy waarden. Pods moeten worden geroteerd om de apps op te halen, omdat de omgevingsvariabelewaarden worden geïnjecteerd door een muterende toegangswebhook. Voor onderdelen onder Kubernetes, zoals container en het knooppunt zelf, wordt dit pas van kracht nadat een upgrade van de knooppuntinstallatiekopieën is uitgevoerd.

Stel dat u een nieuw bestand hebt gemaakt met de base64-gecodeerde tekenreeks van het nieuwe CA-certificaat met de naam aks-proxy-config-2.json. U kunt de proxyconfiguratie op uw cluster bijwerken met de volgende opdracht:

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 knooppuntinstallatiekopieën 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 niet kan worden uitgevoerd voor het uitvoeren van toepassingen.

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

Configuratie van invoegtoepassing bewaken

HTTP-proxy met de bewakingsinvoegtoepassing ondersteunt de volgende configuraties:

  • Uitgaande proxy zonder verificatie
  • Uitgaande proxy met gebruikersnaam en wachtwoordverificatie
  • Uitgaande proxy met vertrouwd certificaat voor Log Analytics-eindpunt

De volgende configuraties worden niet ondersteund:

  • Functies voor aangepaste metrische gegevens en aanbevolen waarschuwingen bij het gebruik van een proxy met vertrouwde certificaten

Volgende stappen

Zie Uitgaand verkeer voor clusterknooppunten in AKS beheren voor meer informatie over de netwerkvereisten van AKS-clusters.