Добавление IP и DNS в сертификат microk8s
TL;DR
По умолчанию сертификат
microk8sобычно не содержит внешний IP или DNS-имя в SAN (alt_names). Поэтому при подключении к Kubernetes API извне могут возникать TLS-ошибки. Нужно добавить внешний IP/DNS в/var/snap/microk8s/current/certs/csr.conf.templateи перевыпустить сертификат.
-
Нужно, если доступ к
microk8sидет:- по внешнему IP,
- по внешнему DNS-имени,
- через роутер / NAT.
-
DNS-имя или IP нужно добавить в файл
/var/snap/microk8s/current/certs/csr.conf.template, в секциюalt_names:
[ alt_names ]
DNS.1 = kubernetes
DNS.2 = kubernetes.default
DNS.3 = kubernetes.default.svc
DNS.4 = kubernetes.default.svc.cluster
DNS.5 = kubernetes.default.svc.cluster.local
DNS.6 = mydomain.com- После изменения перевыпустить сертификат:
sudo microk8s refresh-certs --cert server.crtGotchas
- Подключаться нужно именно по тому IP/DNS, который добавлен в
alt_names. - Если добавить новый адрес, старый сертификат не начнет работать автоматически — его нужно перевыпустить.
Проверка
- Повторно подключиться к API по внешнему IP/DNS.
- Убедиться, что TLS-ошибка о несовпадении имени сертификата исчезла.