Megosztás a következőn keresztül:


Üzembehelyezési biztosítékok használata az ajánlott eljárások kikényszerítéséhez az Azure Kubernetes Service-ben (AKS) (előzetes verzió)

Ez a cikk bemutatja, hogyan érvényesítheti az ajánlott eljárásokat az Azure Kubernetes Service-fürtökön az üzembehelyezési garanciák használatával.

Áttekintés

A fejlesztési életciklus során gyakori, hogy hibák, problémák és egyéb problémák merülnek fel, ha a Kubernetes-erőforrások kezdeti üzembe helyezése helytelen konfigurációkat tartalmaz. A Kubernetes-fejlesztés terheinek csökkentése érdekében az Azure Kubernetes Service (AKS) üzembe helyezési biztosítékokat kínál (előzetes verzió). Az üzembe helyezési biztosítékok azure policy-vezérlőkkel kényszerítik ki a Kubernetes ajánlott eljárásait az AKS-fürtben.

Az üzembe helyezési biztosítékok két konfigurációs szintet kínálnak:

  • Warning: Figyelmeztető üzeneteket jelenít meg a kódterminálban, hogy figyelmeztessen a nem megfelelő fürtkonfigurációkra, de továbbra is lehetővé teszi a kérés teljesítését.
  • Enforcement: A megfelelő konfigurációk kikényszerítéséhez tiltsa le és mutálja az üzemelő példányokat, ha nem követik az ajánlott eljárásokat.

Miután konfigurálta a "Figyelmeztetés" vagy a "Kényszerítés" üzembehelyezési biztosítékait, az üzembe helyezési védelem programozott módon értékeli a fürtöket a létrehozáskor vagy a frissítési időpontban a megfelelőség érdekében. Az üzembe helyezési biztosítékok emellett összesített megfelelőségi információkat is megjelenítenek a számítási feladatok között erőforrásszinten az Azure Policy megfelelőségi irányítópultján keresztül az Azure Portalon , illetve a parancssori felületen vagy a terminálon. A nem megfelelő számítási feladatok futtatása azt jelzi, hogy a fürt nem követi az ajánlott eljárásokat, és hogy a fürt számítási feladatait a fürt konfigurációja által okozott problémák fenyegetik.

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:

Előfeltételek

  • Engedélyeznie kell az Azure Policy bővítményt az AKS-hez. További információ: Azure Policy engedélyezése az AKS-fürtön.

  • Az üzembehelyezési biztosítékok konfigurálásához a bővítmény verziójával vagy újabb verziójával 2.0.0b1 kell rendelkeznie aks-preview . A bővítmény telepítéséhez lásd : Az aks-preview CLI bővítmény telepítése. Azt is javasoljuk, hogy frissítse az Azure CLI-t, hogy biztosan a legújabb verzió legyen telepítve.

  • Az üzembe helyezési védelem konfigurációjának létrehozásához és módosításához az AKS-fürtön az alábbi engedélyekkel rendelkező előfizetésre van szüksége:

    • Microsoft.Authorization/policyAssignments/write
    • Microsoft.Authorization/policyAssignments/read
  • Regisztrálnia kell az üzembehelyezési biztonsági funkciók jelzőjét. A funkciójelző regisztrálásához tekintse meg a funkciójelző regisztrálását az üzembe helyezési védelmi funkciókhoz.

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

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

    az extension add --name aks-preview
    
  2. Frissítse a bővítményt, hogy biztosan a legújabb verzió legyen telepítve a az extension update parancs használatával.

    az extension update --name aks-preview
    

Az üzembe helyezési védelmi funkciók jelölőjének regisztrálása

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

    az feature register --namespace Microsoft.ContainerService --name SafeguardsPreview
    

    Néhány percig tart, amíg az állapot megjelenik a Regisztrált állapotban.

  2. Ellenőrizze a regisztrációs állapotot a az feature show paranccsal.

    az feature show --namespace Microsoft.ContainerService --name SafeguardsPreview
    
  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
    

Üzembe helyezési biztonsági szabályzatok

Feljegyzés

A ReadOnlyRootFilesystem szabályzatok és RootfilesystemInitContainers szabályzatok jelenleg csak Linuxon érhetők el.

Az alábbi táblázat azokat a szabályzatokat sorolja fel, amelyek aktívvá válnak, és azokat a Kubernetes-erőforrásokat, amelyeket az üzembehelyezési védelem engedélyezésekor megcéloznak. Az Azure Portalon jelenleg elérhető üzembehelyezési biztosítékokat Azure Policy-definícióként vagy az Azure Kubernetes Service beépített Azure Policy-definícióiban tekintheti meg. A gyűjtemény célja, hogy létrehozzák a legtöbb felhasználóra és használati esetekre vonatkozó ajánlott eljárások általános és általános listáját.

Üzembehelyezési védelmi szabályzat Célzott Kubernetes-erőforrás Mutáció eredménye, ha elérhető
[Előzetes verzió]: Nem szerkeszthetők az egyes csomópontok Csomópont n/a
A Kubernetes-fürttárolók CPU- és memóriaerőforrás-korlátai nem léphetik túl a megadott korlátokat Pod 500 m-re állítja a CPU-erőforráskorlátokat, ha nincs megadva, és a memóriakorlátokat 500Mi értékre állítja, ha nincs elérési út
[Előzetes verzió]: Affinitás elleni szabályokkal kell rendelkeznie Üzembe helyezés, StatefulSet, ReplicationController, ReplicaSet n/a
[Előzetes verzió]: Nincsenek AKS-specifikus címkék Üzembe helyezés, StatefulSet, Replikakészlet n/a
A Kubernetes-fürttárolók csak engedélyezett lemezképeket használhatnak Pod n/a
[Előzetes verzió]: Fenntartott rendszerkészlet-fertőzöttek Csomópont Eltávolítja a CriticalAddonsOnly fertőzöttet egy felhasználói csomópontkészletből, ha nincs beállítva. Az AKS a fertőzöttel CriticalAddonsOnly távol tartja az ügyfél podjait a rendszerkészlettől. Ez a konfiguráció biztosítja az AKS-összetevők és az ügyfél podok egyértelmű elkülönítését, és megakadályozza az olyan ügyfél podok kiürítését, amelyek nem tolerálják a CriticalAddonsOnly fertőzést.
Győződjön meg arról, hogy a fürttárolók készenlét- vagy élettartam-mintavételeket konfiguráltak Pod n/a
A Kubernetes-fürtöknek a StorageClass tárolótároló-illesztőt (CSI) kell használniuk StorageClass n/a
[Előzetes verzió]: A Kubernetes-fürtnek pontos podkimaradási költségvetéseket kell implementálnia Üzembe helyezés, ReplicaSet, StatefulSet A maxUnavailable PodDisruptionBudget erőforrás beállítása 1 értékre.
[Előzetes verzió]: A Kubernetes-fürtszolgáltatásoknak egyedi választókat kell használniuk Szolgáltatás n/a
[Előzetes verzió]: ReadOnlyRootFilesystem a Pod specifikációja igaz értékre van állítva Pod Ha readOnlyRootFilesystem nincs beállítva, a Pod specifikációban true beállítja a beállításokat. Ez a konfiguráció megakadályozza, hogy a tárolók a gyökér fájlrendszerbe írjanak.
[Előzetes verzió]: RootfilesystemInitContainers a Pod specifikációja igaz értékre van állítva Pod Ha rootFilesystemInitContainers nincs beállítva, a Pod specifikációban true beállítja a beállításokat.
[Előzetes verzió]: A Kubernetes-fürttároló lemezképei nem tartalmazhatják a legújabb képcímkét Üzembe helyezés, StatefulSet, ReplicationController, ReplicaSet n/a
[Előzetes verzió]: A Kubernetes-fürttároló lemezképeinek tartalmazniuk kell a preStop hookot Üzembe helyezés, StatefulSet, ReplicationController, ReplicaSet n/a

Ha el szeretne küldeni egy ötletet vagy egy üzembehelyezési biztonsági műveletet, nyisson meg egy problémát az AKS GitHub-adattárban , és adja hozzá [deployment safeguards request] a cím elejéhez.

Üzembe helyezési biztosítékok engedélyezése

Feljegyzés

Ha első alkalommal engedélyezte az Azure Policyt az üzembehelyezési biztosítékok használatára, előfordulhat, hogy akár 20 percet is várnia kell, amíg az Azure Policy érvénybe lép.

Az üzembehelyezési védelmi Enforcement szint használata azt jelenti, hogy ön úgy dönt, hogy letiltja és mutálja az üzemelő példányokat. Mielőtt engedélyezné, gondolja át, hogyan működnek ezek a szabályzatok az AKS-fürttel Enforcement.

Üzembehelyezési biztosítékok engedélyezése új fürtön

Engedélyezze az üzembehelyezési védelmet egy új fürtön a az aks create parancs és a --safeguards-version--safeguards-level jelzők használatával.

Ha meg nem felelési figyelmeztetéseket szeretne kapni, állítsa a --safeguards-level következőre Warning: . Ha meg szeretné tagadni vagy mutálni szeretné az összes nem megfelelő üzemelő példányt, állítsa be a következőre Enforcement: . A figyelmeztetések fogadásához állítsa a --safeguards-level "Figyelmeztetés" értéket. Ha minden olyan üzembe helyezést meg szeretne tagadni vagy mutálni, amely nem tartja be az üzembe helyezési biztosítékokat, állítsa a --safeguards-level "Kényszerítés" értéket. Az üzembe helyezési védelmi verzió beállításához használja a jelölőt --safeguards-version . Jelenleg a 2.0.0-s verzió az üzembe helyezési biztosítékok legújabb verziója.

az aks create \
    --name myAKSCluster \
    --resource-group myResourceGroup \
    --enable-addons azure-policy \
    --safeguards-level Warning \
    --safeguards-version v2.0.0 \
    --generate-ssh-keys

Üzembehelyezési biztosítékok engedélyezése meglévő fürtön

Engedélyezze az üzembehelyezési védelmet egy meglévő fürtön, amelyen engedélyezve van az Azure Policy bővítmény a az aks update parancs és a --safeguards-level--safeguards-version jelzők használatával. Ha meg nem felelési figyelmeztetéseket szeretne kapni, állítsa a --safeguards-level következőre Warning: . Ha meg szeretné tagadni vagy mutálni szeretné az összes nem megfelelő üzemelő példányt, állítsa be a következőre Enforcement: .

az aks update --name myAKSCluster --resource-group myResourceGroup --safeguards-level Enforcement --safeguards-version v2.0.0

Ha frissíteni szeretné egy meglévő fürt üzembehelyezési védelmi szintjét, használja a az aks update parancsot a --safeguards-level következőre beállított Warning jelölővel: vagy Enforcement.

az aks update --name myAKSCluster --resource-group myResourceGroup --safeguards-level Enforcement

Névterek kizárása

Bizonyos névtereket kizárhat az üzembe helyezési védelemből is. Ha kizár egy névteret, az abban a névtérben lévő tevékenységeket az üzembe helyezési figyelmeztetések és kényszerítések nem érintik.

Például a névterek ns1 kizárásához használja ns2a névterek vesszővel tagolt listáját a --safeguards-excluded-ns jelölővel, ahogyan az az alábbi példában látható:

az aks update --name myAKSCluster --resource-group myResourceGroup --safeguards-level Warning --safeguards-version v2.0.0 --safeguards-excluded-ns ns1,ns2 

Az üzembehelyezési védelmi verzió frissítése

Feljegyzés

A 2.0.0-s verzió az üzembe helyezési biztosítékok legújabb verziója.

Frissítse az üzembehelyezési védelmi verziót a az aks update parancs használatával az --safeguards-version új verzióra beállított jelzővel. Az alábbi példa egy meglévő fürtöt frissít a 2.0.0-s verzió használatára:

az aks update --name myAKSCluster --resource-group myResourceGroup --safeguards-version v2.0.0

Megfelelőség ellenőrzése fürtök között

A Kubernetes-jegyzék üzembe helyezése után figyelmeztetések vagy lehetséges megtagadási üzenet jelenik meg a parancssori felületen vagy a terminálon, ha a fürt nem felel meg az üzembehelyezési garanciáknak, ahogyan az alábbi példákban is látható:

Figyelmeztetés

$ kubectl apply -f pod.yml
Warning: [azurepolicy-k8sazurev2containerenforceprob-0e8a839bcd103e7b96a8] Container <my-container> in your Pod <my-pod> has no <livenessProbe>. Required probes: ["readinessProbe", "livenessProbe"]
Warning: [azurepolicy-k8sazurev2containerenforceprob-0e8a839bcd103e7b96a8] Container <my-container> in your Pod <my-pod> has no <readinessProbe>. Required probes: ["readinessProbe", "livenessProbe"]
Warning: [azurepolicy-k8sazurev1restrictedlabels-67c4210cc58f28acdfdb] Label <{"kubernetes.azure.com"}> is reserved for AKS use only
Warning: [azurepolicy-k8sazurev3containerlimits-a8754961dbd4c1d8b49d] container <my-container> has no resource limits
Warning: [azurepolicy-k8sazurev1containerrestrictedi-bde07e1776cbcc9aa8b8] my-pod in default does not have imagePullSecrets. Unauthenticated image pulls are not recommended.
pod/my-pod created

Kikényszerítés

Az üzembe helyezési védelmi mutációkkal a Enforcement szint adott esetben mutálja a Kubernetes-erőforrásokat. A Kubernetes-erőforrásoknak azonban továbbra is át kell adniuk az összes biztonsági elemet a sikeres üzembe helyezéshez. Ha a védelmi szabályzatok nem sikerülnek, a rendszer megtagadja az erőforrást, és nem lesz üzembe helyezve.

$ kubectl apply -f pod.yml
Error from server (Forbidden): error when creating ".\pod.yml": admission webhook "validation.gatekeeper.sh" denied the request: [azurepolicy-k8sazurev2containerenforceprob-0e8a839bcd103e7b96a8] Container <my-container> in your Pod <my-pod> has no <livenessProbe>. Required probes: ["readinessProbe", "livenessProbe"]
[azurepolicy-k8sazurev2containerenforceprob-0e8a839bcd103e7b96a8] Container <my-container> in your Pod <my-pod> has no <readinessProbe>. Required probes: ["readinessProbe", "livenessProbe"]
[azurepolicy-k8sazurev2containerallowedimag-1ff6d14b2f8da22019d7] Container image my-image for container my-container has not been allowed.
[azurepolicy-k8sazurev1restrictedlabels-67c4210cc58f28acdfdb] Label <{"kubernetes.azure.com"}> is reserved for AKS use only
[azurepolicy-k8sazurev1containerrestrictedi-bde07e1776cbcc9aa8b8] my-pod in default does not have imagePullSecrets. Unauthenticated image pulls are not recommended.

Ha a Kubernetes-erőforrások megfelelnek a vonatkozó mutációs garanciáknak, és megfelelnek az összes többi védelmi követelménynek, sikeresen üzembe lesznek helyezve az alábbi példában látható módon:

$ kubectl apply -f pod.yml
pod/my-pod created

A fürtök közötti megfelelőség ellenőrzése az Azure Policy irányítópultján

Ha ellenőrizni szeretné, hogy az üzembehelyezési biztosítékok alkalmazva lettek-e, és ellenőrizni szeretné a fürt megfelelőségét, lépjen a fürt Azure Portal oldalára, és válassza a Szabályzatok lehetőséget, majd válassza az Azure Policy megnyitása lehetőséget.

A szabályzatok és kezdeményezések listájában válassza ki az üzembe helyezési biztosítékokkal kapcsolatos kezdeményezést. Megjelenik egy irányítópult, amelyen a megfelelőségi állapot látható az AKS-fürtön.

Feljegyzés

Az AKS-fürt megfelelőségének megfelelő értékeléséhez az Azure Policy-kezdeményezésnek a fürt erőforráscsoportjára kell kiterjednie.

Az üzembehelyezési biztosítékok letiltása

Tiltsa le a fürt üzembehelyezési védelmét a az aks update parancs használatával, és állítsa a --safeguards-level következőre Off: .

az aks update --name myAKSCluster --resource-group myResourceGroup --safeguards-level Off

--

GYIK

Első alkalommal engedélyeztem az üzembe helyezési védelmet az Azure Policy használatával. Miért nem látok figyelmeztetést? Miért nem utasítják el a podokat?

Az Azure Policy az első engedélyezés után akár 35 percet is igénybe vehet a fürttel való szinkronizáláshoz.

Most váltottam a Figyelmeztetésről a Végrehajtásra. Ez azonnal érvénybe lép?

Az üzembehelyezési védelmi szintek közötti váltáskor előfordulhat, hogy akár 15 percet is várnia kell az új szint érvénybe lépéséhez.

Létrehozhatok saját mutációkat?

Szám Ha van ötlete a védelemre, nyisson meg egy problémát az AKS GitHub-adattárban , és adja hozzá [deployment safeguards request] a cím elejéhez.

Választhatom ki és választhatom ki, hogy mely mutációkat szeretném a kényszerítésben?

Szám Az üzembe helyezési védelem teljes vagy semmi. A figyelmeztetés vagy a kényszerítés bekapcsolása után minden biztonsági funkció aktív lesz.

Miért lett elismerve az üzembehelyezési erőforrásom annak ellenére, hogy nem követte az ajánlott eljárásokat?

Az üzembe helyezési biztosítékok az ajánlott eljárásokra vonatkozó szabványokat érvényre juttatják az Azure Policy-vezérlőkkel, és olyan szabályzatokkal rendelkezik, amelyek a Kubernetes-erőforrásokon érvényesítik azokat. A fürtösszetevők kiértékeléséhez és kényszerítéséhez az Azure Policy kibővíti a Gatekeepert. A gatekeeper-kényszerítés jelenleg egy fail-open modellben is működik. Mivel nincs garancia arra, hogy a Gatekeeper válaszol a hálózati hívásunkra, győződjön meg arról, hogy ebben az esetben az ellenőrzés kimarad, hogy a megtagadás ne blokkolja az üzemelő példányokat.

További információ: számítási feladatok érvényesítése a Gatekeeperben.

Következő lépések

  • További információ az AKS-fürtök üzemeltetésének ajánlott eljárásairól.