• Русский
  • Управление конфигурацией узлов

    Вы можете использовать задачи, описанные в этом разделе, для создания объектов MachineConfig, которые изменяют файлы, unit-файлы systemd и публичные SSH-ключи на узлах, а также для восстановления узлов, у которых возник дрейф конфигурации.

    MachineConfig поддерживает версию 3.4 спецификации Ignition. Все объекты MachineConfig должны создаваться в соответствии с этой версией.

    В некоторых ситуациях конфигурация на узле может не полностью совпадать с конфигурацией, которая в данный момент применяется через MachineConfig. Такое состояние называется дрейфом конфигурации. Демон конфигурации машин периодически проверяет, не произошёл ли дрейф конфигурации узла. Если дрейф обнаружен, узлу присваивается состояние Degraded, и он остаётся в этом состоянии, пока администратор не восстановит ожидаемую конфигурацию.

    Следующие примеры демонстрируют, как использовать объекты MachineConfig для управления конфигурациями узлов.

    Настройка службы времени Chrony

    Чтобы настроить службу синхронизации времени Chrony (chronyd) и указать NTP-серверы и связанные параметры, вы можете обновить файл chrony.conf на целевых узлах с помощью объекта MachineConfig.

    1. Сначала создайте временный файл, содержащий нужную конфигурацию Chrony:

      chrony.conf
      server 0.centos.pool.ntp.org iburst
      server 1.centos.pool.ntp.org iburst
      makestep 1.0 3
      rtcsync
      logdir /var/log/chrony
    2. Затем закодируйте содержимое файла в base64:

      base64 -w0 chrony.conf
    3. Создайте объект MachineConfig с именем 99-worker-chrony. В поле .spec.config.storage.files[0].contents.source вставьте строку, закодированную в base64, в формате data:text/plain;base64,<encoded-content>:

      apiVersion: machineconfiguration.alauda.io/v1alpha1
      kind: MachineConfig
      metadata:
        name: 99-worker-chrony
        labels:
          machineconfiguration.alauda.io/role: worker
      spec:
        config:
          ignition:
            version: 3.4.0
          storage:
            files:
              - path: /etc/chrony.conf
                mode: 0o644
                contents:
                  source: 'data:text/plain;base64,c2VydmVyIDAuY2VudG9zLnBvb2wubnRwLm9yZyBpYnVyc3QKc2VydmVyIDEuY2VudG9zLnBvb2wubnRwLm9yZyBpYnVyc3QKbWFrZXN0ZXAgMS4wIDMKcnRjc3luYwpsb2dkaXIgL3Zhci9sb2cvY2hyb255Cg=='

      Эта конфигурация создаёт объект MachineConfig, который применяет настроенный файл chrony.conf к узлам, связанным с пулом конфигурации машин worker. Файл будет записан в /etc/chrony.conf на каждом узле, а права доступа к файлу будут установлены в 0o644.

    Отключение службы времени Chrony

    Чтобы отключить службу синхронизации времени Chrony на узлах с определённой ролью, можно создать объект MachineConfig, который переопределяет определение unit systemd и отключает службу.

    Пример конфигурации:

    apiVersion: machineconfiguration.alauda.io/v1alpha1
    kind: MachineConfig
    metadata:
      name: 99-worker-disable-chrony
      labels:
        machineconfiguration.alauda.io/role: worker
    spec:
      config:
        ignition:
          version: 3.4.0
        systemd:
          units:
            - name: chronyd.service
              enabled: false
              contents: |
                [Unit]
                Description=NTP client/server
                Documentation=man:chronyd(8) man:chrony.conf(5)
                After=ntpdate.service sntp.service ntpd.service
                Conflicts=ntpd.service systemd-timesyncd.service
                ConditionCapability=CAP_SYS_TIME
    
                [Service]
                Type=forking
                PIDFile=/run/chrony/chronyd.pid
                EnvironmentFile=-/etc/sysconfig/chronyd
                ExecStart=/usr/sbin/chronyd $OPTIONS
                ExecStartPost=/usr/libexec/chrony-helper update-daemon
                PrivateTmp=yes
                ProtectHome=yes
                ProtectSystem=full
    
                [Install]
                WantedBy=multi-user.target

    Эта конфигурация передаёт пользовательскую версию файла unit chronyd.service на узлы в пуле конфигурации машин worker. Служба явно отключена. После применения конфигурации и перезагрузки узлов служба Chrony больше не будет запускаться автоматически.

    Настройка публичного SSH-ключа для пользователя boot

    Система конфигурации машин позволяет настроить публичный SSH-ключ для пользователя boot на управляемых узлах. Настройка для других учётных записей пользователей не поддерживается. Обратите внимание, что machine configuration не создаёт пользователей или группы автоматически — перед применением конфигурации необходимо убедиться, что пользователь и группа boot существуют на узле.

    Пример конфигурации:

    apiVersion: machineconfiguration.alauda.io/v1alpha1
    kind: MachineConfig
    metadata:
      name: 99-worker-ssh
      labels:
        machineconfiguration.alauda.io/role: worker
    spec:
      config:
        ignition:
          version: 3.4.0
        passwd:
          users:
            - user: boot
              sshAuthorizedKeys:
                - ssh-rsa <ssh-public-key>

    Этот MachineConfig установит указанный SSH-ключ в файл /home/boot/.ssh/authorized_keys на узлах в пуле конфигурации машин worker.

    Восстановление после дрейфа конфигурации

    Если конфигурация узла отличается от назначенного ему MachineConfig, узлу будет присвоено состояние Degraded. В этом состоянии узел продолжает работать, но не может получать дальнейшие обновления конфигурации, пока проблема не будет устранена.

    Существует два способа восстановить узел из этого деградированного состояния:

    1. Вручную вернуть конфигурацию Вы можете вручную изменить файлы и права доступа на узле так, чтобы они в точности соответствовали значениям, указанным в назначенном MachineConfig. Система обнаружит исправление и снимет статус деградированного состояния.

    2. Принудительно применить конфигурацию повторно Создайте пустой файл /run/machine-config-daemon-force на затронутом узле. Демон конфигурации машин обнаружит этот триггер, повторно применит текущий MachineConfig, удалит файл-триггер и перезагрузит узел. После перезагрузки узел перейдёт из состояния Degraded обратно в Done.