Доступно в редакциях: CE, BE, SE, SE+, EE, CSE Lite (1.64), CSE Pro (1.64)
Некоторые параметры кластера, влияющие на управление control plane, также берутся из ресурса ClusterConfiguration.
В модуле реализовано 7 алертов.
Модуль включен по умолчанию в наборе модулей Default
.
Модуль выключен по умолчанию в наборах модулей: Managed
, Minimal
.
Конверсии
При необходимости преобразования данных из одной версии схемы параметров модуля в другую, выполните следующие действия:
- Из версии 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.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’ов по умолчанию содержит:
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-сервера. Значения этого поля используются как
iss
claim токена и для проверки JWT-токенов ServiceAccount.Издатель по-умолчанию автоматически генерируется по шаблону
https://kubernetes.default.svc.${clusterDomain}
, например,https://kubernetes.default.svc.cluster.local
Обратите внимание, что все поды в кластере, использующие токены ServiceAccount, должны быть перезапущены при изменении этой опции.
Пример:
issuer: https://api.example.com
- settings.etcd
Параметры
etcd
.- 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