NodeConfig (NC)
Обзор
NodeConfig (NC) — кастомный ресурс (API node.shturval.tech), представляющий экземпляр конфигурации для конкретного узла. NodeConfig создаётся модулем shturval-node-config и агрегирует список NCI, которые должны быть применены к данному узлу.
Связь: NCI задаёт что настраивать и на каких узлах (по селектору). NodeConfig — результат для конкретного узла: какие NCI применены и в каком состоянии.
Один NCI может применяться к нескольким узлам — для каждого узла будет свой NodeConfig с NCI в списке nodeconfigitems.
Как создаётся NodeConfig
- Контроллеры модуля shturval-node-config отслеживают Node и NodeConfigItem.
- Для каждого узла контроллер определяет NCI, чей
nodeconfigselectorсоответствует лейблам узла. - Создаётся или обновляется NodeConfig с именем, совпадающим с именем узла (hostname).
- В
spec.nodeconfigitemsзаписывается список NCI для применения. - Контроллер применяет конфигурацию на узел (через shturvald) и обновляет статус.
Структура NodeConfig
apiVersion: node.shturval.tech/v1beta2
kind: NodeConfig
metadata:
name: <node-name> # Имя узла (hostname)
ownerReferences:
- kind: Node
name: <node-name> # Владелец — объект Node
- kind: NodeConfigItem
name: <nci-name> # Ссылки на NCI
spec:
applygroup: workers # Группа применения (control-plane, workers)
nodeconfigitems: # Список NCI для конфигурации узла
- generic-init-config
- ntp-example
status:
ready: true # Конфигурация применена успешно
ncistate: # Состояние каждого NCI на узле
- name: generic-init-config
state: applied
- name: ntp-example
state: applied
Поля NodeConfig
spec
| Поле | Описание |
|---|---|
| applygroup | Группа применения: control-plane или workers. Определяет порядок применения. |
| nodeconfigitems | Список имён NCI, которые должны быть применены к узлу. Заполняется контроллером на основе селекторов NCI. |
status
| Поле | Описание |
|---|---|
| ready | true — конфигурация применена успешно; false — есть ошибки или применение в процессе. |
| ncistate | Состояние каждого NCI: name — имя NCI, state — статус (например, applied, error). |
Аннотации (примеры)
| Аннотация | Описание |
|---|---|
node.shturval.tech/initchecksum |
Контрольная сумма для проверки инициализации. |
node.shturval.tech/ssh |
Статус доступа по SSH (например, accessed). |
Удаление аннотации контрольной суммы
Если NodeConfig находится в состоянии ConfigApplied=False с причиной ChecksumMismatch, локальный /etc/std/nci.json на узле не совпадает с checksum, записанной в NodeConfig. После сверки локального init NCI и ожидаемой конфигурации кластера удалите аннотацию node.shturval.tech/initchecksum, чтобы повторно запустить применение конфигурации (подробнее — раздел диагностики в модуле shturval-node-config):
kubectl get nodeconfig <node-name> -o jsonpath='{.status}'
kubectl annotate nodeconfig <node-name> node.shturval.tech/initchecksum-
Просмотр NodeConfig
# Список NodeConfig (по одному на узел)
kubectl get nodeconfig -A
# Детали NodeConfig для узла
kubectl get nodeconfig <node-name> -o yaml
# Проверка статуса применения
kubectl get nodeconfig <node-name> -o jsonpath='{.status.ready}'
В интерфейсе: на странице узла на вкладке Конфигурация узла отображается список NCI и статус их применения. При ошибке статус — Не применено.