Управление компонентами control plane кластера осуществляется с помощью модуля control-plane-manager, а параметры кластера, влияющие на управление control plane, берутся из данных первичной конфигурации кластера (параметр cluster-configuration.yaml Secret’а d8-cluster-configuration в пространстве имен kube-system), которое создается при установке.

Модуль по умолчанию включен. Выключить его можно стандартным способом:

controlPlaneManagerEnabled: "false"

Параметры

  • apiserverобъект

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

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

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

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

      • ExtendedResourceToleration
      • 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

    • auditLogобъект

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

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

      • outputстрока

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

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

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

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

      • pathстрока

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

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

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

    • auditPolicyEnabledбулевый

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

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

    • authnобъект

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

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

      • oidcCAстрока

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

      • oidcIssuerAddressстрока

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

        Примеры:

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

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

        Пример:

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

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

      • webhookURLстрока

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

        Пример:

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

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

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

      • webhookCAстрока

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

      • webhookURLстрока

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

        Пример:

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

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

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

    • bindToWildcardбулевый

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

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

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

    • 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\.-]+$

    • encryptionEnabledбулевый

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

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

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

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

    • loadBalancerобъект

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

      • annotationsобъект

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

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

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

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

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

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

      • sourceRangesмассив строк

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

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

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

    • serviceAccountобъект

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

      Примеры:

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

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

  • etcdобъект

    Параметры etcd.

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

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

      Пример:

      externalMembersNames:
      - main-master-1
      - my-external-member
      

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

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

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

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

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

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

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

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