Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln innehåller en översikt över hur du använder API:et ResourceOverride för att åsidosätta namnområdesomfångsresurser i Azure Kubernetes Fleet Manager.
Du kan ändra eller åsidosätta specifika attribut för befintliga resurser i ett namnområde. Med ResourceOverridekan du definiera regler baserat på klusteretiketter och ange ändringar som ska tillämpas på resurser som Distributioner, StatefulSets, ConfigMaps eller Hemligheter.
Dessa ändringar kan omfatta uppdateringar av containeravbildningar, miljövariabler, resursgränser eller andra konfigurerbara parametrar. Sådana uppdateringar hjälper till att säkerställa konsekvent hantering och tillämpning av konfigurationer i dina Kubernetes-kluster som hanteras via Fleet Manager.
ResourceOverride API:et består av följande komponenter:
-
resourceSelectors: Anger den uppsättning resurser som valts för åsidosättande. -
policy: Anger den uppsättning regler som ska tillämpas på de valda resurserna.
Resursväljare
Ett ResourceOverride objekt kan innehålla en eller flera resursväljare för att ange vilka resurser som ska åsidosättas. Objektet ResourceSelector innehåller följande fält.
-
group: API-gruppen för resursen. -
version: API-versionen av resursen. -
kind: Resurstypen. -
namespace: Resursens namnområde.
Om du vill lägga till en resursväljare i ett ResourceOverride objekt använder du fältet resourceSelectors med följande YAML-format.
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
Viktigt!
- Om du väljer ett namnområde i
ResourceSelectorgäller åsidosättningen för alla resurser i namnområdet. - Objektet
ResourceOverridemåste finnas i samma namnområde som resursen som ska åsidosättas.
I det här exemplet väljs ett Deployment objekt med namnet test-nginx från test-namespace namnområdet för åsidosättande.
Riktlinje
Ett Policy objekt består av en uppsättning som overrideRules anger vilka ändringar som ska tillämpas på de valda resurserna. Varje overrideRules objekt stöder följande fält:
-
clusterSelector: Anger den uppsättning kluster som åsidosättningsregeln gäller för. -
jsonPatchOverrides: Anger de ändringar som ska tillämpas på de valda resurserna.
Om du vill lägga till en åsidosättningsregel i ett ResourceOverride objekt använder du fältet policy med följande YAML-format:
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"
Det här exemplet ersätter containeravbildningen Deployment i objektet med avbildningen nginx:1.20.0 för kluster med env: prod etiketten .
Klusterväljare
Du kan använda fältet clusterSelector i overrideRules objektet för att ange de resurser som åsidosättningsregeln gäller för. Objektet ClusterSelector stöder följande fält:
-
clusterSelectorTerms: En lista med termer som anger villkoren för att välja kluster. Varje term innehåller ettlabelSelectorfält som definierar en uppsättning etiketter som ska matchas.
Åsidosättningar av JSON-korrigering
Du kan använda jsonPatchOverrides i overrideRules -objektet för att ange de ändringar som ska tillämpas på de valda resurserna. Objektet JsonPatch stöder följande fält:
op: Den åtgärd som ska utföras. Bland de åtgärder som stöds finns:-
add: Lägger till ett nytt värde i den angivna sökvägen. -
remove: Tar bort värdet på den angivna sökvägen. -
replace: Ersätter värdet på den angivna sökvägen.
-
path: Sökvägen till fältet som ska ändras. Vägledning för att ange sökvägar omfattar:- Måste börja med ett snedstreck (
/) tecken. - Får inte vara tom eller innehålla en tom sträng.
- Det kan inte vara ett
TypeMetafält (/kindeller/apiVersion). - Det kan inte vara ett
Metadatafält (/metadata/nameeller/metadata/namespace), förutom fälten/metadata/labelsoch/metadata/annotations. - Det kan inte vara något fält i resursens status.
Exempel på giltiga sökvägar är:
/metadata/labels/new-label/metadata/annotations/new-annotation/spec/template/spec/containers/0/resources/limits/cpu/spec/template/spec/containers/0/resources/requests/memory
- Måste börja med ett snedstreck (
value: Värdet som ska läggas till, ta bort eller ersätta. Omopärremovekan du inte angevalue.
Fälten jsonPatchOverrides tillämpar en JSON-korrigering på de valda resurserna genom att följa RFC 6902.
Reserverade variabler i JSON-korrigeringens åsidosättningsvärde
Reserverade variabler ersätts med ett värde som används i åsidosättningsregeln för JSON-patch. Reserverade variabler som stöds för närvarande:
-
${MEMBER-CLUSTER-NAME}: ersätts med namnet påmemberCluster.
Om du till exempel vill skapa ett Azure DNS-värdnamn som innehåller namnet på klustret kan du använda en konfiguration som liknar:
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"}
ResourceOverride Exempelobjektet lägger till ett värde till fleet-clustername-eastus den angivna JSON-sökvägen i kluster i eastus Azure-regionen.
Flera åsidosättningsregler
Du kan lägga till flera overrideRules objekt i ett policy fält för att tillämpa flera ändringar på de valda resurserna. Här är ett exempel:
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"
Det här exemplet ersätter containeravbildningen Deployment i objektet med:
- Avbildningen
nginx:1.20.0för kluster medenv: prodetiketten . - Avbildningen
nginx:latestför kluster medenv: testetiketten .
Tillämpa klustrets resursplacering
Skapa en
ClusterResourcePlacementresurs för att ange placeringsregler för distribution av resursens åsidosättningar i klusterinfrastrukturen. Följande kod är ett exempel. Se till att välja lämpliga namnområden.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: testDet här exemplet distribuerar resurser inom
test-namespacealla kluster som är märkta medenv:prodochenv:test. När ändringarna implementeras tillämpas motsvarandeResourceOverridekonfigurationer på de avsedda resurserna. Valet av en matchande distributionsresurs,my-deployment, utlöser programmet för konfigurationerna till de avsedda resurserna.Använd resursen
ClusterResourcePlacementmed hjälpkubectl applyav kommandot :kubectl apply -f cluster-resource-placement.yamlKontrollera att
ResourceOverrideobjektet har tillämpats på de valda resurserna genom att kontrollera resursensClusterResourcePlacementstatus viakubectl describekommandot :kubectl describe clusterresourceplacement crp-exampleDina utdata bör likna följande exempel:
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 ...Villkoret
ClusterResourcePlacementOverriddenanger om resursens åsidosättning har tillämpats på de valda resurserna. Varje kluster har en egenApplicable Resource Overrideslista. Den här listan innehåller ögonblicksbilden av resursens åsidosättning, om det är relevant. Enskilda statusmeddelanden för varje kluster anger om åsidosättningsreglerna har tillämpats.
Relaterat innehåll
Azure Kubernetes Service