Sdílet prostřednictvím


Podpora HTTP proxy v Azure Kubernetes Service (AKS)

V tomto článku se dozvíte, jak nakonfigurovat clustery Azure Kubernetes Service (AKS) pro použití HTTP proxy pro odchozí přístup k internetu.

Klastry AKS nasazené do spravovaných nebo vlastních virtuálních sítí mají určité závislosti na odchozích připojeních, které jsou nezbytné pro správnou funkci. To způsobilo problémy v prostředích, kde je přístup k internetu směrován přes HTTP proxy servery. Uzly neměly žádný způsob, jak inicializovat konfiguraci, proměnné prostředí a certifikáty potřebné pro přístup k internetovým službám.

Funkce HTTP proxy přidává podporu HTTP proxy klastrům AKS a odhaluje jednoduché rozhraní, které můžete použít k zabezpečení sítě vyžadované AKS v prostředích závislých na proxy. Díky této funkci jsou jak AKS uzly, tak i pody nakonfigurovány tak, aby používaly HTTP proxy. Funkce také umožňuje instalaci důvěryhodné certifikační autority na uzly jako součást inicializace clusteru. Komplexnější řešení mohou vyžadovat vytvoření řetězce důvěry pro zajištění bezpečné komunikace v celé síti.

Omezení a úvahy

Následující scénáře nejsou podporovány:

  • Různé konfigurace proxy pro jednotlivé fondy uzlů
  • Autentizace uživatele/hesla
  • Vlastní certifikační autority (CA) pro komunikaci se serverem API
  • AKS klustery s fondy uzlů Windows
  • Pooly uzlů používající sady dostupnosti virtuálních strojů (VMAS)
  • Použití * jako zástupného znaku připojeného k příponě domény pro noProxy

httpProxy, httpsProxy a trustedCa nemají ve výchozím nastavení žádnou hodnotu. Podům jsou přidány následující proměnné prostředí:

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

Pro zakázání injektování proměnných prostředí proxy musíte anotovat Pod pomocí "kubernetes.azure.com/no-http-proxy-vars":"true".

Než začnete

Vytvoření konfiguračního souboru s hodnotami proxy serveru HTTP

Vytvořte soubor a zadejte hodnoty pro httpProxy, httpsProxy, a noProxy. Pokud to vaše prostředí vyžaduje, zadejte hodnotu pro trustedCa.

Schéma konfiguračního souboru vypadá takto:

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

Zkontrolujte požadavky pro každý parametr:

  • httpProxy: Proxy URL, který se používá k vytváření HTTP připojení mimo cluster. Schéma URL musí být http.
  • httpsProxy: Proxy URL k použití pro vytváření HTTPS připojení mimo clusteru. Pokud není uvedeno jinak, pak je httpProxy použit pro obě připojení HTTP a HTTPS.
  • noProxy: Seznam cílových doménových jmen, domén, IP adres nebo jiných síťových CIDR, které se mají vyloučit z proxy.
  • trustedCa: Řetězec obsahující alternativní obsah certifikátu CA base64 encoded. Aktuálně je podporován pouze formát PEM.

Důležité

Pro zajištění kompatibility s komponentami založenými na Go, které jsou součástí systému Kubernetes, musí certifikát podporovat namísto zastaralých certifikátů "Common Name".

V aplikacích existují rozdíly v tom, jak plnit podmínky proměnné prostředí http_proxy, https_proxy a no_proxy. Curl a Python nepodporují CIDR v no_proxy, ale Ruby ano.

Příklad vstupu:

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

Vytvoření clusteru s konfigurací proxy serveru HTTP pomocí Azure CLI

Během vytváření clusteru můžete nakonfigurovat cluster AKS s konfigurací proxy serveru HTTP.

  1. az aks create Použijte příkaz a předejte konfiguraci jako soubor JSON.

    az aks create \
        --name $clusterName \
        --resource-group $resourceGroup \
        --http-proxy-config aks-proxy-config.json \
        --generate-ssh-keys
    

    Váš cluster by měl být inicializován s konfigurací HTTP proxy na uzlech.

  2. Ověřte, že konfigurace proxy serveru HTTP je na podech a uzlech. Zkontrolujte, jestli proměnné prostředí obsahují odpovídající hodnoty pro http_proxy, https_proxya no_proxy pomocí kubectl describe pod příkazu.

    kubectl describe {any pod} -n kube-system
    

    Pokud chcete ověřit, že jsou proxy proměnné nastaveny v podech, můžete zkontrolovat proměnné prostředí, které se nacházejí na uzlech.

    kubectl get nodes
    kubectl node-shell {node name}
    cat /etc/environment
    

Aktualizace konfigurace proxy serveru HTTP

Konfigurace proxy serveru HTTP můžete aktualizovat v existujících clusterech, včetně následujících:

  • Aktualizace existujícího clusteru za účelem povolení proxy serveru HTTP a přidání nové konfigurace proxy serveru HTTP
  • Aktualizace existujícího clusteru za účelem změny konfigurace proxy serveru HTTP

Důležité informace o aktualizaci proxy serveru HTTP

Parametr --http-proxy-config by měl být nastaven na nový soubor JSON s aktualizovanými hodnotami pro httpProxy, httpsProxynoProxya trustedCa v případě potřeby. Aktualizace vkládá nové proměnné prostředí do kontejnerů s novými hodnotami httpProxy, httpsProxy nebo noProxy. Pody musí být restartovány, aby to aplikace zachytily, protože hodnoty proměnných prostředí jsou vloženy pomocí mutujícího přijímacího webhooku.

Poznámka

Pokud dochází k přepnutí na nový proxy server, nový proxy server musí již existovat, aby aktualizace byla úspěšná. Po dokončení upgradu můžete smazat starý proxy server.

Aktualizace clusteru pro aktualizaci nebo povolení proxy serveru HTTP

  1. Pomocí příkazu povolte nebo aktualizujte konfigurace proxy serveru HTTP v existujícím clusteru az aks update .

    Například řekněme, že jste vytvořili nový soubor se základním 64 kódovaným řetězcem nového certifikátu CA nazvaný aks-proxy-config-2.json. Můžete aktualizovat konfiguraci proxy ve vašem clusteru pomocí následujícího příkazu:

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

Upozornění

AKS automaticky znovu vytvoří všechny fondy uzlů v clusteru, když v něm provádíte aktualizaci konfigurace proxy serveru pomocí příkazu az aks update. Rozpočty přerušení podů (PDB) můžete použít k ochraně kritických podů před narušením během přeinstalování.

  1. Ověřte, že konfigurace proxy serveru HTTP je na podech a uzlech. Zkontrolujte, jestli proměnné prostředí obsahují odpovídající hodnoty pro http_proxy, https_proxya no_proxy pomocí kubectl describe pod příkazu.

    kubectl describe {any pod} -n kube-system
    

    Pokud chcete ověřit, že jsou proxy proměnné nastaveny v podech, můžete zkontrolovat proměnné prostředí, které se nacházejí na uzlech.

    kubectl get nodes
    kubectl node-shell {node name}
    cat /etc/environment
    

Zakázání proxy serveru HTTP v existujícím clusteru (Preview)

Instalace aks-preview rozšíření

  1. aks-preview Nainstalujte rozšíření Azure CLI pomocí az extension add příkazu.

    Důležité

    Funkce AKS ve verzi Preview jsou k dispozici na bázi samoobsluhy a dobrovolného přihlášení. Ukázky jsou poskytovány "jak jsou" a "podle aktuální dostupnosti" a jsou vyloučené ze smluv o úrovni služeb a omezené záruky. Předběžné verze AKS jsou částečně pokryty zákaznickou podporou podle možností. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:

    az extension add --name aks-preview
    
  2. Pomocí příkazu aktualizujte na nejnovější verzi rozšíření az extension update . Zakázání proxy serveru HTTP vyžaduje minimálně 18.0.0b13.

    az extension update --name aks-preview
    

Příznak registrace DisableHTTPProxyPreview funkce

  1. Příznak funkce DisableHTTPProxyPreview zaregistrujte pomocí příkazu az feature register.

    az feature register --namespace Microsoft.ContainerService --name DisableHTTPProxyPreview
    
  2. Pomocí příkazu ověřte stav az feature show registrace. Zobrazení stavu Zaregistrované trvá několik minut.

    az feature show --namespace Microsoft.ContainerService --name DisableHTTPProxyPreview
    
  3. Jakmile se stav projeví jako zaregistrovaný, aktualizujte registraci poskytovatele prostředků Microsoft.ContainerService pomocí az provider register příkazu.

    az provider register --namespace Microsoft.ContainerService
    

Aktualizace clusteru pro zakázání proxy serveru HTTP (Preview)

  1. Aktualizujte cluster a zakažte proxy server HTTP pomocí příkazu s příznakem az aks update--disable-http-proxy .

    az aks update --name $clusterName --resource-group $resourceGroup --disable-http-proxy
    

Upozornění

AKS automaticky znovu vytvoří všechny fondy uzlů v clusteru, když v něm provádíte aktualizaci konfigurace proxy serveru pomocí příkazu az aks update. Rozpočty přerušení podů (PDB) můžete použít k ochraně kritických podů před narušením během přeinstalování.

  1. Ověřte, že je HTTP proxy zakázán tak, že zkontrolujete, zda konfigurace HTTP proxy není nastavená na podech a uzlech pomocí příkazu kubectl describe pod.

    kubectl describe {any pod} -n kube-system
    

    Chcete-li ověřit, že proměnné proxy nejsou nastaveny na podech, můžete zkontrolovat proměnné prostředí, které jsou na uzlech.

    kubectl get nodes
    kubectl node-shell {node name}
    cat /etc/environment
    

Opětovné povolení proxy serveru HTTP v existujícím clusteru

Při vytváření clusteru je ve výchozím nastavení povolený proxy server HTTP. Po zakázání proxy serveru HTTP v clusteru se konfigurace proxy serveru uloží do databáze, ale proměnné proxy serveru se z podů a uzlů odeberou.

Pokud chcete znovu povolit proxy server HTTP v existujícím clusteru, použijte az aks update příkaz s příznakem --enable-http-proxy .

az aks update --name $clusterName --resource-group $resourceGroup --enable-http-proxy

Upozornění

AKS automaticky znovu vytvoří všechny fondy uzlů v clusteru, když v něm provádíte aktualizaci konfigurace proxy serveru pomocí příkazu az aks update. Rozpočty přerušení podů (PDB) můžete použít k ochraně kritických podů před narušením během přeinstalování.

Důležité

Pokud jste před zakázáním clusteru měli konfiguraci proxy serveru HTTP, použije se stávající konfigurace proxy serveru HTTP automaticky při opětovném povolení proxy serveru HTTP v daném clusteru. Než budete pokračovat, doporučujeme ověřit konfiguraci, abyste měli jistotu, že splňuje vaše aktuální požadavky. Pokud chcete po opětovném povolení proxy serveru HTTP změnit konfiguraci proxy serveru HTTP, postupujte podle pokynů k aktualizaci konfigurace proxy serveru HTTP v existujícím clusteru.

Konfigurace konfigurace proxy serveru HTTP pomocí šablony Azure Resource Manageru (ARM)

Můžete nasadit klastr AKS s HTTP proxy pomocí šablony ARM.

  1. Zkontrolujte požadavky pro každý parametr:

    • httpProxy: Proxy URL, který se používá k vytváření HTTP připojení mimo cluster. Schéma URL musí být http.
    • httpsProxy: Proxy URL k použití pro vytváření HTTPS připojení mimo clusteru. Pokud není uvedeno jinak, pak je httpProxy použit pro obě připojení HTTP a HTTPS.
    • noProxy: Seznam cílových doménových jmen, domén, IP adres nebo jiných síťových CIDR, které se mají vyloučit z proxy.
    • trustedCa: Řetězec obsahující alternativní obsah certifikátu CA base64 encoded. Aktuálně je podporován pouze formát PEM.

    Důležité

    Pro zajištění kompatibility s komponentami založenými na Go, které jsou součástí systému Kubernetes, musí certifikát podporovat namísto zastaralých certifikátů "Common Name".

    V aplikacích existují rozdíly v tom, jak plnit podmínky proměnné prostředí http_proxy, https_proxy a no_proxy. Curl a Python nepodporují CIDR v no_proxy, ale Ruby ano.

  2. Vytvořte šablonu s parametry proxy serveru HTTP. V šabloně zadejte hodnoty pro httpProxy, httpsProxya noProxy. V případě potřeby zadejte hodnotu pro trustedCa. Stejné schéma použité pro nasazení CLI existuje v definici pod Microsoft.ContainerService/managedClusters v sekci "properties", jak ukazuje následující příklad:

    "properties": {
        ...,
        "httpProxyConfig": {
          "enabled": "true",
            "httpProxy": "string",
            "httpsProxy": "string",
            "noProxy": [
                "string"
            ],
            "trustedCa": "string"
        }
    }
    
  3. Nasaďte šablonu ARM s konfigurací proxy serveru HTTP. Cluster by se měl inicializovat pomocí proxy serveru HTTP nakonfigurovaného na uzlech.

Aktualizace konfigurace proxy serveru HTTP

Konfigurace proxy serveru HTTP můžete aktualizovat v existujících clusterech, včetně následujících:

  • Aktualizace existujícího clusteru za účelem povolení proxy serveru HTTP a přidání nové konfigurace proxy serveru HTTP
  • Aktualizace existujícího clusteru za účelem změny konfigurace proxy serveru HTTP

Důležité informace o aktualizaci proxy serveru HTTP

Parametr --http-proxy-config by měl být nastaven na nový soubor JSON s aktualizovanými hodnotami pro httpProxy, httpsProxynoProxya trustedCa v případě potřeby. Aktualizace vkládá nové proměnné prostředí do kontejnerů s novými hodnotami httpProxy, httpsProxy nebo noProxy. Pody musí být restartovány, aby to aplikace zachytily, protože hodnoty proměnných prostředí jsou vloženy pomocí mutujícího přijímacího webhooku.

Poznámka

Pokud dochází k přepnutí na nový proxy server, nový proxy server musí již existovat, aby aktualizace byla úspěšná. Po dokončení upgradu můžete smazat starý proxy server.

Aktualizace šablony ARM pro konfiguraci proxy serveru HTTP

  1. V šabloně zadejte nové hodnoty pro httpProxy, httpsProxya noProxy. V případě potřeby zadejte hodnotu pro trustedCa.

    Stejné schéma použité pro nasazení CLI existuje v definici pod Microsoft.ContainerService/managedClusters v sekci "properties", jak ukazuje následující příklad:

    "properties": {
        ...,
        "httpProxyConfig": {
            "enabled": "true",
            "httpProxy": "string",
            "httpsProxy": "string",
            "noProxy": [
                "string"
            ],
            "trustedCa": "string"
        }
    }
    
  2. Nasaďte šablonu ARM s aktualizovanou konfigurací proxy serveru HTTP.

Upozornění

AKS automaticky znovu vytvoří všechny fondy uzlů v clusteru, když v něm provádíte aktualizaci konfigurace proxy serveru pomocí příkazu az aks update. Rozpočty přerušení podů (PDB) můžete použít k ochraně kritických podů před narušením během přeinstalování.

  1. Ověřte, že konfigurace proxy serveru HTTP je na podech a uzlech. Zkontrolujte, jestli proměnné prostředí obsahují odpovídající hodnoty pro http_proxy, https_proxya no_proxy pomocí kubectl describe pod příkazu.

    kubectl describe {any pod} -n kube-system
    

    Pokud chcete ověřit, že jsou proxy proměnné nastaveny v podech, můžete zkontrolovat proměnné prostředí, které se nacházejí na uzlech.

    kubectl get nodes
    kubectl node-shell {node name}
    cat /etc/environment
    

Zakázání proxy serveru HTTP v existujícím clusteru pomocí šablony ARM (Preview)

Instalace aks-preview rozšíření

  1. aks-preview Nainstalujte rozšíření Azure CLI pomocí az extension add příkazu.

    Důležité

    Funkce AKS ve verzi Preview jsou k dispozici na bázi samoobsluhy a dobrovolného přihlášení. Ukázky jsou poskytovány "jak jsou" a "podle aktuální dostupnosti" a jsou vyloučené ze smluv o úrovni služeb a omezené záruky. Předběžné verze AKS jsou částečně pokryty zákaznickou podporou podle možností. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:

    az extension add --name aks-preview
    
  2. Pomocí příkazu aktualizujte na nejnovější verzi rozšíření az extension update . Zakázání proxy serveru HTTP vyžaduje minimálně 18.0.0b13.

    az extension update --name aks-preview
    

Příznak registrace DisableHTTPProxyPreview funkce

  1. Příznak funkce DisableHTTPProxyPreview zaregistrujte pomocí příkazu az feature register.

    az feature register --namespace Microsoft.ContainerService --name DisableHTTPProxyPreview
    
  2. Pomocí příkazu ověřte stav az feature show registrace. Zobrazení stavu Zaregistrované trvá několik minut.

    az feature show --namespace Microsoft.ContainerService --name DisableHTTPProxyPreview
    
  3. Jakmile se stav projeví jako zaregistrovaný, aktualizujte registraci poskytovatele prostředků Microsoft.ContainerService pomocí az provider register příkazu.

    az provider register --namespace Microsoft.ContainerService
    

Aktualizace clusteru pro zakázání proxy serveru HTTP

  1. Aktualizujte šablonu ARM clusteru tak, aby zakázala proxy server HTTP nastavením enabled na false. Stejné schéma použité pro nasazení CLI existuje v definici pod Microsoft.ContainerService/managedClusters v sekci "properties", jak ukazuje následující příklad:

    "properties": {
        ...,
        "httpProxyConfig": {
           "enabled": "false",
        }
    }
    
  2. Nasaďte šablonu ARM se zakázaným proxy serverem HTTP.

Upozornění

AKS automaticky znovu vytvoří všechny fondy uzlů v clusteru, když v něm provádíte aktualizaci konfigurace proxy serveru pomocí příkazu az aks update. Rozpočty přerušení podů (PDB) můžete použít k ochraně kritických podů před narušením během přeinstalování.

  1. Ověřte, že proxy server HTTP je zakázaný ověřením, že konfigurace proxy serveru HTTP není nastavená na podech a uzlech pomocí kubectl describe pod příkazu.

    kubectl describe {any pod} -n kube-system
    

    Chcete-li ověřit, že proměnné proxy nejsou nastaveny na podech, můžete zkontrolovat proměnné prostředí, které jsou na uzlech.

    kubectl get nodes
    kubectl node-shell {node name}
    cat /etc/environment
    

Opětovné povolení proxy serveru HTTP v existujícím clusteru

Při vytváření clusteru je ve výchozím nastavení povolený proxy server HTTP. Jakmile v clusteru zakážete proxy server HTTP, už do daného clusteru nemůžete přidat konfigurace proxy serveru HTTP.

Pokud chcete znovu povolit proxy server HTTP, postupujte podle pokynů k aktualizaci konfigurace proxy serveru HTTP pomocí šablony ARM.


Doplněk Istio pro externí služby – proxy server HTTP

Pokud používáte doplněk Sítě služby Istio pro AKS, musíte vytvořit Service Entry, která umožní aplikacím v síti přístup k neclusterovým nebo externím prostředkům prostřednictvím proxy serveru HTTP.

Například:

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
  1. Vytvořte soubor a zadejte hodnoty pro PROXY_IP a PROXY_PORT.

  2. Položku služby můžete nasadit pomocí:

    kubectl apply -f service_proxy.yaml
    

Monitorování konfigurace doplňku

Proxy server HTTP s doplňkem pro monitorování podporuje následující konfigurace:

  • Odchozí proxy bez autentizace
  • Výstupní proxy s důvěryhodným certifikátem pro koncový bod Log Analytics

Následující konfigurace není podporovaná:

  • Vlastní metriky a doporučená upozornění při použití proxy s důvěryhodnými certifikáty

Další kroky

Pro více informací o síťových požadavcích klastrů AKS, viz Řízení odchozího provozu pro uzly klastrů v AKS.