HTTP-Proxyunterstützung in Azure Kubernetes Service
AKS-Cluster (Azure Kubernetes Service) verfügen unabhängig davon, ob sie in einem verwalteten oder benutzerdefinierten virtuellen Netzwerk bereitgestellt werden, über bestimmte ausgehende Abhängigkeiten, die für eine ordnungsgemäße Funktion erforderlich sind. In Umgebungen, in denen Internetzugriff über HTTP-Proxys erfolgen musste, war dies bisher ein Problem. Knoten hatten keine Möglichkeit, Bootstrapping für die Konfiguration, Umgebungsvariablen und Zertifikate auszuführen, die für den Zugriff auf Internetdienste erforderlich sind.
Dieses Feature fügt AKS-Clustern HTTP-Proxyunterstützung hinzu, wodurch eine einfache Schnittstelle verfügbar wird, die Clusteroperatoren verwenden können, um für AKS benötigten Netzwerkdatenverkehr in von Proxys abhängigen Umgebungen zu schützen.
Sowohl AKS-Knoten als auch Pods werden für die Verwendung des HTTP-Proxys konfiguriert.
Einige komplexere Lösungen erfordern möglicherweise die Erstellung einer Vertrauenskette, um sichere Kommunikation über das Netzwerk einzurichten. Das Feature ermöglicht auch die Installation einer vertrauenswürdigen Zertifizierungsstelle auf den Knoten als Teil des Bootstrappingvorgangs eines Clusters.
Einschränkungen und andere Details
Folgende Szenarios werden nicht unterstützt:
- Verschiedene Proxykonfigurationen pro Knotenpool
- Benutzer-/Kennwortauthentifizierung
- Benutzerdefinierte Zertifizierungsstellen für die API-Serverkommunikation
- Windows-basierte Cluster
- Knotenpools, die VM-Verfügbarkeitsgruppen (VMAS) verwenden
- Verwenden von * als an ein Domänensuffix angefügten Platzhalter für noProxy
HttpProxy, httpsProxy und trustedCa weisen standardmäßig keinen Wert auf.
Die Pods werden mit den folgenden Umgebungsvariablen eingefügt:
HTTP_PROXY
http_proxy
HTTPS_PROXY
https_proxy
NO_PROXY
no_proxy
So deaktivieren Sie die Einfügung der Proxyumgebungsvariablen, mit der der Pod kommentiert werden soll: "kubernetes.azure.com/no-http-proxy-vars":"true"
Voraussetzungen
Die aktuelle Version der Azure-Befehlszeilenschnittstelle Führen Sie az --version
aus, um die Version zu finden, und führen Sie az upgrade
aus, um ein Upgrade für die Version durchzuführen. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.
Konfigurieren eines HTTP-Proxys mit der Azure CLI
Die Verwendung von AKS mit einem HTTP-Proxy erfolgt bei der Erstellung des Clusters mit dem Befehl az aks create und der Übergabe der Konfiguration als JSON-Datei.
Das Schema für die Konfigurationsdatei sieht wie folgt aus:
{
"httpProxy": "string",
"httpsProxy": "string",
"noProxy": [
"string"
],
"trustedCa": "string"
}
httpProxy
: Eine Proxy-URL, die zum Erstellen von HTTP-Verbindungen außerhalb des Clusters verwendet wird. Das URL-Schema musshttp
sein.httpsProxy
: Eine Proxy-URL, die zum Erstellen von HTTPS-Verbindungen außerhalb des Clusters verwendet wird. Wenn dies nicht angegeben ist, wirdhttpProxy
sowohl für HTTP- als auch für HTTPS-Verbindungen verwendet.noProxy
: Eine Liste von Zieldomänennamen, Domänen, IP-Adressen oder anderen Netzwerk-CIDRs, um Proxying auszuschließen.trustedCa
: Eine Zeichenfolge, die denbase64 encoded
alternativen Inhalt des Zertifizierungsstellenzertifikats enthält. Derzeit wird nur das FormatPEM
unterstützt.
Wichtig
Aus Gründen der Kompatibilität mit Go-basierten Komponenten, die Teil des Kubernetes-Systems sind, muss das Zertifikat Subject Alternative Names(SANs)
anstelle der veralteten Zertifikate mit allgemeinem Namen unterstützen.
Die Anwendungen unterscheiden sich hinsichtlich der Einhaltung der Umgebungsvariablen http_proxy
, https_proxy
und no_proxy
. Curl und Python unterstützen CIDR in no_proxy
nicht, Ruby dagegen schon.
Beispieleingabe:
Hinweis
Das Zertifizierungsstellenzertifikat sollte die Base64-codierte Zeichenfolge des Zertifikatinhalts im PEM-Format sein.
{
"httpProxy": "http://myproxy.server.com:8080/",
"httpsProxy": "https://myproxy.server.com:8080/",
"noProxy": [
"localhost",
"127.0.0.1"
],
"trustedCA": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUgvVENDQmVXZ0F3SUJB...b3Rpbk15RGszaWFyCkYxMFlscWNPbWVYMXVGbUtiZGkvWG9yR2xrQ29NRjNURHg4cm1wOURCaUIvCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0="
}
Erstellen Sie eine Datei, und geben Sie Werte für httpProxy, httpsProxy und noProxy an. Wenn Ihre Umgebung dies erfordert, geben Sie einen Wert für trustedCa an. Stellen Sie als Nächstes einen Cluster bereit, und übergeben Sie Ihren Dateinamen über das http-proxy-config
-Flag.
az aks create -n $clusterName -g $resourceGroup --http-proxy-config aks-proxy-config.json
Ihr Cluster wird mit dem HTTP-Proxy initialisiert, der auf den Knoten konfiguriert ist.
Konfigurieren eines HTTP-Proxys mithilfe von ARM-Vorlagen (Azure Resource Manager)
Die Bereitstellung eines AKS-Clusters mit einem HTTP-Proxy, der mithilfe einer ARM-Vorlage konfiguriert wird, ist einfach. Das gleiche Schema, das für die CLI-Bereitstellung verwendet wird, ist in der Microsoft.ContainerService/managedClusters
-Definition unter den Eigenschaften vorhanden:
"properties": {
...,
"httpProxyConfig": {
"httpProxy": "string",
"httpsProxy": "string",
"noProxy": [
"string"
],
"trustedCa": "string"
}
}
Geben Sie in Ihrer Vorlage Werte für httpProxy, httpsProxy und noProxy an. Geben Sie bei Bedarf einen Wert für trustedCa an. Stellen Sie die Vorlage bereit, und Ihr Cluster sollte mit dem HTTP-Proxy initialisiert werden, der auf den Knoten konfiguriert ist.
Aktualisieren von Proxykonfigurationen
Hinweis
Wenn Sie zu einem neuen Proxy wechseln, muss dieser bereits vorhanden sein, damit das Upgrade erfolgreich ist. Nach Abschluss des Upgrades kann der alte Proxy gelöscht werden.
Die Werte für httpProxy, httpsProxy, trustedCa und NoProxy können geändert und mit dem Befehl az aks update auf den Cluster angewendet werden. Ein AKS-Update für httpProxy, httpsProxy und/oder NoProxy führt automatisch neue Umgebungsvariablen in Pods mit den neuen Werten für httpProxy, httpsProxy oder NoProxy ein. Pods müssen gedreht werden, damit die Apps sie aufnehmen können, da die Umgebungsvariablenwerte beim Erstellen durch einen Stummschaltungswebhook in den Pod eingefügt werden. Für Komponenten unter Kubernetes, z. B. in Containern und der Knoten selbst, wird dies erst wirksam, wenn ein Knotenimageupgrade ausgeführt wird.
Beispiel: Angenommen, es wurde eine neue Datei mit der base64-codierten Zeichenfolge des neuen ZS-Zertifikats mit dem Namen aks-proxy-config-2.json erstellt, dann aktualisiert die folgende Aktion den Cluster. Oder Sie müssen neue Endpunkt-URLs für Ihre Anwendungen zu „No Proxy“ hinzufügen:
az aks update -n $clusterName -g $resourceGroup --http-proxy-config aks-proxy-config-2.json
Konfiguration des Monitoring-Add-Ons
Der HTTP-Proxy mit dem Überwachungs-Add-On unterstützt die folgenden Konfigurationen:
- Proxy für ausgehenden Datenverkehr ohne Authentifizierung
- Ausgehender Proxy mit Benutzername und Kennwortauthentifizierung
- Proxy für ausgehenden Datenverkehr mit vertrauenswürdigen Zertifikaten für den Log Analytics-Endpunkt
Die folgenden Konfigurationen werden nicht unterstützt:
- Die Features „Benutzerdefinierte Metriken“ und „Empfohlene Warnungen“ werden nicht unterstützt, wenn Sie einen Proxy mit vertrauenswürdigen Zertifikaten verwenden.
Nächste Schritte
Weitere Informationen zu den Netzwerkanforderungen von AKS-Clustern finden Sie unter Steuern des ausgehenden Datenverkehrs für Clusterknoten in AKS.