{"id":335344,"date":"2022-07-05T15:00:34","date_gmt":"2022-07-05T15:00:34","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=335344"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=335344","title":{"rendered":"<span>Wildcard-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 Let&#8217;s Encrypt \u0434\u043b\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0432 Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0434\u043b\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u0438\u0431\u043e \u0443\u0434\u043e\u0431\u043d\u043e: \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438, \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 Docker-\u043e\u0431\u0440\u0430\u0437\u043e\u0432, S3-\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435, \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0441\u0440\u0435\u0434\u044b \u0438 \u0442.\u0434. \u041d\u043e \u0435\u0441\u0442\u044c &#171;\u043d\u043e&#187;: \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043d\u0438\u0445, \u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 Docker-\u043e\u0431\u0440\u0430\u0437\u043e\u0432, \u043c\u043e\u0433\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c TLS. \u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u043f\u0443\u0442\u0438: \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0446\u0435\u043d\u0442\u0440\u043e\u0432, \u043f\u043b\u0430\u0442\u043d\u044b\u0445 \u0438\u043b\u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0445, \u0432\u0440\u043e\u0434\u0435 Let&#8217;s Encrypt, \u0438\u043b\u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u043c\u0443. \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043d\u0430\u0448\u0435\u0433\u043e &#171;\u043b\u0435\u0432\u043e\u0433\u043e&#187; \u0441\u0430\u043c\u043e\u043f\u0440\u043e\u0432\u043e\u0437\u0433\u043b\u0430\u0448\u0451\u043d\u043d\u043e\u0433\u043e \u0446\u0435\u043d\u0442\u0440\u0430 \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0430\u043c\u043e\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043e\u0442\u043f\u0430\u0434\u0430\u0435\u0442. \u0414\u0435\u043d\u0435\u0433 \u043f\u043b\u0430\u0442\u0438\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0433\u043e\u0434 \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c Let&#8217;s Encrypt. \u041d\u043e \u0438 \u0442\u0443\u0442 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 (\u043f\u043e\u043c\u0438\u043c\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0432\u044b\u043f\u0443\u0441\u043a\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u043d\u0435 \u0440\u0435\u0436\u0435 \u0440\u0430\u0437\u0430 \u0432 \u0442\u0440\u0438 \u043c\u0435\u0441\u044f\u0446\u0430): \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u0443\u044e \u0441\u0435\u0442\u044c, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0438 HTTP-01 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f \u0434\u043e\u043c\u0435\u043d\u043e\u043c \u043d\u0430\u043c \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d. \u041e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e DNS-01 \u043c\u0435\u0442\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438.<\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0441\u0432\u043e\u0451\u043c \u043e\u043f\u044b\u0442\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\/\u043f\u0435\u0440\u0435\u0432\u044b\u043f\u0443\u0441\u043a\u0430 wildcard-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0434\u043b\u044f \u0434\u043e\u043c\u0435\u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f (wildcard, \u0447\u0442\u043e\u0431\u044b \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u043d\u0435 \u0432\u0441\u0442\u0430\u0432\u0430\u0442\u044c, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u0430) \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u0432 Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e cert-manager \u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 DNS-\u0437\u043e\u043d \u042f\u043d\u0434\u0435\u043a\u0441.\u041a\u043e\u043d\u043d\u0435\u043a\u0442.<\/p>\n<h2>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b DNS-01 \u043c\u0435\u0442\u043e\u0434\u0430<\/h2>\n<p>\u0413\u043b\u0430\u0432\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f DNS-\u0437\u0430\u043f\u0438\u0441\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f \u0434\u043e\u043c\u0435\u043d\u043e\u043c \u0432\u0438\u0434\u0430 _acme-challenge.example.ru. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 HTTP-01 \u043c\u0435\u0442\u043e\u0434\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 HTTP-\u043e\u0442\u0432\u0435\u0442\u043e\u0432, \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 cert-manager. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 DNS-01 \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0438\u0441 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f DNS-\u0437\u043e\u043d\u0430\u043c\u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c API \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u044f\u043c\u0438. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0438\u043c\u0435\u044e\u0442 \u044d\u0442\u043e\u0442 API. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, DNS-\u0437\u043e\u043d\u044b \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u043c \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0438 \u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0437\u043e\u043d\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430 \u043a\u0430\u043a\u043e\u043c\u0443-\u0442\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0443 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044d\u0442\u043e \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0438\u043a\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438. \u0418, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0432-\u0442\u0440\u0435\u0442\u044c\u0438\u0445, \u0435\u0441\u0442\u044c \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 DNS-\u0437\u0430\u043f\u0438\u0441\u0435\u0439.<\/p>\n<p>\u042f\u043d\u0434\u0435\u043a\u0441.\u041a\u043e\u043d\u043d\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0441\u044c \u044f, \u0438\u043c\u0435\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 API, \u0438 \u043e\u043d \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044f \u0443\u0441\u043f\u0435\u043b \u043e\u0446\u0435\u043d\u0438\u0442\u044c. cert-manager \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0451 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f API \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430. \u0414\u043b\u044f \u042f\u043d\u0434\u0435\u043a\u0441.\u041a\u043e\u043d\u043d\u0435\u043a\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043d\u0435 \u0431\u044b\u043b\u043e, \u0445\u043e\u0442\u044f \u0441\u043f\u0438\u0441\u043e\u043a webhook-\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u044b\u0439. \u0415\u0441\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u042f\u043d\u0434\u0435\u043a\u0441.\u041e\u0431\u043b\u0430\u043a\u043e. \u041c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439:\u00a0<a href=\"https:\/\/github.com\/Eshva\/cert-manager-webhook-yandex-connect\" rel=\"noopener noreferrer nofollow\">cert-manager-webhook-yandex-connect<\/a>. \u0417\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0432\u0437\u044f\u043b \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439\u00a0<a href=\"https:\/\/github.com\/bwolf\/cert-manager-webhook-gandi\" rel=\"noopener noreferrer nofollow\">cert-manager-webhook-gandi<\/a>, \u0432\u044b\u0443\u0447\u0438\u043b Golang, \u0431\u043b\u0430\u0433\u043e \u044f\u0437\u044b\u043a \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0439, \u0438 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u043f\u043e\u0434 \u0434\u0440\u0443\u0433\u043e\u0439 API. \u042f \u043d\u0435 \u0431\u0443\u0434\u0443 \u043f\u0438\u0441\u0430\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u044b webhook \u0438 \u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435, \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e \u0442\u0430\u043c \u043d\u0435\u0442, \u043a\u043e\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0441 \u0433\u0443\u043b\u044c\u043a\u0438\u043d \u043d\u043e\u0441. \u041e\u0434\u043d\u0430\u043a\u043e, \u044d\u0442\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0442\u0443\u043f\u0438\u043a\u043e\u0432\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c, \u0438 \u0432\u043e\u0442 \u043f\u043e\u0447\u0435\u043c\u0443.<\/p>\n<p>\u041a\u0430\u043a \u044d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u0431\u0443\u043c\u0430\u0433\u0435. \u0421\u043a\u0430\u0436\u0435\u043c, \u0435\u0441\u0442\u044c \u0443 \u0432\u0430\u0441 \u0434\u043e\u043c\u0435\u043d example.ru. \u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442\u044c wildcard-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0434\u043b\u044f \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f (*.example.ru) \u0438\u043b\u0438 \u0434\u043b\u044f \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u0430 (test.example.ru). \u0412\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0435 \u0440\u044f\u0434\u043e\u043c \u0441 cert-manager webhook \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e DNS-\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430, \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0435 Issuer, \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0435 Certificate. cert-manager \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u0443\u0436\u043d\u0443\u044e TXT DNS-\u0437\u0430\u043f\u0438\u0441\u044c \u0432\u0438\u0434\u0430 _acme-challenge.example.ru (\u0434\u043b\u044f *.example.ru), \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0432 \u0435\u0451 \u043d\u0430\u043b\u0438\u0447\u0438\u0438, \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0443 Let&#8217;s Encrypt \u0432\u044b\u043f\u0443\u0441\u043a \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430. Let&#8217;s Encrypt \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0432 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 TXT-\u0437\u0430\u043f\u0438\u0441\u0438, \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0435\u0451 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0438 \u0432\u044b\u0434\u0430\u0451\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442. \u0417\u0430\u0434\u0430\u0447\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430!<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e, \u0433\u043b\u0430\u0434\u043a\u043e \u0431\u044b\u043b\u043e \u043d\u0430 \u0431\u0443\u043c\u0430\u0433\u0435, \u043d\u043e \u0437\u0430\u0431\u044b\u043b\u0438 \u043f\u0440\u043e \u043e\u0432\u0440\u0430\u0433\u0438. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 DNS-\u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0415\u0441\u0442\u044c \u0434\u0432\u0430 \u0442\u0438\u043f\u0430 DNS-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432: \u0430\u0432\u0442\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u044b\u0435 (authoritative) \u0438 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0435 (recursive). \u041f\u0435\u0440\u0432\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f DNS-\u0437\u043e\u043d. \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u042f\u043d\u0434\u0435\u043a\u0441.\u041a\u043e\u043d\u043d\u0435\u043a\u0442. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u0430\u0448\u0435\u0433\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430. Let&#8217;s Encrypt, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u043e\u0431\u0449\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0441 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u043c\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438, \u0430\u00a0<a href=\"https:\/\/community.letsencrypt.org\/t\/which-dns-server-lets-encrypt-uses\/126670\/2\" rel=\"noopener noreferrer nofollow\">\u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441 \u0430\u0432\u0442\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u044b\u043c\u0438<\/a>. \u0412\u0440\u043e\u0434\u0435 \u0431\u044b \u0432\u0441\u0451 \u0445\u043e\u0440\u043e\u0448\u043e, \u043d\u043e \u0432\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432 \u0441\u0438\u043b\u0443 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e DNS-\u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043c\u043d\u043e\u0433\u043e, \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435, \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0443\u0436\u043d\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 (\u043e\u0434\u0438\u043d \u0441\u0435\u0440\u0432\u0435\u0440 \u0441 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u043c \u0436\u0435\u043b\u0435\u0437\u043e\u043c) \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0439 \u043f\u043e\u0442\u043e\u043b\u043e\u043a. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0442\u043e \u0435\u0441\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0432 \u043f\u0443\u043b\u0435 \u043c\u043d\u043e\u0433\u043e. \u041c\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432, \u0437\u043d\u0430\u0447\u0438\u0442 \u043c\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445, \u0447\u0442\u043e, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043a\u043e\u043d\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u0422\u043e \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0447\u0435\u0440\u0435\u0437 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0434\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u043e\u0442\u0432\u0435\u0442\u044b: \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0437\u0430\u043f\u0438\u0441\u044c \u0435\u0441\u0442\u044c, \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u043d\u0435\u0442. \u0423\u0441\u0443\u0433\u0443\u0431\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043a\u044d\u0448\u0430 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0432 \u043f\u0443\u043b\u0435. \u0412\u0441\u0451 \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 (propagation) DNS-\u0437\u0430\u043f\u0438\u0441\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f (\u0433\u0434\u0435-\u0442\u043e \u0441\u0443\u0442\u043a\u0438-\u0434\u0432\u043e\u0435) \u0438 \u043f\u0435\u0440\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u0432\u0435\u0442\u043e\u0432. \u042d\u0442\u043e \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e \u0438 \u0434\u043b\u044f \u043e\u0431\u043e\u0438\u0445 \u0432\u0438\u0434\u043e\u0432 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432. \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044f \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u043b \u044d\u0442\u043e\u0442 \u044d\u0444\u0444\u0435\u043a\u0442 \u043d\u0430 dns1.yandex.net \u0438 dns2.yandex.net. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 TTL DNS-\u0441\u0435\u0440\u0432\u0435\u0440\u044b \u043d\u0435 \u0441\u043e\u0431\u043b\u044e\u0434\u0430\u044e\u0442. TTL == 300 \u043d\u0438\u0447\u0435\u0433\u043e \u0434\u043b\u044f \u043d\u0438\u0445 \u043d\u0435 \u0437\u043d\u0430\u0447\u0438\u0442, \u0440\u043e\u0432\u043d\u043e \u043a\u0430\u043a \u0438 TTL == 60.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c TXT-\u0437\u0430\u043f\u0438\u0441\u044c \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0430\u0443\u0437\u0443 \u043d\u0430 \u043f\u0430\u0440\u0443 \u0441\u0443\u0442\u043e\u043a, \u0432\u0441\u0451 \u0431\u0443\u0434\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u043e, \u043d\u043e cert-manager \u0442\u0430\u043a \u043d\u0435 \u0443\u043c\u0435\u0435\u0442. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d \u0437\u0430\u043c\u0435\u0442\u0438\u043b \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437 \u0437\u0430\u043f\u0438\u0441\u044c \u043d\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u043e\u043d \u0441\u0440\u0430\u0437\u0443 \u0434\u0435\u043b\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442. \u041d\u043e \u0445\u0443\u0436\u0435 \u0442\u043e\u0433\u043e, \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u042f\u043d\u0434\u0435\u043a\u0441.\u041a\u043e\u043d\u043d\u0435\u043a\u0442, TXT-\u0437\u0430\u043f\u0438\u0441\u044c \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u043d\u0430 \u044d\u0442\u043e cert-manager. \u041f\u0440\u043e\u0449\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u0435\u0441\u0442\u044c \u0442\u0430\u0439\u043c\u0430\u0443\u0442 (30 \u043c\u0438\u043d\u0443\u0442, \u0435\u0441\u043b\u0438 \u044f \u043f\u043e\u043d\u044f\u043b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e) \u043d\u0430 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438. \u0415\u0441\u043b\u0438 DNS-\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u0443\u043b\u043e\u0436\u0438\u043b\u0441\u044f, \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0430\u043b\u0435\u043d\u043d\u043e\u0439 \u0438 cert-manager \u0441\u0434\u0430\u0451\u0442\u0441\u044f \u0438 \u0437\u0430\u0441\u044b\u043f\u0430\u0435\u0442 \u0433\u0434\u0435-\u0442\u043e \u043d\u0430 \u0447\u0430\u0441-\u0434\u0432\u0430, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0432\u043d\u043e\u0432\u044c. \u0412 \u0438\u0442\u043e\u0433\u0435 \u044d\u0442\u0430 \u0442\u044f\u0433\u043e\u043c\u043e\u0442\u0438\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c\u0441\u044f \u0434\u043d\u044f\u043c\u0438, \u0430 \u043c\u043e\u0436\u0435\u0442 \u0438 \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0438\u0442\u044c \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0430, \u043a\u0430\u043a \u044d\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430 \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 (\u0437\u0432\u0451\u0437\u0434\u044b \u0441\u043e\u0448\u043b\u0438\u0441\u044c).<\/p>\n<p>\u0427\u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f cert-manager \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439? \u041f\u043e\u0447\u0442\u0438 \u043d\u0438\u0447\u0435\u0433\u043e. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043b\u044e\u0447\u0438, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041d\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u0440\u0435\u0436\u043d\u0435\u0439 \u2014 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f. \u0415\u0441\u0442\u044c \u0435\u0449\u0451\u00a0<a href=\"https:\/\/github.com\/cert-manager\/cert-manager\/issues\/3743\" rel=\"noopener noreferrer nofollow\">issue, \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u043e \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u044e\u0449\u0435\u0435 \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443<\/a>, \u043d\u043e \u043e\u043d\u043e \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043d\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u043e.<\/p>\n<h2>\u041a\u0430\u043a \u043d\u0430\u0434\u0451\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443<\/h2>\n<p>\u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u044b\u0439 \u0434\u0430\u0436\u0435 \u0434\u043b\u044f DNS-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0431\u0435\u0437 API \u2014 \u044d\u0442\u043e \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 DNS-\u0441\u0435\u0440\u0432\u0435\u0440, \u0432 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0440\u0435\u0430\u043a\u0446\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0443\u0432\u0435\u0440\u0435\u043d\u044b. \u0417\u0432\u0443\u0447\u0438\u0442 \u0441\u043b\u043e\u0436\u043d\u043e \u0438 \u0442\u0440\u0443\u0434\u043e\u0437\u0430\u0442\u0440\u0430\u0442\u043d\u043e, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0442\u0430\u043a.<\/p>\n<p>\u042f, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u043f\u0435\u0440\u0432\u044b\u0439 \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0432\u0448\u0438\u0439\u0441\u044f \u0441 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439. \u0423\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0435\u0441\u0442\u044c \u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u044b\u0439 DNS-\u0441\u0435\u0440\u0432\u0435\u0440 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u2014\u00a0<a href=\"https:\/\/github.com\/joohoi\/acme-dns\" rel=\"noopener noreferrer nofollow\">ACME DNS<\/a>. \u041d\u0430 \u0425\u0430\u0431\u0440\u0435 \u0434\u0430\u0436\u0435 \u0431\u044b\u043b\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043d\u0430\u044f\u00a0<a href=\"https:\/\/habr.com\/ru\/post\/350202\/\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u044c\u044f<\/a>\u00a0\u0430\u0432\u0442\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043d\u043e \u043e\u043d\u0430 \u043d\u043e\u0441\u0438\u0442 \u0441\u043a\u043e\u0440\u0435\u0435 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440. \u042f \u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043a\u0430\u043a \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u044d\u0442\u043e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435, \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438 \u0438 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u0441\u044f, \u0438 \u043a\u0430\u043a \u0438\u0445 \u0440\u0435\u0448\u0438\u0442\u044c.<\/p>\n<p>\u0412 \u0434\u0432\u0443\u0445 \u0441\u043b\u043e\u0432\u0430\u0445 \u043e\u0431 ACME DNS. \u042d\u0442\u043e \u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u044b\u0439 DNS-\u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0443 \u0442\u043e\u043b\u044c\u043a\u043e TXT-\u0437\u0430\u043f\u0438\u0441\u0438. cert-manager\u00a0<a href=\"https:\/\/cert-manager.io\/docs\/configuration\/acme\/dns01\/acme-dns\/\" rel=\"noopener noreferrer nofollow\">\u0443\u043c\u0435\u0435\u0442 \u0441 \u043d\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c<\/a>. \u0421\u0430\u043c \u043f\u0440\u043e\u0435\u043a\u0442 \u0437\u0430\u0431\u0440\u043e\u0448\u0435\u043d \u0430\u0432\u0442\u043e\u0440\u043e\u043c \u0433\u043e\u0434\u0430 \u0434\u0432\u0430 \u043d\u0430\u0437\u0430\u0434, \u043d\u043e \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0432\u043f\u043e\u043b\u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d. \u0415\u0441\u0442\u044c \u0435\u0433\u043e \u0444\u043e\u0440\u043a\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440\u00a0<a href=\"https:\/\/github.com\/fritterhoff\/acme-dns\/\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e\u0442<\/a>. \u041e\u0434\u043d\u0430\u043a\u043e, \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043e\u043f\u0438\u0440\u0430\u044e\u0441\u044c \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439.<\/p>\n<p>\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b ACME DNS \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442. \u041e\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 API \u0441 \u0434\u0432\u0443\u043c\u044f \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438:\u00a0<a href=\"https:\/\/github.com\/joohoi\/acme-dns#register-endpoint\" rel=\"noopener noreferrer nofollow\">register<\/a>\u00a0\u0438\u00a0<a href=\"https:\/\/github.com\/joohoi\/acme-dns#update-endpoint\" rel=\"noopener noreferrer nofollow\">update<\/a>. \u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d \u0434\u043b\u044f DNS-\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438. \u0412\u0442\u043e\u0440\u043e\u0439 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c TXT DNS-\u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043b\u044f \u0440\u0430\u043d\u0435\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430.<\/p>\n<p>\u0415\u0449\u0451 \u043e\u0434\u043d\u043e \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f. \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0435\u0441\u0442\u044c\u00a0<a href=\"https:\/\/auth.acme-dns.io\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 ACME DNS<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u043d\u043e \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u043d \u043f\u0440\u043e\u0436\u0438\u0432\u0451\u0442 \u0438 \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e, \u043d\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0435\u0448\u0438\u043b \u0432\u0441\u0451 \u0436\u0435 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u0432\u043e\u0439.<\/p>\n<h2>\u0420\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c ACME DNS \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435<\/h2>\n<p>\u0410\u0432\u0442\u043e\u0440 ACME DNS \u043d\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043b \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0432 Kubernetes, \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0432\u0438\u0434\u0435 standalone-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0432 Docker. \u041c\u043d\u0435 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u0439\u0442\u0438 helm-chart, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u043a\u043e\u043b\u0445\u043e\u0437\u0438\u0442\u044c \u0441\u0432\u043e\u0451 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u041d\u0435\u0442, \u043d\u0435 \u0447\u0430\u0440\u0442, \u043c\u043d\u0435 \u0431\u044b\u043b\u043e \u043b\u0435\u043d\u044c \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Helm, \u0434\u0430 \u0438 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u043e\u043d \u043c\u043d\u0435. \u042f \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b \u043d\u0430\u0431\u043e\u0440 Kubernetes-\u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 \u0441\u0432\u043e\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f.<\/p>\n<h3>\u041f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0451\u043d<\/h3>\n<p>ACME DNS \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0438\u043c\u0451\u043d, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0435\u0433\u043e:<\/p>\n<pre><code class=\"yaml\">apiVersion: v1 kind: Namespace metadata:   name: acme-dns<\/code><\/pre>\n<h3>Statefulset<\/h3>\n<p>ACME DNS \u0445\u0440\u0430\u043d\u0438\u0442 \u0441\u0432\u043e\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f SQLite \u0438 PostgreSQL. \u0414\u043b\u044f \u0434\u043e\u043c\u0430, \u0434\u043b\u044f \u0441\u0435\u043c\u044c\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e, \u0434\u043b\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043b\u0443\u0447\u0448\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u0442\u043e\u0440\u044b\u043c. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e SQLite, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0443\u0436\u0435\u043d PVC. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e Longhorn \u0441 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439, \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 (\u043d\u0435 hostPath \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c).<\/p>\n<pre><code class=\"yaml\">apiVersion: apps\/v1 kind: StatefulSet metadata:   name: acme-dns   namespace: acme-dns spec:   replicas: 1   selector:     matchLabels:       app.kubernetes.io\/name: acme-dns       app.kubernetes.io\/instance: acme-dns   serviceName: acme-dns   template:     metadata:       labels:         app.kubernetes.io\/name: acme-dns         app.kubernetes.io\/instance: acme-dns     spec:       containers:       - name: acme-dns         image: joohoi\/acme-dns:v0.8         ports:         - name: dns-udp           containerPort: 53           protocol: UDP         - name: dns-tcp           containerPort: 53           protocol: TCP         - name: http           containerPort: 80           protocol: TCP         - name: https           containerPort: 443           protocol: TCP         livenessProbe:           httpGet:             path: \/health             port: http         readinessProbe:           httpGet:             path: \/health             port: http         volumeMounts:         - name: config           mountPath: \/etc\/acme-dns         - name: data           mountPath: \/var\/lib\/acme-dns         resources:           requests:             cpu: 100m             memory: 128Mi           limits:             cpu: 100m             memory: 128Mi       nodeSelector:         kubernetes.io\/hostname: \"worker01\"       volumes:       - name: config         configMap:           name: acme-dns-config   volumeClaimTemplates:   - metadata:       name: data     spec:       accessModes: [ \"ReadWriteOnce\" ]       storageClassName: longhorn       resources:         requests:           storage: 10Mi<\/code><\/pre>\n<p>\u041d\u0430 \u0447\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043f\u043e\u0447\u0435\u043c\u0443 StatefulSet? \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u043e\u043b\u0433\u043e\u0436\u0438\u0432\u0443\u0449\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043f\u0440\u0435\u0435\u043c\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u0442\u043e\u043c\u043e\u0432 \u043a \u043f\u043e\u0434\u0430\u043c. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, high availability \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u0435\u043d, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440. \u0412-\u0442\u0440\u0435\u0442\u044c\u0438\u0445, \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c\u0443 \u0440\u0430\u0431\u043e\u0447\u0435\u043c\u0443 \u0443\u0437\u043b\u0443. \u042d\u0442\u043e \u0441\u044b\u0433\u0440\u0430\u0435\u0442 \u0441\u0432\u043e\u044e \u0440\u043e\u043b\u044c, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0440\u043e\u0443\u0442\u0435\u0440 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a ACME DNS \u0438\u0437\u0432\u043d\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0443\u0440\u0430.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435, \u043f\u043e\u0440\u0442\u044b. \u0421 53\/UDP \u0438 53\/TCP \u0432\u0441\u0451 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u2014 \u044d\u0442\u043e DNS. \u0421 80 \u0438 443 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435. \u041f\u043e\u043d\u044f\u0442\u043d\u043e\u0435 \u0434\u0435\u043b\u043e, \u043e\u043d\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a HTTP API, \u043d\u043e \u043d\u0443\u0436\u0435\u043d \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e ACME DNS \u0443\u043c\u0435\u0435\u0442 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0442\u044c Let&#8217;s Encrypt \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c, \u0442\u0430\u043a \u043a\u0430\u043a \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044d\u0442\u043e\u043c\u0443 API \u043d\u0443\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043d\u0443\u0442\u0440\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u0415\u0441\u043b\u0438 \u0442\u0430\u043a \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u044d\u0442\u0443 \u0434\u044b\u0440\u043a\u0443, \u043b\u0443\u0447\u0448\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c RBAC \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0441\u0442\u0443\u043f \u043a API \u0431\u044b\u043b \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438\u043c\u0451\u043d cert-manager. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438, \u043d\u0443\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e 80 \u043f\u043e\u0440\u0442, 443 \u043c\u043e\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c.<\/p>\n<p>ACME DNS \u043d\u0443\u0436\u043d\u044b \u0434\u0432\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445: \u0435\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0438 \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f\u043c\u0438 \u0438 DNS-\u0437\u0430\u043f\u0438\u0441\u044f\u043c\u0438. \u041f\u0435\u0440\u0432\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 ConfigMap, \u0432\u0442\u043e\u0440\u043e\u0435, \u043a\u0430\u043a \u044f \u0441\u043a\u0430\u0437\u0430\u043b \u0440\u0430\u043d\u0435\u0435, \u0432 \u0442\u043e\u043c\u0435 Longhorn. 10 \u041c\u0411 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0437\u0430 \u0433\u043b\u0430\u0437\u0430. \u0421\u0443\u0434\u044f \u043f\u043e \u043a\u043e\u043d\u0441\u043e\u043b\u0438 Longhorn, \u0443 \u043c\u0435\u043d\u044f \u0437\u0430\u043d\u044f\u0442\u043e 4.5 \u041c\u0411. \u042d\u0442\u043e \u0441 \u043e\u0434\u043d\u043e\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439 \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0437\u0430\u043f\u0438\u0441\u044f\u043c\u0438. \u0414\u0443\u043c\u0430\u044e, \u0434\u0430\u0436\u0435 \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f\u043c\u0438 \u044d\u0442\u043e\u0442 \u043e\u0431\u044a\u0451\u043c \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u0432\u044b\u0440\u0430\u0441\u0442\u0435\u0442.<\/p>\n<p>\u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 (\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0438 \u043f\u0430\u043c\u044f\u0442\u044c) \u0432\u043f\u043e\u043b\u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0445\u0432\u0430\u0442\u0438\u0442 \u0438 \u043c\u0435\u043d\u044c\u0448\u0435, \u043d\u043e \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443.<\/p>\n<h2>\u0421\u0435\u0440\u0432\u0438\u0441\u044b<\/h2>\n<p>ACME DNS \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0432\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u0430: \u0441\u0435\u0440\u0432\u0438\u0441 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, DNS-\u0441\u0435\u0440\u0432\u0438\u0441. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u0432\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u0430.<\/p>\n<pre><code class=\"yaml\">apiVersion: v1 kind: Service metadata:   name: acme-dns-control   namespace: acme-dns   labels:     app.kubernetes.io\/name: acme-dns     app.kubernetes.io\/instance: acme-dns spec:   ports:   - name: http     port: 80     protocol: TCP   - name: https     port: 443     protocol: TCP   selector:     app.kubernetes.io\/name: acme-dns     app.kubernetes.io\/instance: acme-dns --- apiVersion: v1 kind: Service metadata: name: acme-dns-dns namespace: acme-dns spec: type: NodePort selector: app.kubernetes.io\/name: acme-dns app.kubernetes.io\/instance: acme-dns ports: - name: dns-udp port: 53 targetPort: 53 nodePort: 30053 protocol: UDP - name: dns-tcp port: 53 targetPort: 53 nodePort: 30053 protocol: TCP<\/code><\/pre>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439, \u0441\u0435\u0440\u0432\u0438\u0441 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u2014 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441. \u0412\u0442\u043e\u0440\u043e\u0439, DNS-\u0441\u0435\u0440\u0432\u0438\u0441, \u2014 NodePort-\u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0430\u0440\u0443\u0436\u0443 \u0434\u043b\u044f Let&#8217;s Encrypt. \u041f\u043e\u0440\u0442\u044b nodePort \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435, \u0438\u043d\u0430\u0447\u0435 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0440\u043e\u0443\u0442\u0435\u0440.<\/p>\n<h3>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 ACME DNS<\/h3>\n<p>\u041f\u043e\u0436\u0430\u043b\u0443\u0439, \u0441 \u044d\u0442\u0438\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u044f \u043f\u0440\u043e\u043c\u0430\u044f\u043b\u0441\u044f \u0434\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e. \u0425\u0440\u0430\u043d\u0438\u0442\u044c \u043c\u044b \u0438\u0445 \u0431\u0443\u0434\u0435\u043c, \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0435 \u0434\u0435\u043b\u043e, \u0432 \u0432\u0438\u0434\u0435 ConfigMap, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a StatefulSet.<\/p>\n<pre><code class=\"yaml\">apiVersion: v1 kind: ConfigMap metadata:   name: acme-dns-config   namespace: acme-dns data:   config.cfg: |     [general]     # DNS interface. Note that systemd-resolved may reserve port 53 on 127.0.0.53     # In this case acme-dns will error out and you will need to define the listening interface     # for example: listen = \"127.0.0.1:53\"     listen = \"0.0.0.0:53\"     # protocol, \"both\", \"both4\", \"both6\", \"udp\", \"udp4\", \"udp6\" or \"tcp\", \"tcp4\", \"tcp6\"     protocol = \"both4\"     # domain name to serve the requests off of     domain = \"acme-dns.example.ru\"     # zone name server     nsname = \"acme-dns.example.ru\"     # admin email address, where @ is substituted with .     nsadmin = \"acme@example.ru\"     # predefined records served in addition to the TXT     records = [         # domain pointing to the public IP of your acme-dns server         \"acme-dns.example.ru. A 25.25.25.25\",         # specify that acme-dns.example.ru will resolve any *.acme-dns.example.ru records         \"acme-dns.example.ru. NS acme-dns.example.ru.\",     ]     # debug messages from CORS etc     debug = false      [database]     # Database engine to use, sqlite3 or postgres     engine = \"sqlite3\"     # Connection string, filename for sqlite3 and postgres:\/\/$username:$password@$host\/$db_name for postgres     # Please note that the default Docker image uses path \/var\/lib\/acme-dns\/acme-dns.db for sqlite3     connection = \"\/var\/lib\/acme-dns\/acme-dns.db\"     # connection = \"postgres:\/\/user:password@localhost\/acmedns_db\"      [api]     # listen ip eg. 127.0.0.1     ip = \"0.0.0.0\"     # disable registration endpoint     disable_registration = false     # listen port, eg. 443 for default HTTPS     port = \"80\"     # possible values: \"letsencrypt\", \"letsencryptstaging\", \"cert\", \"none\"     tls = \"none\"     # only used if tls = \"cert\"     tls_cert_privkey = \"\/etc\/tls\/example.org\/privkey.pem\"     tls_cert_fullchain = \"\/etc\/tls\/example.org\/fullchain.pem\"     # only used if tls = \"letsencrypt\"     acme_cache_dir = \"api-certs\"     # optional e-mail address to which Let's Encrypt will send expiration notices for the API's cert     notification_email = \"\"     # CORS AllowOrigins, wildcards can be used     corsorigins = [         \"*\"     ]     # use HTTP header to get the client ip     use_header = false     # header name to pull the ip address \/ list of ip addresses from     header_name = \"X-Forwarded-For\"      [logconfig]     # logging level: \"error\", \"warning\", \"info\" or \"debug\"     loglevel = \"debug\"     # possible values: stdout, TODO file &amp; integrations     logtype = \"stdout\"     # file path for logfile TODO     # logfile = \".\/acme-dns.log\"     # format, either \"json\" or \"text\"     logformat = \"text\"<\/code><\/pre>\n<p>\u041d\u0430 \u0447\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435?<\/p>\n<p>ACME DNS \u0443\u043c\u0435\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u043e UDP \u0438 TCP \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c IPv4 \u0438 IPv6. \u042f \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e IPv6 \u0438 \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0440\u0435\u0448\u0438\u043b \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438 UDP \u0438 TCP. \u041f\u043e\u044d\u0442\u043e\u043c\u0443\u00a0<code>protocol = \"both4\"<\/code>.<\/p>\n<p>\u0421\u043b\u0443\u0448\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u043d\u0430 \u0432\u0441\u0435\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u0445 \u043f\u043e\u0434\u0430. \u041f\u043e \u043d\u0430\u0447\u0430\u043b\u0443 \u044f \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u043d\u043e\u0435\u00a0<code>127.0.0.1:53<\/code>, \u043d\u043e \u0441\u0435\u0440\u0432\u0438\u0441 \u0431\u044b\u043b \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u00a0<code>listen = \"0.0.0.0:53\"<\/code>.<\/p>\n<p><code>domain<\/code>\u00a0\u2014 \u044d\u0442\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u0435 \u0438\u043c\u044f \u0432\u0430\u0448\u0435\u0433\u043e DNS-\u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0442\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f. \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435\u00a0<code>nsname<\/code>\u00a0\u044f \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u043d\u0435 \u043f\u043e\u043d\u044f\u043b, \u043d\u043e \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043e\u043d\u043e \u0440\u0430\u0432\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e\u00a0<code>domain<\/code>.<\/p>\n<p><code>records<\/code>\u00a0\u2014 \u0432\u0430\u0436\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442. \u042f \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u044d\u0442\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0443\u0441\u0442\u044b\u043c. \u041c\u043d\u0435 \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u043d\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u043e\u043c DNS-\u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043c\u043e\u0435\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f (\u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u044d\u0442\u043e \u2014 example.ru), \u043d\u043e DNS-\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b. DNS-\u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438\u0441\u044c, \u043d\u043e \u043d\u0435 \u0431\u044b\u043b\u0438 \u0432\u0438\u0434\u043d\u044b \u0438\u0437\u0432\u043d\u0435.<\/p>\n<p><code>engine<\/code>\u00a0\u2014 \u0433\u0434\u0435 ACME DNS \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u0434\u0430\u043d\u043d\u044b\u0435. \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 SQLite.\u00a0<code>connection<\/code>\u00a0\u0434\u043b\u044f SQLite \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0444\u0430\u0439\u043b \u0432 \u043f\u0430\u043f\u043a\u0435 \u0442\u043e\u043c\u0430, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0432 StatefulSet.<\/p>\n<p>\u0412 \u0441\u0435\u043a\u0446\u0438\u0438\u00a0<code>api<\/code>\u00a0\u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e API. \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044f \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e HTTPS, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c\u00a0<code>ip<\/code>,\u00a0<code>port<\/code>\u00a0\u0438\u00a0<code>tls = \"none\"<\/code>. \u0412\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f HTTPS. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0432\u0434\u0440\u0443\u0433 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f HTTPS, \u0431\u0443\u0434\u0435\u0442 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0442\u043e\u043c \u0432 StatefulSet, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f TLS-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0432 \u0441\u0435\u043a\u0440\u0435\u0442\u0430\u0445.<\/p>\n<p><code>loglevel<\/code>\u00a0\u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u00a0<code>debug<\/code>. \u041b\u043e\u0433\u043e\u0432 \u043d\u0435 \u0442\u0430\u043a \u043c\u043d\u043e\u0433\u043e, \u043d\u043e \u043f\u043e \u043f\u0435\u0440\u0432\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0432\u0438\u0434\u0435\u0442\u044c \u0432\u0441\u0451, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 ACME DNS, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u043f\u0440\u043e\u0431\u043b\u0435\u043c.<\/p>\n<p>\u041e\u0434\u043d\u0430 \u0438\u0437 \u043f\u0440\u0438\u0447\u0438\u043d, \u043f\u043e\u0447\u0435\u043c\u0443 \u044f \u043d\u0435 \u0441\u0442\u0430\u043b \u0434\u0435\u043b\u0430\u0442\u044c helm-chart, \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043e\u0431\u043b\u0430\u0433\u043e\u0440\u043e\u0434\u0438\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u0430 \u044d\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0430 \u0432\u043e\u0441\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u044d\u0442\u043e\u0433\u043e \u0447\u0430\u0440\u0442\u0430 \u043d\u0435 \u044f\u0441\u043d\u0430. \u0421 \u043c\u043e\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u0432\u0441\u0451 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u0430\u043c\u043e.<\/p>\n<h3>\u0420\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a<\/h3>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432\u044b\u0448\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\u00a0<code>kubectl apply -f ...<\/code>\u00a0\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u043f\u043e\u0434 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0441\u044f:<\/p>\n<pre><code>NAME             READY   STATUS    RESTARTS   AGE pod\/acme-dns-0   1\/1     Running   0          4d22h NAME                       TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                     AGE service\/acme-dns-control   ClusterIP   10.29.63.13     &lt;none>        80\/TCP,443\/TCP              7d19h service\/acme-dns-dns       NodePort    10.29.163.135   &lt;none>        53:30053\/UDP,53:30053\/TCP   7d19h NAME                        READY   AGE statefulset.apps\/acme-dns   1\/1     7d18h<\/code><\/pre>\n<h2>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0440\u043e\u0443\u0442\u0435\u0440\u0430<\/h2>\n<p>\u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0440\u043e\u0443\u0442\u0435\u0440 \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432\u043e\u0432\u043d\u0435 \u0438 \u0432\u043d\u0443\u0442\u0440\u044c \u043c\u043e\u0435\u0439 \u0441\u0435\u0442\u0438. \u041d\u0435 \u0441\u0442\u0430\u043d\u0443 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0440\u043e\u0443\u0442\u0435\u0440\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u043e\u0443\u0442\u0435\u0440 \u0441\u0432\u043e\u0439, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0432\u043e\u0438. \u041e\u043f\u0438\u0448\u0443 \u043b\u0438\u0448\u044c \u043e\u0431\u0449\u0438\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b.<\/p>\n<ol>\n<li>\n<p>\u0414\u0432\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 dst-nat, \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u043f\u0430\u043a\u0435\u0442\u044b \u043d\u0430 \u043f\u043e\u0440\u0442 53\/UDP \u0438 53\/TCP \u043d\u0430 worker-node-ip:node-port. \u0415\u0441\u043b\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, IP \u0430\u0434\u0440\u0435\u0441 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0443\u0437\u043b\u0430 worker01 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0432 StatefulSet\u00a0<code>.spec.template.spec.nodeSelector.kubernetes.io\/hostname<\/code>, \u0440\u0430\u0432\u0435\u043d\u00a0<code>10.29.29.11<\/code>, \u0430 \u0432 \u0441\u0435\u0440\u0432\u0438\u0441\u0435\u00a0<code>acme-dns-dns<\/code>\u00a0<code>.spec.ports.[&lt;port>].nodePort<\/code>\u00a0\u0440\u0430\u0432\u0435\u043d\u00a0<code>30053<\/code>, \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c\u00a0<code>10.29.29.11:30053<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0414\u0432\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 firewall \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0435\u00a0<code>forwarding<\/code>, \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u044e\u0449\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u043d\u0430 \u043f\u043e\u0440\u0442\u044b 30053\/UDP \u0438 30053\/TCP \u0441 WAN-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0430\u00a0<code>10.29.29.11<\/code>.<\/p>\n<\/li>\n<\/ol>\n<h2>\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0434\u043e\u043c\u0435\u043d\u0430 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f \u0434\u043e\u043c\u0435\u043d\u043e\u043c<\/h2>\n<p>\u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e, \u0447\u0442\u043e ACME DNS API \u0438\u043c\u0435\u0435\u0442 \u0434\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430, \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445\u00a0<code>register<\/code>. \u041d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0435\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043c\u0435\u043d.<\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 pod, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 CURL, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"bash\">kubectl run curl --image=radial\/busyboxplus:curl -i --tty<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430. \u041c\u043e\u0436\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a IP, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 DNS-\u0437\u0430\u043f\u0438\u0441\u0435\u0439 (\u043c\u0435\u0442\u043e\u0434 API\u00a0<code>update<\/code>), \u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c. \u042f \u043f\u043e\u043a\u0430\u0436\u0443 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c, \u043e\u043d \u0431\u043e\u043b\u0435\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u0435\u043d, \u0434\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0447\u0442\u043e-\u043b\u0438\u0431\u043e \u0432 body.<\/p>\n<pre><code class=\"bash\">curl -X POST http:\/\/acme-dns-control.acme-dns.svc.cluster.local\/register     -H \"Content-Type: application\/json\" \\     --data '{\"allowfrom\": [\"192.168.0.0\/16\"]}'<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c\u00a0<code>acme-dns-control.acme-dns.svc.cluster.local<\/code>\u00a0\u2014 \u0430\u0434\u0440\u0435\u0441 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f ACME DNS, \u0430\u00a0<code>192.168.0.0\/16<\/code>\u00a0\u2014 pod CIDR, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<pre><code class=\"bash\">kubectl cluster-info dump | grep -m 1 cluster-cidr<\/code><\/pre>\n<p>\u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442\u0432\u0435\u0442, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438, \u0432\u0440\u043e\u0434\u0435 \u044d\u0442\u043e\u0433\u043e:<\/p>\n<pre><code class=\"json\">{   \"username\": \"eabcdb41-d89f-4580-826f-3e62e9755ef2\",   \"password\": \"pbAXVjlIOE01xbut7YnAbkhMQIkcwoHO0ek2j4Q0\",   \"fulldomain\": \"d420c923-bbd7-4056-ab64-c3ca54c9b3cf.acme-dns.example.ru\",   \"subdomain\": \"d420c923-bbd7-4056-ab64-c3ca54c9b3cf\",   \"allowfrom\": [\"192.168.0.0\/16\"] }<\/code><\/pre>\n<h2>\u0421\u0435\u043a\u0440\u0435\u0442\u0430 \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 ACME DNS<\/h2>\n<p>\u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0444\u0430\u0439\u043b,\u00a0<code>registration.json<\/code>\u00a0\u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430:<\/p>\n<pre><code class=\"json\">{   \"example.ru\": {     \"username\": \"eabcdb41-d89f-4580-826f-3e62e9755ef2\",     \"password\": \"pbAXVjlIOE01xbut7YnAbkhMQIkcwoHO0ek2j4Q0\",     \"fulldomain\": \"d420c923-bbd7-4056-ab64-c3ca54c9b3cf.acme-dns.example.ru\",     \"subdomain\": \"d420c923-bbd7-4056-ab64-c3ca54c9b3cf\",     \"allowfrom\": [\"192.168.0.0\/16\"]   } }<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0451\u043c Kubernetes-\u0441\u0435\u043a\u0440\u0435\u0442 \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0438\u043c\u0451\u043d\u00a0<code>cert-manager<\/code>\u00a0\u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430:<\/p>\n<pre><code class=\"bash\">kubectl create -n cert-manager secret generic acme-dns --from-file registration.json<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 ACME DNS \u0434\u043b\u044f \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0443 \u0436\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044e. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 JSON-\u0444\u0430\u0439\u043b \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"json\">{   \"example.ru\": {     \"username\": \"eabcdb41-d89f-4580-826f-3e62e9755ef2\",     \"password\": \"pbAXVjlIOE01xbut7YnAbkhMQIkcwoHO0ek2j4Q0\",     \"fulldomain\": \"d420c923-bbd7-4056-ab64-c3ca54c9b3cf.acme-dns.example.ru\",     \"subdomain\": \"d420c923-bbd7-4056-ab64-c3ca54c9b3cf\",     \"allowfrom\": [\"192.168.0.0\/16\"]   },   \"another-example.ru\": {     \"username\": \"eabcdb41-d89f-4580-826f-3e62e9755ef2\",     \"password\": \"pbAXVjlIOE01xbut7YnAbkhMQIkcwoHO0ek2j4Q0\",     \"fulldomain\": \"d420c923-bbd7-4056-ab64-c3ca54c9b3cf.acme-dns.example.ru\",     \"subdomain\": \"d420c923-bbd7-4056-ab64-c3ca54c9b3cf\",     \"allowfrom\": [\"192.168.0.0\/16\"]   } }<\/code><\/pre>\n<h2>DNS-\u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0439 \u0437\u043e\u043d\u044b \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c DNS-\u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0437\u043e\u043d\u0443 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u2014 \u044d\u0442\u043e\u00a0<code>example.ru<\/code>.<\/p>\n<ol>\n<li>\n<p><code>A<\/code>-\u0437\u0430\u043f\u0438\u0441\u044c \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e DNS-\u0441\u0435\u0440\u0432\u0435\u0440\u0430:\u00a0<code>acme-dns.example.ru A 25.25.25.25<\/code>.\u00a0<code>acme-dns.example.ru<\/code>\u00a0\u2014 \u0430\u0434\u0440\u0435\u0441, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 ACME DNS \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435\u00a0<code>domain<\/code>.\u00a0<code>25.25.25.25<\/code>\u00a0\u2014 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u0432\u0430\u0448\u0435\u0433\u043e \u0440\u043e\u0443\u0442\u0435\u0440\u0430. TTL \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439, \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e \u0441\u0442\u0430\u0432\u0438\u0442\u044c\u00a0<code>300<\/code>, \u043d\u043e, \u043a\u0430\u043a \u044f \u043e\u043f\u0438\u0441\u0430\u043b \u0432\u044b\u0448\u0435, \u044d\u0442\u043e \u043d\u0438 \u043d\u0430 \u0447\u0442\u043e \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u0438\u0437-\u0437\u0430 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b DNS-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p><code>CNAME<\/code>-\u0437\u0430\u043f\u0438\u0441\u044c \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f \u0434\u043e\u043c\u0435\u043d\u043e\u043c:\u00a0<code>_acme-challenge.example.ru CNAME d420c923-bbd7-4056-ab64-c3ca54c9b3cf.acme-dns.example.ru<\/code>. \u0417\u0434\u0435\u0441\u044c\u00a0<code>_acme-challenge.example.ru<\/code>\u00a0\u2014 \u0430\u0434\u0440\u0435\u0441, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0430 TXT-\u0437\u0430\u043f\u0438\u0441\u044c \u0441 \u043a\u043e\u0434\u043e\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f \u0434\u043e\u043c\u0435\u043d\u043e\u043c, \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f Let&#8217;s Encrypt.\u00a0<code>d420c923-bbd7-4056-ab64-c3ca54c9b3cf.acme-dns.example.ru<\/code>\u00a0\u2014 \u0430\u0434\u0440\u0435\u0441, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 Let&#8217;s Encrypt \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043f\u043e\u0448\u043b\u0451\u0442 \u0437\u0430\u043f\u0440\u043e\u0441, \u043e\u043d \u0442\u0430\u043a \u0443\u043c\u0435\u0435\u0442.<\/p>\n<\/li>\n<\/ol>\n<p>\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u0434\u043b\u044f \u0434\u043e\u043c\u0435\u043d\u043e\u0432\u00a0<code>example.ru<\/code>\u00a0\u0438\u00a0<code>*.example.ru<\/code>\u00a0\u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0434\u043b\u044f \u0434\u043e\u043c\u0435\u043d\u0430 \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440,\u00a0<code>test.example.ru<\/code>\u00a0\u0438\u043b\u0438\u00a0<code>*.test.example.ru<\/code>, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c:<\/p>\n<pre><code>_acme-challenge.test.example.ru CNAME d420c923-bbd7-4056-ab64-c3ca54c9b3cf.acme-dns.example.ru<\/code><\/pre>\n<p>&#8230;\u0438 \u0442\u0430\u043a \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430 \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u041d\u043e \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u043c\u044b \u0436\u0435 \u0432\u0441\u0451 \u044d\u0442\u043e \u0437\u0430\u0442\u0435\u044f\u043b\u0438 \u0434\u043b\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u0441\u043e \u0437\u0432\u0451\u0437\u0434\u043e\u0447\u043a\u043e\u0439! ? \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0443\u0442\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e\u00a0<code>CNAME<\/code>-\u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e (\u043c\u043e\u0436\u0435\u0442 \u043c\u043d\u0435 \u043e\u043f\u044f\u0442\u044c \u043f\u043e\u0432\u0435\u0437\u043b\u043e?) \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c\u00a0<code>A<\/code>-\u0437\u0430\u043f\u0438\u0441\u0438.<\/p>\n<h2>RBAC \u0434\u043b\u044f API ACME DNS<\/h2>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 RBAC \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u0441\u0442\u0430\u043d\u0443, \u0442\u0430\u043c \u0432\u0441\u0451 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e. \u041d\u0443\u0436\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a API ACME DNS \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438\u043c\u0451\u043d\u00a0<code>cert-manager<\/code>.<\/p>\n<h2>Issuer ACME DNS \u0434\u043b\u044f Let&#8217;s Encrypt<\/h2>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c Issuer cert-manager, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448\u0438\u0445 DNS-\u0437\u0430\u043f\u0438\u0441\u0435\u0439. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0430\u043d\u043d\u043e\u0433\u043e\u00a0<a href=\"http:\/\/www.kloth.net\/services\/dig.php\" rel=\"noopener noreferrer nofollow\">online-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430<\/a>. \u041f\u043e\u043b\u0435\u00a0<code>Server<\/code>\u00a0\u0434\u043e\u043b\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0432\u0430\u0448 \u0430\u0432\u0442\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u044b\u0439 DNS-\u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0439 \u0437\u043e\u043d\u044b \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u042f\u043d\u0434\u0435\u043a\u0441.\u041a\u043e\u043d\u043d\u0435\u043a\u0442 \u2014 \u044d\u0442\u043e dns1.yandex.net. \u041f\u043e\u043b\u0435\u00a0<code>Query<\/code>\u00a0\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0432\u00a0<code>ANY<\/code>. \u041d\u0443 \u0438\u043b\u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 dig. \u0414\u0430\u043b\u0435\u0435 \u043a\u0430\u043a\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c:<\/p>\n<ol>\n<li>\n<p>Domain:\u00a0<code>acme-dns.example.ru<\/code>. \u0412\u044b\u0432\u043e\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c\u00a0<code>A<\/code>-\u0437\u0430\u043f\u0438\u0441\u044c \u0438\u00a0<code>NS<\/code>-\u0437\u0430\u043f\u0438\u0441\u044c:<\/p>\n<\/li>\n<\/ol>\n<pre><code>...  ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;acme-dns.example.ru.INANY ;; AUTHORITY SECTION: acme-dns.example.ru.300INNSacme-dns.example.ru. ;; ADDITIONAL SECTION: acme-dns.example.ru.300INA25.25.25.25  ...<\/code><\/pre>\n<ol start=\"2\">\n<li>\n<p>Domain:\u00a0<code>_acme-challenge.example.ru<\/code>. \u0412\u044b\u0432\u043e\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c\u00a0<code>CNAME<\/code>-\u0437\u0430\u043f\u0438\u0441\u044c:<\/p>\n<\/li>\n<\/ol>\n<pre><code>...  ;; QUESTION SECTION: ;_acme-challenge.example.ru.INANY ;; ANSWER SECTION: _acme-challenge.example.ru. 21600INCNAMEd420c923-bbd7-4056-ab64-c3ca54c9b3cf.acme-dns.example.ru.  ...<\/code><\/pre>\n<p>\u041a\u043e\u0433\u0434\u0430 \u044d\u0442\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0435, \u0430 \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 \u0440\u0430\u0437, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c Issuer.<\/p>\n<pre><code class=\"yaml\">apiVersion: cert-manager.io\/v1 kind: ClusterIssuer metadata:   name: letsencrypt-production spec:   acme:     # The ACME server URL     server: https:\/\/acme-v02.api.letsencrypt.org\/directory     # Email address used for ACME registration     email: acme@example.ru     # Name of a secret used to store the ACME account private key     privateKeySecretRef:       name: letsencrypt-production     solvers:     - dns01:         cnameStrategy: Follow         acmeDNS:           host: http:\/\/acme-dns-control.acme-dns.svc.cluster.local:80           accountSecretRef:             name: acme-dns             key: registration.json<\/code><\/pre>\n<p>\u042f \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f Let&#8217;s Encrypt. \u0414\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043c\u0435\u043d\u044f\u0439\u0442\u0435\u00a0<code>https:\/\/acme-v02.api.letsencrypt.org\/directory<\/code>\u00a0\u043d\u0430\u00a0<code>https:\/\/acme-staging-v02.api.letsencrypt.org\/directory<\/code>\u00a0\u0438 \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u0445 \u0432\u043c\u0435\u0441\u0442\u043e\u00a0<code>production<\/code>\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u00a0<code>staging<\/code>.<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b:<\/p>\n<ol>\n<li>\n<p>\u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u044b\u0439 Issuer, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043c\u044b wildcard-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043e\u043d \u043d\u0435 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0443 \u0438\u043c\u0451\u043d \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0441\u0432\u043e\u0439 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 e-mail \u0430\u0434\u0440\u0435\u0441 \u0432 \u043f\u043e\u043b\u0435\u00a0<code>.spec.acme.email<\/code>.<\/p>\n<\/li>\n<li>\n<p><code>.spec.acme.solvers[dns01].cnameStrategy<\/code>\u00a0\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e \u0432\u00a0<code>Follow<\/code>.<\/p>\n<\/li>\n<li>\n<p><code>.spec.acme.solvers[dns01].acmeDNS.host<\/code>\u00a0\u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0438\u0441 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f ACME DNS.<\/p>\n<\/li>\n<li>\n<p><code>.spec.acme.solvers[dns01].acmeDNS.accountSecretRef<\/code>\u00a0\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043d\u0430 \u0441\u0435\u043a\u0440\u0435\u0442 \u0438 \u0435\u0433\u043e \u043f\u043e\u043b\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f JSON \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b\u0438 \u0440\u0430\u043d\u0435\u0435.<\/p>\n<\/li>\n<\/ol>\n<h2>\u0412\u044b\u043f\u0443\u0441\u043a \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 TLS-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438\u043c\u0451\u043d \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/h2>\n<p>\u041d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0430\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0435\u0441\u0443\u0440\u0441.<\/p>\n<pre><code class=\"yaml\">apiVersion: cert-manager.io\/v1 kind: Certificate metadata:   name: wildcard-example-ru-production   namespace: cert-manager spec:   dnsNames:   - '*.example.ru'   issuerRef:     name: letsencrypt-production     kind: ClusterIssuer   secretName: wildcard-example-ru-production   secretTemplate:     annotations:       reflector.v1.k8s.emberstack.com\/reflection-allowed: \"true\"       reflector.v1.k8s.emberstack.com\/reflection-allowed-namespaces: \"harbor\"       reflector.v1.k8s.emberstack.com\/reflection-auto-enabled: \"true\"       reflector.v1.k8s.emberstack.com\/reflection-auto-namespaces: \"harbor\"<\/code><\/pre>\n<p>\u0414\u043e\u0436\u0438\u0434\u0430\u0435\u043c\u0441\u044f \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0432\u044b\u043f\u0443\u0441\u043a\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430, \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430\u00a0<code>wildcard-example-ru-production<\/code>:<\/p>\n<pre><code class=\"bash\">kubectl get -n cert-manager certificate wildcard-example-ru-production<\/code><\/pre>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u0443\u0449\u0435\u043d, \u0432 \u043a\u043e\u043b\u043e\u043d\u043a\u0435\u00a0<code>READY<\/code>\u00a0<code>False<\/code>\u00a0\u043f\u043e\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u00a0<code>True<\/code>, \u0438 TLS-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d \u0432 \u0441\u0435\u043a\u0440\u0435\u0442\u0435\u00a0<code>wildcard-example-ru-production<\/code>. \u0415\u0441\u043b\u0438 \u0437\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u043d\u0443\u0442 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442, \u0441\u043c\u043e\u0442\u0440\u0438\u043c (describe) \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0442\u0438\u043f\u0430\u00a0<code>certificaterequests.cert-manager.io<\/code>,\u00a0<code>orders.acme.cert-manager.io<\/code>,\u00a0<code>challenges.acme.cert-manager.io<\/code>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043b\u043e\u0433\u0438 pod\u00a0<code>acme-dns-0<\/code>.<\/p>\n<p>\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u044b\u0445 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u0432 cert-manager \u043d\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u043c \u0435\u0433\u043e \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0438\u043c\u0451\u043d \u0441\u0430\u043c\u043e\u0433\u043e cert-manager. \u0421\u0435\u043a\u0440\u0435\u0442 \u0441 TLS-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u0432 \u044d\u0442\u043e\u043c \u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0438\u043c\u0451\u043d, \u043d\u043e \u043d\u0443\u0436\u0435\u043d \u043e\u043d \u043d\u0430\u043c \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430\u0445 \u0438\u043c\u0451\u043d \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0434\u043b\u044f Harbor, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442 \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0438\u043c\u0451\u043d\u00a0<code>harbor<\/code>. \u0421\u0435\u043a\u0440\u0435\u0442\u044b \u0432 Kubernetes \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u043a\u0430\u043a\u043e\u043c\u0443-\u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0443 \u0438\u043c\u0451\u043d, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043a\u0430\u043a-\u0442\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u043a\u0440\u0435\u0442\u00a0<code>wildcard-example-ru-production<\/code>\u00a0\u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0451\u043d\u00a0<code>harbor<\/code>, \u0433\u0434\u0435 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0432 ingress-\u0440\u0435\u0441\u0443\u0440\u0441\u0435. \u041a\u0430\u043a \u0431\u044b\u0442\u044c? \u041c\u043e\u0436\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438, \u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0435 3 \u043c\u0435\u0441\u044f\u0446\u0430 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u044d\u0442\u043e \u0443\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u0435. \u041c\u043e\u0436\u043d\u043e \u043d\u0430\u043a\u043e\u043b\u0445\u043e\u0437\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044e, \u043d\u043e \u043f\u0440\u043e\u0449\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p>\u041d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u00a0<a href=\"https:\/\/cert-manager.io\/docs\/faq\/sync-secrets\" rel=\"noopener noreferrer nofollow\">Syncing Secrets Across Namespaces<\/a>\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 cert-manager \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e 3 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430:\u00a0<a href=\"https:\/\/github.com\/emberstack\/kubernetes-reflector\" rel=\"noopener noreferrer nofollow\">reflector<\/a>,\u00a0<a href=\"https:\/\/github.com\/kubeops\/config-syncer\" rel=\"noopener noreferrer nofollow\">kubed<\/a>,\u00a0<a href=\"https:\/\/github.com\/mittwald\/kubernetes-replicator\" rel=\"noopener noreferrer nofollow\">kubernetes-replicator<\/a>. \u041c\u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u0439. \u0421 \u043c\u043e\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f, \u043e\u043d \u0431\u043e\u043b\u0435\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u043d \u0438 \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043d\u043e \u0447\u0442\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c, \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0432\u0430\u0441. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 readme \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u043d\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0435\u0451 \u043d\u0435 \u0441\u0442\u0430\u043d\u0443.<\/p>\n<p>cert-manager\u00a0<a href=\"https:\/\/cert-manager.io\/docs\/reference\/api-docs\/#cert-manager.io\/v1.CertificateSecretTemplate\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0438 \u043c\u0435\u0442\u043a\u0438 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432<\/a>\u00a0\u0441 TLS-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430\u043c\u0438, \u0447\u0442\u043e \u0432\u0435\u0441\u044c\u043c\u0430 \u0443\u0434\u043e\u0431\u043d\u043e. \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0435\u043a\u0440\u0435\u0442 \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0451\u043d\u00a0<code>harbor<\/code>, \u0432 \u0447\u0451\u043c \u043b\u0435\u0433\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f:<\/p>\n<pre><code>$ kubectl get -n harbor secrets wildcard-example-ru-production NAME                             TYPE                DATA   AGE wildcard-example-ru-production   kubernetes.io\/tls   2      6d10h<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f (\u0430 \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f) \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u043a\u0440\u0435\u0442 TLS-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0451\u043d, \u043d\u0443\u0436\u043d\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0441\u0435\u043a\u0440\u0435\u0442, \u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 cert-manager, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u0432 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0438\u043c\u0435\u043d\u0430 \u043d\u0443\u0436\u043d\u044b\u0445 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432 \u0438\u043c\u0451\u043d \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043f\u044f\u0442\u0443\u044e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430\u043a:<\/p>\n<pre><code class=\"yaml\">...   secretTemplate:     annotations:       reflector.v1.k8s.emberstack.com\/reflection-allowed: \"true\"       reflector.v1.k8s.emberstack.com\/reflection-allowed-namespaces: \"harbor,web-app,longhorn\"       reflector.v1.k8s.emberstack.com\/reflection-auto-enabled: \"true\"       reflector.v1.k8s.emberstack.com\/reflection-auto-namespaces: \"harbor,web-app,longhorn\"<\/code><\/pre>\n<p>\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0435 \u0432 \u0441\u0430\u043c\u043e\u043c \u0441\u0435\u043a\u0440\u0435\u0442\u0435 \u043f\u0440\u043e\u043f\u0430\u0434\u0443\u0442.<\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0432\u0441\u0451. \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043f\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b DNS-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430\u043c \u043f\u0430\u043b\u043a\u0438 \u0432 \u043a\u043e\u043b\u0451\u0441\u0430\u0445 \u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b\u043c. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0442\u044c TLS-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u0434\u043b\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u044f\u0449\u0438\u0445 \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u0443\u044e \u0421\u0435\u0442\u044c, \u0447\u0442\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 HTTP-01.<\/p>\n<p>\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044e \u0437\u0430 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u0435. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u043a\u043e\u043c\u0443-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \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\/post\/674738\/\"> https:\/\/habr.com\/ru\/post\/674738\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0434\u043b\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u0438\u0431\u043e \u0443\u0434\u043e\u0431\u043d\u043e: \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438, \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 Docker-\u043e\u0431\u0440\u0430\u0437\u043e\u0432, S3-\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435, \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0441\u0440\u0435\u0434\u044b \u0438 \u0442.\u0434. \u041d\u043e \u0435\u0441\u0442\u044c &#171;\u043d\u043e&#187;: \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043d\u0438\u0445, \u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 Docker-\u043e\u0431\u0440\u0430\u0437\u043e\u0432, \u043c\u043e\u0433\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c TLS. \u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u043f\u0443\u0442\u0438: \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0446\u0435\u043d\u0442\u0440\u043e\u0432, \u043f\u043b\u0430\u0442\u043d\u044b\u0445 \u0438\u043b\u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0445, \u0432\u0440\u043e\u0434\u0435 Let&#8217;s Encrypt, \u0438\u043b\u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u043c\u0443. \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043d\u0430\u0448\u0435\u0433\u043e &#171;\u043b\u0435\u0432\u043e\u0433\u043e&#187; \u0441\u0430\u043c\u043e\u043f\u0440\u043e\u0432\u043e\u0437\u0433\u043b\u0430\u0448\u0451\u043d\u043d\u043e\u0433\u043e \u0446\u0435\u043d\u0442\u0440\u0430 \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0430\u043c\u043e\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043e\u0442\u043f\u0430\u0434\u0430\u0435\u0442. \u0414\u0435\u043d\u0435\u0433 \u043f\u043b\u0430\u0442\u0438\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0433\u043e\u0434 \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c Let&#8217;s Encrypt. \u041d\u043e \u0438 \u0442\u0443\u0442 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 (\u043f\u043e\u043c\u0438\u043c\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0432\u044b\u043f\u0443\u0441\u043a\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u043d\u0435 \u0440\u0435\u0436\u0435 \u0440\u0430\u0437\u0430 \u0432 \u0442\u0440\u0438 \u043c\u0435\u0441\u044f\u0446\u0430): \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u0443\u044e \u0441\u0435\u0442\u044c, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0438 HTTP-01 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f \u0434\u043e\u043c\u0435\u043d\u043e\u043c \u043d\u0430\u043c \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d. \u041e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e DNS-01 \u043c\u0435\u0442\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438.<\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0441\u0432\u043e\u0451\u043c \u043e\u043f\u044b\u0442\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\/\u043f\u0435\u0440\u0435\u0432\u044b\u043f\u0443\u0441\u043a\u0430 wildcard-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0434\u043b\u044f \u0434\u043e\u043c\u0435\u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f (wildcard, \u0447\u0442\u043e\u0431\u044b \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u043d\u0435 \u0432\u0441\u0442\u0430\u0432\u0430\u0442\u044c, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u0430) \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u0432 Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e cert-manager \u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 DNS-\u0437\u043e\u043d \u042f\u043d\u0434\u0435\u043a\u0441.\u041a\u043e\u043d\u043d\u0435\u043a\u0442.<\/p>\n<h2>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b DNS-01 \u043c\u0435\u0442\u043e\u0434\u0430<\/h2>\n<p>\u0413\u043b\u0430\u0432\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f DNS-\u0437\u0430\u043f\u0438\u0441\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f \u0434\u043e\u043c\u0435\u043d\u043e\u043c \u0432\u0438\u0434\u0430 _acme-challenge.example.ru. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 HTTP-01 \u043c\u0435\u0442\u043e\u0434\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 HTTP-\u043e\u0442\u0432\u0435\u0442\u043e\u0432, \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 cert-manager. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 DNS-01 \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0438\u0441 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f DNS-\u0437\u043e\u043d\u0430\u043c\u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c API \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u044f\u043c\u0438. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0438\u043c\u0435\u044e\u0442 \u044d\u0442\u043e\u0442 API. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, DNS-\u0437\u043e\u043d\u044b \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u043c \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0438 \u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0437\u043e\u043d\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430 \u043a\u0430\u043a\u043e\u043c\u0443-\u0442\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0443 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044d\u0442\u043e \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0438\u043a\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438. \u0418, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0432-\u0442\u0440\u0435\u0442\u044c\u0438\u0445, \u0435\u0441\u0442\u044c \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 DNS-\u0437\u0430\u043f\u0438\u0441\u0435\u0439.<\/p>\n<p>\u042f\u043d\u0434\u0435\u043a\u0441.\u041a\u043e\u043d\u043d\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0441\u044c \u044f, \u0438\u043c\u0435\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 API, \u0438 \u043e\u043d \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044f \u0443\u0441\u043f\u0435\u043b \u043e\u0446\u0435\u043d\u0438\u0442\u044c. cert-manager \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0451 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f API \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430. \u0414\u043b\u044f \u042f\u043d\u0434\u0435\u043a\u0441.\u041a\u043e\u043d\u043d\u0435\u043a\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043d\u0435 \u0431\u044b\u043b\u043e, \u0445\u043e\u0442\u044f \u0441\u043f\u0438\u0441\u043e\u043a webhook-\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u044b\u0439. \u0415\u0441\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u042f\u043d\u0434\u0435\u043a\u0441.\u041e\u0431\u043b\u0430\u043a\u043e. \u041c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439:\u00a0<a href=\"https:\/\/github.com\/Eshva\/cert-manager-webhook-yandex-connect\" rel=\"noopener noreferrer nofollow\">cert-manager-webhook-yandex-connect<\/a>. \u0417\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0432\u0437\u044f\u043b \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439\u00a0<a href=\"https:\/\/github.com\/bwolf\/cert-manager-webhook-gandi\" rel=\"noopener noreferrer nofollow\">cert-manager-webhook-gandi<\/a>, \u0432\u044b\u0443\u0447\u0438\u043b Golang, \u0431\u043b\u0430\u0433\u043e \u044f\u0437\u044b\u043a \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0439, \u0438 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u043f\u043e\u0434 \u0434\u0440\u0443\u0433\u043e\u0439 API. \u042f \u043d\u0435 \u0431\u0443\u0434\u0443 \u043f\u0438\u0441\u0430\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u044b webhook \u0438 \u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435, \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e \u0442\u0430\u043c \u043d\u0435\u0442, \u043a\u043e\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0441 \u0433\u0443\u043b\u044c\u043a\u0438\u043d \u043d\u043e\u0441. \u041e\u0434\u043d\u0430\u043a\u043e, \u044d\u0442\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0442\u0443\u043f\u0438\u043a\u043e\u0432\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c, \u0438 \u0432\u043e\u0442 \u043f\u043e\u0447\u0435\u043c\u0443.<\/p>\n<p>\u041a\u0430\u043a \u044d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u0431\u0443\u043c\u0430\u0433\u0435. \u0421\u043a\u0430\u0436\u0435\u043c, \u0435\u0441\u0442\u044c \u0443 \u0432\u0430\u0441 \u0434\u043e\u043c\u0435\u043d example.ru. \u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442\u044c wildcard-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0434\u043b\u044f \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f (*.example.ru) \u0438\u043b\u0438 \u0434\u043b\u044f \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u0430 (test.example.ru). \u0412\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0435 \u0440\u044f\u0434\u043e\u043c \u0441 cert-manager webhook \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e DNS-\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430, \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0435 Issuer, \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0435 Certificate. cert-manager \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u0443\u0436\u043d\u0443\u044e TXT DNS-\u0437\u0430\u043f\u0438\u0441\u044c \u0432\u0438\u0434\u0430 _acme-challenge.example.ru (\u0434\u043b\u044f *.example.ru), \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0432 \u0435\u0451 \u043d\u0430\u043b\u0438\u0447\u0438\u0438, \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0443 Let&#8217;s Encrypt \u0432\u044b\u043f\u0443\u0441\u043a \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430. Let&#8217;s Encrypt \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0432 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 TXT-\u0437\u0430\u043f\u0438\u0441\u0438, \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0435\u0451 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0438 \u0432\u044b\u0434\u0430\u0451\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442. \u0417\u0430\u0434\u0430\u0447\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430!<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e, \u0433\u043b\u0430\u0434\u043a\u043e \u0431\u044b\u043b\u043e \u043d\u0430 \u0431\u0443\u043c\u0430\u0433\u0435, \u043d\u043e \u0437\u0430\u0431\u044b\u043b\u0438 \u043f\u0440\u043e \u043e\u0432\u0440\u0430\u0433\u0438. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 DNS-\u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0415\u0441\u0442\u044c \u0434\u0432\u0430 \u0442\u0438\u043f\u0430 DNS-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432: \u0430\u0432\u0442\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u044b\u0435 (authoritative) \u0438 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0435 (recursive). \u041f\u0435\u0440\u0432\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f DNS-\u0437\u043e\u043d. \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u042f\u043d\u0434\u0435\u043a\u0441.\u041a\u043e\u043d\u043d\u0435\u043a\u0442. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u0430\u0448\u0435\u0433\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430. Let&#8217;s Encrypt, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u043e\u0431\u0449\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0441 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u043c\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438, \u0430\u00a0<a href=\"https:\/\/community.letsencrypt.org\/t\/which-dns-server-lets-encrypt-uses\/126670\/2\" rel=\"noopener noreferrer nofollow\">\u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441 \u0430\u0432\u0442\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u044b\u043c\u0438<\/a>. \u0412\u0440\u043e\u0434\u0435 \u0431\u044b \u0432\u0441\u0451 \u0445\u043e\u0440\u043e\u0448\u043e, \u043d\u043e \u0432\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432 \u0441\u0438\u043b\u0443 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e DNS-\u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043c\u043d\u043e\u0433\u043e, \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435, \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0443\u0436\u043d\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 (\u043e\u0434\u0438\u043d \u0441\u0435\u0440\u0432\u0435\u0440 \u0441 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u043c \u0436\u0435\u043b\u0435\u0437\u043e\u043c) \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0439 \u043f\u043e\u0442\u043e\u043b\u043e\u043a. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0442\u043e \u0435\u0441\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0432 \u043f\u0443\u043b\u0435 \u043c\u043d\u043e\u0433\u043e. \u041c\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432, \u0437\u043d\u0430\u0447\u0438\u0442 \u043c\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445, \u0447\u0442\u043e, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043a\u043e\u043d\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u0422\u043e \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0447\u0435\u0440\u0435\u0437 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0434\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u043e\u0442\u0432\u0435\u0442\u044b: \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0437\u0430\u043f\u0438\u0441\u044c \u0435\u0441\u0442\u044c, \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u043d\u0435\u0442. \u0423\u0441\u0443\u0433\u0443\u0431\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043a\u044d\u0448\u0430 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0432 \u043f\u0443\u043b\u0435. \u0412\u0441\u0451 \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 (propagation) DNS-\u0437\u0430\u043f\u0438\u0441\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f (\u0433\u0434\u0435-\u0442\u043e \u0441\u0443\u0442\u043a\u0438-\u0434\u0432\u043e\u0435) \u0438 \u043f\u0435\u0440\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u0432\u0435\u0442\u043e\u0432. \u042d\u0442\u043e \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e \u0438 \u0434\u043b\u044f \u043e\u0431\u043e\u0438\u0445 \u0432\u0438\u0434\u043e\u0432 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432. \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044f \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u043b \u044d\u0442\u043e\u0442 \u044d\u0444\u0444\u0435\u043a\u0442 \u043d\u0430 dns1.yandex.net \u0438 dns2.yandex.net. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 TTL DNS-\u0441\u0435\u0440\u0432\u0435\u0440\u044b \u043d\u0435 \u0441\u043e\u0431\u043b\u044e\u0434\u0430\u044e\u0442. TTL == 300 \u043d\u0438\u0447\u0435\u0433\u043e \u0434\u043b\u044f \u043d\u0438\u0445 \u043d\u0435 \u0437\u043d\u0430\u0447\u0438\u0442, \u0440\u043e\u0432\u043d\u043e \u043a\u0430\u043a \u0438 TTL == 60.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c TXT-\u0437\u0430\u043f\u0438\u0441\u044c \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0430\u0443\u0437\u0443 \u043d\u0430 \u043f\u0430\u0440\u0443 \u0441\u0443\u0442\u043e\u043a, \u0432\u0441\u0451 \u0431\u0443\u0434\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u043e, \u043d\u043e cert-manager \u0442\u0430\u043a \u043d\u0435 \u0443\u043c\u0435\u0435\u0442. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d \u0437\u0430\u043c\u0435\u0442\u0438\u043b \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437 \u0437\u0430\u043f\u0438\u0441\u044c \u043d\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u043e\u043d \u0441\u0440\u0430\u0437\u0443 \u0434\u0435\u043b\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442. \u041d\u043e \u0445\u0443\u0436\u0435 \u0442\u043e\u0433\u043e, \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u042f\u043d\u0434\u0435\u043a\u0441.\u041a\u043e\u043d\u043d\u0435\u043a\u0442, TXT-\u0437\u0430\u043f\u0438\u0441\u044c \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u043d\u0430 \u044d\u0442\u043e cert-manager. \u041f\u0440\u043e\u0449\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u0435\u0441\u0442\u044c \u0442\u0430\u0439\u043c\u0430\u0443\u0442 (30 \u043c\u0438\u043d\u0443\u0442, \u0435\u0441\u043b\u0438 \u044f \u043f\u043e\u043d\u044f\u043b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e) \u043d\u0430 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438. \u0415\u0441\u043b\u0438 DNS-\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u0443\u043b\u043e\u0436\u0438\u043b\u0441\u044f, \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0430\u043b\u0435\u043d\u043d\u043e\u0439 \u0438 cert-manager \u0441\u0434\u0430\u0451\u0442\u0441\u044f \u0438 \u0437\u0430\u0441\u044b\u043f\u0430\u0435\u0442 \u0433\u0434\u0435-\u0442\u043e \u043d\u0430 \u0447\u0430\u0441-\u0434\u0432\u0430, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0432\u043d\u043e\u0432\u044c. \u0412 \u0438\u0442\u043e\u0433\u0435 \u044d\u0442\u0430 \u0442\u044f\u0433\u043e\u043c\u043e\u0442\u0438\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c\u0441\u044f \u0434\u043d\u044f\u043c\u0438, \u0430 \u043c\u043e\u0436\u0435\u0442 \u0438 \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0438\u0442\u044c \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0430, \u043a\u0430\u043a \u044d\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430 \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 (\u0437\u0432\u0451\u0437\u0434\u044b \u0441\u043e\u0448\u043b\u0438\u0441\u044c).<\/p>\n<p>\u0427\u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f cert-manager \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439? \u041f\u043e\u0447\u0442\u0438 \u043d\u0438\u0447\u0435\u0433\u043e. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043b\u044e\u0447\u0438, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041d\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u0440\u0435\u0436\u043d\u0435\u0439 \u2014 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f. \u0415\u0441\u0442\u044c \u0435\u0449\u0451\u00a0<a href=\"https:\/\/github.com\/cert-manager\/cert-manager\/issues\/3743\" rel=\"noopener noreferrer nofollow\">issue, \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u043e \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u044e\u0449\u0435\u0435 \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443<\/a>, \u043d\u043e \u043e\u043d\u043e \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043d\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u043e.<\/p>\n<h2>\u041a\u0430\u043a \u043d\u0430\u0434\u0451\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443<\/h2>\n<p>\u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u044b\u0439 \u0434\u0430\u0436\u0435 \u0434\u043b\u044f DNS-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0431\u0435\u0437 API \u2014 \u044d\u0442\u043e \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 DNS-\u0441\u0435\u0440\u0432\u0435\u0440, \u0432 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0440\u0435\u0430\u043a\u0446\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0443\u0432\u0435\u0440\u0435\u043d\u044b. \u0417\u0432\u0443\u0447\u0438\u0442 \u0441\u043b\u043e\u0436\u043d\u043e \u0438 \u0442\u0440\u0443\u0434\u043e\u0437\u0430\u0442\u0440\u0430\u0442\u043d\u043e, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0442\u0430\u043a.<\/p>\n<p>\u042f, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u043f\u0435\u0440\u0432\u044b\u0439 \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0432\u0448\u0438\u0439\u0441\u044f \u0441 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439. \u0423\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0435\u0441\u0442\u044c \u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u044b\u0439 DNS-\u0441\u0435\u0440\u0432\u0435\u0440 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u2014\u00a0<a href=\"https:\/\/github.com\/joohoi\/acme-dns\" rel=\"noopener noreferrer nofollow\">ACME DNS<\/a>. \u041d\u0430 \u0425\u0430\u0431\u0440\u0435 \u0434\u0430\u0436\u0435 \u0431\u044b\u043b\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043d\u0430\u044f\u00a0<a href=\"https:\/\/habr.com\/ru\/post\/350202\/\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u044c\u044f<\/a>\u00a0\u0430\u0432\u0442\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043d\u043e \u043e\u043d\u0430 \u043d\u043e\u0441\u0438\u0442 \u0441\u043a\u043e\u0440\u0435\u0435 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440. \u042f \u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043a\u0430\u043a \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u044d\u0442\u043e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435, \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438 \u0438 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u0441\u044f, \u0438 \u043a\u0430\u043a \u0438\u0445 \u0440\u0435\u0448\u0438\u0442\u044c.<\/p>\n<p>\u0412 \u0434\u0432\u0443\u0445 \u0441\u043b\u043e\u0432\u0430\u0445 \u043e\u0431 ACME DNS. \u042d\u0442\u043e \u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u044b\u0439 DNS-\u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0443 \u0442\u043e\u043b\u044c\u043a\u043e TXT-\u0437\u0430\u043f\u0438\u0441\u0438. cert-manager\u00a0<a href=\"https:\/\/cert-manager.io\/docs\/configuration\/acme\/dns01\/acme-dns\/\" rel=\"noopener noreferrer nofollow\">\u0443\u043c\u0435\u0435\u0442 \u0441 \u043d\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c<\/a>. \u0421\u0430\u043c \u043f\u0440\u043e\u0435\u043a\u0442 \u0437\u0430\u0431\u0440\u043e\u0448\u0435\u043d \u0430\u0432\u0442\u043e\u0440\u043e\u043c \u0433\u043e\u0434\u0430 \u0434\u0432\u0430 \u043d\u0430\u0437\u0430\u0434, \u043d\u043e \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0432\u043f\u043e\u043b\u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d. \u0415\u0441\u0442\u044c \u0435\u0433\u043e \u0444\u043e\u0440\u043a\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440\u00a0<a href=\"https:\/\/github.com\/fritterhoff\/acme-dns\/\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e\u0442<\/a>. \u041e\u0434\u043d\u0430\u043a\u043e, \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043e\u043f\u0438\u0440\u0430\u044e\u0441\u044c \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439.<\/p>\n<p>\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b ACME DNS \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442. \u041e\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 API \u0441 \u0434\u0432\u0443\u043c\u044f \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438:\u00a0<a href=\"https:\/\/github.com\/joohoi\/acme-dns#register-endpoint\" rel=\"noopener noreferrer nofollow\">register<\/a>\u00a0\u0438\u00a0<a href=\"https:\/\/github.com\/joohoi\/acme-dns#update-endpoint\" rel=\"noopener noreferrer nofollow\">update<\/a>. \u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d \u0434\u043b\u044f DNS-\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438. \u0412\u0442\u043e\u0440\u043e\u0439 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c TXT DNS-\u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043b\u044f \u0440\u0430\u043d\u0435\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430.<\/p>\n<p>\u0415\u0449\u0451 \u043e\u0434\u043d\u043e \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f. \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0435\u0441\u0442\u044c\u00a0<a href=\"https:\/\/auth.acme-dns.io\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 ACME DNS<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u043d\u043e \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u043d \u043f\u0440\u043e\u0436\u0438\u0432\u0451\u0442 \u0438 \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e, \u043d\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0435\u0448\u0438\u043b \u0432\u0441\u0451 \u0436\u0435 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u0432\u043e\u0439.<\/p>\n<h2>\u0420\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c ACME DNS \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435<\/h2>\n<p>\u0410\u0432\u0442\u043e\u0440 ACME DNS \u043d\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043b \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0432 Kubernetes, \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0432\u0438\u0434\u0435 standalone-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0432 Docker. \u041c\u043d\u0435 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u0439\u0442\u0438 helm-chart, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u043a\u043e\u043b\u0445\u043e\u0437\u0438\u0442\u044c \u0441\u0432\u043e\u0451 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u041d\u0435\u0442, \u043d\u0435 \u0447\u0430\u0440\u0442, \u043c\u043d\u0435 \u0431\u044b\u043b\u043e \u043b\u0435\u043d\u044c \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Helm, \u0434\u0430 \u0438 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u043e\u043d \u043c\u043d\u0435. \u042f \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b \u043d\u0430\u0431\u043e\u0440 Kubernetes-\u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 \u0441\u0432\u043e\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f.<\/p>\n<h3>\u041f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0451\u043d<\/h3>\n<p>ACME DNS \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0438\u043c\u0451\u043d, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0435\u0433\u043e:<\/p>\n<pre><code class=\"yaml\">apiVersion: v1 kind: Namespace metadata:   name: acme-dns<\/code><\/pre>\n<h3>Statefulset<\/h3>\n<p>ACME DNS \u0445\u0440\u0430\u043d\u0438\u0442 \u0441\u0432\u043e\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f SQLite \u0438 PostgreSQL. \u0414\u043b\u044f \u0434\u043e\u043c\u0430, \u0434\u043b\u044f \u0441\u0435\u043c\u044c\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e, \u0434\u043b\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043b\u0443\u0447\u0448\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u0442\u043e\u0440\u044b\u043c. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e SQLite, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0443\u0436\u0435\u043d PVC. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e Longhorn \u0441 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439, \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 (\u043d\u0435 hostPath \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c).<\/p>\n<pre><code class=\"yaml\">apiVersion: apps\/v1 kind: StatefulSet metadata:   name: acme-dns   namespace: acme-dns spec:   replicas: 1   selector:     matchLabels:       app.kubernetes.io\/name: acme-dns       app.kubernetes.io\/instance: acme-dns   serviceName: acme-dns   template:     metadata:       labels:         app.kubernetes.io\/name: acme-dns         app.kubernetes.io\/instance: acme-dns     spec:       containers:       - name: acme-dns         image: joohoi\/acme-dns:v0.8         ports:         - name: dns-udp           containerPort: 53           protocol: UDP         - name: dns-tcp           containerPort: 53           protocol: TCP         - name: http           containerPort: 80           protocol: TCP         - name: https           containerPort: 443           protocol: TCP         livenessProbe:           httpGet:             path: \/health             port: http         readinessProbe:           httpGet:             path: \/health             port: http         volumeMounts:         - name: config           mountPath: \/etc\/acme-dns         - name: data           mountPath: \/var\/lib\/acme-dns         resources:           requests:             cpu: 100m             memory: 128Mi           limits:             cpu: 100m             memory: 128Mi       nodeSelector:         kubernetes.io\/hostname: \"worker01\"       volumes:       - name: config         configMap:           name: acme-dns-config   volumeClaimTemplates:   - metadata:       name: data     spec:       accessModes: [<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-335344","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/335344","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=335344"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/335344\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=335344"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=335344"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=335344"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}