Некоторые параметры кластера, влияющие на управление control plane, также берутся из ресурса ClusterConfiguration.
В модуле реализовано 7 алертов.
Модуль включен по умолчанию в наборе модулей Default
.
Модуль выключен по умолчанию в наборах модулей: Managed
, Minimal
.
Чтобы настроить модуль, используйте 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