Dokumen ini menjelaskan cara mengonfigurasi penempatan node untuk Pod sistem Config Sync yang berjalan di cluster Anda. Mengonfigurasi penempatan node dapat berguna dalam situasi seperti mengisolasi Pod sistem Config Sync ke node tertentu untuk tujuan keamanan, atau menjadwalkan Config Sync di node yang lebih murah untuk tujuan penghematan biaya.
Tentang MutatingAdmissionPolicy
MutatingAdmissionPolicy
adalah fitur Kubernetes yang tersedia di Kubernetes versi 1.34.
Jika MutatingAdmissionPolicy tersedia di cluster Anda, Anda dapat menyesuaikan
perilaku setiap kali seseorang menulis perubahan ke Kubernetes API.
Dalam konteks Config Sync, Anda dapat menggunakan MutatingAdmissionPolicy untuk menambahkan
parameter penempatan node ke dalam Pod yang berjalan di namespace sistem Config Sync.
Parameter ini mencakup kolom spesifikasi Pod seperti
nodeSelector dan afinitas.
Dokumen ini memberikan contoh cara menggunakan MutatingAdmissionPolicy dengan
Config Sync, dan Anda dapat menemukan contoh lainnya di
repositori open source Config Sync.
Menetapkan nodeSelector
Contoh berikut menunjukkan cara menggunakan MutatingAdmissionPolicy untuk
menambahkan nodeSelector secara otomatis ke setiap Pod yang berjalan di setiap namespace sistem Config Sync
dengan label configmanagement.gke.io/system: "true".
Namespace sistem Config Sync mencakup config-management-system,
config-management-monitoring, dan 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"
- Ganti
LABEL_KEYdengan kunci label yang akan digunakan oleh pemilih node. - Ganti
LABEL_VALUEdengan nilai label yang akan digunakan oleh pemilih node.
Setelah menerapkan konfigurasi ini ke cluster, semua Pod sistem Config Sync dijadwalkan ke node dengan label LABEL_KEY=LABEL_VALUE.