Este documento explica como configurar o posicionamento de nós para pods do sistema Config Sync em execução no cluster. A configuração do posicionamento de nós pode ser útil em situações como isolar pods do sistema Config Sync em nós específicos para fins de segurança ou programar o Config Sync em nós mais baratos para economizar custos.
Sobre a MutatingAdmissionPolicy
A MutatingAdmissionPolicy é um recurso do Kubernetes disponível na versão 1.36 e mais recentes, que permite personalizar o comportamento sempre que alguém grava uma mudança na API Kubernetes.
No contexto do Config Sync, é possível usar a MutatingAdmissionPolicy para adicionar parâmetros de posicionamento de nós aos pods executados nos namespaces do sistema Config Sync.
Esses parâmetros incluem campos de especificação de pod, como
nodeSelector e afinidade.
Este documento fornece um exemplo de como usar um MutatingAdmissionPolicy com
o Config Sync. Encontre mais exemplos norepositório de código aberto do Config Sync
.
Definir nodeSelectors
O exemplo a seguir mostra como usar uma MutatingAdmissionPolicy para
adicionar automaticamente um nodeSelector a cada pod em execução em cada um dos namespaces do sistema Config Sync
com o rótulo configmanagement.gke.io/system: "true".
Os namespaces do sistema Config Sync incluem config-management-system, config-management-monitoring e resource-group-system.
apiVersion: admissionregistration.k8s.io/v1beta1
kind: MutatingAdmissionPolicy
metadata:
name: "my-pod-node-selector"
spec:
matchConstraints:
resourceRules:
- apiGroups: [""]
apiVersions: ["v1"]
operations: ["CREATE", "UPDATE"]
resources: ["pods"]
failurePolicy: Fail
reinvocationPolicy: IfNeeded
mutations:
# Basic example of adding nodeSelector: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
# Similar mutations can be applied for affinities, tolerations, and so on
- patchType: "JSONPatch"
jsonPatch:
expression: >
[
JSONPatch{
op: "add", path: "/spec/nodeSelector",
value: {
"LABEL_KEY": "LABEL_VALUE",
}
}
]
---
apiVersion: admissionregistration.k8s.io/v1beta1
kind: MutatingAdmissionPolicyBinding
metadata:
name: "configsync-node-selector"
spec:
policyName: "my-pod-node-selector"
matchResources:
namespaceSelector:
matchLabels:
# This namespace selector only selects Config Sync system namespaces
configmanagement.gke.io/system: "true"
Substitua:
LABEL_KEY: a chave do rótulo a ser usada pelo seletor de nós.LABEL_VALUE: o valor do rótulo a ser usado pelo seletor de nós.
Depois de aplicar essa configuração ao cluster, todos os pods do sistema Config Sync serão programados em nós com o rótulo LABEL_KEY=LABEL_VALUE.