Podpora proxy serveru HTTP ve službě Azure Kubernetes Service (AKS)

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

Clustery AKS nasazené ve spravovaných nebo vlastních virtuálních sítích mají určité odchozí závislosti, které jsou nezbytné pro správné fungování, což vytvořilo problémy v prostředích vyžadujících směrování přístupu k internetu prostřednictvím proxy serverů HTTP. Uzly neměly způsob spouštění konfigurace, proměnných prostředí a certifikátů nezbytných pro přístup k internetovým službám.

Funkce proxy serveru HTTP přidá podporu proxy serveru HTTP do clusterů AKS a zobrazí jednoduché rozhraní, které můžete použít k zabezpečení síťového provozu vyžadovaného službou AKS v prostředích závislých na proxy serveru. Díky této funkci jsou uzly AKS i pody nakonfigurované tak, aby používaly proxy server HTTP. Tato funkce také umožňuje instalaci důvěryhodné certifikační autority na uzly v rámci spouštění clusteru. Složitější řešení můžou vyžadovat vytvoření řetězce důvěryhodnosti k vytvoření zabezpečené komunikace v síti.

Omezení a důležité informace

Následující scénáře se nepodporují :

  • Různé konfigurace proxy serveru na fond uzlů
  • Ověřování uživatelem a heslem
  • Vlastní certifikační autority (CA) pro komunikaci se serverem API
  • Konfigurace existujících clusterů AKS s proxy serverem HTTP se nepodporuje; Při vytváření clusteru musí být povolená funkce proxy serveru HTTP.
  • Clustery založené na Windows
  • Fondy uzlů s využitím skupin dostupnosti virtuálních počítačů (VMAS)
  • Použití * jako zástupný znak připojený k příponě domény pro noProxy

httpProxy, httpsProxya trustedCa ve výchozím nastavení nemají žádnou hodnotu. Pody se vloží s následujícími proměnnými prostředí:

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

Chcete-li zakázat injektáž proměnných prostředí proxy serveru, musíte pod anotovat pomocí "kubernetes.azure.com/no-http-proxy-vars":"true".

Než začnete

  • Potřebujete nejnovější verzi Azure CLI. Spuštěním příkazu vyhledejte az --version verzi a spusťte az upgrade upgrade verze. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.
  • Zkontrolujte dostupné upgrady clusteru AKS a ujistěte se, že používáte nejnovější verzi AKS. Pokud potřebujete upgradovat, přečtěte si téma Upgrade clusteru AKS.
  • Soubory operačního systému vyžadované pro aktualizace konfigurace proxy serveru je možné aktualizovat pouze během procesu upgradu image uzlu. Po nakonfigurování proxy serveru je nutné upgradovat image uzlu, aby se změny použily. Další informace najdete v tématu Upgrade imagí uzlů AKS.

Konfigurace proxy serveru HTTP pomocí Azure CLI

Cluster AKS s proxy serverem HTTP můžete během vytváření clusteru nakonfigurovat pomocí az aks create příkazu a předat konfiguraci jako soubor JSON.

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

{
  "httpProxy": "string",
  "httpsProxy": "string",
  "noProxy": [
    "string"
  ],
  "trustedCa": "string"
}
  • httpProxy: Adresa URL proxy serveru, která se má použít k vytváření připojení HTTP mimo cluster. Schéma adres URL musí být http.
  • httpsProxy: Adresa URL proxy serveru, která se má použít k vytváření připojení HTTPS mimo cluster. Pokud není zadaný, httpProxy použije se pro připojení HTTP i HTTPS.
  • noProxy: Seznam názvů cílových domén, domén, IP adres nebo jiných síťových identifikátorů CIDR pro vyloučení proxy serveru.
  • trustedCa: Řetězec obsahující base64 encoded obsah certifikátu alternativní certifikační autority. V současné době je podporován pouze PEM formát.

Důležité

Kvůli kompatibilitě s komponentami založenými na Go, které jsou součástí systému Kubernetes, musí certifikát podporovat Subject Alternative Names(SANs) místo zastaralých certifikátů pro běžné názvy.

Existují rozdíly v aplikacích, jak dodržovat proměnnou http_proxyprostředí , https_proxya no_proxy. Curl a Python nepodporují CIDR v no_proxy, ale Ruby to dělá.

Příklad vstupu:

Poznámka:

Certifikát ca by měl být řetězec s kódováním base64 obsahu certifikátu formátu PEM.

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

Vytvořte soubor a zadejte hodnoty pro httpProxy, httpsProxya noProxy. Pokud to vaše prostředí vyžaduje, zadejte hodnotu pro trustedCa. Dále můžete cluster nasadit pomocí az aks create příkazu s parametrem --http-proxy-config nastaveným na soubor, který jste vytvořili. Váš cluster by se měl inicializovat s proxy serverem HTTP nakonfigurovaným na uzlech.

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

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

Cluster AKS s proxy serverem HTTP můžete nasadit pomocí šablony ARM. Stejné schéma použité pro nasazení rozhraní příkazového řádku existuje v definici v Microsoft.ContainerService/managedClusters části "properties", jak je znázorněno v následujícím příkladu:

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

V šabloně zadejte hodnoty pro httpProxy, httpsProxya noProxy. V případě potřeby zadejte hodnotu pro trustedCa. V dalším kroku můžete šablonu nasadit. Cluster by se měl inicializovat pomocí proxy serveru HTTP nakonfigurovaného na uzlech.

Doplněk Istio proxy pro externí služby

Pokud používáte doplněk Istio service mesh pro AKS, musíte vytvořit položku služby, která umožní aplikacím v síti přístup k jiným než clusterovým nebo externím prostředkům prostřednictvím proxy serveru HTTP. Pří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

Vytvořte soubor a zadejte hodnoty pro PROXY_IP a PROXY_PORT. Položku služby můžete nasadit pomocí

kubectl apply -f service_proxy.yaml

Aktualizace konfigurace proxy serveru

Poznámka:

Pokud přepnete na nový proxy server, musí nový proxy server již existovat, aby aktualizace proběhla úspěšně. Po dokončení upgradu můžete starý proxy server odstranit.

Konfiguraci proxy serveru v clusteru můžete aktualizovat pomocí az aks update příkazu s parametrem --http-proxy-config nastaveným na nový soubor JSON s aktualizovanými hodnotami pro httpProxy, httpsProxynoProxya trustedCa v případě potřeby. Aktualizace vloží nové proměnné prostředí do podů s novými httpProxyhttpsProxy, nebo noProxy hodnotami. Pody musí být otočeny, aby je mohly aplikace vyzvednout, protože hodnoty proměnných prostředí se vloží do ztlumujícího webhooku přístupu. U komponent v rámci Kubernetes, jako je kontejner a samotný uzel, se to neprojeví, dokud se neprovede upgrade image uzlu.

Řekněme například, že jste vytvořili nový soubor s řetězcem kódování base64 nového certifikátu certifikační autority s názvem aks-proxy-config-2.json. Konfiguraci proxy serveru v clusteru můžete aktualizovat pomocí následujícího příkazu:

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

Upgrade imagí uzlů AKS

Po nakonfigurování proxy serveru je nutné upgradovat image uzlu, aby se změny použily. Proces upgradu image uzlu je jediným způsobem, jak aktualizovat soubory operačního systému vyžadované pro aktualizace konfigurace proxy serveru. Proces upgradu image uzlu je postupný upgrade, který aktualizuje image operačního systému na každém uzlu ve fondu uzlů. Řídicí rovina AKS zpracovává proces upgradu, který není nerozlišující pro spuštěné aplikace.

Pokud chcete upgradovat image uzlů AKS, přečtěte si téma Upgrade imagí uzlů Služby Azure Kubernetes Service (AKS).

Monitorování konfigurace doplňku

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

  • Odchozí proxy server bez ověřování
  • Odchozí proxy server s ověřováním uživatelským jménem a heslem
  • Odchozí proxy server s důvěryhodným certifikátem pro koncový bod Log Analytics

Následující konfigurace se nepodporují:

  • Funkce vlastních metrik a doporučených upozornění při použití proxy serveru s důvěryhodnými certifikáty

Další kroky

Další informace o požadavcích na síť clusterů AKS najdete v tématu Řízení výchozího přenosu dat pro uzly clusteru v AKS.