Некоторые параметры кластера, влияющие на управление 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: {}
- 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
;- Адрес API-сервера кластера;
127.0.0.1
;- DNS-имя хоста (hostname);
- IP-адрес хоста.
Пример:
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