Pod-tesztkörnyezet (előzetes verzió) az Azure Kubernetes Service-lel (AKS)

A tároló számítási feladatainak biztonságossá tételéhez és a nem megbízható vagy potenciálisan rosszindulatú kódok elleni védelméhez az AKS most már tartalmaz egy Pod Sandboxing (előzetes verzió) nevű mechanizmust. A Pod-tesztkörnyezet elkülönítési határt biztosít a tárolóalkalmazás, valamint a tároló gazdagép megosztott kernel- és számítási erőforrásai között. Például processzor, memória és hálózatkezelés. A Pod Sandboxing kiegészíti az egyéb biztonsági intézkedéseket vagy adatvédelmi vezérlőket a teljes architektúrával, hogy megfeleljen a bizalmas információk védelmére vonatkozó szabályozási, iparági vagy szabályozási megfelelőségi követelményeknek.

Ez a cikk segít megérteni ezt az új funkciót, és annak implementálását.

Előfeltételek

  • Az Azure CLI 2.44.1-es vagy újabb verziója. Futtassa az --version a verziót, és futtassa az upgrade a verzió frissítéséhez. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.

  • Az aks-preview Azure CLI-bővítmény 0.5.123-es vagy újabb verziója.

  • Regisztrálja a KataVMIsolationPreview funkciót az Azure-előfizetésében.

  • Az AKS az összes AKS hálózati beépülő modullal támogatja az 1.24.0-s és újabb verzió pod-tesztkörnyezetét (előzetes verzió).

  • Kubernetes-fürt kezeléséhez használja a Kubernetes parancssori ügyfélalkalmazás kubectl-ét. Az Azure Cloud Shell a .kubectl A kubectl helyi telepítéséhez használja az az aks install-cli parancsot.

Az aks-preview Azure CLI-bővítmény telepítése

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óit részben az ügyfélszolgálat fedezi a legjobb munkamennyiség alapján. 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 aks-preview bővítmény telepítéséhez futtassa a következő parancsot:

az extension add --name aks-preview

Futtassa a következő parancsot a bővítmény legújabb verziójára való frissítéshez:

az extension update --name aks-preview

A KataVMIsolationPreview funkciójelző regisztrálása

Regisztrálja a KataVMIsolationPreview funkciójelzőt az az feature register paranccsal, ahogyan az az alábbi példában látható:

az feature register --namespace "Microsoft.ContainerService" --name "KataVMIsolationPreview"

Néhány percig tart, amíg az állapot megjelenik a Regisztrált állapotban. Ellenőrizze a regisztrációs állapotot az az feature show paranccsal:

az feature show --namespace "Microsoft.ContainerService" --name "KataVMIsolationPreview"

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

az provider register --namespace "Microsoft.ContainerService"

Korlátozások

A Pod-tesztkörnyezet (előzetes verzió) előzetes verziójával kapcsolatos korlátozások a következők:

Hogyan működik?

Ennek a funkciónak az AKS-en való eléréséhez az AKS-veremhez készült Azure Linux-tároló gazdagépen futó Kata-tárolók hardveresen kényszerített elkülönítést biztosítanak. A Pod Sandboxing kibővíti a hardverelkülönítés előnyeit, például egy külön kernelt minden Kata-podhoz. A hardverelkülönítés erőforrásokat foglal le az egyes podokhoz, és nem osztja meg őket más, ugyanazon a gazdagépen futó Kata-tárolókkal vagy névtértárolókkal.

A megoldásarchitektúra a következő összetevőkön alapul:

A Pod-tesztkörnyezet Kata-tárolókkal való üzembe helyezése hasonló a tárolók üzembe helyezéséhez használt szabványos tárolóalapú munkafolyamathoz. Az üzembe helyezés tartalmazza a podsablonban definiálható kata-futtatókörnyezeti beállításokat.

Ha ezt a funkciót podtal szeretné használni, az egyetlen különbség a runtimeClassNamekata-mshv-vm-isolation hozzáadása a pod specifikációjához.

Amikor egy pod a kata-mshv-vm-isolation runtimeClass szolgáltatást használja, létrehoz egy virtuális gépet, amely pod-tesztkörnyezetként szolgál a tárolók üzemeltetéséhez. A virtuális gép alapértelmezett memóriája 2 GB, az alapértelmezett processzor pedig egy mag, ha a tárolóerőforrás-jegyzék (containers[].resources.limits) nem határoz meg korlátot a processzorra és a memóriára vonatkozóan. Ha a tárolóerőforrás-jegyzékben a cpu- vagy memóriakorlátot adja meg, a virtuális gép containers[].resources.limits.cpu argumentuma 1 egy + xCPU, az containers[].resources.limits.memory2 argumentum pedig a 2 GB + yMemory értéket adja meg. A tárolók csak a tárolók korlátaihoz használhatják a processzort és a memóriát. Ezeket containers[].resources.requests az előzetes verzió figyelmen kívül hagyja, miközben dolgozunk a processzor- és memóriaterhelés csökkentésén.

Új fürt üzembe helyezése

Hajtsa végre az alábbi lépéseket egy Azure Linux AKS-fürt üzembe helyezéséhez az Azure CLI használatával.

  1. Hozzon létre egy AKS-fürtöt az az aks create paranccsal, és adja meg a következő paramétereket:

    • --számítási feladat-futtatókörnyezet: Adja meg a KataMshvVmIsolation értéket a pod-tesztkörnyezet funkció engedélyezéséhez a csomópontkészleten. Ezzel a paraméterrel a többi paraméternek meg kell felelnie az alábbi követelményeknek. Ellenkező esetben a parancs meghiúsul, és a megfelelő paraméter(ek)sel kapcsolatos problémát jelez.
    • --os-sku: AzureLinux. Ebben az előzetes kiadásban csak az Azure Linux operációsrendszer-termékváltozat támogatja ezt a funkciót.
    • --node-vm-size: Minden Olyan Azure-beli virtuálisgép-méret, amely 2. generációs virtuális gép, és támogatja a beágyazott virtualizálási műveket. Például Dsv3 rendszerű virtuális gépek.

    Az alábbi példa egy myAKSCluster nevű fürtöt hoz létre egy csomóponttal a myResourceGroupban:

    az aks create --name myAKSCluster --resource-group myResourceGroup --os-sku AzureLinux --workload-runtime KataMshvVmIsolation --node-vm-size Standard_D4s_v3 --node-count 1
    
  2. Futtassa a következő parancsot a Kubernetes-fürt hozzáférési hitelesítő adatainak lekéréséhez. Használja az az aks get-credentials parancsot , és cserélje le a fürt nevének és az erőforráscsoport nevének értékeit.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  3. Listázhatja az összes podot az összes névtérben a kubectl get pods paranccsal.

    kubectl get pods --all-namespaces
    

Üzembe helyezés meglévő fürtön

Ha ezt a funkciót egy meglévő AKS-fürttel szeretné használni, a következő követelményeknek kell megfelelnie:

  • Kövesse a lépéseket a KataVMIsolationPreview funkciójelző regisztrálásához.
  • Ellenőrizze, hogy a fürt a Kubernetes 1.24.0-s vagy újabb verzióját futtatja-e.

Az alábbi paranccsal engedélyezheti a Pod-tesztkörnyezetet (előzetes verzió) egy csomópontkészlet létrehozásával a üzemeltetéséhez.

  1. Adjon hozzá egy csomópontkészletet az AKS-fürthöz az az aks nodepool add paranccsal. Adja meg a következő paramétereket:

    • --resource-group: Adja meg egy meglévő erőforráscsoport nevét az AKS-fürt létrehozásához.
    • --cluster-name: Adjon meg egy egyedi nevet az AKS-fürtnek, például a myAKSClusternek.
    • --name: Adjon meg egy egyedi nevet a fürtök csomópontkészletének, például a nodepool2-nek.
    • --számítási feladat-futtatókörnyezet: Adja meg a KataMshvVmIsolation értéket a pod-tesztkörnyezet funkció engedélyezéséhez a csomópontkészleten. A paraméter mellett ezeknek az --workload-runtime egyéb paramétereknek is meg kell felelniük a következő követelményeknek. Ellenkező esetben a parancs meghiúsul, és a megfelelő paraméter(ek)sel kapcsolatos problémát jelez.
      • --os-sku: AzureLinux. Ezt a funkciót csak az Azure Linux operációsrendszer-termékváltozat támogatja az előzetes kiadásban.
      • --node-vm-size: Minden Olyan Azure-beli virtuálisgép-méret, amely 2. generációs virtuális gép, és támogatja a beágyazott virtualizálási műveket. Például Dsv3 rendszerű virtuális gépek.

    Az alábbi példa egy csomópontkészletet ad hozzá a myAKSClusterhez egy csomóponttal a nodepool2-ben a myResourceGroupban:

    az aks nodepool add --cluster-name myAKSCluster --resource-group myResourceGroup --name nodepool2 --os-sku AzureLinux --workload-runtime KataMshvVmIsolation --node-vm-size Standard_D4s_v3
    
  2. Futtassa az az aks update parancsot a pod-tesztkörnyezet (előzetes verzió) engedélyezéséhez a fürtön.

    az aks update --name myAKSCluster --resource-group myResourceGroup
    

Megbízható alkalmazás üzembe helyezése

Ha be szeretné mutatni egy megbízható alkalmazás üzembe helyezését az AKS-fürt megosztott kernelén, hajtsa végre az alábbi lépéseket.

  1. Hozzon létre egy trusted-app.yaml nevű fájlt egy megbízható pod leírásához, majd illessze be a következő jegyzékfájlt.

    kind: Pod
    apiVersion: v1
    metadata:
      name: trusted
    spec:
      containers:
      - name: trusted
        image: mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11
        command: ["/bin/sh", "-ec", "while :; do echo '.'; sleep 5 ; done"]
    
  2. Telepítse a Kubernetes-podot a kubectl apply parancs futtatásával, és adja meg a trusted-app.yaml fájlt:

    kubectl apply -f trusted-app.yaml
    

    A parancs kimenete a következő példához hasonlít:

    pod/trusted created
    

Nem megbízható alkalmazás üzembe helyezése

A nem megbízható alkalmazások AKS-fürt pod-tesztkörnyezetben való üzembe helyezésének bemutatásához hajtsa végre az alábbi lépéseket.

  1. Hozzon létre egy untrusted-app.yaml nevű fájlt egy nem megbízható pod leírásához, majd illessze be a következő jegyzékfájlt.

    kind: Pod
    apiVersion: v1
    metadata:
      name: untrusted
    spec:
      runtimeClassName: kata-mshv-vm-isolation
      containers:
      - name: untrusted
        image: mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11
        command: ["/bin/sh", "-ec", "while :; do echo '.'; sleep 5 ; done"]
    

    A runtimeClassNameSpec értéke .kata-mhsv-vm-isolation

  2. Telepítse a Kubernetes-podot a kubectl apply parancs futtatásával, és adja meg a untrusted-app.yaml fájlt:

    kubectl apply -f untrusted-app.yaml
    

    A parancs kimenete a következő példához hasonlít:

    pod/untrusted created
    

Kernelelkülönítés konfigurációjának ellenőrzése

  1. Az AKS-fürtön belüli tároló eléréséhez indítsa el a rendszerhéj-munkamenetet a kubectl exec parancs futtatásával. Ebben a példában a tárolót a nem megbízható podon belül éri el.

    kubectl exec -it untrusted -- /bin/bash
    

    A Kubectl csatlakozik a fürthöz, az első tárolóban fut /bin/sh a nem megbízható podon belül, és továbbítja a terminál bemeneti és kimeneti adatfolyamait a tároló folyamatának. A rendszerhéj-munkamenetet a megbízható podot üzemeltető tárolóban is elindíthatja.

  2. Miután a rendszerhéj-munkamenetet a nem megbízható pod tárolójára irányítja, parancsokat futtathat annak ellenőrzéséhez, hogy a nem megbízható tároló pod-tesztkörnyezetben fut-e. Megfigyelheti, hogy a rendszermag verziója eltér a tesztkörnyezeten kívüli megbízható tárolótól.

    A kernelverzió megtekintéséhez futtassa a következő parancsot:

    uname -r
    

    Az alábbi példa a pod tesztkörnyezeti kernelének kimenetére hasonlít:

    root@untrusted:/# uname -r
    5.15.48.1-8.cm2
    
  3. Indítsa el a rendszerhéj-munkamenetet a megbízható pod tárolójában a kernelkimenet ellenőrzéséhez:

    kubectl exec -it trusted -- /bin/bash
    

    A kernelverzió megtekintéséhez futtassa a következő parancsot:

    uname -r
    

    Az alábbi példa a megbízható podot futtató virtuális gép kimenetéhez hasonlít, amely egy másik kernel, mint a pod tesztkörnyezetében futó nem megbízható pod:

    5.15.80.mshv2-hvl1.m2
    

Felesleges tartalmak törlése

Ha végzett a funkció kiértékelésével, az Azure-díjak elkerülése érdekében törölje a felesleges erőforrásokat. Ha az értékelés vagy a tesztelés részeként üzembe helyezett egy új fürtöt, az az aks delete paranccsal törölheti a fürtöt.

az aks delete --resource-group myResourceGroup --name myAKSCluster

Ha engedélyezte a pod-tesztkörnyezetet (előzetes verzió) egy meglévő fürtön, a kubectl delete pod paranccsal eltávolíthatja a pod(ok)t.

kubectl delete pod pod-name

Következő lépések

További információ az AKS-fürttel rendelkező csomópontok azure-beli dedikált gazdagépeiről az Azure platformkarbantartási események hardverelkülönítésének és vezérlésének használatára.