Некоторые параметры кластера, влияющие на управление control plane, также берутся из ресурса ClusterConfiguration.

В модуле реализовано 7 алертов.

Модуль включен по умолчанию в наборе модулей Default. Модуль выключен по умолчанию в наборах модулей: Managed, Minimal.

Как явно включить или отключить модуль…

Чтобы явно включить или выключить модуль control-plane-manager, установите spec.enabled в true или false в ModuleConfig/control-plane-manager (создайте, при необходимости), или воспользуйтесь командой deckhouse-controller module в поде d8-system/deckhouse.

Пример включения модуля:

  • с помощью ресурса ModuleConfig:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: control-plane-manager
    spec:
      enabled: true
    
  • с помощью команды deckhouse-controller (требуется kubectl, настроенный на работу с кластером):

    kubectl -ti -n d8-system exec svc/deckhouse-leader -c deckhouse -- deckhouse-controller module enable control-plane-manager
    

Пример выключения модуля:

  • с помощью ресурса ModuleConfig:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: control-plane-manager
    spec:
      enabled: false
    
  • с помощью команды deckhouse-controller (требуется kubectl, настроенный на работу с кластером):

    kubectl -ti -n d8-system exec svc/deckhouse-leader -c deckhouse -- deckhouse-controller module disable control-plane-manager
    

Чтобы настроить модуль, используйте custom resource ModuleConfig с именем control-plane-manager (подробнее о настройке Deckhouse…).

Пример ресурса ModuleConfig/control-plane-manager для настройки модуля:

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: control-plane-manager
spec:
  version: 1
  enabled: true
  settings: # <-- Параметры модуля из раздела "Параметры" ниже.

Параметры

Версия схемы: 1

Пример:

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: control-plane-manager
spec:
  version: 1
  enabled: true
  settings:
    apiserver:
      bindToWildcard: true
      certSANs:
      - bakery.infra
      - devs.infra
      loadBalancer: {}
  • settings
    объект
    • settings.apiserver
      объект

      Параметры kube-apiserver.

      • settings.apiserver.admissionPlugins
        массив строк

        Список включенных дополнительных admission-плагинов.

        Обратите внимание, что, помимо включенных по умолчанию в Kubernetes admission-плагинов, также всегда включены (без возможности отключения) следующие admission-плагины:

        • ExtendedResourceToleration;
        • PodNodeSelector;
        • PodTolerationRestriction;
        • EventRateLimit, который использует следующую конфигурацию:

          apiVersion: eventratelimit.admission.k8s.io/v1alpha1
          kind: Configuration
          limits:
          - type: Namespace
            qps: 50
            burst: 100
            cacheSize: 2000
          

        Admission-плагин PodNodeSelector не требует указания глобальной конфигурации, он использует только аннотации на пространстве имен (namespace’ах).

        Пример:

        admissionPlugins:
        - AlwaysPullImages
        - NamespaceAutoProvision
        
        • Элемент массива
          строка

          Допустимые значения: AlwaysPullImages, NamespaceAutoProvision, OwnerReferencesPermissionEnforcement, PodNodeSelector, PodTolerationRestriction

      • settings.apiserver.auditLog
        объект

        Параметры аудита.

        По умолчанию: {"output":"File"}

        • settings.apiserver.auditLog.output
          строка

          Обязательный параметр

          Тип потока для вывода журнала аудита.

          По умолчанию: "File"

          Допустимые значения: File, Stdout

          Пример:

          output: Stdout
          
        • settings.apiserver.auditLog.path
          строка

          Путь к директории. Действует только в случае output: "File".

          По умолчанию: "/var/log/kube-audit"

          Шаблон: ^[a-zA-Z0-9_/.-]+[a-zA-Z0-9_.-]$

      • settings.apiserver.auditPolicyEnabled
        булевый

        Применяет дополнительные политики аудита с конфигурацией из Secret’а kube-system/audit-policy.

        По умолчанию: false

      • settings.apiserver.authn
        объект

        Опциональные параметры аутентификации клиентов Kubernetes API.

        По умолчанию используются данные из ConfigMap, устанавливаемого модулем user-authn.

        • settings.apiserver.authn.oidcCA
          строка

          CA OIDC-провайдера.

        • settings.apiserver.authn.oidcIssuerAddress
          строка

          Сетевой адрес OIDC-провайдера.

          Примеры:

          oidcIssuerAddress: 1.2.3.4
          
          oidcIssuerAddress: ''
          
        • settings.apiserver.authn.oidcIssuerURL
          строка

          URL OIDC-провайдера.

          Пример:

          oidcIssuerURL: https://my-super-site.tech/
          
        • settings.apiserver.authn.webhookCA
          строка

          CA аутентификационного webhook’a.

        • settings.apiserver.authn.webhookCacheTTL
          строка

          Продолжительность кэширования ответов от аутентификационного webhook’a.

          Задается в виде строки с указанием часов и минут: 30m, 1h, 2h30m, 24h.

          Шаблон: ^([0-9]+h)?([0-9]+m)?([0-9]+s)?$

          Пример:

          webhookCacheTTL: 5m
          
        • settings.apiserver.authn.webhookURL
          строка

          URL аутентификационного webhook’а.

          Пример:

          webhookURL: https://127.0.0.1:40443/
          
      • settings.apiserver.authz
        объект

        Параметры авторизации клиентов Kubernetes API.

        По умолчанию используются данные из ConfigMap, устанавливаемого модулем user-authz.

        • settings.apiserver.authz.webhookCA
          строка

          CA webhook’а авторизации.

        • settings.apiserver.authz.webhookURL
          строка

          URL webhook’а авторизации.

          Пример:

          webhookURL: https://127.0.0.1:40443/
          
      • settings.apiserver.basicAuditPolicyEnabled
        булевый

        Применяет базовые политики аудита Deckhouse.

        По умолчанию: true

      • settings.apiserver.bindToWildcard
        булевый

        Прослушивание на 0.0.0.0.

        По умолчанию API-сервер слушает на hostIP, который обычно соответствует Internal-адресу узла, но это зависит от типа кластера (Static или Cloud) и выбранной схемы размещения (layout).

        По умолчанию: false

      • settings.apiserver.certSANs
        массив строк

        Массив строк, список дополнительных SANs, с которыми будет сгенерирован сертификат API-сервера.

        Кроме переданного списка, всегда используется и следующий список:

        • kubernetes;
        • kubernetes.default;
        • kubernetes.default.svc;
        • kubernetes.default.svc.cluster.local;
        • Адрес API-сервера кластера;
        • 127.0.0.1;
        • DNS-имя хоста (hostname);
        • IP-адрес хоста.

        Пример:

        certSANs:
        - my-site.com
        - 192.168.67.76
        
        • Элемент массива
          строка

          Шаблон: ^[0-9a-zA-Z\.-]+$

      • settings.apiserver.encryptionEnabled
        булевый

        Включает режим encrypting secret data at rest.

        Генерирует Secret kube-system/d8-secret-encryption-key, содержащий ключ шифрования.

        Важно! Этот режим нельзя отключить!

        По умолчанию: false

      • settings.apiserver.loadBalancer
        объект

        Создание сервиса kube-system/d8-control-plane-apiserver с типом LoadBalancer.

        • settings.apiserver.loadBalancer.annotations
          объект

          Аннотации, которые будут проставлены сервису для гибкой настройки балансировщика.

          Внимание! Модуль не учитывает особенности указания аннотаций в различных облаках. Если аннотации для заказа LoadBalancer’а применяются только при создании сервиса, для обновления подобных параметров вам необходимо будет удалить и добавить параметр apiserver.loadBalancer.

        • settings.apiserver.loadBalancer.port
          целочисленный

          Внешний порт TCP-балансировщика.

          По умолчанию: 443

          Допустимые значения: 1 <= X <= 65534

        • settings.apiserver.loadBalancer.sourceRanges
          массив строк

          Список CIDR, которым разрешен доступ к API.

          Облачный провайдер может не поддерживать данную опцию и игнорировать ее.

          • Элемент массива
            строка

            Шаблон: ^[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}\/[0-9]+$

      • settings.apiserver.serviceAccount
        объект

        Настройки выпуска ServiceAccount’ов.

        Примеры:

        serviceAccount: {}
        
        serviceAccount:
          additionalAPIAudiences:
          - istio-ca
        
        • settings.apiserver.serviceAccount.additionalAPIAudiences
          массив строк

          Список дополнительных API audience’ов, которые следует добавить при создании токенов ServiceAccount.

          Audience по умолчанию, автоматически генерируются на основе шаблона https://kubernetes.default.svc.${clusterDomain}, например, https://kubernetes.default.svc.cluster.local. Аутентификатор токенов ServiceAccount проверяет, что токены, использованные с API, привязаны как минимум к одной из этих audiences.

          Этот вариант полезен при переходе от одного издателя API к другому.

        • settings.apiserver.serviceAccount.additionalAPIIssuers
          массив строк

          Список дополнительных издателей API токенов ServiceAccount, которые нужно включить при их создании.

          Эти издатели (iss) используются для проверки источника токенов, чтобы гарантировать, что они поступают от доверенных сущностей.

          Первый издатель автоматически генерируется по шаблону https://kubernetes.default.svc.${clusterDomain}, например, https://kubernetes.default.svc.cluster.local. Когда указано несколько издателей, то первый используется для генерации токенов, а все указанные издатели принимаются для валидации токенов.

          Этот вариант полезен при переходе от одного API издателя к другому.

        • settings.apiserver.serviceAccount.issuer
          строка

          Издатель ServiceAccount’ов. Это URL API-сервера. Значения этого поля используются как iss claim токена и для проверки JWT-токенов ServiceAccount.

          Обратите внимание, что все поды в кластере, использующие токены ServiceAccount, должны быть перезапущены при изменении этой опции.

          Пример:

          issuer: https://api.example.com
          
    • settings.etcd
      объект

      Параметры etcd.

      • settings.etcd.externalMembersNames
        массив строк

        Массив имен внешних etcd member’ов (эти member’ы не будут удаляться).

        Пример:

        externalMembersNames:
        - main-master-1
        - my-external-member
        
        • Элемент массива
          строка

          Шаблон: ^[0-9a-zA-Z\.-:\-\/]+$

      • settings.etcd.maxDbSize
        число

        quota-backend-bytes параметр. Deckhouse автоматически управляет quota-backend-bytes параметром. Если параметр maxDbSize установлен, Deckhouse будет использовать это значение для параметра quota-backend-bytes etcd.

        Минимальное значение: 512MB.

        Максимальное значение: 8GB.

        Экспериментальный. Может быть удален в будущем.

        Допустимые значения: 536870912 <= X <= 8589934592

    • settings.failedNodePodEvictionTimeoutSeconds
      целочисленный

      Количество секунд, по прошествии которых с узла в статусе Unreachable будут удалены поды.

      Важно! При изменении этого параметра потребуется перезапуск подов.

      По умолчанию: 300

    • settings.nodeMonitorGracePeriodSeconds
      целочисленный

      Число секунд, через которое узел перейдет в состояние Unreachable при потере с ним связи.

      По умолчанию: 40