Доступно в редакциях: CE, BE, SE, SE+, EE, CSE Lite (1.67), CSE Pro (1.67)
Некоторые параметры кластера, влияющие на управление control plane, также берутся из ресурса ClusterConfiguration.
В модуле реализовано 7 алертов.
Модуль включен по умолчанию в наборе модулей Default.
Модуль выключен по умолчанию в наборах модулей: Managed, Minimal.
Конверсии
Модуль настраивается с помощью ресурса ModuleConfig, схема которого содержит номер версии. При применении в кластере старой версии схемы ModuleConfig выполняются автоматические преобразования. Чтобы обновить версию схемы ModuleConfig вручную, необходимо последовательно для каждой версии выполнить следующие действия :
- Обновление из версии 1 в 2:
Удалите
etcd.externalMembersNames
Настройки
Чтобы настроить модуль, используйте ресурс ModuleConfig с именем control-plane-manager (подробнее о настройке Deckhouse…).
Пример ресурса ModuleConfig/control-plane-manager для настройки модуля:
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: control-plane-manager
spec:
version: 2
enabled: true
settings: # <-- Параметры модуля из раздела "Параметры" ниже.
Параметры
Версия схемы: 2
Пример:
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: control-plane-manager
spec:
version: 2
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.4oidcIssuerAddress: '' - строка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’ов по умолчанию содержит:
serviceAccount.issuer, eсли указаноserviceAccount.additionalAPIIssuers, eсли указаноhttps://kubernetes.default.svc.${clusterDomain}, например,https://kubernetes.default.svc.cluster.local- этот audience добавляется всегда для обратной совместимости.
Аутентификатор токенов ServiceAccount проверяет, что токены, использованные с API, привязаны как минимум к одной из этих audiences.
Этот вариант полезен при переходе от одного издателя API к другому.
- массив строкsettings.apiserver.serviceAccount.additionalAPIIssuers
Список дополнительных издателей API токенов ServiceAccount, которые нужно включить при их создании.
Эти издатели (iss) используются для проверки источника токенов, чтобы гарантировать, что они поступают от доверенных сущностей.
Когда указано несколько издателей, то первый используется для генерации токенов, а все указанные издатели принимаются для валидации токенов.
Этот вариант полезен при переходе от одного API издателя к другому.
- строкаsettings.apiserver.serviceAccount.issuer
Издатель ServiceAccount’ов. Это URL API-сервера. Значения этого поля используются как
issclaim токена и для проверки JWT-токенов ServiceAccount.Издатель по-умолчанию автоматически генерируется по шаблону
https://kubernetes.default.svc.${clusterDomain}, например,https://kubernetes.default.svc.cluster.localОбратите внимание, что все поды в кластере, использующие токены ServiceAccount, должны быть перезапущены при изменении этой опции.
Пример:
issuer: https://api.example.com
- объектsettings.etcd
Параметры etcd.
- объектsettings.etcd.backup
Параметры резервного копирования etcd.
- строкаsettings.etcd.backup.cronSchedule
Расписание резервного копирования etcd в формате cron. Используется локальный часовой пояс
kube-controller-manager.По умолчанию:
0 0 * * *Пример:
cronSchedule: 0 1 * * * - булевыйsettings.etcd.backup.enabled
Включение резервного копирование etcd.
По умолчанию:
true - строкаsettings.etcd.backup.hostPath
Путь для хранения резервных копий etcd на master-узлах.
По умолчанию:
/var/lib/etcd
- числоsettings.etcd.maxDbSize
quota-backend-bytes параметр. Deckhouse автоматически управляет
quota-backend-bytesпараметром. Если параметрmaxDbSizeустановлен, Deckhouse будет использовать это значение для параметраquota-backend-bytesetcd.Минимальное значение: 512MB.
Максимальное значение: 8GB.
Экспериментальный. Может быть удален в будущем.
Допустимые значения:
536870912 <= X <= 8589934592
- целочисленныйsettings.failedNodePodEvictionTimeoutSeconds
Количество секунд, по прошествии которых с узла в статусе
Unreachableбудут удалены поды.Важно! При изменении этого параметра потребуется перезапуск подов.
По умолчанию:
300 - целочисленныйsettings.nodeMonitorGracePeriodSeconds
Число секунд, через которое узел перейдет в состояние
Unreachableпри потере с ним связи.По умолчанию:
40