Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Esse artigo fornece uma visão geral de como usar objetos de envelope para propagar tipos de recursos reservados do Kubernetes de um cluster de hub do Gerenciador de Frota de Kubernetes do Azure (Kubernetes Fleet) para clusters de membros.
Usar um ConfigMap como objeto de envelope
Você pode designar um ConfigMap como um objeto de envelope usando a seguinte anotação reservada da Frota do Kubernetes:
metadata:
annotations:
kubernetes-fleet.io/envelope-configmap: "true"
Veja um exemplo de uso do ConfigMap como objeto de envelope:
apiVersion: v1
kind: ConfigMap
metadata:
name: envelope-configmap
namespace: app
annotations:
kubernetes-fleet.io/envelope-configmap: "true"
data:
resourceQuota.yaml: |
apiVersion: v1
kind: ResourceQuota
metadata:
name: mem-cpu-demo
namespace: app
spec:
hard:
requests.cpu: "1"
requests.memory: 1Gi
limits.cpu: "2"
limits.memory: 2Gi
webhook.yaml: |
apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
metadata:
creationTimestamp: null
labels:
azure-workload-identity.io/system: "true"
name: azure-wi-webhook-mutating-webhook-configuration
webhooks:
- admissionReviewVersions:
- v1
- v1beta1
clientConfig:
service:
name: azure-wi-webhook-webhook-service
namespace: app
path: /mutate-v1-pod
failurePolicy: Fail
matchPolicy: Equivalent
name: mutation.azure-workload-identity.io
rules:
- apiGroups:
- ""
apiVersions:
- v1
operations:
- CREATE
- UPDATE
resources:
- pods
sideEffects: None
Propagar um ConfigMap de envelope para clusters de membros
Aplique o objeto de envelope do exemplo anterior no seu cluster de hub. Em seguida, use um objeto ClusterResourcePlacement para propagar o recurso do cluster de hub para um cluster membro chamado kind-cluster-1.
Aqui está uma especificação ClusterResourcePlacement de amostra:
spec:
policy:
clusterNames:
- kind-cluster-1
placementType: PickFixed
resourceSelectors:
- group: ""
kind: Namespace
name: app
version: v1
revisionHistoryLimit: 10
strategy:
type: RollingUpdate
Recuperar o status de um posicionamento de envelope ConfigMap
Veja a seguir um exemplo de status mostrando a colocação bem-sucedida de um objeto de envelope:
status:
conditions:
- lastTransitionTime: "2023-11-30T19:54:13Z"
message: found all the clusters needed as specified by the scheduling policy
observedGeneration: 2
reason: SchedulingPolicyFulfilled
status: "True"
type: ClusterResourcePlacementScheduled
- lastTransitionTime: "2023-11-30T19:54:18Z"
message: All 1 cluster(s) are synchronized to the latest resources on the hub
cluster
observedGeneration: 2
reason: SynchronizeSucceeded
status: "True"
type: ClusterResourcePlacementSynchronized
- lastTransitionTime: "2023-11-30T19:54:18Z"
message: Successfully applied resources to 1 member clusters
observedGeneration: 2
reason: ApplySucceeded
status: "True"
type: ClusterResourcePlacementApplied
placementStatuses:
- clusterName: kind-cluster-1
conditions:
- lastTransitionTime: "2023-11-30T19:54:13Z"
message: 'Successfully scheduled resources for placement in kind-cluster-1:
picked by scheduling policy'
observedGeneration: 2
reason: ScheduleSucceeded
status: "True"
type: ResourceScheduled
- lastTransitionTime: "2023-11-30T19:54:18Z"
message: Successfully Synchronized work(s) for placement
observedGeneration: 2
reason: WorkSynchronizeSucceeded
status: "True"
type: WorkSynchronized
- lastTransitionTime: "2023-11-30T19:54:18Z"
message: Successfully applied resources
observedGeneration: 2
reason: ApplySucceeded
status: "True"
type: ResourceApplied
selectedResources:
- kind: Namespace
name: app
version: v1
- kind: ConfigMap
name: envelope-configmap
namespace: app
version: v1
Observação
A seção selectedResources exibe especificamente o objeto de envelope propagado. O status não lista individualmente todos os recursos que o objeto de envelope contém.
A seção selectedResources indica que o aplicativo de namespace e o ConfigMap denominado envelope-configmap foram propagados com êxito. Você pode verificar ainda mais a propagação bem-sucedida dos recursos mencionados no objeto envelope-configmap garantindo que a seção failedPlacements em placementStatus para kind-cluster-1 não apareça no status.
Aqui está um exemplo em que o posicionamento falhou. Neste exemplo, na seção placementStatus para kind-cluster-1, a seção failedPlacements fornece detalhes sobre o recurso que falhou ao aplicar. A seção failedPlacements também fornece informações sobre o objeto de envelope que continha o recurso.
status:
conditions:
- lastTransitionTime: "2023-12-06T00:09:53Z"
message: found all the clusters needed as specified by the scheduling policy
observedGeneration: 2
reason: SchedulingPolicyFulfilled
status: "True"
type: ClusterResourcePlacementScheduled
- lastTransitionTime: "2023-12-06T00:09:58Z"
message: All 1 cluster(s) are synchronized to the latest resources on the hub
cluster
observedGeneration: 2
reason: SynchronizeSucceeded
status: "True"
type: ClusterResourcePlacementSynchronized
- lastTransitionTime: "2023-12-06T00:09:58Z"
message: Failed to apply manifests to 1 clusters, please check the `failedPlacements`
status
observedGeneration: 2
reason: ApplyFailed
status: "False"
type: ClusterResourcePlacementApplied
placementStatuses:
- clusterName: kind-cluster-1
conditions:
- lastTransitionTime: "2023-12-06T00:09:53Z"
message: 'Successfully scheduled resources for placement in kind-cluster-1:
picked by scheduling policy'
observedGeneration: 2
reason: ScheduleSucceeded
status: "True"
type: ResourceScheduled
- lastTransitionTime: "2023-12-06T00:09:58Z"
message: Successfully Synchronized work(s) for placement
observedGeneration: 2
reason: WorkSynchronizeSucceeded
status: "True"
type: WorkSynchronized
- lastTransitionTime: "2023-12-06T00:09:58Z"
message: Failed to apply manifests, please check the `failedPlacements` status
observedGeneration: 2
reason: ApplyFailed
status: "False"
type: ResourceApplied
failedPlacements:
- condition:
lastTransitionTime: "2023-12-06T00:09:53Z"
message: 'Failed to apply manifest: namespaces "app" not found'
reason: AppliedManifestFailedReason
status: "False"
type: Applied
envelope:
name: envelop-configmap
namespace: test-ns
type: ConfigMap
kind: ResourceQuota
name: mem-cpu-demo
namespace: app
version: v1
selectedResources:
- kind: Namespace
name: test-ns
version: v1
- kind: ConfigMap
name: envelop-configmap
namespace: test-ns
version: v1