Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek poskytuje přehled o tom, jak používat ResourceOverride API k přepracování prostředků s oborovou platností v Azure Kubernetes Fleet Manageru.
Můžete upravit nebo přepsat konkrétní atributy existujících prostředků v rámci oboru názvů. Pomocí ResourceOverridemožnosti můžete definovat pravidla na základě popisků clusteru a zadat změny, které se mají použít u prostředků, jako jsou nasazení, stavové sady, objekty ConfigMap nebo tajné kódy.
Tyto změny můžou zahrnovat aktualizace imagí kontejnerů, proměnných prostředí, limitů prostředků nebo jakýchkoli jiných konfigurovatelných parametrů. Tyto aktualizace pomáhají zajistit konzistentní správu a vynucování konfigurací napříč clustery Kubernetes spravovanými prostřednictvím Správce flotily.
Rozhraní ResourceOverride API se skládá z následujících komponent:
-
resourceSelectors: Určuje sadu prostředků vybraných pro přepsání. -
policy: Určuje sadu pravidel, která se mají použít pro vybrané prostředky.
Selektory prostředků
Objekt ResourceOverride může obsahovat jeden nebo více selektorů prostředků k určení prostředků, které se mají přepsat. Objekt ResourceSelector obsahuje následující pole.
-
group: Skupina rozhraní API prostředku. -
version: Verze rozhraní API prostředku. -
kind: Druh prostředku. -
namespace: Obor názvů prostředku.
Chcete-li přidat selektor prostředků do objektu ResourceOverride , použijte resourceSelectors pole s následujícím formátem YAML.
apiVersion: placement.kubernetes-fleet.io/v1alpha1
kind: ResourceOverride
metadata:
name: example-resource-override
namespace: test-namespace
spec:
resourceSelectors:
- group: apps
kind: Deployment
version: v1
name: test-nginx
Důležité
- Pokud vyberete obor názvů v
ResourceSelector, přepsání se použije na všechny zdroje v daném oboru názvů. - Objekt
ResourceOverridemusí být ve stejném oboru názvů jako prostředek, který chcete přepsat.
Tento příklad vybere objekt pojmenovaný Deploymenttest-nginx z test-namespace oboru názvů pro přepsání.
Zásady
Objekt Policy se skládá ze sady overrideRules , která určuje změny, které se mají použít u vybraných prostředků. Každý overrideRules objekt podporuje následující pole:
-
clusterSelector: Určuje sadu clusterů, na které se vztahuje pravidlo přepsání. -
jsonPatchOverrides: Určuje změny, které se mají použít u vybraných prostředků.
Chcete-li přidat pravidlo přepsání do objektu ResourceOverride , použijte policy pole s následujícím formátem YAML:
apiVersion: placement.kubernetes-fleet.io/v1alpha1
kind: ResourceOverride
metadata:
name: example-resource-override
namespace: test-namespace
spec:
resourceSelectors:
- group: apps
kind: Deployment
version: v1
name: test-nginx
policy:
overrideRules:
- clusterSelector:
clusterSelectorTerms:
- labelSelector:
matchLabels:
env: prod
jsonPatchOverrides:
- op: replace
path: /spec/template/spec/containers/0/image
value: "nginx:1.20.0"
Tento příklad nahradí image kontejneru v objektu Deploymentnginx:1.20.0 image pro clustery popiskem env: prod .
Selektor clusteru
Pole v objektu clusterSelector můžete použít overrideRules k určení prostředků, na které se pravidlo přepsání vztahuje. Objekt ClusterSelector podporuje následující pole:
-
clusterSelectorTerms: Seznam termínů, které určují kritéria pro výběr clusterů. Každý termín obsahujelabelSelectorpole, které definuje sadu popisků, které se mají shodovat.
Přepsání oprav JSON
V objektu jsonPatchOverrides můžete overrideRules určit změny, které se mají použít u vybraných prostředků. Objekt JsonPatch podporuje následující pole:
op: Operace, která se má provést. Mezi podporované operace patří:-
add: Přidá novou hodnotu do zadané cesty. -
remove: Odebere hodnotu v zadané cestě. -
replace: Nahradí hodnotu v zadané cestě.
-
path: Cesta k poli, které chcete upravit. Pokyny k určení cest zahrnují:- Musí začínat znakem lomítka (
/). - Nemůže být prázdný nebo obsahovat prázdný řetězec.
- Nemůže to být
TypeMetapole (/kindnebo/apiVersion). - Nemůže to být
Metadatapole (/metadata/namenebo/metadata/namespace), kromě polí/metadata/labelsa/metadata/annotations. - Ve stavu zdroje nemůže být žádné pole.
Mezi platné cesty patří:
/metadata/labels/new-label/metadata/annotations/new-annotation/spec/template/spec/containers/0/resources/limits/cpu/spec/template/spec/containers/0/resources/requests/memory
- Musí začínat znakem lomítka (
value: Hodnota, kterou chcete přidat, odebrat nebo nahradit. Pokudopjeremove, nemůžete zadatvalue.
Pole jsonPatchOverrides použijí opravu JSON u vybraných prostředků podle dokumentu RFC 6902.
Rezervované proměnné v hodnotě přepsání oprav JSON
Rezervované proměnné se nahradí hodnotou použitou v rámci pravidla opravy JSON. Aktuálně podporované rezervované proměnné:
-
${MEMBER-CLUSTER-NAME}: nahrazeno názvemmemberCluster.
Pokud například chcete vytvořit název hostitele Azure DNS, který obsahuje název clusteru, můžete použít konfiguraci podobnou této:
apiVersion: placement.kubernetes-fleet.io/v1alpha1
kind: ResourceOverride
metadata:
name: ro-kuard-demo-eastus
namespace: kuard-demo
spec:
placement:
name: crp-kuard-demo
resourceSelectors:
- group: ""
kind: Service
version: v1
name: kuard-svc
policy:
overrideRules:
- clusterSelector:
clusterSelectorTerms:
- labelSelector:
matchLabels:
fleet.azure.com/location: eastus
jsonPatchOverrides:
- op: add
path: /metadata/annotations
value:
{"service.beta.kubernetes.io/azure-dns-label-name":"fleet-${MEMBER-CLUSTER-NAME}-eastus"}
Ukázkový ResourceOverride objekt přidá hodnotu fleet-clustername-eastus do zadané cesty JSON v clusterech v eastus oblasti Azure.
Více pravidel přepsání
Do pole můžete přidat více overrideRules objektů policy , aby se u vybraných prostředků použilo více změn. Tady je příklad:
apiVersion: placement.kubernetes-fleet.io/v1alpha1
kind: ResourceOverride
metadata:
name: ro-1
namespace: test
spec:
resourceSelectors:
- group: apps
kind: Deployment
version: v1
name: test-nginx
policy:
overrideRules:
- clusterSelector:
clusterSelectorTerms:
- labelSelector:
matchLabels:
env: prod
jsonPatchOverrides:
- op: replace
path: /spec/template/spec/containers/0/image
value: "nginx:1.20.0"
- clusterSelector:
clusterSelectorTerms:
- labelSelector:
matchLabels:
env: test
jsonPatchOverrides:
- op: replace
path: /spec/template/spec/containers/0/image
value: "nginx:latest"
Tento příklad nahradí image kontejneru v objektu Deployment takto:
- Image
nginx:1.20.0pro clustery s popiskemenv: prod - Image
nginx:latestpro clustery s popiskemenv: test
Použití umístění prostředků clusteru
Vytvořte
ClusterResourcePlacementprostředek, který určí pravidla umístění pro distribuci přepsání prostředků napříč infrastrukturou clusteru. Následující kód je příkladem. Nezapomeňte vybrat odpovídající obory názvů.apiVersion: placement.kubernetes-fleet.io/v1 kind: ClusterResourcePlacement metadata: name: crp-example spec: resourceSelectors: - group: "" kind: Namespace name: test-namespace version: v1 policy: placementType: PickAll affinity: clusterAffinity: requiredDuringSchedulingIgnoredDuringExecution: clusterSelectorTerms: - labelSelector: matchLabels: env: prod - labelSelector: matchLabels: env: testTento příklad distribuuje prostředky ve
test-namespacevšech clusterech označenýchenv:prodjako aenv:test. Při implementaci změn se odpovídajícíResourceOverridekonfigurace použijí na určené prostředky. Výběr odpovídajícího prostředkumy-deploymentnasazení aktivuje aplikaci konfigurací určeným prostředkům.ClusterResourcePlacementPoužijte prostředek pomocíkubectl applypříkazu:kubectl apply -f cluster-resource-placement.yamlPomocí příkazu ověřte, že se
ResourceOverrideobjekt použil na vybrané prostředky. Zkontrolujte stavClusterResourcePlacementprostředku:kubectl describekubectl describe clusterresourceplacement crp-exampleVýstup by měl vypadat podobně jako v následujícím příkladu:
Status: Conditions: ... Message: The selected resources are successfully overridden in the 10 clusters Observed Generation: 1 Reason: OverriddenSucceeded Status: True Type: ClusterResourcePlacementOverridden ... Observed Resource Index: 0 Placement Statuses: Applicable Resource Overrides: Name: ro-1-0 Namespace: test-namespace Cluster Name: member-50 Conditions: ... Last Transition Time: 2024-04-26T22:57:14Z Message: Successfully applied the override rules on the resources Observed Generation: 1 Reason: OverriddenSucceeded Status: True Type: Overridden ...Podmínka
ClusterResourcePlacementOverriddenoznačuje, jestli se u vybraných prostředků úspěšně použilo přepsání prostředku. Každý cluster udržuje svůj vlastníApplicable Resource Overridesseznam. Tento seznam obsahuje snímek přepsání prostředků, pokud je to relevantní. Jednotlivé stavové zprávy pro každý cluster označují, jestli se pravidla přepsání úspěšně použila.
Související obsah
Azure Kubernetes Service