Megosztás:


HTTP proxy támogatás az Azure Kubernetes Szolgáltatásban (AKS)

Ebben a cikkben megtudhatja, hogyan kell konfigurálni az Azure Kubernetes Service (AKS) fürtöket úgy, hogy egy HTTP-proxyn keresztül férjenek hozzá a kifelé irányuló internetkapcsolathoz.

Az AKS fürtök, amelyeket menedzselt vagy egyéni virtuális hálózatokba telepítettek, bizonyos kimenő függőségekkel rendelkeznek, amelyek szükségesek a megfelelő működésükhöz. Ez problémákat okozott olyan környezetekben, ahol az internet-hozzáférést HTTP-proxikon keresztül kell irányítani. Az egységek nem tudták elindítani a konfigurációt, környezeti változókat és tanúsítványokat, amelyek szükségesek az internetes szolgáltatások eléréséhez.

Az HTTP proxy funkció HTTP proxy támogatást ad az AKS klaszterekhez, egy egyszerű felületet nyújtva, amelyet az AKS-hez szükséges hálózati forgalom védelmére használhat proxy-függő környezetekben. Ezzel a funkcióval az AKS-csomópontok és a podok is a HTTP-proxy használatára vannak konfigurálva. A funkció lehetővé teszi egy megbízható hitelesítő hatóság telepítését a csomópontokra egy klaszter bootstrappelése részeként. Összetettebb megoldások esetén szükség lehet egy bizalmi lánc létrehozására a hálózaton belüli biztonságos kommunikáció megteremtése érdekében.

Korlátok és megfontolások

A következő forgatókönyvek nem támogatottak:

  • Különböző proxy konfigurációk node poolonként
  • Felhasználónév/jelszó hitelesítés
  • Egyedi tanúsítványhatóságok az API szerver kommunikációhoz
  • AKS klaszterek Windows csomóponti csoportokkal
  • Node poolok, amelyek Virtuális Gép rendelkezésre állási készleteket (VMAS) használnak
  • A * használata helyettesítő karakterként egy domain végződéshez csatoltan a noProxy számára.

httpProxy, httpsProxy és trustedCa alapértelmezés szerint nincs értékük. A podokba a következő környezeti változókat injektálják be:

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

A proxy környezeti változók injektálásának letiltásához jelölnie kell a Podot "kubernetes.azure.com/no-http-proxy-vars":"true" használatával.

Mielőtt elkezdené

Konfigurációs fájl létrehozása HTTP-proxyértékekkel

Hozzon létre egy fájlt, és adjon meg értékeket a httpProxy, httpsProxy, és noProxy számára. Ha a környezet megköveteli, adjon meg egy értéket a trustedCa számára.

A konfigurációs fájl sémája így néz ki:

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

Tekintse át az egyes paraméterek követelményeit:

  • httpProxy: A fürtön kívüli HTTP-kapcsolatok létrehozásához használható proxy URL-cím. Az URL séma http kell, hogy legyen.
  • httpsProxy: A fürtön kívüli HTTPS-kapcsolatok létrehozásához használható proxy URL-cím. Ha nincs meghatározva, akkor a httpProxy mind HTTP, mind HTTPS kapcsolatokra használatos.
  • noProxy: A cél domainnevek, domainek, IP-címek vagy egyéb hálózati CIDR-ek listája, amely kizárja a proxyzást.
  • trustedCa: Egy karakterláncot, amely tartalmazza az base64 encoded alternatív CA tanúsítvány tartalmát. Jelenleg csak a PEM formátum támogatott.

Fontos

A Kubernetes rendszer részét képező, Go-alapú komponensekkel való kompatibilitás érdekében a tanúsítványnak támogatnia kell a , a Common Name tanúsítványok helyett, amelyek elavultak.

Az alkalmazások között különbségek vannak abban, hogy miként felelnek meg a környezeti változóknak http_proxy, https_proxy, és no_proxy. A Curl és a Python nem támogatja a CIDR-t a no_proxy, de a Ruby igen.

Példa bemenet:

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

HTTP-proxykonfigurációval rendelkező fürt létrehozása az Azure CLI használatával

Az AKS-fürtöket HTTP-proxykonfigurációval konfigurálhatja a fürt létrehozása során.

  1. Használja a az aks create parancsot, és adja át a konfigurációt JSON-fájlként.

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

    A fürtnek inicializálnia kell a csomópontokon konfigurált HTTP-proxyt.

  2. Ellenőrizze a HTTP-proxy konfigurációját a podokon és a csomópontokon, valamint azt, hogy a környezeti változók tartalmazzák a megfelelő http_proxy, https_proxy, és no_proxy értékeket a kubectl describe pod parancs használatával.

    kubectl describe {any pod} -n kube-system
    

    A proxyváltozók podokban való beállításának ellenőrzéséhez ellenőrizheti a csomópontokon található környezeti változókat.

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

HTTP-proxykonfiguráció frissítése

A HTTP-proxykonfigurációkat frissítheti meglévő fürtökön, például:

  • Meglévő fürt frissítése HTTP-proxy engedélyezéséhez és új HTTP-proxykonfiguráció hozzáadásához.
  • Meglévő fürt frissítése HTTP-proxykonfiguráció módosításához.

HTTP-proxyfrissítési szempontok

A --http-proxy-config paramétert egy új JSON-fájlra kell állítani, amely a , httpProxy, httpsProxyés noProxy szükség esetén frissített értékeket trustedCatartalmazza. A frissítés új környezeti változókat injektál a podokba az új httpProxy, httpsProxy, vagy noProxy értékekkel. A podokat újra kell indítani az alkalmazások számára, hogy azokat felvegyék, mert a környezeti változó értékeket egy mutálást végző belépési webhook injektálja.

Megjegyzés

Ha egy új proxyra vált, az új proxynak már léteznie kell ahhoz, hogy a frissítés sikeres legyen. A frissítés befejezése után törölheti a régi proxyt.

Egy fürt frissítése a HTTP-proxy frissítéséhez vagy engedélyezéséhez

  1. Http-proxykonfigurációk engedélyezése vagy frissítése meglévő fürtön a az aks update parancs használatával.

    Tegyük fel például, hogy létrehozott egy új fájlt az új CA tanúsítvány base64-kódolt karakterláncával, amelynek a neve aks-proxy-config-2.json. Frissítheti a proxy konfigurációját a fürtön a következő parancs segítségével:

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

Figyelmeztetés

Az AKS automatikusan újrakonfigurálja a fürt összes csomópontkészletét, amikor a parancs használatával az aks update frissíti a fürt proxykonfigurációját. A podkimaradási költségvetések (PDB-k) használatával megvédheti a kritikus podok megszakadását az újraimálás során.

  1. Ellenőrizze a HTTP-proxy konfigurációját a podokon és a csomópontokon, valamint azt, hogy a környezeti változók tartalmazzák a megfelelő http_proxy, https_proxy, és no_proxy értékeket a kubectl describe pod parancs használatával.

    kubectl describe {any pod} -n kube-system
    

    A proxyváltozók podokban való beállításának ellenőrzéséhez ellenőrizheti a csomópontokon található környezeti változókat.

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

HTTP-proxy letiltása meglévő klaszteren előzetes verzió

Bővítmény telepítése aks-preview

  1. Telepítse az aks-preview Azure CLI-bővítményt a az extension add paranccsal.

    Fontos

    Az AKS előzetes verziójú funkciói önkiszolgáló, opt-in alapon érhetők el. Az előzetes verziókat "ahogy van" és "rendelkezésre állóként" biztosítjuk, és a szolgáltatási szerződésekből és a korlátozott jótállásból kizárjuk őket. Az AKS előzetes verzióihoz részleges támogatást nyújt az ügyfélszolgálat a tőle telhető legjobb módon. Ezért ezek a funkciók nem éles használatra vannak szánva. További információkért tekintse meg az alábbi támogatási cikkeket:

    az extension add --name aks-preview
    
  2. Frissítsen a bővítmény legújabb verziójára a az extension update paranccsal. A HTTP-proxy letiltásához legalább 18.0.0b13 szükséges.

    az extension update --name aks-preview
    

Funkciójelző regisztrálása DisableHTTPProxyPreview

  1. Regisztrálja a DisableHTTPProxyPreview funkciójelzőt a az feature register paranccsal.

    az feature register --namespace Microsoft.ContainerService --name DisableHTTPProxyPreview
    
  2. Ellenőrizze a regisztrációs állapotot a az feature show paranccsal. Néhány percig tart, amíg az állapot megjelenik a Regisztrált állapotban.

    az feature show --namespace Microsoft.ContainerService --name DisableHTTPProxyPreview
    
  3. Ha az állapot a Regisztrált állapotot tükrözi, frissítse a Microsoft.ContainerService erőforrás-szolgáltató regisztrációját a az provider register paranccsal.

    az provider register --namespace Microsoft.ContainerService
    

Klaszter frissítése a HTTP-proxy kikapcsolásához (előzetes verzió)

  1. Frissítse a fürtöt azzal, hogy letiltja a HTTP-proxyt a az aks update parancs és a --disable-http-proxy jelölő használatával.

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

Figyelmeztetés

Az AKS automatikusan újrakonfigurálja a fürt összes csomópontkészletét, amikor a parancs használatával az aks update frissíti a fürt proxykonfigurációját. A podkimaradási költségvetések (PDB-k) használatával megvédheti a kritikus podok megszakadását az újraimálás során.

  1. Ellenőrizze, hogy a HTTP-proxy le van-e tiltva, ha ellenőrzi, hogy a HTTP-proxykonfiguráció nincs-e beállítva a podokon és csomópontokon a kubectl describe pod parancs használatával.

    kubectl describe {any pod} -n kube-system
    

    Ha ellenőrizni szeretné, hogy a proxyváltozók nincsenek-e podokban beállítva, ellenőrizheti a csomópontokon található környezeti változókat.

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

HTTP proxy újbóli engedélyezése meglévő fürtben

Fürt létrehozásakor a HTTP-proxy alapértelmezés szerint engedélyezve van. Ha letiltja a HTTP-proxyt egy fürtben, a proxykonfiguráció az adatbázisban lesz mentve, de a proxyváltozók el lesznek távolítva a podokból és csomópontokból.

Ha újra engedélyezni szeretné a HTTP-proxyt egy meglévő fürtön, használja a az aks update jelölőt tartalmazó --enable-http-proxy parancsot.

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

Figyelmeztetés

Az AKS automatikusan újrakonfigurálja a fürt összes csomópontkészletét, amikor a parancs használatával az aks update frissíti a fürt proxykonfigurációját. A podkimaradási költségvetések (PDB-k) használatával megvédheti a kritikus podok megszakadását az újraimálás során.

Fontos

Ha a letiltás előtt HTTP-proxykonfigurációja volt a fürtön, a meglévő HTTP-proxykonfiguráció automatikusan érvényes, amikor újra engedélyezi a HTTP-proxyt a fürtön. Javasoljuk, hogy a folytatás előtt ellenőrizze a konfigurációt, hogy megfeleljen a jelenlegi követelményeknek. Ha a HTTP-proxy újbóli engedélyezése után módosítani szeretné a HTTP-proxy konfigurációját, kövesse a meglévő fürt HTTP-proxykonfigurációjának frissítéséhez szükséges lépéseket.

HTTP-proxykonfiguráció konfigurálása Azure Resource Manager-sablonnal

AKS fürtöt telepíthet egy HTTP proxyval az ARM sablon használatával.

  1. Tekintse át az egyes paraméterek követelményeit:

    • httpProxy: A fürtön kívüli HTTP-kapcsolatok létrehozásához használható proxy URL-cím. Az URL séma http kell, hogy legyen.
    • httpsProxy: A fürtön kívüli HTTPS-kapcsolatok létrehozásához használható proxy URL-cím. Ha nincs meghatározva, akkor a httpProxy mind HTTP, mind HTTPS kapcsolatokra használatos.
    • noProxy: A cél domainnevek, domainek, IP-címek vagy egyéb hálózati CIDR-ek listája, amely kizárja a proxyzást.
    • trustedCa: Egy karakterláncot, amely tartalmazza az base64 encoded alternatív CA tanúsítvány tartalmát. Jelenleg csak a PEM formátum támogatott.

    Fontos

    A Kubernetes rendszer részét képező, Go-alapú komponensekkel való kompatibilitás érdekében a tanúsítványnak támogatnia kell a , a Common Name tanúsítványok helyett, amelyek elavultak.

    Az alkalmazások között különbségek vannak abban, hogy miként felelnek meg a környezeti változóknak http_proxy, https_proxy, és no_proxy. A Curl és a Python nem támogatja a CIDR-t a no_proxy, de a Ruby igen.

  2. Sablon létrehozása HTTP-proxyparaméterekkel. A sablonjában adja meg a httpProxy, httpsProxy és noProxy értékeit. Szükség esetén adjon meg egy értéket a trustedCa számára. Ugyanazt a sémát használják a CLI telepítésekor, és ez az Microsoft.ContainerService/managedClusters definícióban található a "properties" alatt, ahogyan az az alábbi példában is látható:

    "properties": {
        ...,
        "httpProxyConfig": {
          "enabled": "true",
            "httpProxy": "string",
            "httpsProxy": "string",
            "noProxy": [
                "string"
            ],
            "trustedCa": "string"
        }
    }
    
  3. Telepítse az ARM-sablont a HTTP-proxy konfigurációjával. A fürtnek úgy kell inicializálódnia, hogy a HTTP proxy konfigurálva legyen a csomópontokon.

HTTP-proxykonfiguráció frissítése

A HTTP-proxykonfigurációkat frissítheti meglévő fürtökön, például:

  • Meglévő fürt frissítése HTTP-proxy engedélyezéséhez és új HTTP-proxykonfiguráció hozzáadásához.
  • Meglévő fürt frissítése HTTP-proxykonfiguráció módosításához.

HTTP-proxyfrissítési szempontok

A --http-proxy-config paramétert egy új JSON-fájlra kell állítani, amely a , httpProxy, httpsProxyés noProxy szükség esetén frissített értékeket trustedCatartalmazza. A frissítés új környezeti változókat injektál a podokba az új httpProxy, httpsProxy, vagy noProxy értékekkel. A podokat újra kell indítani az alkalmazások számára, hogy azokat felvegyék, mert a környezeti változó értékeket egy mutálást végző belépési webhook injektálja.

Megjegyzés

Ha egy új proxyra vált, az új proxynak már léteznie kell ahhoz, hogy a frissítés sikeres legyen. A frissítés befejezése után törölheti a régi proxyt.

ARM-sablon frissítése HTTP-proxy konfigurálásához

  1. A sablonban biztosítson új értékeket a httpProxy, httpsProxy és noProxy számára. Szükség esetén adjon meg egy értéket a trustedCa számára.

    Ugyanazt a sémát használják a CLI telepítésekor, és ez az Microsoft.ContainerService/managedClusters definícióban található a "properties" alatt, ahogyan az az alábbi példában is látható:

    "properties": {
        ...,
        "httpProxyConfig": {
            "enabled": "true",
            "httpProxy": "string",
            "httpsProxy": "string",
            "noProxy": [
                "string"
            ],
            "trustedCa": "string"
        }
    }
    
  2. Telepítse az ARM-sablont a frissített HTTP-proxykonfigurációval.

Figyelmeztetés

Az AKS automatikusan újrakonfigurálja a fürt összes csomópontkészletét, amikor a parancs használatával az aks update frissíti a fürt proxykonfigurációját. A podkimaradási költségvetések (PDB-k) használatával megvédheti a kritikus podok megszakadását az újraimálás során.

  1. Ellenőrizze a HTTP-proxy konfigurációját a podokon és a csomópontokon, valamint azt, hogy a környezeti változók tartalmazzák a megfelelő http_proxy, https_proxy, és no_proxy értékeket a kubectl describe pod parancs használatával.

    kubectl describe {any pod} -n kube-system
    

    A proxyváltozók podokban való beállításának ellenőrzéséhez ellenőrizheti a csomópontokon található környezeti változókat.

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

HTTP proxy letiltása egy meglévő fürtön ARM-sablon használatával (előzetes verzió)

Bővítmény telepítése aks-preview

  1. Telepítse az aks-preview Azure CLI-bővítményt a az extension add paranccsal.

    Fontos

    Az AKS előzetes verziójú funkciói önkiszolgáló, opt-in alapon érhetők el. Az előzetes verziókat "ahogy van" és "rendelkezésre állóként" biztosítjuk, és a szolgáltatási szerződésekből és a korlátozott jótállásból kizárjuk őket. Az AKS előzetes verzióihoz részleges támogatást nyújt az ügyfélszolgálat a tőle telhető legjobb módon. Ezért ezek a funkciók nem éles használatra vannak szánva. További információkért tekintse meg az alábbi támogatási cikkeket:

    az extension add --name aks-preview
    
  2. Frissítsen a bővítmény legújabb verziójára a az extension update paranccsal. A HTTP-proxy letiltásához legalább 18.0.0b13 szükséges.

    az extension update --name aks-preview
    

Funkciójelző regisztrálása DisableHTTPProxyPreview

  1. Regisztrálja a DisableHTTPProxyPreview funkciójelzőt a az feature register paranccsal.

    az feature register --namespace Microsoft.ContainerService --name DisableHTTPProxyPreview
    
  2. Ellenőrizze a regisztrációs állapotot a az feature show paranccsal. Néhány percig tart, amíg az állapot megjelenik a Regisztrált állapotban.

    az feature show --namespace Microsoft.ContainerService --name DisableHTTPProxyPreview
    
  3. Ha az állapot a Regisztrált állapotot tükrözi, frissítse a Microsoft.ContainerService erőforrás-szolgáltató regisztrációját a az provider register paranccsal.

    az provider register --namespace Microsoft.ContainerService
    

Klaszter frissítése a HTTP-proxy letiltására

  1. Frissítse a fürt ARM-sablonját, hogy letiltsa a HTTP-proxyt, a következő beállítással: enabledfalse. Ugyanazt a sémát használják a CLI telepítésekor, és ez az Microsoft.ContainerService/managedClusters definícióban található a "properties" alatt, ahogyan az az alábbi példában is látható:

    "properties": {
        ...,
        "httpProxyConfig": {
           "enabled": "false",
        }
    }
    
  2. Az ARM-sablon üzembe helyezése letiltott HTTP-proxyval.

Figyelmeztetés

Az AKS automatikusan újrakonfigurálja a fürt összes csomópontkészletét, amikor a parancs használatával az aks update frissíti a fürt proxykonfigurációját. A podkimaradási költségvetések (PDB-k) használatával megvédheti a kritikus podok megszakadását az újraimálás során.

  1. Ellenőrizze, hogy a HTTP-proxy le van-e tiltva, ha ellenőrzi, hogy a HTTP-proxy konfigurációja nincs-e beállítva a podokon és csomópontokon a kubectl describe pod parancs használatával.

    kubectl describe {any pod} -n kube-system
    

    Ha ellenőrizni szeretné, hogy a proxyváltozók nincsenek-e podokban beállítva, ellenőrizheti a csomópontokon található környezeti változókat.

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

HTTP proxy újbóli engedélyezése meglévő fürtben

Fürt létrehozásakor a HTTP-proxy alapértelmezés szerint engedélyezve van. Ha letiltja a HTTP-proxyt egy fürtön, többé nem adhat hozzá HTTP-proxykonfigurációkat a fürthöz.

Ha újra engedélyezni szeretné a HTTP-proxyt, kövesse a HTTP-proxykonfiguráció ARM-sablonnal történő frissítéséhez szükséges lépéseket.


Istio bővítmény HTTP-proxy külső szolgáltatásokhoz

Ha az Istio-alapú service mesh bővítményt használja az AKS-hez, létre kell hoznia egy szolgáltatásbejegyzést, amely lehetővé teszi a hálóban lévő alkalmazások számára, hogy http-proxyn keresztül elérhessék a nemcluster vagy külső erőforrásokat.

Például:

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. Hozzon létre egy fájlt, és adjon meg értékeket a PROXY_IP és PROXY_PORT számára.

  2. A szolgáltatásbejegyzés üzembe helyezéséhez használja a következőt:

    kubectl apply -f service_proxy.yaml
    

A bővítmény konfigurációjának figyelése

A megfigyelési bővítménnyel ellátott HTTP proxy a következő konfigurációkat támogatja:

  • Kimenő proxy hitelesítés nélkül
  • Kimenő proxy megbízható tanúsítvánnyal a Log Analytics végpont számára

A következő konfiguráció nem támogatott:

  • Egyéni metrikák és ajánlott riasztások funkciók megbízható tanúsítványokkal rendelkező proxyk használatakor

Következő lépések

További információért az AKS klaszterek hálózati követelményeivel kapcsolatban, lásd A klasztercsomópontok kiáramló forgalmának vezérlése AKS-ben.