Для установки компонентов CoreDNS и управления DNS можно воспользоваться функциональностью модуля kube-dns.
Модуль удаляет ранее созданные с помощью kubeadm ресурсы: Deployment, ConfigMap и RBAC для CoreDNS.
Чтобы включить модуль kube-dns с настройками по умолчанию, примените ресурс ModuleConfig
:
1d8 k apply -f - <<EOF
2apiVersion: deckhouse.io/v1alpha1
3kind: ModuleConfig
4metadata:
5 name: kube-dns
6spec:
7 enabled: true
8EOF
Подробности о возможностях настроек модуля описаны по ссылке.
Пример конфигурации DNS
Пример конфигурации модуля kube-dns с помощью ресурса ModuleConfig:
1d8 k apply -f - <<EOF
2apiVersion: deckhouse.io/v1alpha1
3kind: ModuleConfig
4metadata:
5 name: kube-dns
6spec:
7 version: 1
8 enabled: true
9 settings:
10 # Список IP-адресов рекурсивных DNS-серверов, которые CoreDNS будет использовать для разрешения внешних доменов.
11 # По умолчанию используется список из /etc/resolv.conf.
12 upstreamNameservers:
13 - 8.8.8.8
14 - 8.8.4.4
15 # Статический список хостов в стиле /etc/hosts:
16 hosts:
17 - domain: one.example.com
18 ip: 192.168.0.1
19 - domain: two.another.example.com
20 ip: 10.10.0.128
21 # Список дополнительных зон для обслуживания CoreDNS.
22 stubZones:
23 - zone: consul.local
24 upstreamNameservers:
25 - 10.150.0.1
26 # Список альтернативных доменов кластера, разрешаемых наравне с global.discovery.clusterDomain.
27 clusterDomainAliases:
28 - foo.bar
29 - baz.qux
30EOF
Подробности о возможностях конфигурации модуля kube-dns описаны по ссылке.
Изменение домена кластера
Чтобы изменить домен кластера с минимальным простоем, выполните следующие шаги:
-
Отредактируйте настройки модуля control-plane manager, который отвечает за конфигурацию Deckhouse.
Внесите изменения в секции по шаблону ниже:
1 apiVersion: deckhouse.io/v1alpha1 2 kind: ModuleConfig 3 metadata: 4 name: control-plane-manager 5 spec: 6 version: 1 7 enabled: true 8 settings: 9 apiserver: 10 # Список опций сертификата SANs, с которыми будет сгенерирован сертификат API-сервера. 11 certSANs: 12 - kubernetes.default.svc.<старый clusterDomain> 13 - kubernetes.default.svc.<новый clusterDomain> 14 serviceAccount: 15 # Список API audience’ов, которые следует добавить при создании токенов ServiceAccount. 16 additionalAPIAudiences: 17 - https://kubernetes.default.svc.<старый clusterDomain> 18 - https://kubernetes.default.svc.<новый clusterDomain> 19 # Список дополнительных издателей API токенов ServiceAccount, которые нужно включить при их создании. 20 additionalAPIIssuers: 21 - https://kubernetes.default.svc.<старый clusterDomain> 22 - https://kubernetes.default.svc.<новый clusterDomain>
-
Укажите список альтернативных доменов кластера в настройках модуля kube-dns:
1 apiVersion: deckhouse.io/v1alpha1 2 kind: ModuleConfig 3 metadata: 4 name: kube-dns 5 spec: 6 version: 1 7 enabled: true 8 settings: 9 clusterDomainAliases: 10 - <старый clusterDomain> 11 - <новый clusterDomain>
- Дождитесь перезапуска
kube-apiserver
. - Поменяйте
clusterDomain
на новый домен вdhctl config edit cluster-configuration
.