{"id":497009,"date":"2026-10-01T22:25:32","date_gmt":"2026-10-01T22:25:32","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=497009"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=497009","title":{"rendered":"cert-manager-webhook-freens: \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b Let&#8217;s Encrypt \u043d\u0430 \u0432\u0441\u0435 \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u044b \u0432 Kubernetes \u0447\u0435\u0440\u0435\u0437 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0439 DNS"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435!<\/p>\n<p>\u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0447\u0442\u043e \u0442\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u2014 A-\u0437\u0430\u043f\u0438\u0441\u044c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043b \u0438 \u0437\u0430\u0431\u044b\u043b. \u0410\u043d \u043d\u0435\u0442: \u0441\u0442\u043e\u0438\u043b\u043e \u0437\u0430\u0445\u043e\u0442\u0435\u0442\u044c \u043e\u0434\u0438\u043d \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0441\u0440\u0430\u0437\u0443 \u043d\u0430 \u0432\u0441\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u044b \u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u043e\u0432\u0443\u044e \u0441\u0440\u0435\u0434\u0443 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 Kubernetes, \u0434\u0430 \u0435\u0449\u0451 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b Let\u2019s Encrypt \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e cert-manager\u2026 \u0412\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e, \u0434\u0430 \u043d\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e, \u043a\u0430\u043a \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b.<\/p>\n<p>\u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 DynDNS, \u0441\u043a\u0430\u0436\u0435\u043c, DuckDNS.org, \u043e\u0442\u0434\u0430\u0451\u0442 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441 TTL \u0432 \u0441\u0443\u0442\u043a\u0438 (\u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u043b\u0441\u044f \u2014 \u0430 \u043b\u044e\u0434\u0438 \u0435\u0449\u0451 \u0434\u043e\u043b\u0433\u043e \u0445\u043e\u0434\u044f\u0442 \u043d\u0430 \u0441\u0442\u0430\u0440\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440), \u0430 wildcard \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 Let\u2019s Encrypt \u0432\u044b\u0434\u0430\u0451\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 DNS-\u0437\u0430\u043f\u0438\u0441\u0438.<\/p>\n<p>\u0418\u0449\u0435\u043c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0443 \u0438 \u0443\u0447\u0438\u043c cert-manager \u0441 \u043d\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u0435\u0437 \u043a\u043e\u0441\u0442\u044b\u043b\u0435\u0439. \u0412 \u0438\u0442\u043e\u0433\u0435 \u0440\u043e\u0434\u0438\u043b\u0441\u044f \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442: <a href=\"https:\/\/github.com\/Hubbitus\/cert-manager-webhook-freens\" rel=\"noopener nofollow\">cert-manager-webhook-freens<\/a> \u2014 \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f <a href=\"https:\/\/cert-manager.io\/\" rel=\"noopener nofollow\">cert-manager<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043c\u0435\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0447\u0435\u0440\u0435\u0437 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 DNS-\u0445\u043e\u0441\u0442\u0438\u043d\u0433 <a href=\"https:\/\/freens.ru\/\" rel=\"noopener nofollow\">FreeNS<\/a>.<\/p>\n<blockquote>\n<p><strong>\u0421\u0440\u0430\u0437\u0443 \u043e \u0442\u043e\u043c, \u0434\u043b\u044f \u043a\u043e\u0433\u043e \u044d\u0442\u043e.<\/strong> \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 Kubernetes \u0438 <a href=\"https:\/\/cert-manager.io\/\" rel=\"noopener nofollow\">cert-manager<\/a>, \u0441\u0442\u0430\u0442\u044c\u044f \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043c\u0430\u043b\u043e\u043f\u043e\u043b\u0435\u0437\u043d\u0430, \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u0440\u0430\u0437\u0434\u0435\u043b \u043f\u0440\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0445 DNS-\u0445\u043e\u0441\u0442\u0438\u043d\u0433\u043e\u0432 (\u0438 \u043e\u043d \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u0435\u0442 \u043d\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 \u043e\u0431\u0437\u043e\u0440 \u0440\u044b\u043d\u043a\u0430).<\/p>\n<\/blockquote>\n<p>\u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u0437\u0430\u0447\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0441\u044f, \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u043f\u043e\u0434\u043e\u0448\u043b\u0438 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b, \u043a\u0430\u043a \u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0447\u0442\u043e \u0443 \u043d\u0435\u0433\u043e \u0432\u043d\u0443\u0442\u0440\u0438.<\/p>\n<h3>\u0421 \u0447\u0435\u0433\u043e \u0432\u0441\u0451 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c: DuckDNS \u0438 TTL \u0432 \u0441\u0443\u0442\u043a\u0438<\/h3>\n<p>\u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0441 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u043e\u0439 \u0432 Kubernetes. \u0418\u043c\u0435\u043d\u0430 \u0432\u0438\u0434\u0430 <code>argo.dev.example.com<\/code> \u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 CNAME-\u0437\u0430\u043f\u0438\u0441\u044f\u043c\u0438 \u043d\u0430 <code>example-dev.duckdns.org<\/code>, \u0430 A-\u0437\u0430\u043f\u0438\u0441\u044c \u0432 DuckDNS \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u043b\u0430\u0441\u044c \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u043f\u0440\u0438 \u043f\u043e\u0434\u044a\u0451\u043c\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u0414\u0451\u0448\u0435\u0432\u043e, \u0441\u0435\u0440\u0434\u0438\u0442\u043e, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<p>\u041f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0448\u044c \u043d\u0430 TTL. \u0421\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c \u0430\u0432\u0442\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 DuckDNS:<\/p>\n<pre><code>example-dev.duckdns.org. 86400 IN A 203.0.113.10<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper\"><\/span><\/a><\/div><\/pre>\n<p><strong>86400 \u0441\u0435\u043a\u0443\u043d\u0434. \u0421\u0443\u0442\u043a\u0438.<\/strong> \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 TTL \u0432 <a href=\"https:\/\/www.duckdns.org\/spec.jsp\" rel=\"noopener nofollow\">API DuckDNS<\/a> \u043d\u0435\u0442: \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u0440\u043e\u0432\u043d\u043e <code>domains<\/code>, <code>token<\/code>, <code>ip<\/code>, <code>ipv6<\/code>, <code>txt<\/code>, <code>verbose<\/code>, <code>clear<\/code>. \u0412 \u0432\u0435\u0431-\u043f\u0430\u043d\u0435\u043b\u0438 \u2014 \u0442\u043e\u0436\u0435 \u043d\u0435\u0442. \u0422\u043e \u0435\u0441\u0442\u044c \u0441\u043c\u0435\u043d\u0438\u043b IP \u2014 \u0438 \u043a\u044d\u0448\u0438\u0440\u0443\u044e\u0449\u0438\u0435 DNS-\u0441\u0435\u0440\u0432\u0435\u0440\u044b \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043c\u0438\u0440\u0443 \u0438\u043c\u0435\u044e\u0442 \u043f\u043e\u043b\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u043e \u0434\u043e \u0441\u0443\u0442\u043e\u043a \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0439 \u0430\u0434\u0440\u0435\u0441.<\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u044d\u0442\u043e \u043e\u0431\u043e\u0448\u043b\u0438: \u0437\u0430\u043a\u0440\u0435\u043f\u0438\u043b\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 IP \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 (ingress), \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043d\u0435 \u043c\u0435\u043d\u044f\u043b\u0441\u044f \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u0411\u043e\u043b\u044c \u0443\u0448\u043b\u0430, \u0437\u0430\u0434\u0430\u0447\u0443 \u043e\u0442\u043b\u043e\u0436\u0438\u043b\u0438. \u0427\u0435\u0441\u0442\u043d\u043e \u2014 \u00ab\u043d\u0435\u0442 \u0431\u043e\u043b\u0438, \u043d\u0435\u0442 \u0441\u043f\u0435\u0448\u043a\u0438\u00bb.<\/p>\n<h3>\u0410 \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0430\u0441\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 DNS<\/h3>\n<p>\u0422\u0435\u0441\u0442\u043e\u0432\u0430\u044f \u0441\u0440\u0435\u0434\u0430 \u0440\u0430\u0437\u0440\u043e\u0441\u043b\u0430\u0441\u044c \u0434\u043e <strong>\u0434\u0432\u0443\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432<\/strong> (\u043e\u0434\u0438\u043d \u0432 Yandex Cloud, \u0432\u0442\u043e\u0440\u043e\u0439 \u0443 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430). \u0420\u0435\u0448\u0438\u043b\u0438 \u0442\u0430\u043a: \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0438 \u0438\u043c\u0435\u043d\u0430 <code>*.&lt;cluster&gt;.dev.example.com<\/code>, \u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u2014 \u0435\u0449\u0451 \u0438 \u043e\u0431\u0449\u0438\u0439 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c <code>*.dev.example.com<\/code>.<\/p>\n<p>\u0418 \u0432\u043e\u0442 \u0442\u0443\u0442 \u0441\u0440\u0430\u0437\u0443 \u0434\u0432\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b:<\/p>\n<ol>\n<li>\n<p><strong>\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043d\u0430 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c.<\/strong> \u041f\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0447\u0435\u0440\u0435\u0437 HTTP (<code>HTTP-01<\/code>) Let\u2019s Encrypt \u0432\u044b\u0434\u0430\u0441\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0435\u0439\u0447\u0430\u0441 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 DNS. \u0412\u0442\u043e\u0440\u043e\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043d\u0430 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u043d\u0430 \u0432\u0441\u0435 \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u044b \u0441\u0440\u0430\u0437\u0443 (<code>*.<\/code>) \u0442\u0430\u043a \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0432\u044b\u0434\u0430\u044e\u0442\u0441\u044f \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 <a href=\"https:\/\/letsencrypt.org\/docs\/challenge-types\/#dns-01-challenge\" rel=\"noopener nofollow\">\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0447\u0435\u0440\u0435\u0437 DNS (<code>DNS-01<\/code>)<\/a>.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u0430.<\/strong> \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c <code>*.dev.example.com<\/code> \u043c\u0435\u0436\u0434\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 DuckDNS \u0441 TTL \u0432 \u0441\u0443\u0442\u043a\u0438 \u2014 \u043d\u0443, \u0432\u044b \u043f\u043e\u043d\u044f\u043b\u0438, \u0431\u043e\u043b\u044c.<\/p>\n<\/li>\n<\/ol>\n<p>\u0417\u043d\u0430\u0447\u0438\u0442, \u043d\u0443\u0436\u0435\u043d DNS-\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0441\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>API \u0434\u043b\u044f TXT-\u0437\u0430\u043f\u0438\u0441\u0435\u0439 (\u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 DNS);<\/p>\n<\/li>\n<li>\n<p>\u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 TTL (\u043c\u0438\u043d\u0443\u0442\u0430, \u0430 \u043d\u0435 \u0441\u0443\u0442\u043a\u0438);<\/p>\n<\/li>\n<li>\n<p>\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c <strong>\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d<\/strong> <code>dev.example.com<\/code>, \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u044f \u0431\u043e\u0435\u0432\u0443\u044e \u0437\u043e\u043d\u0443;<\/p>\n<\/li>\n<li>\n<p>\u0438 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u2014 \u0441\u0440\u0435\u0434\u0430 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u0430\u044f (\u0442\u043e\u0447\u043d\u0435\u0435, \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438).<\/p>\n<\/li>\n<\/ul>\n<h3>\u0427\u0442\u043e \u043f\u0435\u0440\u0435\u0431\u0440\u0430\u043b\u0438, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043d\u0430\u0448\u043b\u0438 FreeNS<\/h3>\n<h4>DuckDNS.org: \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a \u0435\u0441\u0442\u044c<\/h4>\n<p>\u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439, \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439, \u0434\u043e \u043f\u044f\u0442\u0438 \u0438\u043c\u0451\u043d \u043d\u0430 \u0430\u043a\u043a\u0430\u0443\u043d\u0442, \u0438 \u0434\u0430\u0436\u0435 TXT-\u0437\u0430\u043f\u0438\u0441\u044c \u0447\u0435\u0440\u0435\u0437 API \u0441\u0442\u0430\u0432\u0438\u0442 (\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>txt<\/code>). \u041d\u043e TXT-\u0437\u0430\u043f\u0438\u0441\u044c \u043d\u0430 \u0438\u043c\u044f <strong>\u0440\u043e\u0432\u043d\u043e \u043e\u0434\u043d\u0430<\/strong>: \u0435\u0441\u043b\u0438 \u043e\u0431\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0439\u0434\u0443\u0442 \u043f\u0440\u043e\u0434\u043b\u0435\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442, \u043e\u043d\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0448\u0443\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u0447\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430. \u041f\u043b\u044e\u0441 \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 TTL \u0432 \u0441\u0443\u0442\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f. \u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0432 cert-manager \u0442\u043e\u0436\u0435 \u043d\u0435\u0442 \u2014 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u0436\u0435\u043d \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u043f\u043b\u0430\u0433\u0438\u043d, \u0438 \u0442\u043e\u043a\u0435\u043d DuckDNS \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u0440\u0430\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u043e\u0438\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c. \u0410 \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0430\u043c \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d <code>dev.<\/code> \u043d\u0430 DuckDNS \u2014 \u0437\u043d\u0430\u0447\u0438\u0442 \u043e\u0442\u0434\u0430\u0442\u044c NS \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0437\u043e\u043d\u044b \u0441\u0435\u0440\u0432\u0438\u0441\u0443, \u0433\u0434\u0435 \u0438\u0445 \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0448\u044c.<\/p>\n<h4>hldns.ru: \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u043e\u0433 DuckDNS<\/h4>\n<p>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u043e\u0442\u0435\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0437\u0430\u043c\u0435\u043d\u0430 (\u0438 \u044d\u0442\u043e \u043d\u0435\u043e\u0441\u043f\u043e\u0440\u0438\u043c\u044b\u0439 \u043f\u043b\u044e\u0441), \u043d\u043e \u043f\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0434\u0430\u0436\u0435 \u0441\u043b\u0430\u0431\u0435\u0435:<\/p>\n<ul>\n<li>\n<p>\u0447\u0435\u0440\u0435\u0437 API \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e A-\u0437\u0430\u043f\u0438\u0441\u044c, \u043f\u0440\u043e TXT \u2014 \u043d\u0438 \u0441\u043b\u043e\u0432\u0430;<\/p>\n<\/li>\n<li>\n<p>TTL \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439: \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043e\u043d \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d, \u0437\u0430\u0434\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0438 \u0432 API, \u043d\u0438 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043d\u0435\u043b\u044c\u0437\u044f. \u0421\u043f\u0440\u043e\u0441\u0438\u043b\u0438 NS-\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u2014 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u0430 \u043e\u0442\u0434\u0430\u044e\u0442\u0441\u044f \u0441 TTL 300 \u0441\u0435\u043a\u0443\u043d\u0434. \u042d\u0442\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0443\u0447\u0448\u0435 \u0441\u0443\u0442\u043e\u043a \u0443 DuckDNS, \u043d\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 DNS \u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0434\u043d\u043e \u0438\u043c\u044f \u043d\u0430 \u043e\u0434\u0438\u043d email;<\/p>\n<\/li>\n<li>\n<p>\u0443 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 HTTPS-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0432\u0438\u0441\u0438\u0442 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0445 \u0441 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u043e\u0439 \u043f\u0438\u0441\u0435\u043c, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043f\u0440\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0431\u0435\u0437 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0443\u0434\u0430\u043b\u044f\u044e\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u043b\u0433\u043e\u0434\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>\u0418\u0442\u043e\u0433 \u2014 \u0447\u0438\u0441\u0442\u044b\u0439 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 DNS, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 DNS \u043e\u043d \u043d\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442.<\/p>\n<h4>Cloudflare Free<\/h4>\n<p>\u041d\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, Cloudflare: \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e, TTL \u043e\u0442 60 \u0441\u0435\u043a\u0443\u043d\u0434, cert-manager \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u0441\u0440\u0430\u0437\u0443. \u041d\u043e <a href=\"https:\/\/developers.cloudflare.com\/dns\/zone-setups\/subdomain-setup\/\" rel=\"noopener nofollow\">\u0434\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u0430<\/a> \u0443 \u043d\u0438\u0445 <strong>\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0442\u0430\u0440\u0438\u0444\u0435 Enterprise<\/strong>: \u043d\u0438 Free, \u043d\u0438 Pro, \u043d\u0438 Business \u0435\u0433\u043e \u043d\u0435 \u0434\u0430\u044e\u0442. \u0417\u043d\u0430\u0447\u0438\u0442, Cloudflare \u2014 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441 NS \u0432\u0441\u0435\u0439 \u0437\u043e\u043d\u044b <code>example.com<\/code>, \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0431\u043e\u0435\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u043e\u0439. \u0422\u0440\u043e\u0433\u0430\u0442\u044c \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d \u0440\u0430\u0434\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u044b \u2014 \u0442\u0430\u043a \u0441\u0435\u0431\u0435 \u0438\u0434\u0435\u044f. \u0414\u0443\u043c\u0430\u044e, \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u0435\u0442 \u043d\u0435\u043f\u0440\u0435\u043e\u0434\u043e\u043b\u0438\u043c\u044b\u043c \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0438\u0435\u043c. \u041e\u0442\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c.<\/p>\n<h4>API \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430<\/h4>\n<p>\u0414\u043e\u043c\u0435\u043d \u0443 \u043d\u0430\u0441 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0432 <a href=\"https:\/\/www.webnames.ru\/\" rel=\"noopener nofollow\">Webnames<\/a>, \u0442\u0430\u043c \u0436\u0435 \u0438 DNS-\u0437\u043e\u043d\u0430. \u041b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u0443\u043c\u0435\u0435\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440. \u041d\u0430\u0448\u043b\u0430\u0441\u044c \u043f\u0430\u0440\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432.<\/p>\n<p><a href=\"https:\/\/www.webnames.ru\/partner\/api\" rel=\"noopener nofollow\"><strong>\u041f\u0430\u0440\u0442\u043d\u0451\u0440\u0441\u043a\u0438\u0439 API<\/strong><\/a>. \u0423\u043c\u0435\u0435\u0442 A, CNAME \u0438 TXT, \u043d\u043e:<\/p>\n<ul>\n<li>\n<p>TTL \u043d\u0435 \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u2014 \u043f\u0430\u0440\u043e\u043b\u0435\u043c \u043e\u0442 \u0432\u0441\u0435\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430. \u0421 \u044d\u0442\u0438\u043c \u043f\u0430\u0440\u043e\u043b\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0434\u043e\u043c\u0435\u043d \u0438\u043b\u0438 \u0441\u043c\u0435\u043d\u0438\u0442\u044c NS, \u043a\u043b\u0430\u0441\u0442\u044c \u0435\u0433\u043e \u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u043a\u0443 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u044b \u043d\u0435\u043b\u044c\u0437\u044f (\u043f\u0440\u0438\u0442\u043e\u043c \u0447\u0442\u043e \u044f \u043e\u0442\u043d\u044e\u0434\u044c \u043d\u0435 \u0418\u0411\u044d\u0448\u043d\u0438\u043a).<\/p>\n<\/li>\n<\/ul>\n<p><a href=\"https:\/\/github.com\/regtime-ltd\/certbot-dns-webnames#5-howto-api-key\" rel=\"noopener nofollow\"><strong>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0434\u043b\u044f ACME-\u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a<\/strong><\/a>. \u042d\u0442\u043e \u0443\u0436\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u0435\u0435: \u043a\u043b\u044e\u0447 \u0443\u043c\u0435\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c TXT, \u0434\u043e\u043c\u0435\u043d \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0435\u0441\u0442\u044c \u0432 <a href=\"https:\/\/go-acme.github.io\/lego\/dns\/webnamesru\/\" rel=\"noopener nofollow\">lego<\/a> \u0438 \u0432 <a href=\"https:\/\/github.com\/regtime-ltd\/certbot-dns-webnames\" rel=\"noopener nofollow\">\u043f\u043b\u0430\u0433\u0438\u043d\u0435 \u0434\u043b\u044f certbot<\/a> \u043e\u0442 \u0441\u0430\u043c\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \u041d\u043e:<\/p>\n<ul>\n<li>\n<p>\u0434\u043b\u044f cert-manager \u043d\u0430\u0448\u0451\u043b\u0441\u044f \u043b\u0438\u0448\u044c \u043e\u0434\u0438\u043d \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u043f\u043b\u0430\u0433\u0438\u043d, <a href=\"https:\/\/github.com\/Vasfed\/cert-manager-webhook-webnames\" rel=\"noopener nofollow\">cert-manager-webhook-webnames<\/a>, \u0431\u0435\u0437 \u0437\u0432\u0451\u0437\u0434 \u0438 \u0440\u0435\u043b\u0438\u0437\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u043a\u043b\u044e\u0447 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0430 \u0432\u0441\u044e \u0437\u043e\u043d\u0443, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u0438 \u0443\u0442\u0435\u0447\u043a\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0438 \u043d\u0430 \u0431\u043e\u0435\u0432\u044b\u0435 \u0438\u043c\u0435\u043d\u0430;<\/p>\n<\/li>\n<li>\n<p>TTL \u043d\u0435 \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f (\u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 2 \u0447\u0430\u0441\u0430);<\/p>\n<\/li>\n<li>\n<p>A-\u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0431\u044b, \u0441\u043a\u0430\u0436\u0435\u043c, \u043d\u0430 DuckDNS \u0441 \u0441\u0443\u0442\u043e\u0447\u043d\u044b\u043c TTL.<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0441\u0430\u043c\u044b\u0439 \u043f\u043b\u043e\u0445\u043e\u0439, \u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0437\u0430\u043f\u0430\u0441\u043d\u044b\u043c \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439, \u0435\u0441\u043b\u0438 \u043b\u0443\u0447\u0448\u0435 \u043d\u0435 \u043d\u0430\u0439\u0434\u0451\u0442\u0441\u044f.<\/p>\n<h4>Yandex Cloud DNS<\/h4>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0443 \u043d\u0430\u0441 \u0438 \u0442\u0430\u043a \u0436\u0438\u0432\u0451\u0442 \u0432 Yandex Cloud, \u0442\u0430\u043a \u0447\u0442\u043e <a href=\"https:\/\/yandex.cloud\/ru\/services\/dns\" rel=\"noopener nofollow\">Cloud DNS<\/a> \u2014 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442: \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 API, TXT-\u0437\u0430\u043f\u0438\u0441\u0438, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0439 TTL, \u0434\u043b\u044f cert-manager \u0435\u0441\u0442\u044c <a href=\"https:\/\/github.com\/yandex-cloud\/cert-manager-webhook-yandex\" rel=\"noopener nofollow\">\u043f\u043b\u0430\u0433\u0438\u043d<\/a>. \u0415\u0433\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438 \u0435\u0449\u0451 \u0440\u0430\u043d\u044c\u0448\u0435, \u0432 \u0441\u0432\u044f\u0437\u043a\u0435 \u0441 <a href=\"https:\/\/github.com\/kubernetes-sigs\/external-dns\" rel=\"noopener nofollow\">external-dns<\/a>, \u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0446\u0435\u043d\u044b: \u043e\u043a\u043e\u043b\u043e 43 \u20bd \u0432 \u043c\u0435\u0441\u044f\u0446 \u0437\u0430 \u0437\u043e\u043d\u0443 \u043f\u043b\u044e\u0441 \u043e\u043f\u043b\u0430\u0442\u0430 \u0437\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u044b. \u0414\u0435\u043d\u044c\u0433\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435, \u043d\u043e \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043f\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u2014 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043a \u0432\u0435\u043d\u0434\u043e\u0440\u0443. \u0412\u0442\u043e\u0440\u043e\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0443 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430, \u0438 \u0434\u0435\u043b\u0430\u0442\u044c DNS \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u044b \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u043a\u0430 \u043c\u044b \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u0438. \u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0447\u0442\u043e \u0432\u0441\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u2014 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u043c\u0438, \u0430 \u0442\u0430\u043a \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043d\u0438\u0445.<\/p>\n<h4>\u041a\u043e\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438<\/h4>\n<p>Hetzner DNS, deSEC, Bunny DNS \u0438 AWS Route53 \u0431\u044b\u043b\u0438 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432, \u043d\u043e \u0434\u043e \u043d\u0438\u0445 \u043d\u0435 \u0434\u043e\u0448\u043b\u0438: FreeNS \u0437\u0430\u043a\u0440\u044b\u043b \u0432\u0441\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u043d\u044c\u0448\u0435. \u0417\u0430\u0440\u0443\u0431\u0435\u0436\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b (\u043a\u0440\u043e\u043c\u0435 Cloudflare, \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0448\u0435) \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439: \u043f\u043e \u043d\u0430\u0448\u0435\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0435 \u0441\u0435\u0439\u0447\u0430\u0441, \u0441\u0430\u043c\u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435, \u044d\u0442\u043e \u0440\u0438\u0441\u043a.<\/p>\n<h3>FreeNS<\/h3>\n<p>\u0418 \u0442\u0443\u0442 \u043d\u0430\u0448\u0451\u043b\u0441\u044f <a href=\"https:\/\/freens.ru\/\" rel=\"noopener nofollow\">FreeNS<\/a> \u2014 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 DNS-\u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0441 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u043c <a href=\"https:\/\/www.freens.ru\/api-docs\" rel=\"noopener nofollow\">REST API<\/a>: \u043a\u043b\u044e\u0447 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 <code>X-API-Key<\/code>, TTL \u043e\u0442 <strong>60<\/strong> \u0434\u043e 86400 \u0441\u0435\u043a\u0443\u043d\u0434, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u0447\u0442\u0435\u043d\u0438\u0435, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0435\u0439. \u041e\u0434\u0438\u043d API \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 <strong>\u0438<\/strong> \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 DNS, <strong>\u0438<\/strong> A-\u0437\u0430\u043f\u0438\u0441\u0438 \u0441 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u043c TTL \u2014 \u0442\u043e \u0435\u0441\u0442\u044c DuckDNS \u0438 \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0430 CNAME-\u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0443\u0445\u043e\u0434\u044f\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c.<\/p>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0447\u0442\u043e-\u0442\u043e \u043f\u0438\u0441\u0430\u0442\u044c, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438 \u0440\u0443\u043a\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>\u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d <code>dev.example.com<\/code> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0437\u043e\u043d\u0430 \u0438 \u043e\u0442\u0434\u0430\u0451\u0442\u0441\u044f \u0441 <code>a.freens.ru<\/code> \u0438 <code>b.freens.ru<\/code> (\u0430\u0432\u0442\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u043e) \u0435\u0449\u0451 <strong>\u0434\u043e<\/strong> \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u2014 \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c;<\/p>\n<\/li>\n<li>\n<p>TXT \u0441 TTL 60 \u0432\u0438\u0434\u043d\u0430 \u043d\u0430 \u043e\u0431\u043e\u0438\u0445 NS \u043c\u0435\u043d\u044c\u0448\u0435 \u0447\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u043c\u0438\u043d\u0443\u0442\u0443 \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>A-\u0437\u0430\u043f\u0438\u0441\u044c <code>*<\/code> \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0438 \u043d\u0430 \u043e\u0434\u0438\u043d, \u0438 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u043e\u0432, \u0430 \u044f\u0432\u043d\u0430\u044f TXT \u0440\u044f\u0434\u043e\u043c \u0441 \u043d\u0435\u0439 \u043d\u0435 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0441\u043b\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u0430 NS \u0447\u0435\u0441\u0442\u043d\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 <code>NXDOMAIN<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c NS-\u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043b\u044f <code>dev<\/code> \u2014 \u0438 \u0432\u0441\u044f \u0442\u0435\u0441\u0442\u043e\u0432\u0430\u044f \u0437\u043e\u043d\u0430 \u0436\u0438\u0432\u0451\u0442 \u043d\u0430 FreeNS, \u0431\u043e\u0435\u0432\u0430\u044f \u043d\u0435 \u0442\u0440\u043e\u043d\u0443\u0442\u0430. \u041a\u0440\u0430\u0441\u043e\u0442\u0430, \u0434\u0430 \u0438 \u0442\u043e\u043b\u044c\u043a\u043e.<\/p>\n<p>\u041d\u0435 \u0431\u0435\u0437 \u043b\u043e\u0436\u043a\u0438 \u0434\u0451\u0433\u0442\u044f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e.<\/p>\n<h4>\u0420\u0438\u0441\u043a\u0438 \u2014 \u0447\u0435\u0441\u0442\u043d\u043e<\/h4>\n<p>\u041d\u0435 \u0431\u0443\u0434\u0443 \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0438\u0434, \u0447\u0442\u043e \u044d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f:<\/p>\n<ul>\n<li>\n<p>\u0441\u0435\u0440\u0432\u0438\u0441 \u0432\u0435\u0441\u044c\u043c\u0430 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439, \u043c\u043e\u043b\u043e\u0434\u043e\u0439 &#8212; \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u043e\u043a\u043e\u043b\u043e \u043f\u043e\u043b\u0443\u0433\u043e\u0434\u0430, \u0432\u0435\u0434\u0451\u0442 \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u043d\u043e\u0435 \u043b\u0438\u0446\u043e;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044f \u0438 SLA \u043d\u0435\u0442;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0431\u0430 NS \u0443 \u043e\u0434\u043d\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0435\u0440\u0430;<\/p>\n<\/li>\n<li>\n<p>API-\u043a\u043b\u044e\u0447 \u043e\u0434\u0438\u043d \u043d\u0430 \u0432\u0435\u0441\u044c \u0430\u043a\u043a\u0430\u0443\u043d\u0442, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u043e\u0434\u043d\u043e\u0439 \u0437\u043e\u043d\u043e\u0439 \u043d\u0435\u043b\u044c\u0437\u044f;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 (\u0437\u0430\u043f\u0438\u0441\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430) \u043a\u044d\u0448\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 1 \u0447\u0430\u0441.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f <strong>\u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439<\/strong> \u0441\u0440\u0435\u0434\u044b \u044d\u0442\u043e \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e, \u0438 \u044d\u0442\u043e \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0432 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0438 (ADR) \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0437\u0430\u043f\u0430\u0441\u043d\u044b\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c. \u0414\u043b\u044f \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d\u0430 \u044f \u0431\u044b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u043f\u043e\u0434\u0443\u043c\u0430\u043b.<\/p>\n<p>\u041d\u0443 \u0438 \u0435\u0449\u0451 \u043e\u0434\u043d\u043e \u043e\u0433\u043e\u0440\u0447\u0435\u043d\u0438\u0435: \u0434\u043b\u044f Webnames \u043d\u0430\u0448\u0451\u043b\u0441\u044f \u0445\u043e\u0442\u044f \u0431\u044b \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 <a href=\"https:\/\/github.com\/Vasfed\/cert-manager-webhook-webnames\" rel=\"noopener nofollow\">cert-manager-webhook-webnames<\/a>, \u0430 \u0442\u0443\u0442 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u043c\u0443\u2026 \u041d\u043e, \u0437\u0430\u0431\u0435\u0433\u0430\u044f \u0432\u043f\u0435\u0440\u0451\u0434, \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043d\u0435\u043f\u043b\u043e\u0445\u043e.<\/p>\n<h4>\u0421\u0432\u043e\u0434\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f DNS-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432<\/h4>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0421\u0435\u0440\u0432\u0438\u0441<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0425\u043e\u0440\u043e\u0448\u043e<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041f\u043b\u043e\u0445\u043e<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0418\u0442\u043e\u0433<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">DuckDNS<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e, \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e, \u0435\u0441\u0442\u044c TXT \u0447\u0435\u0440\u0435\u0437 API<\/p>\n<\/td>\n<td>\n<p align=\"left\">TTL 86400, \u043e\u0434\u043d\u0430 TXT \u043d\u0430 \u0438\u043c\u044f, \u043d\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0432 cert-manager<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0417\u0430\u043c\u0435\u043d\u0438\u043b\u0438<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">hldns.ru<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e, \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0439, TTL 300 \u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041d\u0435\u0442 TXT, TTL \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0441\u0430\u0439\u0442\u043e\u043c \u0438 \u043f\u043e\u0447\u0442\u043e\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0442\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Cloudflare Free<\/p>\n<\/td>\n<td>\n<p align=\"left\">TTL \u043e\u0442 60 \u0441, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 cert-manager \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u043e\u0434\u0434\u043e\u043c\u0435\u043d \u2014 \u0442\u043e\u043b\u044c\u043a\u043e Enterprise, \u0438\u043d\u0430\u0447\u0435 \u043f\u0435\u0440\u0435\u0435\u0437\u0434 \u0432\u0441\u0435\u0439 \u0437\u043e\u043d\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0442\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Yandex Cloud DNS<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 API, TXT, TTL, \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f cert-manager<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u043b\u0430\u0442\u043d\u043e (~43 \u20bd\/\u043c\u0435\u0441 + \u0437\u0430\u043f\u0440\u043e\u0441\u044b), \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043a \u0432\u0435\u043d\u0434\u043e\u0440\u0443<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0442\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Webnames, \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0441\u043a\u0438\u0439 API<\/p>\n<\/td>\n<td>\n<p align=\"left\">A, CNAME, TXT, \u0434\u043e\u043c\u0435\u043d \u043d\u0435 \u043f\u0435\u0440\u0435\u0435\u0437\u0436\u0430\u0435\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041d\u0435\u0442 TTL, \u043f\u0430\u0440\u043e\u043b\u044c \u043e\u0442 \u0432\u0441\u0435\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0442\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Webnames, \u043a\u043b\u044e\u0447 \u0434\u043b\u044f ACME<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0440\u0430\u0432\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 TXT, \u0435\u0441\u0442\u044c \u0432 lego \u0438 certbot<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041d\u0435\u0442 TTL, \u043a\u043b\u044e\u0447 \u043d\u0430 \u0432\u0441\u044e \u0437\u043e\u043d\u0443, A-\u0437\u0430\u043f\u0438\u0441\u0438 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043d\u0430 DuckDNS<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0417\u0430\u043f\u0430\u0441\u043d\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">FreeNS<\/p>\n<\/td>\n<td>\n<p align=\"left\">TTL \u043e\u0442 60 \u0441, \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 API, \u0437\u043e\u043d\u0430 \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u0447\u0430\u0441\u0442\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043b\u044e\u0447 \u043d\u0430 \u0432\u0435\u0441\u044c \u0430\u043a\u043a\u0430\u0443\u043d\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412\u044b\u0431\u0440\u0430\u043b\u0438<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h3>\u041d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430<\/h3>\n<p>\u041a\u0430\u043a \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b, cert-manager \u0441\u0430\u043c \u0443\u043c\u0435\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 Cloudflare, Route53, Google Cloud DNS, Azure DNS \u0438 \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u043a\u0440\u0443\u043f\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u043c\u0438. \u0414\u043b\u044f \u0432\u0441\u0435\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0435\u0441\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c <a href=\"https:\/\/cert-manager.io\/docs\/configuration\/acme\/dns01\/webhook\/\" rel=\"noopener nofollow\">\u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 (webhook)<\/a>: \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 cert-manager \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 Kubernetes API (API aggregation), \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c TXT-\u0437\u0430\u043f\u0438\u0441\u044c <code>_acme-challenge<\/code>.<\/p>\n<p>\u0414\u043b\u044f FreeNS \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0435 \u0431\u044b\u043b\u043e. \u0417\u043d\u0430\u0447\u0438\u0442, \u043f\u0438\u0448\u0435\u043c.<\/p>\n<h3>cert-manager-webhook-freens<\/h3>\n<p>\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439: <a href=\"https:\/\/github.com\/Hubbitus\/cert-manager-webhook-freens\" rel=\"noopener nofollow\">github.com\/Hubbitus\/cert-manager-webhook-freens<\/a>, \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f Apache-2.0. \u041d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 Go, \u0437\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0432\u0437\u044f\u0442 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d <a href=\"https:\/\/github.com\/cert-manager\/webhook-example\" rel=\"noopener nofollow\">cert-manager\/webhook-example<\/a>.<\/p>\n<h4>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/h4>\n<p><a href=\"https:\/\/hub.docker.com\/r\/hubbitus\/cert-manager-webhook-freens\" rel=\"noopener nofollow\">\u041e\u0431\u0440\u0430\u0437<\/a> <code>docker.io\/hubbitus\/cert-manager-webhook-freens<\/code> \u0438 <a href=\"https:\/\/hub.docker.com\/r\/hubbitus\/cert-manager-webhook-freens-chart\" rel=\"noopener nofollow\">Helm-\u0447\u0430\u0440\u0442<\/a> \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 <a href=\"https:\/\/github.com\/Hubbitus\/cert-manager-webhook-freens\/tags\" rel=\"noopener nofollow\">\u0442\u0435\u0433<\/a> \u0432\u0438\u0434\u0430 <code>vX.Y.Z<\/code>. \u0421\u0442\u0430\u0432\u0438\u043c \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0451\u043d cert-manager, \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u044f \u0432\u0435\u0440\u0441\u0438\u044e \u0447\u0430\u0440\u0442\u0430 \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0443\u044e \u0441\u0443\u043c\u043c\u0443 (digest) \u043e\u0431\u0440\u0430\u0437\u0430:<\/p>\n<pre><code class=\"bash\">helm install cert-manager-webhook-freens oci:\/\/registry-1.docker.io\/hubbitus\/cert-manager-webhook-freens-chart \\  --version &lt;X.Y.Z&gt; --namespace cert-manager --set image.digest=sha256:&lt;digest&gt;<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041a\u043b\u044e\u0447 FreeNS \u043a\u043b\u0430\u0434\u0451\u043c \u0432 \u0441\u0435\u043a\u0440\u0435\u0442 \u0432 \u0442\u043e\u043c \u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0438\u043c\u0451\u043d. \u0427\u0430\u0440\u0442 \u0434\u0430\u0451\u0442 \u043f\u043b\u0430\u0433\u0438\u043d\u0443 \u043f\u0440\u0430\u0432\u043e \u0447\u0438\u0442\u0430\u0442\u044c <strong>\u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e\u0442<\/strong> \u0441\u0435\u043a\u0440\u0435\u0442 (\u0438\u043c\u044f \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f <code>apiKeySecret.name<\/code>, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e <code>freens-api-key<\/code>), \u0430 \u043d\u0435 \u0432\u0441\u0435 \u0441\u0435\u043a\u0440\u0435\u0442\u044b \u043f\u043e\u0434\u0440\u044f\u0434:<\/p>\n<pre><code class=\"bash\">kubectl -n cert-manager create secret generic freens-api-key --from-literal=api-key=&lt;key&gt;<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<h4>ClusterIssuer<\/h4>\n<pre><code class=\"yaml\">apiVersion: cert-manager.io\/v1kind: ClusterIssuermetadata:  name: letsencryptspec:  acme:    server: https:\/\/acme-v02.api.letsencrypt.org\/directory    email: you@example.com    privateKeySecretRef:      name: letsencrypt-account    solvers:      - dns01:          webhook:            groupName: acme.freens.ru            solverName: freens            config:              apiKeySecretRef:                name: freens-api-key                key: api-key              # \u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e: \u0434\u043e\u043c\u0435\u043d \u0432 FreeNS, \u0435\u0441\u043b\u0438 \u043e\u043d \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0437\u043e\u043d\u044b, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u043f\u043e SOA.              zone: dev.example.com<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u2014 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 <code>Certificate<\/code> \u043d\u0430 <code>*.dev.example.com<\/code>, \u0438 cert-manager \u0432\u0441\u0451 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u0430\u043c.<\/p>\n<h3>\u0427\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438<\/h3>\n<h4>\u041f\u043b\u0430\u0433\u0438\u043d \u0431\u0435\u0437 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f<\/h4>\n<p>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0443 cert-manager \u043f\u0440\u043e\u0441\u0442\u043e\u0439: <code>Present<\/code> (\u0441\u043e\u0437\u0434\u0430\u0439 TXT) \u0438 <code>CleanUp<\/code> (\u0443\u0434\u0430\u043b\u0438 \u0435\u0451). \u041d\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435: \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u043c\u0435\u0436\u0434\u0443 \u044d\u0442\u0438\u043c\u0438 \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438. \u041d\u043e \u0435\u0441\u043b\u0438 \u043f\u043e\u0434 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f \u043f\u043e\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435, \u0437\u0430\u043f\u0438\u0441\u044c \u0442\u0430\u043a \u0438 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0432\u0438\u0441\u0435\u0442\u044c \u0432 \u0437\u043e\u043d\u0435.<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043f\u043b\u0430\u0433\u0438\u043d <strong>\u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0445\u0440\u0430\u043d\u0438\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f<\/strong>:<\/p>\n<ul>\n<li>\n<p><code>Present<\/code> \u0447\u0438\u0442\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0437\u043e\u043d\u044b \u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 TXT <code>_acme-challenge<\/code> \u0441 TTL 60, <strong>\u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438<\/strong> \u0437\u0430\u043f\u0438\u0441\u0438 \u0441 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u0438\u043c\u0435\u043d\u0435\u043c \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0435\u0449\u0451 \u043d\u0435\u0442 (\u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u043b\u043e\u043c\u0430\u0435\u0442);<\/p>\n<\/li>\n<li>\n<p><code>CleanUp<\/code> \u0441\u043d\u043e\u0432\u0430 \u0447\u0438\u0442\u0430\u0435\u0442 \u0437\u043e\u043d\u0443 \u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 <strong>\u0432\u0441\u0435<\/strong> TXT, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442 \u0438 \u0438\u043c\u044f, \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438.<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"go\">\/\/ CleanUp \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 TXT-\u0437\u0430\u043f\u0438\u0441\u0438 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438.func (s *freensSolver) CleanUp(ch *v1alpha1.ChallengeRequest) error {...for _, r := range matching(records, t.name, ch.Key) {if err := t.api.DeleteRecord(ctx, t.domainID, r.ID); err != nil {errs = append(errs, err)continue}...}return errors.Join(errs...)}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0411\u043e\u043d\u0443\u0441: \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043d\u0430 <code>dev.example.com<\/code> + <code>*.dev.example.com<\/code> \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 <strong>\u0434\u0432\u0435<\/strong> \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c <code>_acme-challenge.dev.example.com<\/code>, \u043d\u043e \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e \u043f\u0430\u0440\u0435 (\u0438\u043c\u044f, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435), \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u044e\u0442 \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430. \u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0433\u0440\u0430\u0431\u043b\u0438, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0434\u0435\u0441\u044c \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e.<\/p>\n<h4>\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c<\/h4>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0437\u0430\u0431\u043e\u0442\u0438\u043b\u0441\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u043b\u0430\u0433\u0438\u043d \u043d\u0435 \u0441\u0442\u0430\u043b \u0434\u044b\u0440\u043e\u0439 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435:<\/p>\n<ul>\n<li>\n<p><strong>\u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043f\u0440\u0430\u0432 (RBAC)<\/strong> \u2014 \u0434\u043e\u0441\u0442\u0443\u043f \u0442\u043e\u043b\u044c\u043a\u043e \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u0441\u0435\u043a\u0440\u0435\u0442\u0443 \u0441 \u043a\u043b\u044e\u0447\u043e\u043c;<\/p>\n<\/li>\n<li>\n<p><strong>API-\u043a\u043b\u044e\u0447 \u043d\u0435 \u0443\u0439\u0434\u0451\u0442 \u043d\u0430 \u0447\u0443\u0436\u043e\u0439 \u0445\u043e\u0441\u0442<\/strong> \u2014 <code>apiUrl<\/code> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441 <code>https<\/code>, \u0438 \u043a\u043b\u044e\u0447 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0445\u043e\u0441\u0442 (\u043d\u0430 \u044d\u0442\u043e \u0435\u0441\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u0441\u0442);<\/p>\n<\/li>\n<li>\n<p>\u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043e\u0431\u0440\u0430\u0437 \u2014 <code>distroless\/static:nonroot<\/code>, \u0432\u0441\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043e\u0431\u0440\u0430\u0437\u044b \u0438 GitHub Actions \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0443\u043c\u043c\u0435;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0437\u0430\u0434\u0430\u043d\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0431\u0440\u0430\u0437 \u0438 \u0447\u0430\u0440\u0442 <strong>\u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 cosign<\/strong> (\u0431\u0435\u0437 \u043a\u043b\u044e\u0447\u0435\u0439, keyless) \u043f\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0443\u043c\u043c\u0435, \u0441\u0431\u043e\u0440\u043a\u0430 \u043f\u043e\u0434 <code>linux\/amd64<\/code> \u0438 <code>linux\/arm64<\/code>.<\/p>\n<\/li>\n<\/ul>\n<h4>\u0422\u0435\u0441\u0442\u044b<\/h4>\n<p>\u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u041f\u041e \u0431\u0435\u0437 \u0430\u0432\u0442\u043e\u0442\u0435\u0441\u0442\u043e\u0432? \u0412\u043e\u043f\u0440\u043e\u0441 \u0440\u0438\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u2014 \u0437\u0434\u0435\u0441\u044c \u043e\u043d\u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0435\u0441\u0442\u044c.<\/p>\n<p>\u041e\u0442\u043c\u0435\u0447\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432:<\/p>\n<ul>\n<li>\n<p>\u043a\u043e\u0434 \u043f\u0438\u0441\u0430\u043b\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043e\u0442 \u0442\u0435\u0441\u0442\u043e\u0432 (TDD) \u2014 \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u044b \u0438\u0434\u0443\u0442 \u043f\u0430\u0440\u0430\u043c\u0438 <code>test: ... (red)<\/code> \u2192 <code>feat\/fix: ...<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>make check<\/code> <strong>\u0442\u0440\u0435\u0431\u0443\u0435\u0442 100% \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/strong>, \u043f\u043b\u044e\u0441 <code>go vet<\/code>, golangci-lint, <code>helm lint<\/code> \u0438 govulncheck;<\/p>\n<\/li>\n<li>\n<p>\u0442\u0435\u0441\u0442\u044b \u0447\u0430\u0440\u0442\u0430 \u0441\u0432\u0435\u0440\u044f\u044e\u0442 \u043f\u0440\u0430\u0432\u0430 RBAC \u0438 \u0438\u0445 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u0442\u043e\u0447\u043d\u043e, \u0430 \u043d\u0435 \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 \u00ab\u0447\u0442\u043e-\u0442\u043e \u0442\u0430\u043c \u0435\u0441\u0442\u044c\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u0438 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u2014 <strong>\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0442\u0435\u0441\u0442\u043e\u0432 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 (conformance) \u043e\u0442 cert-manager \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0442\u0438\u0432 \u0436\u0438\u0432\u043e\u0433\u043e FreeNS<\/strong>, \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u043e\u043d\u0435, \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u0447\u0435\u0440\u0435\u0437 \u0430\u0432\u0442\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u044b\u0439 <code>a.freens.ru<\/code>. \u041f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435 \u0432 <code>main<\/code> \u0438 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0435\u0434 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u0440\u0435\u043b\u0438\u0437\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>\u0411\u0435\u0437 \u043a\u043b\u044e\u0447\u0430 <code>FREENS_API_KEY<\/code> \u0442\u0435\u0441\u0442\u044b \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0435\u0447\u0430\u0442\u0430\u044e\u0442 <code>SKIP<\/code> \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0442\u0441\u044f \u0441 \u043a\u043e\u0434\u043e\u043c 0, \u0442\u0430\u043a \u0447\u0442\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043d\u0435 \u043c\u0435\u0448\u0430\u044e\u0442:<\/p>\n<pre><code class=\"bash\">mise installmise exec -- make all                                   # \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 + \u0441\u0431\u043e\u0440\u043a\u0430FREENS_API_KEY=... mise exec -- make test-conformance   # \u043f\u0440\u043e\u0442\u0438\u0432 \u0436\u0438\u0432\u043e\u0433\u043e FreeNS<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<h4>\u0412\u044b\u043f\u0443\u0441\u043a \u0440\u0435\u043b\u0438\u0437\u0430<\/h4>\n<p>\u0420\u0435\u043b\u0438\u0437 \u2014 \u044d\u0442\u043e \u0442\u0435\u0433 <code>vX.Y.Z<\/code> \u043d\u0430 \u043a\u043e\u043c\u043c\u0438\u0442\u0435 \u0438\u0437 <code>main<\/code>. \u0414\u0430\u043b\u044c\u0448\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u044f:<\/p>\n<ol>\n<li>\n<p><code>verify<\/code> \u2014 \u0431\u0435\u0437 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u0435\u043a\u0440\u0435\u0442\u0430\u043c: \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u0435\u0442 \u0442\u0435\u0433 \u043d\u0435 \u0438\u0437 <code>main<\/code> \u0438\u043b\u0438 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0449\u0438\u0439 \u0441 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u0447\u0430\u0440\u0442\u0430, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 <code>make check<\/code> \u0438 \u043f\u0440\u043e\u0431\u043d\u043e \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440;<\/p>\n<\/li>\n<li>\n<p><code>conformance<\/code> \u2014 \u0442\u0435\u0441\u0442\u044b \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u043e\u0442\u0438\u0432 \u0436\u0438\u0432\u043e\u0433\u043e FreeNS;<\/p>\n<\/li>\n<li>\n<p><code>publish<\/code> \u2014 \u0441\u0431\u043e\u0440\u043a\u0430 \u043e\u0431\u0440\u0430\u0437\u0430 \u043f\u043e\u0434 \u043e\u0431\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0438 OCI-\u0447\u0430\u0440\u0442\u0430;<\/p>\n<\/li>\n<li>\n<p><code>sign<\/code> \u2014 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u0441 \u043f\u0440\u0430\u0432\u043e\u043c <code>id-token: write<\/code>: \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0437 \u0438 \u0447\u0430\u0440\u0442 \u0447\u0435\u0440\u0435\u0437 cosign.<\/p>\n<\/li>\n<\/ol>\n<p>\u0421\u0435\u043a\u0440\u0435\u0442\u044b \u0440\u0430\u0437\u043d\u0435\u0441\u0435\u043d\u044b \u043f\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f\u043c GitHub (environments), \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0438\u0445 \u043d\u0435\u0442 \u0432\u043e\u0432\u0441\u0435. \u0412\u0435\u0440\u0441\u0438\u0438 \u0432\u0441\u0435\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 <code>mise.toml<\/code> \u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0443\u043c\u043c\u0430\u043c\u0438 \u0432 <code>mise.lock<\/code>.<\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432 1,3 \u0442\u044b\u0441. \u0441\u0442\u0440\u043e\u043a Go \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0442\u0435\u0441\u0442\u0430\u043c\u0438 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u043e\u043c. \u041d\u043e \u043f\u043b\u0430\u0433\u0438\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 cert-manager, \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u043a\u0440\u0435\u0442\u0443 \u0438 \u043c\u0435\u043d\u044f\u0435\u0442 DNS \u2014 \u043c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u0435\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c.<\/p>\n<h3>\u0418\u0442\u043e\u0433<\/h3>\n<p>\u0427\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438:<\/p>\n<ul>\n<li>\n<p>\u0442\u0435\u0441\u0442\u043e\u0432\u0430\u044f \u0437\u043e\u043d\u0430 <code>dev.example.com<\/code> \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 FreeNS, \u0431\u043e\u0435\u0432\u0430\u044f \u0437\u043e\u043d\u0430 \u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043d\u0435 \u0442\u0440\u043e\u043d\u0443\u0442\u0430;<\/p>\n<\/li>\n<li>\n<p>TTL \u2014 \u043c\u0438\u043d\u0443\u0442\u0430 \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u0443\u0442\u043e\u043a, \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c <code>*.dev.example.com<\/code> \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b Let\u2019s Encrypt \u043d\u0430 \u0432\u0441\u0435 \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u044b \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 DNS \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043e\u0431\u043e\u0438\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u0445, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0443\u0434\u0430 \u0441\u0435\u0439\u0447\u0430\u0441 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 DNS;<\/p>\n<\/li>\n<li>\n<p>DuckDNS \u0438 \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0430 CNAME-\u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u044b;<\/p>\n<\/li>\n<li>\n<p>\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u043d\u043e \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u0439 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043b\u044e\u0431\u043e\u0439, \u043a\u0442\u043e \u0434\u0435\u0440\u0436\u0438\u0442 \u0437\u043e\u043d\u0443 \u043d\u0430 FreeNS.<\/p>\n<\/li>\n<\/ul>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 DNS \u0441 API \u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u043c TTL \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0438 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0430 Cloudflare \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0438\u0437-\u0437\u0430 \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u2014 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435. \u0411\u0443\u0434\u0443 \u0440\u0430\u0434 \u0437\u0432\u0451\u0437\u0434\u043e\u0447\u043a\u0430\u043c \u2b50, \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c \u043d\u0430 \u0441\u043b\u0438\u044f\u043d\u0438\u0435 \u043d\u0430 <a href=\"https:\/\/github.com\/Hubbitus\/cert-manager-webhook-freens\" rel=\"noopener nofollow\">GitHub<\/a>.<\/p>\n<p>\u0410 \u043a\u0430\u043a \u0432\u044b \u0440\u0435\u0448\u0430\u0435\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 DNS \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0441\u0440\u0435\u0434? \u0414\u0435\u043b\u0438\u0442\u0435\u0441\u044c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445!<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1089388\/\">https:\/\/habr.com\/ru\/articles\/1089388\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435!\u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0447\u0442\u043e \u0442\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u2014 A-\u0437\u0430\u043f\u0438\u0441\u044c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043b \u0438 \u0437\u0430\u0431\u044b\u043b. \u0410\u043d \u043d\u0435\u0442: \u0441\u0442\u043e\u0438\u043b\u043e \u0437\u0430\u0445\u043e\u0442\u0435\u0442\u044c \u043e\u0434\u0438\u043d \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0441\u0440\u0430\u0437\u0443 \u043d\u0430 \u0432\u0441\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u044b \u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u043e\u0432\u0443\u044e \u0441\u0440\u0435\u0434\u0443 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 Kubernetes, \u0434\u0430 \u0435\u0449\u0451 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b Let\u2019s Encrypt \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e cert-manager\u2026 \u0412\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e, \u0434\u0430 \u043d\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e, \u043a\u0430\u043a \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b.\u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 DynDNS, \u0441\u043a\u0430\u0436\u0435\u043c, DuckDNS.org, \u043e\u0442\u0434\u0430\u0451\u0442 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441 TTL \u0432 \u0441\u0443\u0442\u043a\u0438 (\u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u043b\u0441\u044f \u2014 \u0430 \u043b\u044e\u0434\u0438 \u0435\u0449\u0451 \u0434\u043e\u043b\u0433\u043e \u0445\u043e\u0434\u044f\u0442 \u043d\u0430 \u0441\u0442\u0430\u0440\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440), \u0430 wildcard \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 Let\u2019s Encrypt \u0432\u044b\u0434\u0430\u0451\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 DNS-\u0437\u0430\u043f\u0438\u0441\u0438.\u0418\u0449\u0435\u043c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0443 \u0438 \u0443\u0447\u0438\u043c cert-manager \u0441 \u043d\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u0435\u0437 \u043a\u043e\u0441\u0442\u044b\u043b\u0435\u0439. \u0412 \u0438\u0442\u043e\u0433\u0435 \u0440\u043e\u0434\u0438\u043b\u0441\u044f \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442: cert-manager-webhook-freens \u2014 \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f cert-manager, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043c\u0435\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0447\u0435\u0440\u0435\u0437 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 DNS-\u0445\u043e\u0441\u0442\u0438\u043d\u0433 FreeNS.\u0421\u0440\u0430\u0437\u0443 \u043e \u0442\u043e\u043c, \u0434\u043b\u044f \u043a\u043e\u0433\u043e \u044d\u0442\u043e. \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 Kubernetes \u0438 cert-manager, \u0441\u0442\u0430\u0442\u044c\u044f \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043c\u0430\u043b\u043e\u043f\u043e\u043b\u0435\u0437\u043d\u0430, \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u0440\u0430\u0437\u0434\u0435\u043b \u043f\u0440\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0445 DNS-\u0445\u043e\u0441\u0442\u0438\u043d\u0433\u043e\u0432 (\u0438 \u043e\u043d \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u0435\u0442 \u043d\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 \u043e\u0431\u0437\u043e\u0440 \u0440\u044b\u043d\u043a\u0430).\u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u0437\u0430\u0447\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0441\u044f, \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u043f\u043e\u0434\u043e\u0448\u043b\u0438 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b, \u043a\u0430\u043a \u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0447\u0442\u043e \u0443 \u043d\u0435\u0433\u043e \u0432\u043d\u0443\u0442\u0440\u0438.\u0421 \u0447\u0435\u0433\u043e \u0432\u0441\u0451 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c: DuckDNS \u0438 TTL \u0432 \u0441\u0443\u0442\u043a\u0438\u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0441 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u043e\u0439 \u0432 Kubernetes. \u0418\u043c\u0435\u043d\u0430 \u0432\u0438\u0434\u0430 argo.dev.example.com \u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 CNAME-\u0437\u0430\u043f\u0438\u0441\u044f\u043c\u0438 \u043d\u0430 example-dev.duckdns.org, \u0430 A-\u0437\u0430\u043f\u0438\u0441\u044c \u0432 DuckDNS \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u043b\u0430\u0441\u044c \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u043f\u0440\u0438 \u043f\u043e\u0434\u044a\u0451\u043c\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u0414\u0451\u0448\u0435\u0432\u043e, \u0441\u0435\u0440\u0434\u0438\u0442\u043e, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.\u041f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0448\u044c \u043d\u0430 TTL. \u0421\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c \u0430\u0432\u0442\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 DuckDNS:example-dev.duckdns.org. 86400 IN A 203.0.113.1086400 \u0441\u0435\u043a\u0443\u043d\u0434. \u0421\u0443\u0442\u043a\u0438. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 TTL \u0432 API DuckDNS \u043d\u0435\u0442: \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u0440\u043e\u0432\u043d\u043e domains, token, ip, ipv6, txt, verbose, clear. \u0412 \u0432\u0435\u0431-\u043f\u0430\u043d\u0435\u043b\u0438 \u2014 \u0442\u043e\u0436\u0435 \u043d\u0435\u0442. \u0422\u043e \u0435\u0441\u0442\u044c \u0441\u043c\u0435\u043d\u0438\u043b IP \u2014 \u0438 \u043a\u044d\u0448\u0438\u0440\u0443\u044e\u0449\u0438\u0435 DNS-\u0441\u0435\u0440\u0432\u0435\u0440\u044b \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043c\u0438\u0440\u0443 \u0438\u043c\u0435\u044e\u0442 \u043f\u043e\u043b\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u043e \u0434\u043e \u0441\u0443\u0442\u043e\u043a \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0439 \u0430\u0434\u0440\u0435\u0441.\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u044d\u0442\u043e \u043e\u0431\u043e\u0448\u043b\u0438: \u0437\u0430\u043a\u0440\u0435\u043f\u0438\u043b\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 IP \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 (ingress), \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043d\u0435 \u043c\u0435\u043d\u044f\u043b\u0441\u044f \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u0411\u043e\u043b\u044c \u0443\u0448\u043b\u0430, \u0437\u0430\u0434\u0430\u0447\u0443 \u043e\u0442\u043b\u043e\u0436\u0438\u043b\u0438. \u0427\u0435\u0441\u0442\u043d\u043e \u2014 \u00ab\u043d\u0435\u0442 \u0431\u043e\u043b\u0438, \u043d\u0435\u0442 \u0441\u043f\u0435\u0448\u043a\u0438\u00bb.\u0410 \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0430\u0441\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 DNS\u0422\u0435\u0441\u0442\u043e\u0432\u0430\u044f \u0441\u0440\u0435\u0434\u0430 \u0440\u0430\u0437\u0440\u043e\u0441\u043b\u0430\u0441\u044c \u0434\u043e \u0434\u0432\u0443\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 (\u043e\u0434\u0438\u043d \u0432 Yandex Cloud, \u0432\u0442\u043e\u0440\u043e\u0439 \u0443 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430). \u0420\u0435\u0448\u0438\u043b\u0438 \u0442\u0430\u043a: \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0438 \u0438\u043c\u0435\u043d\u0430 *.&lt;cluster&gt;.dev.example.com, \u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u2014 \u0435\u0449\u0451 \u0438 \u043e\u0431\u0449\u0438\u0439 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c *.dev.example.com.\u0418 \u0432\u043e\u0442 \u0442\u0443\u0442 \u0441\u0440\u0430\u0437\u0443 \u0434\u0432\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b:\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043d\u0430 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c. \u041f\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0447\u0435\u0440\u0435\u0437 HTTP (HTTP-01) Let\u2019s Encrypt \u0432\u044b\u0434\u0430\u0441\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0435\u0439\u0447\u0430\u0441 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 DNS. \u0412\u0442\u043e\u0440\u043e\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043d\u0430 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u043d\u0430 \u0432\u0441\u0435 \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u044b \u0441\u0440\u0430\u0437\u0443 (*.) \u0442\u0430\u043a \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0432\u044b\u0434\u0430\u044e\u0442\u0441\u044f \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0447\u0435\u0440\u0435\u0437 DNS (DNS-01).\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u0430. \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c *.dev.example.com \u043c\u0435\u0436\u0434\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 DuckDNS \u0441 TTL \u0432 \u0441\u0443\u0442\u043a\u0438 \u2014 \u043d\u0443, \u0432\u044b \u043f\u043e\u043d\u044f\u043b\u0438, \u0431\u043e\u043b\u044c.\u0417\u043d\u0430\u0447\u0438\u0442, \u043d\u0443\u0436\u0435\u043d DNS-\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0441\u0442\u044c:API \u0434\u043b\u044f TXT-\u0437\u0430\u043f\u0438\u0441\u0435\u0439 (\u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 DNS);\u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 TTL (\u043c\u0438\u043d\u0443\u0442\u0430, \u0430 \u043d\u0435 \u0441\u0443\u0442\u043a\u0438);\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d dev.example.com, \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u044f \u0431\u043e\u0435\u0432\u0443\u044e \u0437\u043e\u043d\u0443;\u0438 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u2014 \u0441\u0440\u0435\u0434\u0430 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u0430\u044f (\u0442\u043e\u0447\u043d\u0435\u0435, \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438).\u0427\u0442\u043e \u043f\u0435\u0440\u0435\u0431\u0440\u0430\u043b\u0438, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043d\u0430\u0448\u043b\u0438 FreeNSDuckDNS.org: \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a \u0435\u0441\u0442\u044c\u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439, \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439, \u0434\u043e \u043f\u044f\u0442\u0438 \u0438\u043c\u0451\u043d \u043d\u0430 \u0430\u043a\u043a\u0430\u0443\u043d\u0442, \u0438 \u0434\u0430\u0436\u0435 TXT-\u0437\u0430\u043f\u0438\u0441\u044c \u0447\u0435\u0440\u0435\u0437 API \u0441\u0442\u0430\u0432\u0438\u0442 (\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 txt). \u041d\u043e TXT-\u0437\u0430\u043f\u0438\u0441\u044c \u043d\u0430 \u0438\u043c\u044f \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u043d\u0430: \u0435\u0441\u043b\u0438 \u043e\u0431\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0439\u0434\u0443\u0442 \u043f\u0440\u043e\u0434\u043b\u0435\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442, \u043e\u043d\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0448\u0443\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u0447\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430. \u041f\u043b\u044e\u0441 \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 TTL \u0432 \u0441\u0443\u0442\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f. \u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0432 cert-manager \u0442\u043e\u0436\u0435 \u043d\u0435\u0442 \u2014 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u0436\u0435\u043d \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u043f\u043b\u0430\u0433\u0438\u043d, \u0438 \u0442\u043e\u043a\u0435\u043d DuckDNS \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u0440\u0430\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u043e\u0438\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c. \u0410 \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0430\u043c \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d dev. \u043d\u0430 DuckDNS \u2014 \u0437\u043d\u0430\u0447\u0438\u0442 \u043e\u0442\u0434\u0430\u0442\u044c NS \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0437\u043e\u043d\u044b \u0441\u0435\u0440\u0432\u0438\u0441\u0443, \u0433\u0434\u0435 \u0438\u0445 \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0448\u044c.hldns.ru: \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u043e\u0433 DuckDNS\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u043e\u0442\u0435\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0437\u0430\u043c\u0435\u043d\u0430 (\u0438 \u044d\u0442\u043e \u043d\u0435\u043e\u0441\u043f\u043e\u0440\u0438\u043c\u044b\u0439 \u043f\u043b\u044e\u0441), \u043d\u043e \u043f\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0434\u0430\u0436\u0435 \u0441\u043b\u0430\u0431\u0435\u0435:\u0447\u0435\u0440\u0435\u0437 API \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e A-\u0437\u0430\u043f\u0438\u0441\u044c, \u043f\u0440\u043e TXT \u2014 \u043d\u0438 \u0441\u043b\u043e\u0432\u0430;TTL \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439: \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043e\u043d \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d, \u0437\u0430\u0434\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0438 \u0432 API, \u043d\u0438 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043d\u0435\u043b\u044c\u0437\u044f. \u0421\u043f\u0440\u043e\u0441\u0438\u043b\u0438 NS-\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u2014 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u0430 \u043e\u0442\u0434\u0430\u044e\u0442\u0441\u044f \u0441 TTL 300 \u0441\u0435\u043a\u0443\u043d\u0434. \u042d\u0442\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0443\u0447\u0448\u0435 \u0441\u0443\u0442\u043e\u043a \u0443 DuckDNS, \u043d\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 DNS \u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442;\u043e\u0434\u043d\u043e \u0438\u043c\u044f \u043d\u0430 \u043e\u0434\u0438\u043d email;\u0443 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 HTTPS-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443;\u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0432\u0438\u0441\u0438\u0442 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0445 \u0441 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u043e\u0439 \u043f\u0438\u0441\u0435\u043c, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043f\u0440\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438;\u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0431\u0435\u0437 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0443\u0434\u0430\u043b\u044f\u044e\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u043b\u0433\u043e\u0434\u0430.\u0418\u0442\u043e\u0433 \u2014 \u0447\u0438\u0441\u0442\u044b\u0439 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 DNS, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 DNS \u043e\u043d \u043d\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442.Cloudflare Free\u041d\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, Cloudflare: \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e, TTL \u043e\u0442 60 \u0441\u0435\u043a\u0443\u043d\u0434, cert-manager \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u0441\u0440\u0430\u0437\u0443. \u041d\u043e \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u0430 \u0443 \u043d\u0438\u0445 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0442\u0430\u0440\u0438\u0444\u0435 Enterprise: \u043d\u0438 Free, \u043d\u0438 Pro, \u043d\u0438 Business \u0435\u0433\u043e \u043d\u0435 \u0434\u0430\u044e\u0442. \u0417\u043d\u0430\u0447\u0438\u0442, Cloudflare \u2014 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441 NS \u0432\u0441\u0435\u0439 \u0437\u043e\u043d\u044b example.com, \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0431\u043e\u0435\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u043e\u0439. \u0422\u0440\u043e\u0433\u0430\u0442\u044c \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d \u0440\u0430\u0434\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u044b \u2014 \u0442\u0430\u043a \u0441\u0435\u0431\u0435 \u0438\u0434\u0435\u044f. \u0414\u0443\u043c\u0430\u044e, \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u0435\u0442 \u043d\u0435\u043f\u0440\u0435\u043e\u0434\u043e\u043b\u0438\u043c\u044b\u043c \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0438\u0435\u043c. \u041e\u0442\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c.API \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430\u0414\u043e\u043c\u0435\u043d \u0443 \u043d\u0430\u0441 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0432 Webnames, \u0442\u0430\u043c \u0436\u0435 \u0438 DNS-\u0437\u043e\u043d\u0430. \u041b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u0443\u043c\u0435\u0435\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440. \u041d\u0430\u0448\u043b\u0430\u0441\u044c \u043f\u0430\u0440\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432.\u041f\u0430\u0440\u0442\u043d\u0451\u0440\u0441\u043a\u0438\u0439 API. \u0423\u043c\u0435\u0435\u0442 A, CNAME \u0438 TXT, \u043d\u043e:TTL \u043d\u0435 \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f;\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u2014 \u043f\u0430\u0440\u043e\u043b\u0435\u043c \u043e\u0442 \u0432\u0441\u0435\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430. \u0421 \u044d\u0442\u0438\u043c \u043f\u0430\u0440\u043e\u043b\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0434\u043e\u043c\u0435\u043d \u0438\u043b\u0438 \u0441\u043c\u0435\u043d\u0438\u0442\u044c NS, \u043a\u043b\u0430\u0441\u0442\u044c \u0435\u0433\u043e \u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u043a\u0443 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u044b \u043d\u0435\u043b\u044c\u0437\u044f (\u043f\u0440\u0438\u0442\u043e\u043c \u0447\u0442\u043e \u044f \u043e\u0442\u043d\u044e\u0434\u044c \u043d\u0435 \u0418\u0411\u044d\u0448\u043d\u0438\u043a).\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0434\u043b\u044f ACME-\u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a. \u042d\u0442\u043e \u0443\u0436\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u0435\u0435: \u043a\u043b\u044e\u0447 \u0443\u043c\u0435\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c TXT, \u0434\u043e\u043c\u0435\u043d \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0435\u0441\u0442\u044c \u0432 lego \u0438 \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 \u0434\u043b\u044f certbot \u043e\u0442 \u0441\u0430\u043c\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \u041d\u043e:\u0434\u043b\u044f cert-manager \u043d\u0430\u0448\u0451\u043b\u0441\u044f \u043b\u0438\u0448\u044c \u043e\u0434\u0438\u043d \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u043f\u043b\u0430\u0433\u0438\u043d, cert-manager-webhook-webnames, \u0431\u0435\u0437 \u0437\u0432\u0451\u0437\u0434 \u0438 \u0440\u0435\u043b\u0438\u0437\u043e\u0432;\u043a\u043b\u044e\u0447 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0430 \u0432\u0441\u044e \u0437\u043e\u043d\u0443, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u0438 \u0443\u0442\u0435\u0447\u043a\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0438 \u043d\u0430 \u0431\u043e\u0435\u0432\u044b\u0435 \u0438\u043c\u0435\u043d\u0430;TTL \u043d\u0435 \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f (\u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 2 \u0447\u0430\u0441\u0430);A-\u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0431\u044b, \u0441\u043a\u0430\u0436\u0435\u043c, \u043d\u0430 DuckDNS \u0441 \u0441\u0443\u0442\u043e\u0447\u043d\u044b\u043c TTL.\u042d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0441\u0430\u043c\u044b\u0439 \u043f\u043b\u043e\u0445\u043e\u0439, \u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0437\u0430\u043f\u0430\u0441\u043d\u044b\u043c \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439, \u0435\u0441\u043b\u0438 \u043b\u0443\u0447\u0448\u0435 \u043d\u0435 \u043d\u0430\u0439\u0434\u0451\u0442\u0441\u044f.Yandex Cloud DNS\u041f\u0435\u0440\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0443 \u043d\u0430\u0441 \u0438 \u0442\u0430\u043a \u0436\u0438\u0432\u0451\u0442 \u0432 Yandex Cloud, \u0442\u0430\u043a \u0447\u0442\u043e Cloud DNS \u2014 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442: \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 API, TXT-\u0437\u0430\u043f\u0438\u0441\u0438, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0439 TTL, \u0434\u043b\u044f cert-manager \u0435\u0441\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d. \u0415\u0433\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438 \u0435\u0449\u0451 \u0440\u0430\u043d\u044c\u0448\u0435, \u0432 \u0441\u0432\u044f\u0437\u043a\u0435 \u0441 external-dns, \u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0446\u0435\u043d\u044b: \u043e\u043a\u043e\u043b\u043e 43 \u20bd \u0432 \u043c\u0435\u0441\u044f\u0446 \u0437\u0430 \u0437\u043e\u043d\u0443 \u043f\u043b\u044e\u0441 \u043e\u043f\u043b\u0430\u0442\u0430 \u0437\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u044b. \u0414\u0435\u043d\u044c\u0433\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435, \u043d\u043e \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043f\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u2014 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043a \u0432\u0435\u043d\u0434\u043e\u0440\u0443. \u0412\u0442\u043e\u0440\u043e\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0443 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430, \u0438 \u0434\u0435\u043b\u0430\u0442\u044c DNS \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u044b \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u043a\u0430 \u043c\u044b \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u0438. \u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0447\u0442\u043e \u0432\u0441\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u2014 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u043c\u0438, \u0430 \u0442\u0430\u043a \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043d\u0438\u0445.\u041a\u043e\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438Hetzner DNS, deSEC, Bunny DNS \u0438 AWS Route53 \u0431\u044b\u043b\u0438 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432, \u043d\u043e \u0434\u043e \u043d\u0438\u0445 \u043d\u0435 \u0434\u043e\u0448\u043b\u0438: FreeNS \u0437\u0430\u043a\u0440\u044b\u043b \u0432\u0441\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u043d\u044c\u0448\u0435. \u0417\u0430\u0440\u0443\u0431\u0435\u0436\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b (\u043a\u0440\u043e\u043c\u0435 Cloudflare, \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0448\u0435) \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439: \u043f\u043e \u043d\u0430\u0448\u0435\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0435 \u0441\u0435\u0439\u0447\u0430\u0441, \u0441\u0430\u043c\u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435, \u044d\u0442\u043e \u0440\u0438\u0441\u043a.FreeNS\u0418 \u0442\u0443\u0442 \u043d\u0430\u0448\u0451\u043b\u0441\u044f FreeNS \u2014 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 DNS-\u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0441 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u043c REST API: \u043a\u043b\u044e\u0447 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 X-API-Key, TTL \u043e\u0442 60 \u0434\u043e 86400 \u0441\u0435\u043a\u0443\u043d\u0434, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u0447\u0442\u0435\u043d\u0438\u0435, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0435\u0439. \u041e\u0434\u0438\u043d API \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 DNS, \u0438 A-\u0437\u0430\u043f\u0438\u0441\u0438 \u0441 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u043c TTL \u2014 \u0442\u043e \u0435\u0441\u0442\u044c DuckDNS \u0438 \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0430 CNAME-\u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0443\u0445\u043e\u0434\u044f\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c.\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0447\u0442\u043e-\u0442\u043e \u043f\u0438\u0441\u0430\u0442\u044c, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438 \u0440\u0443\u043a\u0430\u043c\u0438:\u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d dev.example.com \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0437\u043e\u043d\u0430 \u0438 \u043e\u0442\u0434\u0430\u0451\u0442\u0441\u044f \u0441 a.freens.ru \u0438 b.freens.ru (\u0430\u0432\u0442\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u043e) \u0435\u0449\u0451 \u0434\u043e \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u2014 \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c;TXT \u0441 TTL 60 \u0432\u0438\u0434\u043d\u0430 \u043d\u0430 \u043e\u0431\u043e\u0438\u0445 NS \u043c\u0435\u043d\u044c\u0448\u0435 \u0447\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u043c\u0438\u043d\u0443\u0442\u0443 \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f;A-\u0437\u0430\u043f\u0438\u0441\u044c * \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0438 \u043d\u0430 \u043e\u0434\u0438\u043d, \u0438 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u043e\u0432, \u0430 \u044f\u0432\u043d\u0430\u044f TXT \u0440\u044f\u0434\u043e\u043c \u0441 \u043d\u0435\u0439 \u043d\u0435 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f;\u043f\u043e\u0441\u043b\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u0430 NS \u0447\u0435\u0441\u0442\u043d\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 NXDOMAIN.\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c NS-\u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043b\u044f dev \u2014 \u0438 \u0432\u0441\u044f \u0442\u0435\u0441\u0442\u043e\u0432\u0430\u044f \u0437\u043e\u043d\u0430 \u0436\u0438\u0432\u0451\u0442 \u043d\u0430 FreeNS, \u0431\u043e\u0435\u0432\u0430\u044f \u043d\u0435 \u0442\u0440\u043e\u043d\u0443\u0442\u0430. \u041a\u0440\u0430\u0441\u043e\u0442\u0430, \u0434\u0430 \u0438 \u0442\u043e\u043b\u044c\u043a\u043e.\u041d\u0435 \u0431\u0435\u0437 \u043b\u043e\u0436\u043a\u0438 \u0434\u0451\u0433\u0442\u044f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e.\u0420\u0438\u0441\u043a\u0438 \u2014 \u0447\u0435\u0441\u0442\u043d\u043e\u041d\u0435 \u0431\u0443\u0434\u0443 \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0438\u0434, \u0447\u0442\u043e \u044d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f:\u0441\u0435\u0440\u0432\u0438\u0441 \u0432\u0435\u0441\u044c\u043c\u0430 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439, \u043c\u043e\u043b\u043e\u0434\u043e\u0439 &#8212; \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u043e\u043a\u043e\u043b\u043e \u043f\u043e\u043b\u0443\u0433\u043e\u0434\u0430, \u0432\u0435\u0434\u0451\u0442 \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u043d\u043e\u0435 \u043b\u0438\u0446\u043e;\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044f \u0438 SLA \u043d\u0435\u0442;\u043e\u0431\u0430 NS \u0443 \u043e\u0434\u043d\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0435\u0440\u0430;API-\u043a\u043b\u044e\u0447 \u043e\u0434\u0438\u043d \u043d\u0430 \u0432\u0435\u0441\u044c \u0430\u043a\u043a\u0430\u0443\u043d\u0442, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u043e\u0434\u043d\u043e\u0439 \u0437\u043e\u043d\u043e\u0439 \u043d\u0435\u043b\u044c\u0437\u044f;\u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 (\u0437\u0430\u043f\u0438\u0441\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430) \u043a\u044d\u0448\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 1 \u0447\u0430\u0441.\u0414\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u044b \u044d\u0442\u043e \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e, \u0438 \u044d\u0442\u043e \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0432 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0438 (ADR) \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0437\u0430\u043f\u0430\u0441\u043d\u044b\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c. \u0414\u043b\u044f \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d\u0430 \u044f \u0431\u044b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u043f\u043e\u0434\u0443\u043c\u0430\u043b.\u041d\u0443 \u0438 \u0435\u0449\u0451 \u043e\u0434\u043d\u043e \u043e\u0433\u043e\u0440\u0447\u0435\u043d\u0438\u0435: \u0434\u043b\u044f Webnames \u043d\u0430\u0448\u0451\u043b\u0441\u044f \u0445\u043e\u0442\u044f \u0431\u044b \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 cert-manager-webhook-webnames, \u0430 \u0442\u0443\u0442 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u043c\u0443\u2026 \u041d\u043e, \u0437\u0430\u0431\u0435\u0433\u0430\u044f \u0432\u043f\u0435\u0440\u0451\u0434, \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043d\u0435\u043f\u043b\u043e\u0445\u043e.\u0421\u0432\u043e\u0434\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f DNS-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432\u0421\u0435\u0440\u0432\u0438\u0441\u0425\u043e\u0440\u043e\u0448\u043e\u041f\u043b\u043e\u0445\u043e\u0418\u0442\u043e\u0433DuckDNS\u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e, \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e, \u0435\u0441\u0442\u044c TXT \u0447\u0435\u0440\u0435\u0437 APITTL 86400, \u043e\u0434\u043d\u0430 TXT \u043d\u0430 \u0438\u043c\u044f, \u043d\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0432 cert-manager\u0417\u0430\u043c\u0435\u043d\u0438\u043b\u0438hldns.ru\u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e, \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0439, TTL 300 \u0441\u041d\u0435\u0442 TXT, TTL \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0441\u0430\u0439\u0442\u043e\u043c \u0438 \u043f\u043e\u0447\u0442\u043e\u0439\u041e\u0442\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044cCloudflare FreeTTL \u043e\u0442 60 \u0441, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 cert-manager \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438\u041f\u043e\u0434\u0434\u043e\u043c\u0435\u043d \u2014 \u0442\u043e\u043b\u044c\u043a\u043e Enterprise, \u0438\u043d\u0430\u0447\u0435 \u043f\u0435\u0440\u0435\u0435\u0437\u0434 \u0432\u0441\u0435\u0439 \u0437\u043e\u043d\u044b\u041e\u0442\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044cYandex Cloud DNS\u041f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 API, TXT, TTL, \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f cert-manager\u041f\u043b\u0430\u0442\u043d\u043e (~43 \u20bd\/\u043c\u0435\u0441 + \u0437\u0430\u043f\u0440\u043e\u0441\u044b), \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043a \u0432\u0435\u043d\u0434\u043e\u0440\u0443\u041e\u0442\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044cWebnames, \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0441\u043a\u0438\u0439 APIA, CNAME, TXT, \u0434\u043e\u043c\u0435\u043d \u043d\u0435 \u043f\u0435\u0440\u0435\u0435\u0437\u0436\u0430\u0435\u0442\u041d\u0435\u0442 TTL, \u043f\u0430\u0440\u043e\u043b\u044c \u043e\u0442 \u0432\u0441\u0435\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430\u041e\u0442\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044cWebnames, \u043a\u043b\u044e\u0447 \u0434\u043b\u044f ACME\u041f\u0440\u0430\u0432\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 TXT, \u0435\u0441\u0442\u044c \u0432 lego \u0438 certbot\u041d\u0435\u0442 TTL, \u043a\u043b\u044e\u0447 \u043d\u0430 \u0432\u0441\u044e \u0437\u043e\u043d\u0443, A-\u0437\u0430\u043f\u0438\u0441\u0438 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043d\u0430 DuckDNS\u0417\u0430\u043f\u0430\u0441\u043d\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442FreeNSTTL \u043e\u0442 60 \u0441, \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 API, \u0437\u043e\u043d\u0430 \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u0430\u041c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u0447\u0430\u0441\u0442\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043b\u044e\u0447 \u043d\u0430 \u0432\u0435\u0441\u044c \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0412\u044b\u0431\u0440\u0430\u043b\u0438\u041d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u041a\u0430\u043a \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b, cert-manager \u0441\u0430\u043c \u0443\u043c\u0435\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 Cloudflare, Route53, Google Cloud DNS, Azure DNS \u0438 \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u043a\u0440\u0443\u043f\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u043c\u0438. \u0414\u043b\u044f \u0432\u0441\u0435\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0435\u0441\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 (webhook): \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 cert-manager \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 Kubernetes API (API aggregation), \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c TXT-\u0437\u0430\u043f\u0438\u0441\u044c _acme-challenge.\u0414\u043b\u044f FreeNS \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0435 \u0431\u044b\u043b\u043e. \u0417\u043d\u0430\u0447\u0438\u0442, \u043f\u0438\u0448\u0435\u043c.cert-manager-webhook-freens\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439: github.com\/Hubbitus\/cert-manager-webhook-freens, \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f Apache-2.0. \u041d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 Go, \u0437\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0432\u0437\u044f\u0442 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d cert-manager\/webhook-example.\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\u041e\u0431\u0440\u0430\u0437 docker.io\/hubbitus\/cert-manager-webhook-freens \u0438 Helm-\u0447\u0430\u0440\u0442 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0435\u0433 \u0432\u0438\u0434\u0430 vX.Y.Z. \u0421\u0442\u0430\u0432\u0438\u043c \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0451\u043d cert-manager, \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u044f \u0432\u0435\u0440\u0441\u0438\u044e \u0447\u0430\u0440\u0442\u0430 \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0443\u044e \u0441\u0443\u043c\u043c\u0443 (digest) \u043e\u0431\u0440\u0430\u0437\u0430:helm install cert-manager-webhook-freens&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-497009","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/497009","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=497009"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/497009\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=497009"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=497009"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=497009"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}