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
, httpsProxy
a 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ťteaz 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ýthttp
.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 pouzePEM
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_proxy
prostředí , https_proxy
a 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
, httpsProxy
a 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
, httpsProxy
a 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
, httpsProxy
noProxy
a trustedCa
v případě potřeby. Aktualizace vloží nové proměnné prostředí do podů s novými httpProxy
httpsProxy
, 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.
Azure Kubernetes Service