Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Z tego artykułu dowiesz się, jak skonfigurować klastry usługi Azure Kubernetes Service (AKS) do korzystania z serwera proxy HTTP na potrzeby wychodzącego dostępu do Internetu.
Klastry AKS wdrożone w zarządzanych lub niestandardowych sieciach wirtualnych mają pewne zależności wychodzące, które są niezbędne do prawidłowego działania, co spowodowało problemy w środowiskach wymagających dostępu do Internetu do kierowania za pośrednictwem serwerów proxy HTTP. Węzły nie miały możliwości inicjowania konfiguracji, zmiennych środowiskowych i certyfikatów niezbędnych do uzyskania dostępu do usług internetowych.
Funkcja serwera proxy HTTP dodaje obsługę serwera proxy HTTP do klastrów usługi AKS, uwidaczniając prosty interfejs, którego można użyć do zabezpieczenia ruchu sieciowego wymaganego przez usługę AKS w środowiskach zależnych od serwera proxy. W przypadku tej funkcji zarówno węzły usługi AKS, jak i zasobniki są skonfigurowane do korzystania z serwera proxy HTTP. Ta funkcja umożliwia również instalację zaufanego urzędu certyfikacji na węzłach w ramach uruchamiania klastra. Bardziej złożone rozwiązania mogą wymagać utworzenia łańcucha zaufania w celu ustanowienia bezpiecznej komunikacji w sieci.
Ograniczenia i istotne zagadnienia
Następujące scenariusze nie są obsługiwane:
- Różne konfiguracje serwera proxy dla każdej puli węzłów
- Uwierzytelnianie użytkownika/hasła
- Niestandardowe urzędy certyfikacji (CA) na potrzeby komunikacji z serwerem interfejsu API
- Klastry AKS z pulami węzłów systemu Windows
- Pule węzłów korzystające z zestawów dostępności maszyn wirtualnych (VMAS)
- Używanie symbolu * jako symbolu wieloznacznego przyłączonego do sufiksu domeny dla noProxy.
httpProxy, httpsProxyi trustedCa nie mają wartości domyślnie. Do zasobników wstrzykiwane są następujące zmienne środowiskowe:
HTTP_PROXYhttp_proxyHTTPS_PROXYhttps_proxyNO_PROXYno_proxy
Aby wyłączyć iniekcję zmiennych środowiskowych serwera proxy, należy dodać adnotację do Pod za pomocą "kubernetes.azure.com/no-http-proxy-vars":"true".
Zanim rozpoczniesz
Użyj środowiska Bash w Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Get started with Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj Azure CLI. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie Azure CLI w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić Azure CLI w kontenerze Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do Azure CLI za pomocą polecenia az login. Aby zakończyć proces uwierzytelniania, wykonaj kroki wyświetlane na Twoim terminalu. Aby uzyskać inne opcje logowania, zobacz Uwierzytelnianie na platformie Azure przy użyciu interfejsu wiersza polecenia platformy Azure.
Gdy zostaniesz o to poproszony/a, zainstaluj rozszerzenie Azure CLI przy pierwszym użyciu. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Używanie rozszerzeń i zarządzanie nimi za pomocą interfejsu wiersza polecenia platformy Azure.
Uruchom az version, aby sprawdzić zainstalowaną wersję i biblioteki zależne. Aby zaktualizować do najnowszej wersji, uruchom az upgrade.
Tworzenie pliku konfiguracji z wartościami serwera proxy HTTP
Utwórz plik i podaj wartości dla httpProxy, httpsProxyi noProxy. Jeśli środowisko tego wymaga, podaj wartość dla trustedCa.
Schemat pliku konfiguracji wygląda następująco:
{
"httpProxy": "string",
"httpsProxy": "string",
"noProxy": [
"string"
],
"trustedCa": "string"
}
Przejrzyj wymagania dotyczące każdego parametru:
-
httpProxy: adres URL serwera proxy używany do tworzenia połączeń HTTP poza klastrem. Schemat adresu URL musi mieć wartośćhttp. -
httpsProxy: adres URL serwera proxy używany do tworzenia połączeń HTTPS poza klastrem. Jeśli nie zostanie określony,httpProxyjest używany zarówno dla połączeń HTTP, jak i HTTPS. -
noProxy: lista docelowych nazw domen, domen, adresów IP lub innych reguł CIDR sieci do wykluczenia serwera proxy. -
trustedCa: ciąg zawierający treść alternatywnego certyfikatu CAbase64 encoded. Obecnie obsługiwany jest tylkoPEMformat.
Ważne
W celu zgodności ze składnikami opartymi na języku Go, które są częścią systemu Kubernetes, certyfikat musi obsługiwać format Subject Alternative Names(SANs) zamiast przestarzałych certyfikatów Common Name.
Istnieją różnice w aplikacjach w zakresie zgodności ze zmienną środowiskową http_proxy, https_proxyi no_proxy. Narzędzia Curl i Python nie obsługują CIDR w no_proxy, ale Ruby tak.
Przykładowe dane wejściowe:
{
"httpProxy": "http://myproxy.server.com:8080",
"httpsProxy": "https://myproxy.server.com:8080",
"noProxy": [
"localhost",
"127.0.0.1"
],
"trustedCA": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUgvVENDQmVXZ0F3SUJB...S0tLS0="
}
Tworzenie klastra z konfiguracją serwera proxy HTTP przy użyciu interfejsu wiersza polecenia platformy Azure
Klaster usługi AKS można skonfigurować przy użyciu konfiguracji serwera proxy HTTP podczas tworzenia klastra.
az aks createUżyj polecenia i przekaż konfigurację jako plik JSON.az aks create \ --name $clusterName \ --resource-group $resourceGroup \ --http-proxy-config aks-proxy-config.json \ --generate-ssh-keysKlaster powinien zostać zainicjowany przy użyciu serwera proxy HTTP skonfigurowanego w węzłach.
Sprawdź, czy konfiguracja serwera proxy HTTP na zasobnikach i węzłach jest poprawna, weryfikując, czy zmienne środowiskowe zawierają odpowiednie wartości dla
http_proxy,https_proxy, ino_proxyprzy użyciu poleceniakubectl describe pod.kubectl describe {any pod} -n kube-systemAby zweryfikować, czy zmienne proxy są ustawione w zasobnikach, możesz sprawdzić zmienne środowiskowe obecne na węzłach.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Aktualizowanie konfiguracji serwera proxy HTTP
Konfiguracje serwera proxy HTTP można zaktualizować w istniejących klastrach, w tym:
- Aktualizowanie istniejącego klastra w celu włączenia serwera proxy HTTP i dodania nowej konfiguracji serwera proxy HTTP.
- Aktualizowanie istniejącego klastra w celu zmiany konfiguracji serwera proxy HTTP.
Zagadnienia dotyczące aktualizacji serwera proxy HTTP
Parametr --http-proxy-config powinien być ustawiony na nowy plik JSON ze zaktualizowanymi wartościami dla httpProxy, httpsProxy, noProxy i trustedCa w razie potrzeby. Aktualizacja wprowadza nowe zmienne środowiskowe do zasobników z nowymi wartościami httpProxy, httpsProxy lub noProxy. Zasobniki muszą być obracane, aby aplikacje je pobierały, ponieważ wartości zmiennych środowiskowych są wstrzykiwane przez zmutowany element webhook wstępu.
Uwaga
W przypadku przełączenia na nowy serwer proxy nowy serwer proxy musi już istnieć, aby aktualizacja zakończyła się pomyślnie. Po zakończeniu uaktualniania można usunąć stary serwer proxy.
Aktualizowanie klastra w celu zaktualizowania lub włączenia serwera proxy HTTP
Włącz lub zaktualizuj konfiguracje serwera proxy HTTP w istniejącym klastrze przy użyciu
az aks updatepolecenia .Załóżmy na przykład, że utworzono nowy plik z zakodowanym ciągiem base64 nowego certyfikatu urzędu certyfikacji o nazwie aks-proxy-config-2.json. Konfigurację serwera proxy w klastrze można zaktualizować za pomocą następującego polecenia:
az aks update --name $clusterName --resource-group $resourceGroup --http-proxy-config aks-proxy-config-2.json
Ostrzeżenie
Usługa AKS automatycznie odtwarza wszystkie pule węzłów w klastrze podczas aktualizowania konfiguracji serwera proxy w klastrze przy użyciu az aks update polecenia . Można użyć budżetów zakłóceń zasobników (PDB), aby chronić krytyczne zasobniki przed zakłóceniami podczas ponownego obrazowania.
Sprawdź, czy konfiguracja serwera proxy HTTP na zasobnikach i węzłach jest poprawna, weryfikując, czy zmienne środowiskowe zawierają odpowiednie wartości dla
http_proxy,https_proxy, ino_proxyprzy użyciu poleceniakubectl describe pod.kubectl describe {any pod} -n kube-systemAby zweryfikować, czy zmienne proxy są ustawione w zasobnikach, możesz sprawdzić zmienne środowiskowe obecne na węzłach.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Wyłączanie serwera proxy HTTP w istniejącym klastrze (wersja zapoznawcza)
Instalowanie aks-preview rozszerzenia
Zainstaluj rozszerzenie CLI platformy Azure przy użyciu polecenia
aks-preview.Ważne
Funkcje usługi AKS w wersji zapoznawczej są dostępne na zasadzie samoobsługi i wymagają zapisania się. Wersje zapoznawcze są udostępniane w wersji "as is" i "jako dostępne" i są wykluczone z umów dotyczących poziomu usług i ograniczonej gwarancji. Wersje zapoznawcze usługi AKS są częściowo objęte pomocą techniczną dla klientów, świadczoną w miarę możliwości. W związku z tym te funkcje nie są przeznaczone do użytku produkcyjnego. Aby uzyskać więcej informacji, zobacz następujące artykuły pomocy technicznej:
az extension add --name aks-previewPrzeprowadź aktualizację do najnowszej wersji rozszerzenia przy użyciu
az extension updatepolecenia . Wyłączenie serwera proxy HTTP wymaga co najmniej 18.0.0b13.az extension update --name aks-preview
Zarejestruj flagę funkcji DisableHTTPProxyPreview
Zarejestruj flagę funkcji
DisableHTTPProxyPreviewza pomocą poleceniaaz feature register.az feature register --namespace Microsoft.ContainerService --name DisableHTTPProxyPreviewSprawdź stan rejestracji przy użyciu
az feature showpolecenia . Wyświetlenie stanu Zarejestrowane trwa kilka minut.az feature show --namespace Microsoft.ContainerService --name DisableHTTPProxyPreviewKiedy status pokazuje Zarejestrowano, odśwież rejestrację dostawcy zasobów Microsoft.ContainerService, używając polecenia
az provider register.az provider register --namespace Microsoft.ContainerService
Aktualizowanie klastra w celu wyłączenia serwera proxy HTTP (wersja zapoznawcza)
Aby zaktualizować klaster i wyłączyć serwer proxy HTTP, użyj polecenia
az aks updatez flagą--disable-http-proxy.az aks update --name $clusterName --resource-group $resourceGroup --disable-http-proxy
Ostrzeżenie
Usługa AKS automatycznie odtwarza wszystkie pule węzłów w klastrze podczas aktualizowania konfiguracji serwera proxy w klastrze przy użyciu az aks update polecenia . Można użyć budżetów zakłóceń zasobników (PDB), aby chronić krytyczne zasobniki przed zakłóceniami podczas ponownego obrazowania.
Zweryfikuj, czy serwer proxy HTTP jest wyłączony, sprawdzając, czy konfiguracja serwera proxy HTTP nie jest ustawiona na zasobnikach i węzłach za pomocą polecenia
kubectl describe pod.kubectl describe {any pod} -n kube-systemAby sprawdzić, czy zmienne serwera proxy nie są ustawione w podach, możesz zweryfikować zmienne środowiskowe obecne na węzłach.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Ponowne włączanie serwera proxy HTTP w istniejącym klastrze
Podczas tworzenia klastra serwer proxy HTTP jest domyślnie włączony. Po wyłączeniu serwera proxy HTTP w klastrze konfiguracja serwera proxy zostanie zapisana w bazie danych, ale zmienne serwera proxy zostaną usunięte z zasobników i węzłów.
Aby ponownie włączyć serwer proxy HTTP w istniejącym klastrze, użyj polecenia az aks update z flagą --enable-http-proxy.
az aks update --name $clusterName --resource-group $resourceGroup --enable-http-proxy
Ostrzeżenie
Usługa AKS automatycznie odtwarza wszystkie pule węzłów w klastrze podczas aktualizowania konfiguracji serwera proxy w klastrze przy użyciu az aks update polecenia . Można użyć budżetów zakłóceń zasobników (PDB), aby chronić krytyczne zasobniki przed zakłóceniami podczas ponownego obrazowania.
Ważne
Jeśli na klastrze była skonfigurowana konfiguracja serwera proxy HTTP przed jego wyłączeniem, to po ponownym włączeniu serwera proxy HTTP na tym klastrze, istniejąca konfiguracja jest automatycznie stosowana. Zalecamy zweryfikowanie konfiguracji, aby upewnić się, że spełnia ona bieżące wymagania przed kontynuowaniem. Jeśli chcesz zmienić konfigurację serwera proxy HTTP po ponownym włączeniu serwera proxy HTTP, wykonaj kroki aktualizacji konfiguracji serwera proxy HTTP w istniejącym klastrze.
Konfigurowanie konfiguracji serwera proxy HTTP przy użyciu szablonu usługi Azure Resource Manager (ARM)
Klaster AKS można wdrożyć za pomocą serwera proxy HTTP przy użyciu szablonu ARM.
Przejrzyj wymagania dotyczące każdego parametru:
-
httpProxy: adres URL serwera proxy używany do tworzenia połączeń HTTP poza klastrem. Schemat adresu URL musi mieć wartośćhttp. -
httpsProxy: adres URL serwera proxy używany do tworzenia połączeń HTTPS poza klastrem. Jeśli nie zostanie określony,httpProxyjest używany zarówno dla połączeń HTTP, jak i HTTPS. -
noProxy: lista docelowych nazw domen, domen, adresów IP lub innych reguł CIDR sieci do wykluczenia serwera proxy. -
trustedCa: ciąg zawierający treść alternatywnego certyfikatu CAbase64 encoded. Obecnie obsługiwany jest tylkoPEMformat.
Ważne
W celu zgodności ze składnikami opartymi na języku Go, które są częścią systemu Kubernetes, certyfikat musi obsługiwać format
Subject Alternative Names (SANs)zamiast przestarzałych certyfikatów Common Name.Istnieją różnice w aplikacjach w zakresie zgodności ze zmienną środowiskową
http_proxy,https_proxyino_proxy. Narzędzia Curl i Python nie obsługują CIDR wno_proxy, ale Ruby tak.-
Utwórz szablon z parametrami serwera proxy HTTP. W szablonie podaj wartości dla
httpProxy,httpsProxyinoProxy. W razie potrzeby podaj wartość dlatrustedCa. Ten sam schemat używany do wdrażania CLI istnieje w definicji w obszarzeMicrosoft.ContainerService/managedClusters, jak pokazano w poniższym przykładzie:"properties": { ..., "httpProxyConfig": { "enabled": "true", "httpProxy": "string", "httpsProxy": "string", "noProxy": [ "string" ], "trustedCa": "string" } }Wdróż szablon usługi ARM przy użyciu konfiguracji serwera proxy HTTP. Klaster powinien zostać zainicjowany przy użyciu serwera proxy HTTP skonfigurowanego na węzłach.
Aktualizowanie konfiguracji serwera proxy HTTP
Konfiguracje serwera proxy HTTP można zaktualizować w istniejących klastrach, w tym:
- Aktualizowanie istniejącego klastra w celu włączenia serwera proxy HTTP i dodania nowej konfiguracji serwera proxy HTTP.
- Aktualizowanie istniejącego klastra w celu zmiany konfiguracji serwera proxy HTTP.
Zagadnienia dotyczące aktualizacji serwera proxy HTTP
Parametr --http-proxy-config powinien być ustawiony na nowy plik JSON ze zaktualizowanymi wartościami dla httpProxy, httpsProxy, noProxy i trustedCa w razie potrzeby. Aktualizacja wprowadza nowe zmienne środowiskowe do zasobników z nowymi wartościami httpProxy, httpsProxy lub noProxy. Zasobniki muszą być obracane, aby aplikacje je pobierały, ponieważ wartości zmiennych środowiskowych są wstrzykiwane przez zmutowany element webhook wstępu.
Uwaga
W przypadku przełączenia na nowy serwer proxy nowy serwer proxy musi już istnieć, aby aktualizacja zakończyła się pomyślnie. Po zakończeniu uaktualniania można usunąć stary serwer proxy.
Zaktualizuj szablon ARM, aby skonfigurować serwer proxy HTTP
W szablonie podaj nowe wartości dla
httpProxy,httpsProxyinoProxy. W razie potrzeby podaj wartość dlatrustedCa.Ten sam schemat używany do wdrażania CLI istnieje w definicji w obszarze
Microsoft.ContainerService/managedClusters, jak pokazano w poniższym przykładzie:"properties": { ..., "httpProxyConfig": { "enabled": "true", "httpProxy": "string", "httpsProxy": "string", "noProxy": [ "string" ], "trustedCa": "string" } }Wdróż szablon usługi ARM przy użyciu zaktualizowanej konfiguracji serwera proxy HTTP.
Ostrzeżenie
Usługa AKS automatycznie odtwarza wszystkie pule węzłów w klastrze podczas aktualizowania konfiguracji serwera proxy w klastrze przy użyciu az aks update polecenia . Można użyć budżetów zakłóceń zasobników (PDB), aby chronić krytyczne zasobniki przed zakłóceniami podczas ponownego obrazowania.
Sprawdź, czy konfiguracja serwera proxy HTTP na zasobnikach i węzłach jest poprawna, weryfikując, czy zmienne środowiskowe zawierają odpowiednie wartości dla
http_proxy,https_proxy, ino_proxyprzy użyciu poleceniakubectl describe pod.kubectl describe {any pod} -n kube-systemAby zweryfikować, czy zmienne proxy są ustawione w zasobnikach, możesz sprawdzić zmienne środowiskowe obecne na węzłach.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Wyłączanie proxy HTTP w istniejącym klastrze przy użyciu szablonu ARM (wersja zapoznawcza)
Instalowanie aks-preview rozszerzenia
Zainstaluj rozszerzenie CLI platformy Azure przy użyciu polecenia
aks-preview.Ważne
Funkcje usługi AKS w wersji zapoznawczej są dostępne na zasadzie samoobsługi i wymagają zapisania się. Wersje zapoznawcze są udostępniane w wersji "as is" i "jako dostępne" i są wykluczone z umów dotyczących poziomu usług i ograniczonej gwarancji. Wersje zapoznawcze usługi AKS są częściowo objęte pomocą techniczną dla klientów, świadczoną w miarę możliwości. W związku z tym te funkcje nie są przeznaczone do użytku produkcyjnego. Aby uzyskać więcej informacji, zobacz następujące artykuły pomocy technicznej:
az extension add --name aks-previewPrzeprowadź aktualizację do najnowszej wersji rozszerzenia przy użyciu
az extension updatepolecenia . Wyłączenie serwera proxy HTTP wymaga co najmniej 18.0.0b13.az extension update --name aks-preview
Zarejestruj flagę funkcji DisableHTTPProxyPreview
Zarejestruj flagę funkcji
DisableHTTPProxyPreviewza pomocą poleceniaaz feature register.az feature register --namespace Microsoft.ContainerService --name DisableHTTPProxyPreviewSprawdź stan rejestracji przy użyciu
az feature showpolecenia . Wyświetlenie stanu Zarejestrowane trwa kilka minut.az feature show --namespace Microsoft.ContainerService --name DisableHTTPProxyPreviewKiedy status pokazuje Zarejestrowano, odśwież rejestrację dostawcy zasobów Microsoft.ContainerService, używając polecenia
az provider register.az provider register --namespace Microsoft.ContainerService
Aktualizowanie klastra w celu wyłączenia serwera proxy HTTP
Zaktualizuj szablon ARM klastra, aby wyłączyć serwer proxy HTTP, ustawiając
enablednafalse. Ten sam schemat używany do wdrażania CLI istnieje w definicji w obszarzeMicrosoft.ContainerService/managedClusters, jak pokazano w poniższym przykładzie:"properties": { ..., "httpProxyConfig": { "enabled": "false", } }Wdróż szablon ARM z wyłączonym proxy HTTP.
Ostrzeżenie
Usługa AKS automatycznie odtwarza wszystkie pule węzłów w klastrze podczas aktualizowania konfiguracji serwera proxy w klastrze przy użyciu az aks update polecenia . Można użyć budżetów zakłóceń zasobników (PDB), aby chronić krytyczne zasobniki przed zakłóceniami podczas ponownego obrazowania.
Sprawdź, czy serwer proxy HTTP jest wyłączony, upewniając się, że konfiguracja serwera proxy HTTP nie jest ustawiona na zasobnikach i węzłach przy użyciu polecenia
kubectl describe pod.kubectl describe {any pod} -n kube-systemAby sprawdzić, czy zmienne serwera proxy nie są ustawione w podach, możesz zweryfikować zmienne środowiskowe obecne na węzłach.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Ponowne włączanie serwera proxy HTTP w istniejącym klastrze
Podczas tworzenia klastra serwer proxy HTTP jest domyślnie włączony. Po wyłączeniu serwera proxy HTTP w klastrze nie można już dodawać konfiguracji serwera proxy HTTP do tego klastra.
Jeśli chcesz ponownie włączyć serwer proxy HTTP, wykonaj czynności opisane w temacie Aktualizowanie konfiguracji serwera proxy HTTP przy użyciu szablonu usługi ARM.
Dodatek Istio dla serwera proxy HTTP dla usług zewnętrznych
Jeśli używasz dodatku na platformie Istio dla AKS, musisz utworzyć Service Entry, aby umożliwić aplikacjom w siatce dostęp do zasobów nieklastrowych lub zewnętrznych za pośrednictwem serwera proxy HTTP.
Na przykład:
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
Utwórz plik i podaj wartości dla
PROXY_IPiPROXY_PORT.Możesz wdrożyć Wpis usługi, używając:
kubectl apply -f service_proxy.yaml
Monitorowanie konfiguracji dodatku
Serwer proxy HTTP z dodatkiem monitorowania obsługuje następujące konfiguracje:
- Wychodzący serwer proxy bez uwierzytelniania
- Wychodzący serwer proxy z zaufanym certyfikatem dla punktu końcowego usługi Log Analytics
Następująca konfiguracja nie jest obsługiwana:
- Metryki niestandardowe i zalecane funkcje alertów podczas korzystania z serwera proxy z zaufanymi certyfikatami
Następne kroki
Aby uzyskać więcej informacji na temat wymagań sieciowych klastrów usługi AKS, zobacz Kontrolowanie ruchu wychodzącego dla węzłów klastra w usłudze AKS.