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

Модуль включен по умолчанию в наборе модулей 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 deploy/deckhouse -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 deploy/deckhouse -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

  • apiserverобъект

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

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

      Список включенных дополнительных admission plugin’ов.

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

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

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

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

      Пример:

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

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

    • apiserver.auditLogобъект

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

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

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

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

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

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

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

        Пример:

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

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

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

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

    • apiserver.auditPolicyEnabledбулевый

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

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

    • apiserver.authnобъект

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

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

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

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

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

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

        Примеры:

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

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

        Пример:

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

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

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

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

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

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

        Пример:

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

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

        Пример:

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

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

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

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

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

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

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

        Пример:

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

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

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

    • apiserver.bindToWildcardбулевый

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

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

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

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

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

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

      • kubernetes;
      • kubernetes.default;
      • kubernetes.default.svc;
      • kubernetes.default.svc.cluster.local;
      • 192.168.0.1;
      • 127.0.0.1;
      • текущий_hostname;
      • hostIP.

      Пример:

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

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

    • apiserver.encryptionEnabledбулевый

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

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

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

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

    • apiserver.loadBalancerобъект

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

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

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

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

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

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

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

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

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

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

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

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

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

    • apiserver.serviceAccountобъект

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

      Примеры:

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

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

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

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

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

        Пример:

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

    Параметры etcd.

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

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

      Пример:

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

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

    • etcd.maxDbSizeчисло

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

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

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

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

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

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

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

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

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

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

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

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