{"id":489330,"date":"2026-07-31T12:48:18","date_gmt":"2026-07-31T12:48:18","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=489330"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=489330","title":{"rendered":"\u041a\u0430\u043a \u044f \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u043b Yandex Cloud Stackland \u043d\u0430 bare metal"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/38\/f2\/61\/38f2618a912d1e2561f4e73f7973f75d.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/38\/f2\/61\/38f2618a912d1e2561f4e73f7973f75d.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/38\/f2\/61\/38f2618a912d1e2561f4e73f7973f75d.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041f\u0440\u0438\u0432\u0435\u0442! \u042f \u0414\u0430\u043d\u0438\u0438\u043b, DevOps-\u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0432 <a href=\"https:\/\/kts.tech\/devops\">KTS<\/a>.<\/p>\n<p>\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u043f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0441\u043e Stackland. \u041a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0441 \u043a\u0443\u0447\u0435\u0439 \u043a\u043e\u0440\u043e\u0431\u043e\u0447\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u0436\u0435\u043b\u0435\u0437\u0435 \u0432 \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u043c \u043a\u043e\u043d\u0442\u0443\u0440\u0435 \u0434\u0430\u0432\u043d\u043e \u0431\u044b\u043b\u0430 \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u0430 \u043d\u0430\u043c (\u0438 \u043d\u0430\u0448\u0438\u043c \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u0430\u043c), \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u043c\u0438\u043c\u043e \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043e\u0442 \u042f\u043d\u0434\u0435\u043a\u0441\u0430 \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u0440\u0435\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435\u043c. \u041f\u043e \u0433\u043e\u0440\u044f\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0430\u043c \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f Stackland \u043d\u0430 \u0433\u043e\u043b\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435. \u0422\u0430\u043a \u0447\u0442\u043e \u043d\u0438\u0436\u0435 \u0432\u0430\u0441 \u0436\u0434\u0435\u0442 \u0441\u043a\u043e\u0440\u0435\u0435 \u043d\u0435 \u043e\u0431\u0437\u043e\u0440, \u0430 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b.<\/p>\n<p>\u041a\u043e\u0440\u043e\u0442\u043a\u043e \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u044b\u043b\u043e: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b L2-\u0441\u0435\u0442\u044c, \u0431\u0430\u0441\u0442\u0438\u043e\u043d \u0441 NAT, DNS \u0438 NTP, \u0442\u0440\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043e\u0431\u0440\u0430\u0437 Stackland \u0438 YAML-\u043a\u043e\u043d\u0444\u0438\u0433\u0438. \u0417\u0430\u0442\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b <code>sladm install<\/code> \u0438 \u0447\u0435\u0440\u0435\u0437 \u0447\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043a\u043e\u043d\u0441\u043e\u043b\u044c, \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0441 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0432 Grafana \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e \u043a\u043d\u043e\u043f\u043a\u0435 \u0432 UI \u043f\u043e\u0434\u043d\u044f\u0442\u044c managed PostgreSQL, Kafka, ClickHouse \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b.<\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u044b\u043b\u043e, \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u043d\u0438\u0436\u0435.<\/p>\n<p><strong>\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/strong><\/p>\n<ul>\n<li>\n<p><a href=\"#intro-stackland\">\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043e \u0442\u043e\u043c, \u043a\u043e\u043c\u0443 \u0438 \u0437\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u0435\u043d Stackland<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#prerequisites\">\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c<\/a> <\/p>\n<ul>\n<li>\n<p><a href=\"#network-scheme\">\u0421\u0445\u0435\u043c\u0430 \u0441\u0435\u0442\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#step-1-baremetal-network\">\u0428\u0430\u0433 1. \u041f\u043e\u0434\u0441\u0435\u0442\u044c \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0432 BareMetal<\/a> <\/p>\n<ul>\n<li>\n<p><a href=\"#step-1-1-vrf\">1.1. VRF (\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442)<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#step-1-2-private-subnet\">1.2. \u041f\u0440\u0438\u0432\u0430\u0442\u043d\u0430\u044f \u043f\u043e\u0434\u0441\u0435\u0442\u044c<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#step-1-3-bastion\">1.3. \u0411\u0430\u0441\u0442\u0438\u043e\u043d<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#step-1-4-cluster-nodes\">1.4. \u0422\u0440\u0438 \u043d\u043e\u0434\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#step-1-5-stackland-iso\">1.5. \u0417\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 Stackland<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#step-2-bastion-setup\">\u0428\u0430\u0433 2. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0430<\/a> <\/p>\n<ul>\n<li>\n<p><a href=\"#step-2-1-vpn-access\">2.1. VPN \u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u044b<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#step-2-2-ufw-nat\">2.2. UFW \u0438 NAT<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#step-2-3-packages\">2.3. \u041f\u0430\u043a\u0435\u0442\u044b<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#step-2-4-bind\">2.4. BIND<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#step-2-5-chrony\">2.5. Chrony<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#step-3-iso-nodes\">\u0428\u0430\u0433 3. ISO \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u043d\u043e\u0434\u0443<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#step-4-dns-check\">\u0428\u0430\u0433 4. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 DNS \u043f\u0435\u0440\u0435\u0434 install<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#step-5-sladm-config\">\u0428\u0430\u0433 5. \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f sladm<\/a> <\/p>\n<ul>\n<li>\n<p><a href=\"#cluster-yaml\">cluster.yaml<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#hosts-yaml\">hosts.yaml<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#step-6-sladm-install\">\u0428\u0430\u0433 6. sladm install<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#step-7-check\">\u0428\u0430\u0433 7. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#managed-services\">\u0421\u0430\u043c\u043e\u0435 \u0441\u043b\u0430\u0434\u043a\u043e\u0435: managed-\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438<\/a> <\/p>\n<ul>\n<li>\n<p><a href=\"#postgresql-18\">PostgreSQL 18<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#apache-kafka-41\">Apache Kafka 4.1<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#clickhouse-263\">ClickHouse 26.3<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#troubleshooting\">\u0427\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043d\u0435 \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#first-app-ingress\">\u041f\u0435\u0440\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (Ingress)<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#stackland-extra\">\u0427\u0442\u043e \u0435\u0449\u0435 \u0435\u0441\u0442\u044c \u0432 Stackland \u0438 \u043d\u0435 \u0432\u043e\u0448\u043b\u043e \u0432 \u0441\u0442\u0430\u0442\u044c\u044e<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#result\">\u0418\u0442\u043e\u0433<\/a><\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"intro-stackland\" id=\"intro-stackland\"><\/a><\/p>\n<h2>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043e \u0442\u043e\u043c, \u043a\u043e\u043c\u0443 \u0438 \u0437\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u0435\u043d Stackland<\/h2>\n<p>\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0440\u0435\u0448\u0430\u0435\u0442 \u0443\u0437\u043a\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443: Kubernetes \u0438 managed-\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u042f\u043d\u0434\u0435\u043a\u0441\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440\u0430 \u0431\u0435\u0437 \u0441\u0431\u043e\u0440\u043a\u0438 \u0438\u0437 Helm-\u0447\u0430\u0440\u0442\u043e\u0432.<\/p>\n<p>\u0421\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043d\u0435\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b, \u0435\u0441\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u0432\u043e\u0435\u043c \u0426\u041e\u0414\u0435 \u0438\u043b\u0438 \u0430\u0440\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u043d\u043e\u043c bare metal. \u0418\u043b\u0438 \u0435\u0441\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 PostgreSQL, Kafka \u0438 ClickHouse \u0432 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u042f\u043d\u0434\u0435\u043a\u0441\u0430, \u0430 \u043b\u0435\u0433\u0430\u0441\u0438 \u0436\u0438\u0432\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432 on-prem.<\/p>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c Stackland \u0432\u0440\u044f\u0434 \u043b\u0438 \u0443\u043c\u0435\u0441\u0442\u0435\u043d, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0431\u0435\u0437 PaaS. \u0422\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0449\u0435 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c k3s \u0438\u043b\u0438 managed K8s \u0432 \u043e\u0431\u043b\u0430\u043a\u0435. \u0418\u043b\u0438 \u0435\u0441\u043b\u0438 Kubernetes \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d.<\/p>\n<p><a class=\"anchor\" name=\"prerequisites\" id=\"prerequisites\"><\/a><\/p>\n<h2>\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c<\/h2>\n<p>\u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u043b\u043e\u0434\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u044b, \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0442\u044c control-plane \u0438 worker-\u043d\u043e\u0434\u044b, \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0448\u0435\u043b \u0447\u0435\u0440\u0435\u0437 combined. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e <a href=\"https:\/\/yandex.cloud\/ru\/docs\/stackland\/tutorials\/install-on-yc-bms\">\u0434\u043e\u043a\u0435<\/a>, \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u043d\u043e\u0434\u0443 \u0441 \u0440\u043e\u043b\u044c\u044e combined \u043d\u0443\u0436\u043d\u043e:<\/p>\n<ul>\n<li>\n<p>32 vCPU;<\/p>\n<\/li>\n<li>\n<p>64 GB RAM;<\/p>\n<\/li>\n<li>\n<p>\u0434\u0432\u0430 SSD \u043e\u0442 100 GB.<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u0435\u043d \u0431\u0430\u0441\u0442\u0438\u043e\u043d \u043d\u0430 Ubuntu 22.04+, \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0445\u0432\u0430\u0442\u0438\u0442 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u041c\u0435\u0436\u0434\u0443 \u043d\u043e\u0434\u0430\u043c\u0438 \u043d\u0443\u0436\u043d\u0430 L2-\u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u044c \u0432 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0439 \/24, \u0430\u0434\u0440\u0435\u0441\u0430 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0434\u0430\u0442\u044c DHCP \u0438\u043b\u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u043a\u043e\u0439. \u0415\u0449\u0435 \u043d\u0443\u0436\u043d\u044b \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f <code>key.json<\/code> \u043e\u0442 \u042f\u043d\u0434\u0435\u043a\u0441\u0430, Docker \u043d\u0430 \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0435 \u0438 <code>sladm<\/code> \u0438\u0437 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430 Stackland. \u0418 <code>baseDomain<\/code> \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0441\u0430\u043c\u043e \u0441\u043e\u0431\u043e\u0439. \u0423 \u043d\u0430\u0441 \u044d\u0442\u043e <code>kts.internal<\/code>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u043e \u0442\u0435\u043a\u0441\u0442\u0443 \u044f \u0431\u0443\u0434\u0443 \u0432\u0435\u0437\u0434\u0435 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0435\u0433\u043e. \u0415\u0441\u043b\u0438 \u0431\u0443\u0434\u0435\u0442\u0435 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0435\u043c\u0443 \u043c\u0430\u043d\u0443\u0430\u043b\u0443, \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u0441\u0432\u043e\u0439.<\/p>\n<p><a class=\"anchor\" name=\"network-scheme\" id=\"network-scheme\"><\/a><\/p>\n<h3>\u0421\u0445\u0435\u043c\u0430 \u0441\u0435\u0442\u0438<\/h3>\n<p>\u0414\u0435\u043b\u0438\u043c \/24 \u043d\u0430 \u0442\u0440\u0438 \u0437\u043e\u043d\u044b (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f \u0438\u0437 \u0434\u043e\u043a\u0438):<\/p>\n<pre><code>10.0.0.0\/24\u251c\u2500\u2500 10.0.0.0\/25     \u2014 IP \u0445\u043e\u0441\u0442\u043e\u0432 (\u043d\u043e\u0434\u044b, \u0431\u0430\u0441\u0442\u0438\u043e\u043d)\u251c\u2500\u2500 10.0.0.127      \u2014 VIP API Kubernetes (\u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439 IP)\u2514\u2500\u2500 10.0.0.128\/25   \u2014 \u043f\u0443\u043b LoadBalancer (Cilium L2)Pod CIDR:     172.16.0.0\/16Service CIDR: 10.96.0.0\/12                    [ Internet ]                         |                   [ \u0411\u0430\u0441\u0442\u0438\u043e\u043d ]                   NAT + BIND + Chrony + VPN                   10.0.0.3                         |        +----------------+----------------+        |                |                |    node1            node2            node3  10.0.0.4         10.0.0.5         10.0.0.6   combined          combined          combined<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><a class=\"anchor\" name=\"step-1-baremetal-network\" id=\"step-1-baremetal-network\"><\/a><\/p>\n<h3>\u0428\u0430\u0433 1. \u041f\u043e\u0434\u0441\u0435\u0442\u044c \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0432 BareMetal<\/h3>\n<p><a class=\"anchor\" name=\"step-1-1-vrf\" id=\"step-1-1-vrf\"><\/a><\/p>\n<h4>1.1. VRF (\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442)<\/h4>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0435\u043c VRF. \u042d\u0442\u043e \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 L2-\u0434\u043e\u043c\u0435\u043d \u0434\u043b\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/58\/22\/ee\/5822ee1fdc1c12301654a8314edae52a.png\" alt=\"BMS: \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 VRF stackland\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/58\/22\/ee\/5822ee1fdc1c12301654a8314edae52a.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/58\/22\/ee\/5822ee1fdc1c12301654a8314edae52a.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>BMS: \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 VRF stackland<\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 Yandex BareMetal \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b \u0441\u0435\u0442\u0435\u0439 \u0438 \u0436\u043c\u0435\u043c \u0421\u043e\u0437\u0434\u0430\u0442\u044c VRF. \u041c\u044b \u043d\u0430\u0437\u0432\u0430\u043b\u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 <code>stackland<\/code>, \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043f\u0443\u0441\u0442\u044b\u043c. \u0412\u0441\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043f\u043e\u0442\u043e\u043c \u0432\u0435\u0448\u0430\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u044d\u0442\u043e\u0442 VRF.<\/p>\n<p><a class=\"anchor\" name=\"step-1-2-private-subnet\" id=\"step-1-2-private-subnet\"><\/a><\/p>\n<h4>1.2. \u041f\u0440\u0438\u0432\u0430\u0442\u043d\u0430\u044f \u043f\u043e\u0434\u0441\u0435\u0442\u044c<\/h4>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/91\/72\/71\/917271ed5f8c07d923ace7b09f0186cf.png\" alt=\"BMS: \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0445 \u043f\u043e\u0434\u0441\u0435\u0442\u0435\u0439 10.0.0.0\/24\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/91\/72\/71\/917271ed5f8c07d923ace7b09f0186cf.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/91\/72\/71\/917271ed5f8c07d923ace7b09f0186cf.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>BMS: \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0445 \u043f\u043e\u0434\u0441\u0435\u0442\u0435\u0439 10.0.0.0\/24<\/figcaption><\/div>\n<\/figure>\n<p>BareMetal \u2192 \u041f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0435 \u043f\u043e\u0434\u0441\u0435\u0442\u0438 \u2192 \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u0434\u0441\u0435\u0442\u044c. \u041d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c <code>10.0.0.0\/24<\/code> \u0432 \u043f\u0443\u043b\u0435 <code>m4<\/code>, \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u0430\u044f \u043a VRF <code>stackland<\/code>. \u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c CIDR, \u0448\u043b\u044e\u0437 (\u043f\u0435\u0440\u0432\u044b\u0439 IP \u043f\u043e\u0434\u0441\u0435\u0442\u0438), \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c DHCP \u0438 \u0437\u0430\u0434\u0430\u0435\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0434\u043b\u044f \u043d\u043e\u0434.<\/p>\n<p>\u0423 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0442\u0430\u043a: \u043f\u0443\u043b ru-central1-m4, CIDR 10.0.0.0\/24, \u0448\u043b\u044e\u0437 10.0.0.1, DHCP \u0434\u043e .120, VRF \u0441 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e \u0448\u0430\u0433\u0430.<\/p>\n<p><a class=\"anchor\" name=\"step-1-3-bastion\" id=\"step-1-3-bastion\"><\/a><\/p>\n<h4>1.3. \u0411\u0430\u0441\u0442\u0438\u043e\u043d<\/h4>\n<p>\u0411\u0435\u0440\u0435\u043c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0433\u043e\u0442\u043e\u0432\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e. \u041d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430 \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/6c\/68\/80\/6c68806ae1ba408c4f1bf577e23826e3.png\" alt=\"BMS: \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/6c\/68\/80\/6c68806ae1ba408c4f1bf577e23826e3.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/6c\/68\/80\/6c68806ae1ba408c4f1bf577e23826e3.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>BMS: \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432<\/figcaption><\/div>\n<\/figure>\n<p>BareMetal \u2192 \u0417\u0430\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440 \u2192 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0443\u043b \u0438 \u0442\u0430\u0440\u0438\u0444 \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430. \u0414\u043b\u044f \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0430 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e. \u041e\u043d \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u0443\u0435\u0442 \u0442\u0440\u0430\u0444\u0438\u043a, \u043e\u0442\u0434\u0430\u0435\u0442 DNS\/NTP \u0438 \u0441 \u043d\u0435\u0433\u043e \u0436\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c <code>sladm<\/code>.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/d2\/9c\/35\/d29c356bf63cdb2cd9169a36d98d3b16.png\" alt=\"BMS: \u0437\u0430\u043a\u0430\u0437 \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0430 BA-I207-H\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/d2\/9c\/35\/d29c356bf63cdb2cd9169a36d98d3b16.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/d2\/9c\/35\/d29c356bf63cdb2cd9169a36d98d3b16.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>BMS: \u0437\u0430\u043a\u0430\u0437 \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0430 BA-I207-H<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430 \u0448\u0430\u0433\u0435 \u0414\u043e\u0441\u0442\u0443\u043f \u0438 \u0441\u0435\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u0443\u044e \u043f\u043e\u0434\u0441\u0435\u0442\u044c \u0438\u0437 \u043f. 1.2 \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0439 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 IP. \u041d\u0430 \u0448\u0430\u0433\u0435 \u041e\u0421 \u0441\u0442\u0430\u0432\u0438\u043c Ubuntu 24.04, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c SSH-\u043a\u043b\u044e\u0447 \u0438 \u043f\u0430\u0440\u043e\u043b\u044c root. \u0416\u043c\u0435\u043c <strong>\u0417\u0430\u043a\u0430\u0437\u0430\u0442\u044c<\/strong> \u0438 \u0436\u0434\u0435\u043c \u043f\u0440\u043e\u0432\u0438\u0436\u0438\u043d\u0438\u043d\u0433.<\/p>\n<p><a class=\"anchor\" name=\"step-1-4-cluster-nodes\" id=\"step-1-4-cluster-nodes\"><\/a><\/p>\n<h4>1.4. \u0422\u0440\u0438 \u043d\u043e\u0434\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430<\/h4>\n<p>\u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0430 \u043d\u0443\u0436\u043d\u044b 32 vCPU, 64 GB RAM \u0438 2 SSD. \u041d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u0441\u0442\u0435\u043d\u0434\u0435 CPU \u043c\u043e\u0436\u043d\u043e \u0443\u0440\u0435\u0437\u0430\u0442\u044c, \u043d\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0434\u0438\u0441\u043a \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d. \u0417\u0430\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0442\u0440\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0431\u0435\u0437 \u041e\u0421, \u0432 \u0442\u043e\u0439 \u0436\u0435 \u043f\u043e\u0434\u0441\u0435\u0442\u0438, \u0431\u0435\u0437 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e IP, \u0432\u0441\u0435 \u0441 \u0440\u043e\u043b\u044c\u044e combined. \u041f\u043e\u0442\u043e\u043c \u0433\u0440\u0443\u0437\u0438\u043c \u0438\u0445 \u0441 ISO Stackland.<\/p>\n<p><a class=\"anchor\" name=\"step-1-5-stackland-iso\" id=\"step-1-5-stackland-iso\"><\/a><\/p>\n<h4>1.5. \u0417\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 Stackland<\/h4>\n<p>\u0410\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u043b\u0438\u0437\u044b \u043b\u0435\u0436\u0430\u0442 <a href=\"https:\/\/yandex.cloud\/ru\/docs\/stackland\/release-notes\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>\u041c\u044b \u0441\u0442\u0430\u0432\u0438\u043b\u0438 26.1.5, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0442\u043e\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0441 \u0430\u043f\u0433\u0440\u0435\u0439\u0434\u043e\u043c \u0434\u043e 26.2.x. ISO \u043b\u0435\u0436\u0438\u0442 \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c \u0431\u0430\u043a\u0435\u0442\u0435:<\/p>\n<p><a href=\"https:\/\/storage.yandexcloud.net\/stackland-public\/stackland\/26.1.5\/images\/stackland-amd64-26.1.5.iso\">https:\/\/storage.yandexcloud.net\/stackland-public\/stackland\/26.1.5\/images\/stackland-amd64-26.1.5.iso<\/a><\/p>\n<p>\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0437 \u0432 BareMetal \u2192 \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043e\u0431\u0440\u0430\u0437\u044b.<\/p>\n<p><a class=\"anchor\" name=\"step-2-bastion-setup\" id=\"step-2-bastion-setup\"><\/a><\/p>\n<h3>\u0428\u0430\u0433 2. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0430<\/h3>\n<p><a class=\"anchor\" name=\"step-2-1-vpn-access\" id=\"step-2-1-vpn-access\"><\/a><\/p>\n<h4>2.1. VPN \u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u044b<\/h4>\n<p>\u0421\u0442\u0430\u0432\u0438\u043c VPN-\u043a\u043b\u0438\u0435\u043d\u0442 (WireGuard \u0438\u043b\u0438 Firezone), \u0447\u0442\u043e\u0431\u044b \u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u0443\u044e \u0441\u0435\u0442\u044c \u0438 \u043a DNS \u043d\u0430 \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0435. \u041f\u0440\u043e Firezone \u044f, \u043a \u0441\u043b\u043e\u0432\u0443, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u0432 <a href=\"https:\/\/habr.com\/ru\/companies\/kts\/articles\/869704\/\">\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>. \u041c\u043d\u043e\u0433\u043e\u0435 \u0442\u0430\u043c \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0432\u0435\u0440\u0438\u0442\u044c\u0441\u044f \u0441 \u043d\u0435\u0439 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<p>\u0412 security groups \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0434\u0441\u0435\u0442\u044c BareMetal 10.0.0.0\/24 \u0438 \u043f\u043e\u0434\u0441\u0435\u0442\u044c VPN-\u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p><a class=\"anchor\" name=\"step-2-2-ufw-nat\" id=\"step-2-2-ufw-nat\"><\/a><\/p>\n<h4>2.2. UFW \u0438 NAT<\/h4>\n<p>\u0411\u0435\u0437 NAT \u043d\u043e\u0434\u044b \u043d\u0435 \u0441\u043a\u0430\u0447\u0430\u044e\u0442 \u043e\u0431\u0440\u0430\u0437\u044b \u043f\u0440\u0438 install. \u0412 <code>\/etc\/ufw\/before.rules<\/code> \u0434\u043e \u0431\u043b\u043e\u043a\u0430 <code>*filter<\/code> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c:<\/p>\n<pre><code>*nat:POSTROUTING ACCEPT [0:0]-A POSTROUTING -s 10.0.0.0\/24 -j MASQUERADE-A POSTROUTING -s 100.64.0.0\/10 -j MASQUERADECOMMIT<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/65\/ef\/82\/65ef826aa6253cc836b482dea79e471b.png\" alt=\"\u0411\u0430\u0441\u0442\u0438\u043e\u043d: NAT MASQUERADE \u0432 \/etc\/ufw\/before.rules\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/65\/ef\/82\/65ef826aa6253cc836b482dea79e471b.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/65\/ef\/82\/65ef826aa6253cc836b482dea79e471b.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0411\u0430\u0441\u0442\u0438\u043e\u043d: NAT MASQUERADE \u0432 \/etc\/ufw\/before.rules<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e SSH \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u0431\u0430\u0441\u0442\u0438\u043e\u043d, \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c <code>\/etc\/ufw\/before.rules<\/code> \u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0431\u043b\u043e\u043a <code>nat<\/code> \u0441 MASQUERADE, \u043a\u0430\u043a \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435. \u0422\u0430\u043a \u043d\u043e\u0434\u044b \u0438 VPN-\u043a\u043b\u0438\u0435\u043d\u0442\u044b \u0432\u044b\u0445\u043e\u0434\u044f\u0442 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 \u0431\u0430\u0441\u0442\u0438\u043e\u043d. \u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u0430\u0432\u043a\u0438: <code>ufw disable &amp;&amp; ufw enable<\/code>.<\/p>\n<p>\u041f\u0440\u0430\u0432\u0438\u043b\u0430 UFW:<\/p>\n<pre><code class=\"bash\">ufw disableufw allow 22\/tcp comment 'SSH'ufw allow from 10.0.0.0\/24 to any port 53,123 proto udpufw allow from 10.0.0.0\/25 to any port 53 proto tcpufw allow from 172.16.0.0\/16 to any port 53 proto tcpufw allow from 172.16.0.0\/16 to any port 53 proto udpufw enable<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u0432\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u044b. \u041e\u043d\u0438 \u043f\u0443\u0441\u043a\u0430\u044e\u0442 pod-\u0441\u0435\u0442\u044c 172.16.0.0\/16 \u043a DNS \u043d\u0430 \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0435. \u0411\u0435\u0437 \u043d\u0438\u0445 CoreDNS \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u0447\u0438\u0442\u0441\u044f \u0434\u043e BIND, \u0438 IAM\/YDB \u0443\u043f\u0430\u0434\u0443\u0442 \u043d\u0430 install.<\/p>\n<p><a class=\"anchor\" name=\"step-2-3-packages\" id=\"step-2-3-packages\"><\/a><\/p>\n<h4>2.3. \u041f\u0430\u043a\u0435\u0442\u044b<\/h4>\n<pre><code class=\"bash\">sudo apt updatesudo apt install -y bind9 bind9utils dnsutils chrony unzip docker.io<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><a class=\"anchor\" name=\"step-2-4-bind\" id=\"step-2-4-bind\"><\/a><\/p>\n<h4>2.4. BIND<\/h4>\n<p><code>\/etc\/bind\/named.conf.options<\/code>:<\/p>\n<pre><code>options {    directory \"\/var\/cache\/bind\";    forwarders { 77.88.8.8; 77.88.8.1; };    listen-on { 10.0.0.3; };    dnssec-validation auto;    listen-on-v6 { any; };};<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/9e\/d6\/f3\/9ed6f37502df93eed97a8daba4865485.png\" alt=\"\u0411\u0430\u0441\u0442\u0438\u043e\u043d: BIND \u2014 named.conf.options\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/9e\/d6\/f3\/9ed6f37502df93eed97a8daba4865485.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/9e\/d6\/f3\/9ed6f37502df93eed97a8daba4865485.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0411\u0430\u0441\u0442\u0438\u043e\u043d: BIND \u2014 named.conf.options<\/figcaption><\/div>\n<\/figure>\n<p>\u0412 <code>\/etc\/bind\/named.conf.options<\/code> BIND \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e IP \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0430 (<code>listen-on<\/code>), \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0443\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 DNS \u042f\u043d\u0434\u0435\u043a\u0441\u0430 (<code>77.88.8.8<\/code>). \u0414\u0430\u043b\u044c\u0448\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0437\u043e\u043d\u044b \u0441 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 \u043d\u043e\u0434 \u0438 \u0434\u043e\u043c\u0435\u043d\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.<\/p>\n<p>\u0417\u043e\u043d\u0430 <code>internal<\/code> \u0432 <code>\/etc\/bind\/db.internal<\/code>. NS \u043d\u0430 \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0435, \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043e\u043c\u0435\u043d\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430:<\/p>\n<pre><code>$TTL 1H@       IN      SOA     ns1.internal. admin.internal. (                        2025091801 3H 30M 1W 5M)@       IN      NS      ns1.internal.ns1.internal.           IN      A       10.0.0.3kts.internal.           IN      NS      node1.baremetal.internal.kts.internal.           IN      NS      node2.baremetal.internal.kts.internal.           IN      NS      node3.baremetal.internal.<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412 <code>\/etc\/bind\/db.baremetal.internal<\/code> \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c A-\u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u043e\u0434 \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 YDB:<\/p>\n<pre><code>$TTL 15M@       IN      SOA     ns1.internal. admin.internal. (                        2025091801 3H 30M 1W 5M)@       IN      NS      ns1.internal.node1               IN      A       10.0.0.4node2               IN      A       10.0.0.5node3               IN      A       10.0.0.6ydb-storage-0       IN      A       10.0.0.4ydb-storage-1       IN      A       10.0.0.5ydb-storage-2       IN      A       10.0.0.6<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/b6\/27\/5c\/b6275c7128400f2de617c6f9d4b0ea61.png\" alt=\"\u0411\u0430\u0441\u0442\u0438\u043e\u043d: \u0444\u0430\u0439\u043b\u044b \u0437\u043e\u043d BIND (internal, baremetal)\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/b6\/27\/5c\/b6275c7128400f2de617c6f9d4b0ea61.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/b6\/27\/5c\/b6275c7128400f2de617c6f9d4b0ea61.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0411\u0430\u0441\u0442\u0438\u043e\u043d: \u0444\u0430\u0439\u043b\u044b \u0437\u043e\u043d BIND (internal, baremetal)<\/figcaption><\/div>\n<\/figure>\n<p><code>db.internal<\/code> \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u0443\u0435\u0442 <code>kts.internal<\/code> \u043d\u0430 \u043d\u043e\u0434\u044b. \u0412 <code>db.baremetal.internal<\/code> \u043b\u0435\u0436\u0430\u0442 <code>node1..3<\/code> \u0438 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 <code>ydb-storage-0..2<\/code>. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0437\u043e\u043d\u044b \u0432 <code>named.conf.local<\/code>, \u0433\u043e\u043d\u044f\u0435\u043c <code>named-checkconf<\/code> \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c <code>bind9<\/code>.<\/p>\n<p><code>\/etc\/bind\/named.conf.local<\/code>:<\/p>\n<pre><code>zone \"internal\" {    type master;    file \"\/etc\/bind\/db.internal\";};zone \"baremetal.internal\" {    type master;    file \"\/etc\/bind\/db.baremetal.internal\";};<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<pre><code class=\"bash\">sudo named-checkconfsudo systemctl restart bind9<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><a class=\"anchor\" name=\"step-2-5-chrony\" id=\"step-2-5-chrony\"><\/a><\/p>\n<h4>2.5. Chrony<\/h4>\n<p>\u0412 <code>\/etc\/chrony\/chrony.conf<\/code>:<\/p>\n<pre><code>allow 10.0.0.0\/24bindaddress 10.0.0.3<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/54\/bd\/00\/54bd0055c61cfba016ed38fe1354ed48.png\" alt=\"\u0411\u0430\u0441\u0442\u0438\u043e\u043d: chrony.conf \u2014 allow \u0438 bindaddress\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/54\/bd\/00\/54bd0055c61cfba016ed38fe1354ed48.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/54\/bd\/00\/54bd0055c61cfba016ed38fe1354ed48.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0411\u0430\u0441\u0442\u0438\u043e\u043d: chrony.conf \u2014 allow \u0438 bindaddress<\/figcaption><\/div>\n<\/figure>\n<p>\u0412 <code>chrony.conf<\/code> \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441 \u043f\u043e\u0434\u0441\u0435\u0442\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 (<code>allow 10.0.0.0\/24<\/code>) \u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441 \u043a IP \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0430 (<code>bindaddress<\/code>). \u0412 <code>cluster.yaml<\/code> \u043d\u043e\u0434\u044b Talos \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u044d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u0432 <code>timeservers<\/code>.<\/p>\n<pre><code class=\"bash\">sudo systemctl restart chrony<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><a class=\"anchor\" name=\"step-3-iso-nodes\" id=\"step-3-iso-nodes\"><\/a><\/p>\n<h3>\u0428\u0430\u0433 3. ISO \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u043d\u043e\u0434\u0443<\/h3>\n<p>\u0427\u0435\u0440\u0435\u0437 iKVM\/IPMI \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u043c ISO Stackland \u043a\u0430\u043a \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 CD\/DVD.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/24\/dd\/91\/24dd9162f06749f5b0eaabfa1a4b1a90.png\" alt=\"iKVM: \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 ISO Stackland (Virtual Media)\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/24\/dd\/91\/24dd9162f06749f5b0eaabfa1a4b1a90.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/24\/dd\/91\/24dd9162f06749f5b0eaabfa1a4b1a90.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>iKVM: \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 ISO Stackland (Virtual Media)<\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 BareMetal \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440 \u2192 KVM \/ iKVM \u2192 Virtual Media \u2192 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c ISO \u2192 Reboot to cdrom. \u0422\u0430\u043a \u0434\u0435\u043b\u0430\u0435\u043c \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u0442\u0440\u0435\u0445 \u043d\u043e\u0434. \u0412 Talos \u0436\u043c\u0435\u043c F3 \u2192 Network Configuration, \u0437\u0430\u0434\u0430\u0435\u043c hostname, IP, gateway, interface \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c MAC \u0434\u043b\u044f <code>hosts.yaml<\/code>. MAC \u0442\u0430\u043a\u0436\u0435 \u0432\u0438\u0434\u0435\u043d \u0432 \u043e\u0431\u0437\u043e\u0440\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432 BMS. \u0416\u0434\u0435\u043c Talos Maintenance \u043d\u0430 \u0432\u0441\u0435\u0445 \u0442\u0440\u0435\u0445 \u043d\u043e\u0434\u0430\u0445.<\/p>\n<p><a class=\"anchor\" name=\"step-4-dns-check\" id=\"step-4-dns-check\"><\/a><\/p>\n<h3>\u0428\u0430\u0433 4. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 DNS \u043f\u0435\u0440\u0435\u0434 install<\/h3>\n<p>\u041f\u0435\u0440\u0435\u0434 <code>sladm install<\/code> \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e BIND \u0441\u043b\u0443\u0448\u0430\u0435\u0442 <code>10.0.0.3:53<\/code>, UFW \u043f\u0443\u0441\u043a\u0430\u0435\u0442 pod-\u0441\u0435\u0442\u044c <code>172.16.0.0\/16<\/code> \u043d\u0430 \u043f\u043e\u0440\u0442 53, \u0430 <code>dig @10.0.0.3 node1.baremetal.internal<\/code> \u0438 <code>dig @10.0.0.3 ydb-storage-0.baremetal.internal<\/code> \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442. VPN-\u043a\u043b\u0438\u0435\u043d\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0445\u043e\u0434\u0438\u0442\u044c \u0432 DNS \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0430 \u0434\u043b\u044f <code>*.kts.internal<\/code>.<\/p>\n<p><a class=\"anchor\" name=\"step-5-sladm-config\" id=\"step-5-sladm-config\"><\/a><\/p>\n<h3>\u0428\u0430\u0433 5. \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f sladm<\/h3>\n<p>\u041d\u0430 \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0435 \u0437\u0430\u0432\u043e\u0434\u0438\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 <code>stackland\/<\/code>:<\/p>\n<pre><code>stackland\/\u251c\u2500\u2500 cluster.yaml      # StacklandClusterConfig\u251c\u2500\u2500 hosts.yaml        # StacklandHostsList\u2514\u2500\u2500 secrets.yaml      # \u0441\u0435\u043a\u0440\u0435\u0442\u044b, \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><a class=\"anchor\" name=\"cluster-yaml\" id=\"cluster-yaml\"><\/a><\/p>\n<h4>cluster.yaml<\/h4>\n<details class=\"spoiler\">\n<summary>cluster.yaml<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"yaml\">apiVersion: stackland.yandex.cloud\/v1alpha1kind: StacklandClusterConfigmetadata:  name: mainspec:  platform:    type: \"baremetal\"    loadBalancer:      type: \"cilium-l2\"      ipPools:        - cidrs:            - 10.0.0.128\/25  cluster:    baseDomain: \"kts.internal\"    networking:      hostsNetwork:        - cidr: 10.0.0.0\/25      clusterNetwork:        - cidr: 172.16.0.0\/16      servicesNetwork:        - cidr: 10.96.0.0\/12      virtualIPs:        api: 10.0.0.127    storage:      defaultStorageClass: \"stackland-ssd\"  genericHostConfig:    disksConfig:      - installDisk:          name: \"\/dev\/sda\"          # \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0447\u0435\u0440\u0435\u0437 lslbk \u043d\u0430 \u043d\u043e\u0434\u0435      - dataDisk:          name: \"\/dev\/sdb\"          # \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0434\u0438\u0441\u043a    networkConfig:      addresses:        - interface: \"eth0\"          dhcp: true      routes:        - to: \"0.0.0.0\/0\"          via: \"10.0.0.3\"          iface: \"eth0\"      resolvers:        - \"10.0.0.3\"      timeservers:        - \"10.0.0.3\"<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p><a class=\"anchor\" name=\"hosts-yaml\" id=\"hosts-yaml\"><\/a><\/p>\n<h4>hosts.yaml<\/h4>\n<details class=\"spoiler\">\n<summary>hosts.yaml<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"yaml\">apiVersion: stackland.yandex.cloud\/v1alpha1kind: StacklandHostsListmetadata:  name: mainspec:  hosts:    - hostname: \"node1.baremetal.internal\"      role: \"combined\"      networkConfig:        interfaces:          - macaddress: \"d0:0d:2a:7b:a4:f0\"   # MAC \u0438\u0437 BMS \/ Talos F3            name: \"eth0\"        addresses:          - interface: eth0            ip: 10.0.0.4\/24    - hostname: \"node2.baremetal.internal\"      role: \"combined\"      networkConfig:        interfaces:          - macaddress: \"d0:0d:13:78:ed:9d\"            name: \"eth0\"        addresses:          - interface: eth0            ip: 10.0.0.5\/24    - hostname: \"node3.baremetal.internal\"      role: \"combined\"      networkConfig:        interfaces:          - macaddress: \"d0:0d:62:20:cf:db\"            name: \"eth0\"        addresses:          - interface: eth0            ip: 10.0.0.6\/24<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p>\u0428\u0430\u0431\u043b\u043e\u043d \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438: <code>stackland-configs\/stackland-baremetal.yaml.example<\/code>.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 install:<\/p>\n<pre><code class=\"bash\">.\/sladm validate stackland\/<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><a class=\"anchor\" name=\"step-6-sladm-install\" id=\"step-6-sladm-install\"><\/a><\/p>\n<h3>\u0428\u0430\u0433 6. sladm install<\/h3>\n<pre><code class=\"bash\">.\/sladm install stackland\/ --installation-timeout 4h0m0s<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>iKVM \u043b\u0443\u0447\u0448\u0435 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u043d\u0430 \u0432\u0441\u0435\u0445 \u043d\u043e\u0434\u0430\u0445 \u0432\u0435\u0441\u044c install. \u041e\u043d \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u043a\u043e\u043b\u043e \u0447\u0430\u0441\u0430, \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f Talos, Cilium, LoadBalancer, IAM, \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0438 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433. Talos \u0438\u043d\u043e\u0433\u0434\u0430 \u0437\u0430\u0432\u0438\u0441\u0430\u0435\u0442 \u043d\u0430 \u0441\u0435\u0442\u0438, \u0438 \u0431\u0435\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u043d\u0435 \u0432\u0438\u0434\u043d\u043e, \u043d\u0430 \u043a\u0430\u043a\u043e\u0439 \u043d\u043e\u0434\u0435 \u044d\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u043f\u0430\u0434\u0430\u0435\u0442 IAM, \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e CoreDNS \u043d\u0435 \u0440\u0435\u0437\u043e\u043b\u0432\u0438\u0442 <code>ydb-storage-*<\/code>, \u0438 Job <code>ydb-storage-pdisk-set-active<\/code> \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 timeout. \u0414\u0435\u0442\u0430\u043b\u044c\u043d\u0435\u0435 \u044f \u0440\u0430\u0437\u0431\u0435\u0440\u0443 \u044d\u0442\u043e\u0442 \u043d\u044e\u0430\u043d\u0441 \u043d\u0438\u0436\u0435, \u0432 <a href=\"#troubleshooting\">\u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043f\u0440\u043e \u043e\u0448\u0438\u0431\u043a\u0438<\/a>.<\/p>\n<p><a class=\"anchor\" name=\"step-7-check\" id=\"step-7-check\"><\/a><\/p>\n<h3>\u0428\u0430\u0433 7. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430<\/h3>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/5a\/c0\/90\/5ac090675d28c601fb7df77c787bd895.png\" alt=\"\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430: kubectl get nodes \u2014 3 Ready\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/5a\/c0\/90\/5ac090675d28c601fb7df77c787bd895.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/5a\/c0\/90\/5ac090675d28c601fb7df77c787bd895.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430: kubectl get nodes \u2014 3 Ready<\/figcaption><\/div>\n<\/figure>\n<p>\u0421 \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 VPN \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c <code>kubectl get nodes<\/code>. \u0416\u0434\u0435\u043c \u0442\u0440\u0438 \u043d\u043e\u0434\u044b \u0432 Ready. \u0415\u0441\u043b\u0438 \u0441\u0442\u0430\u0442\u0443\u0441 \u0434\u0440\u0443\u0433\u043e\u0439, \u0441\u043c\u043e\u0442\u0440\u0438\u043c iKVM \u0438 \u043b\u043e\u0433\u0438 <code>sladm install<\/code>.<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c kubeconfig \u0438 DNS:<\/p>\n<pre><code class=\"bash\">cat ~\/.kube\/confignslookup auth.sys.kts.internal<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/83\/fc\/97\/83fc97bc704c28b899e47a3cc1dbceef.png\" alt=\"\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430: kubeconfig \u0438 nslookup DNS \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/83\/fc\/97\/83fc97bc704c28b899e47a3cc1dbceef.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/83\/fc\/97\/83fc97bc704c28b899e47a3cc1dbceef.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430: kubeconfig \u0438 nslookup DNS \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430<\/figcaption><\/div>\n<\/figure>\n<p><code>sladm install<\/code> \u043a\u043b\u0430\u0434\u0435\u0442 kubeconfig \u0432 <code>~\/.kube\/config<\/code>. <code>nslookup auth.sys.kts.internal<\/code> \u0441 \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c. \u0415\u0441\u043b\u0438 NXDOMAIN \u0438\u043b\u0438 timeout, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043a BIND \u0438 UFW.<\/p>\n<p>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c <a href=\"https:\/\/grafana.sys.kts.internal\">https:\/\/grafana.sys.kts.internal<\/a>. \u041d\u0430 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430\u0445 Node Exporter \u0438 etcd \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432\u0441\u0435 \u0442\u0440\u0438 \u043d\u043e\u0434\u044b.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/60\/4f\/b0\/604fb0a34503f4e87dfcd76b196c58a7.png\" alt=\"Grafana: \u0434\u0430\u0448\u0431\u043e\u0440\u0434 Node Exporter \u2014 node1\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/60\/4f\/b0\/604fb0a34503f4e87dfcd76b196c58a7.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/60\/4f\/b0\/604fb0a34503f4e87dfcd76b196c58a7.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Grafana: \u0434\u0430\u0448\u0431\u043e\u0440\u0434 Node Exporter \u2014 node1<\/figcaption><\/div>\n<\/figure>\n<p>\u0412 Grafana (\u043b\u043e\u0433\u0438\u043d \u0438\u0437 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430) \u0441\u043c\u043e\u0442\u0440\u0438\u043c Node Exporter: CPU, \u043f\u0430\u043c\u044f\u0442\u044c, \u0434\u0438\u0441\u043a\u0438. \u041c\u0435\u0442\u0440\u0438\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0434\u0442\u0438 \u0441\u043e \u0432\u0441\u0435\u0445 \u043d\u043e\u0434.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/36\/3b\/44\/363b44b65a52116939b3d0ab1b938c80.png\" alt=\"Grafana: \u0434\u0430\u0448\u0431\u043e\u0440\u0434 etcd \u2014 3 \u043d\u043e\u0434\u044b up\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/36\/3b\/44\/363b44b65a52116939b3d0ab1b938c80.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/36\/3b\/44\/363b44b65a52116939b3d0ab1b938c80.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Grafana: \u0434\u0430\u0448\u0431\u043e\u0440\u0434 etcd \u2014 3 \u043d\u043e\u0434\u044b up<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435 etcd \u0432\u0441\u0435 \u0442\u0440\u0438 \u043f\u043e\u0434\u043d\u044f\u0442\u044b. \u0415\u0441\u043b\u0438 \u043e\u0434\u043d\u0430 \u043d\u043e\u0434\u0430 \u0443\u043f\u0430\u0434\u0435\u0442, \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442 \u0436\u0438\u0442\u044c, \u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0438 \u0430\u043f\u0433\u0440\u0435\u0439\u0434 \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f: \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0430\u0434\u0430\u0442\u044c \u043f\u043e \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u0443, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u0436\u0438\u0434\u0430\u044e\u0442 \u0432\u0441\u0435 \u0442\u0440\u0438 \u043d\u043e\u0434\u044b \u0432 \u0441\u0442\u0440\u043e\u044e.<\/p>\n<p>\u041a\u043e\u043d\u0441\u043e\u043b\u044c Stackland: <a href=\"https:\/\/console.sys.kts.internal\">https:\/\/console.sys.kts.internal<\/a>, \u043b\u043e\u0433\u0438\u043d <code>admin@stackland<\/code>.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/f9\/2e\/0a\/f92e0a60dd64506ab336f949c87f53dd.png\" alt=\"\u041a\u043e\u043d\u0441\u043e\u043b\u044c: \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b Ready 26.2.0\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/f9\/2e\/0a\/f92e0a60dd64506ab336f949c87f53dd.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/f9\/2e\/0a\/f92e0a60dd64506ab336f949c87f53dd.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041a\u043e\u043d\u0441\u043e\u043b\u044c: \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b Ready 26.2.0<\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b IAM, Ingress, Monitoring, Volumes \u0438 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0432 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 Ready. Install \u043d\u0430 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u044b\u043c.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/9d\/c6\/26\/9dc626c60282e9d510c57c058e86378b.png\" alt=\"\u041a\u043e\u043d\u0441\u043e\u043b\u044c: \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u2014 3\/3 \u0443\u0437\u043b\u0430 online\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/9d\/c6\/26\/9dc626c60282e9d510c57c058e86378b.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/9d\/c6\/26\/9dc626c60282e9d510c57c058e86378b.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041a\u043e\u043d\u0441\u043e\u043b\u044c: \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u2014 3\/3 \u0443\u0437\u043b\u0430 online<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u043c \u044d\u043a\u0440\u0430\u043d\u0435 3 \u0438\u0437 3 \u0443\u0437\u043b\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442, \u0432\u0435\u0440\u0441\u0438\u044f 26.2.0. \u041e\u0442\u0441\u044e\u0434\u0430 \u0436\u0435 \u0437\u0430\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c managed PostgreSQL, Kafka \u0438 ClickHouse.<\/p>\n<p><a class=\"anchor\" name=\"managed-services\" id=\"managed-services\"><\/a><\/p>\n<h3>\u0421\u0430\u043c\u043e\u0435 \u0441\u043b\u0430\u0434\u043a\u043e\u0435: managed-\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438<\/h3>\n<p>\u041f\u043e\u0441\u043b\u0435 install \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043d\u044f\u0442\u044c PaaS \u0438\u0437 UI \u0431\u0435\u0437 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432.<\/p>\n<p><a class=\"anchor\" name=\"postgresql-18\" id=\"postgresql-18\"><\/a><\/p>\n<h4>PostgreSQL 18<\/h4>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/b5\/bd\/e4\/b5bde45dc00a97fbcb66c2a44c13bf6c.png\" alt=\"\u041a\u043e\u043d\u0441\u043e\u043b\u044c: \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 PostgreSQL kts-pg18\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/b5\/bd\/e4\/b5bde45dc00a97fbcb66c2a44c13bf6c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/b5\/bd\/e4\/b5bde45dc00a97fbcb66c2a44c13bf6c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041a\u043e\u043d\u0441\u043e\u043b\u044c: \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 PostgreSQL kts-pg18<\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u043e\u043d\u0441\u043e\u043b\u044c \u2192 Managed PostgreSQL \u2192 \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440. \u0417\u0430\u0434\u0430\u0435\u043c \u0438\u043c\u044f, \u0432\u0435\u0440\u0441\u0438\u044e, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0445\u043e\u0441\u0442\u043e\u0432, storage class, \u043b\u0438\u043c\u0438\u0442\u044b CPU\/RAM \u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u0434\u0438\u0441\u043a\u0430. \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0441\u0430\u043c \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0435\u0442 StatefulSet.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/81\/00\/b5\/8100b5394d0b748e9a20c13ca05d6441.png\" alt=\"\u041a\u043e\u043d\u0441\u043e\u043b\u044c: \u043a\u043b\u0430\u0441\u0442\u0435\u0440 kts-pg18 \u0432 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 running\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/81\/00\/b5\/8100b5394d0b748e9a20c13ca05d6441.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/81\/00\/b5\/8100b5394d0b748e9a20c13ca05d6441.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041a\u043e\u043d\u0441\u043e\u043b\u044c: \u043a\u043b\u0430\u0441\u0442\u0435\u0440 kts-pg18 \u0432 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 running<\/figcaption><\/div>\n<\/figure>\n<p>\u0427\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u043d\u0443\u0442 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0432 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 running. \u0423 \u043d\u0430\u0441 \u0442\u0440\u0438 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430, storage class <code>stackland-other<\/code>, \u043b\u0438\u043c\u0438\u0442\u044b \u043e\u0442 250m\/512Mi \u0434\u043e 2 CPU\/2Gi, \u0434\u0438\u0441\u043a 2Gi \u0441 \u0430\u0432\u0442\u043e\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p><a class=\"anchor\" name=\"apache-kafka-41\" id=\"apache-kafka-41\"><\/a><\/p>\n<h4>Apache Kafka 4.1<\/h4>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/8c\/56\/9c\/8c569cc118f538285fc6508bae712d47.png\" alt=\"\u041a\u043e\u043d\u0441\u043e\u043b\u044c: \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kafka kafka-kts\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/8c\/56\/9c\/8c569cc118f538285fc6508bae712d47.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/8c\/56\/9c\/8c569cc118f538285fc6508bae712d47.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041a\u043e\u043d\u0441\u043e\u043b\u044c: \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kafka kafka-kts<\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u043e\u043d\u0441\u043e\u043b\u044c \u2192 Managed Kafka \u2192 \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440. \u0417\u0430\u0434\u0430\u0435\u043c \u0438\u043c\u044f, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432, storage class \u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043d\u0430 \u0431\u0440\u043e\u043a\u0435\u0440 \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440. \u0412\u0441\u0435 \u0442\u0430\u043a \u0436\u0435, \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u043f\u043e\u0434\u043d\u0438\u043c\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 Kafka \u0441\u0430\u043c\u0430.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/bd\/0b\/ba\/bd0bbacdf9bf91ee64c6092bc4dc38ab.png\" alt=\"\u041a\u043e\u043d\u0441\u043e\u043b\u044c: Kafka \u2014 \u0441\u043e\u0431\u044b\u0442\u0438\u044f PVC provision\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/bd\/0b\/ba\/bd0bbacdf9bf91ee64c6092bc4dc38ab.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/bd\/0b\/ba\/bd0bbacdf9bf91ee64c6092bc4dc38ab.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041a\u043e\u043d\u0441\u043e\u043b\u044c: Kafka \u2014 \u0441\u043e\u0431\u044b\u0442\u0438\u044f PVC provision<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <strong>\u0421\u043e\u0431\u044b\u0442\u0438\u044f<\/strong> \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u043e\u0436\u0435\u0442 \u043c\u0435\u043b\u044c\u043a\u043d\u0443\u0442\u044c timeout \u043d\u0430 PVC, \u043f\u043e\u043a\u0430 TopoLVM \u0433\u043e\u0442\u043e\u0432\u0438\u0442 \u0442\u043e\u043c. \u0415\u0441\u043b\u0438 \u043e\u043d \u0432\u0438\u0441\u0438\u0442 \u0434\u043e\u043b\u0433\u043e, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u043d\u0430 data-\u0434\u0438\u0441\u043a\u0430\u0445.<\/p>\n<p><a class=\"anchor\" name=\"clickhouse-263\" id=\"clickhouse-263\"><\/a><\/p>\n<h4>ClickHouse 26.3<\/h4>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/3f\/c1\/61\/3fc161cda97f1df874cac041c5187bb4.png\" alt=\"\u041a\u043e\u043d\u0441\u043e\u043b\u044c: \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 ClickHouse ch-kts\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/3f\/c1\/61\/3fc161cda97f1df874cac041c5187bb4.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/3f\/c1\/61\/3fc161cda97f1df874cac041c5187bb4.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041a\u043e\u043d\u0441\u043e\u043b\u044c: \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 ClickHouse ch-kts<\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u043e\u043d\u0441\u043e\u043b\u044c \u2192 Managed ClickHouse \u2192 \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440. \u041f\u043e \u0443\u0436\u0435 \u0441\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u0438 \u0437\u0430\u0434\u0430\u0435\u043c \u0438\u043c\u044f, \u0432\u0435\u0440\u0441\u0438\u044e, \u0448\u0430\u0440\u0434\u044b, \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0438 \u0434\u0438\u0441\u043a. \u0414\u043b\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u044f \u0432\u0437\u044f\u043b \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0431\u0435\u0437 Keeper \u0438 \u0431\u044d\u043a\u0430\u043f\u043e\u0432.<\/p>\n<p><a class=\"anchor\" name=\"troubleshooting\" id=\"troubleshooting\"><\/a><\/p>\n<h2>\u0427\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043d\u0435 \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0430<\/h2>\n<p>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0440\u0430\u0437\u0434\u0435\u043b \u043e \u0433\u0440\u0430\u0431\u043b\u044f\u0445, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435.<\/p>\n<ul>\n<li>\n<p>CoreDNS \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u0431\u0430\u0441\u0442\u0438\u043e\u043d. UFW \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0443\u0441\u043a\u0430\u0442\u044c 172.16.0.0\/16 \u043d\u0430 \u043f\u043e\u0440\u0442 53. \u0418\u043d\u0430\u0447\u0435 \u0432 \u043b\u043e\u0433\u0430\u0445 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f <code>dial tcp 10.0.0.3:53: i\/o timeout<\/code>, \u0430 IAM\/YDB \u043d\u0435 \u043f\u043e\u0434\u043d\u0438\u043c\u0443\u0442\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0412 \u0437\u043e\u043d\u0435 <code>baremetal.internal<\/code> \u043c\u0430\u043b\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e <code>node1..3<\/code>. \u0411\u0435\u0437 A-\u0437\u0430\u043f\u0438\u0441\u0435\u0439 <code>ydb-storage-0..2<\/code> IAM \u043d\u0435 \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442.<\/p>\n<\/li>\n<li>\n<p>\u0412 <code>disksConfig<\/code> \u043d\u0443\u0436\u043d\u044b \u0438 <code>installDisk<\/code>, \u0438 <code>dataDisk<\/code>. \u0421 \u043e\u0434\u043d\u0438\u043c \u0434\u0438\u0441\u043a\u043e\u043c YDB \u043d\u0435 \u043f\u043e\u0434\u043d\u0438\u043c\u0435\u0442 storage pool, \u0432 \u043b\u043e\u0433\u0430\u0445 \u0431\u0443\u0434\u0435\u0442 <code>ReasonBootBSError<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430 bare metal \u0434\u0438\u0441\u043a\u0438 \u043e\u0431\u044b\u0447\u043d\u043e <code>\/dev\/sda<\/code> \u0438 <code>\/dev\/sdb<\/code>, \u043d\u0435 <code>\/dev\/vda<\/code>, \u043a\u0430\u043a \u043d\u0430 VM. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c <code>lsblk<\/code> \u0432 Maintenance.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438 \u0434\u0435\u043b\u0435\u043d\u0438\u0438 \/24 \u043d\u0435 \u0441\u0442\u0430\u0432\u044c\u0442\u0435 IP \u043d\u043e\u0434 \u0432 \u043f\u0443\u043b LoadBalancer <code>128\/25<\/code> \u0438 \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u0443\u0439\u0442\u0435 VIP API \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e.<\/p>\n<\/li>\n<li>\n<p>iKVM \u043b\u0443\u0447\u0448\u0435 \u043d\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0432\u0435\u0441\u044c install. Talos \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u043d\u0443\u0442\u044c \u043d\u0430 \u0441\u0435\u0442\u0438, \u0438 \u0431\u0435\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0433\u0434\u0435 \u0438\u043c\u0435\u043d\u043d\u043e.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0443\u043d\u043a\u0442. Install \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u043e\u043c\u0430\u0442\u044c\u0441\u044f \u043d\u0430 IAM \u0438\u0437-\u0437\u0430 DNS \u0438\u043b\u0438 \u0434\u0438\u0441\u043a\u043e\u0432. Job <code>ydb-storage-pdisk-set-active<\/code> \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 timeout, \u0435\u0441\u043b\u0438 CoreDNS \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u0447\u0438\u0442\u0441\u044f \u0434\u043e BIND. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 UFW \u0434\u043b\u044f <code>172.16.0.0\/16<\/code> \u0438 A-\u0437\u0430\u043f\u0438\u0441\u0438 <code>ydb-storage-*<\/code>. <code>Unresolved host ydb-storage-0.baremetal.internal<\/code> \u043c\u043e\u0436\u0435\u0442 \u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c, \u0447\u0442\u043e \u0437\u043e\u043d\u0430 BIND \u0434\u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0435 \u0434\u043e \u043a\u043e\u043d\u0446\u0430. <code>BS_PROXY_DISCOVER<\/code> \u0438 <code>ReasonBootBSError<\/code> \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 <code>dataDisk<\/code> \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435. \u0415\u0441\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 \u0447\u0430\u0441 \u0432\u0438\u0434\u0438\u043c <code>Reconciliation failed<\/code>, \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043b\u043e\u0433\u0438 CoreDNS \u0438 <code>stackland-iam<\/code>.<\/p>\n<pre><code class=\"bash\">kubectl logs -n kube-system -l k8s-app=kube-dns --tail=50kubectl logs -n stackland-iam -l app=ydb-storage-0 --tail=100dig @10.0.0.3 ydb-storage-0.baremetal.internal<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><a class=\"anchor\" name=\"first-app-ingress\" id=\"first-app-ingress\"><\/a><\/p>\n<h2>\u041f\u0435\u0440\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (Ingress)<\/h2>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u043f\u0443\u043d\u043a\u0442\u0435 \u043d\u0435 \u0431\u0443\u0434\u0443 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e, \u0431\u043b\u0430\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0435\u0433\u043e \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442. \u041f\u043e <a href=\"https:\/\/yandex.cloud\/ru\/docs\/stackland\/tutorials\/expose-app-domain\">\u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0443 expose-app-domain<\/a> \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c hello-world \u0437\u0430 Ingress. \u041a\u043e\u0433\u0434\u0430 \u0443 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0439 IP, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c DNS-\u0437\u0430\u043f\u0438\u0441\u044c <code>*.sys.main.kts.internal<\/code>.<\/p>\n<p><a class=\"anchor\" name=\"stackland-extra\" id=\"stackland-extra\"><\/a><\/p>\n<h2>\u0427\u0442\u043e \u0435\u0449\u0435 \u0435\u0441\u0442\u044c \u0432 Stackland \u0438 \u043d\u0435 \u0432\u043e\u0448\u043b\u043e \u0432 \u0441\u0442\u0430\u0442\u044c\u044e<\/h2>\n<p>\u0412\u043c\u0435\u0441\u0442\u0435 \u0441 Talos \u0438 Cilium \u043f\u0440\u0438 <code>sladm install<\/code> \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f IAM, Object Storage, Ingress \u0441 cert-manager, Prometheus, Grafana, Loki, OpenBao, Kyverno, TopoLVM \u0438 Cilium L2 Load Balancer. <a href=\"https:\/\/yandex.cloud\/ru\/docs\/stackland\/concepts\/components\/overview\">\u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a<\/a> \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u042f \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043e\u043f\u0438\u0441\u0430\u043b \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0438 \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u043e TopoLVM (\u043a\u043e\u0433\u0434\u0430 Kafka \u0436\u0434\u0430\u043b\u0430 PVC).<\/p>\n<p>\u041f\u043e\u043c\u0438\u043c\u043e PostgreSQL, Kafka \u0438 ClickHouse, \u0432 PaaS \u0435\u0449\u0435 \u0432\u0445\u043e\u0434\u044f\u0442 Trino, YTsaurus, Iceberg REST Catalog \u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0411\u0414 \u043f\u043e\u0434 RAG. DataLens \u0438 SpeechSense \u0438\u0434\u0443\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f\u043c\u0438. OpenSearch \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 Trino \u042f\u043d\u0434\u0435\u043a\u0441 \u043e\u0431\u0435\u0449\u0430\u044e\u0442 \u043f\u043e\u0434\u0432\u0435\u0437\u0442\u0438 \u0432 \u043d\u0435\u0434\u0430\u043b\u0435\u043a\u043e\u043c \u0431\u0443\u0434\u0443\u0449\u0435\u043c.<\/p>\n<p><a class=\"anchor\" name=\"result\" id=\"result\"><\/a><\/p>\n<h2>\u0418\u0442\u043e\u0433<\/h2>\n<p>\u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u0443\u043c\u0431\u0443\u0440\u043d\u044b\u043c, \u0438 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0441 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c Stackland \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u0436\u0435\u043b\u0435\u0437\u0435.<\/p>\n<p>\u041d\u0430 BareMetal \u043c\u044b \u043f\u043e\u0434\u043d\u044f\u043b\u0438 VRF \u0438 \u043f\u043e\u0434\u0441\u0435\u0442\u044c, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u0431\u0430\u0441\u0442\u0438\u043e\u043d \u0441 NAT\/BIND\/Chrony, \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0442\u0440\u0438 combined-\u043d\u043e\u0434\u044b \u0447\u0435\u0440\u0435\u0437 ISO \u0438 <code>sladm<\/code>, \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0441 DNS \u0438 storage, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0438 \u0437\u0430\u043a\u0430\u0437\u0430\u043b\u0438 PostgreSQL, Kafka \u0438 ClickHouse \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438. \u0414\u043b\u044f \u0441\u0442\u0430\u0440\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u044d\u0442\u043e\u0433\u043e \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0430 \u0441 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e. \u0420\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u0445\u0430\u0440\u0434\u0435\u043d\u0438\u043d\u0433 \u043f\u043e\u0434 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u043d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0437\u0430 \u0440\u0430\u043c\u043a\u0438 \u043c\u043e\u0435\u0433\u043e \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0435\u0442\u0435\u0441\u044c \u0441 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u044f\u043c\u0438, \u043f\u0438\u0448\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c. \u0410 \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u0445 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/kts\/articles\/1044102\/\">\u041f\u0440\u043e\u0441\u0442\u0430\u044f \u0441\u043b\u043e\u0436\u043d\u0430\u044f VictoriaMetrics<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/kts\/articles\/1041242\/\">\u041c\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043d\u0430 ArgoCD \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u0443\u044e \u0444\u0438\u0447\u0443<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/kts\/articles\/1021976\/\">\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c ML-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u043d\u0430 \u0431\u0430\u0437\u0435 Kubernetes: Yandex Cloud, JupyterHub, Dask \u0438 S3<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/kts\/articles\/1020250\/\">\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 SSH-\u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u0432 2026 \u0433\u043e\u0434\u0443: \u043e\u0442 \u0437\u043e\u043e\u043f\u0430\u0440\u043a\u0430 \u0441 jump-host \u0438 Ansible \u043a \u0435\u0434\u0438\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u0432\u0445\u043e\u0434\u0430 \u0432 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0441 Warpgate<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/kts\/articles\/1001276\/\">\u041a\u0430\u043a \u043c\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043c IT-\u0430\u0443\u0434\u0438\u0442: \u0436\u0438\u0432\u043e\u0439 \u043a\u0435\u0439\u0441, \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0441\u0442\u044c \u0431\u0435\u0437 \u0444\u0430\u043d\u0430\u0442\u0438\u0437\u043c\u0430<\/a><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1065376\/\">https:\/\/habr.com\/ru\/articles\/1065376\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442! \u042f \u0414\u0430\u043d\u0438\u0438\u043b, DevOps-\u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0432 KTS.\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u043f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0441\u043e Stackland. \u041a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0441 \u043a\u0443\u0447\u0435\u0439 \u043a\u043e\u0440\u043e\u0431\u043e\u0447\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u0436\u0435\u043b\u0435\u0437\u0435 \u0432 \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u043c \u043a\u043e\u043d\u0442\u0443\u0440\u0435 \u0434\u0430\u0432\u043d\u043e \u0431\u044b\u043b\u0430 \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u0430 \u043d\u0430\u043c (\u0438 \u043d\u0430\u0448\u0438\u043c \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u0430\u043c), \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u043c\u0438\u043c\u043e \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043e\u0442 \u042f\u043d\u0434\u0435\u043a\u0441\u0430 \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u0440\u0435\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435\u043c. \u041f\u043e \u0433\u043e\u0440\u044f\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0430\u043c \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f Stackland \u043d\u0430 \u0433\u043e\u043b\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435. \u0422\u0430\u043a \u0447\u0442\u043e \u043d\u0438\u0436\u0435 \u0432\u0430\u0441 \u0436\u0434\u0435\u0442 \u0441\u043a\u043e\u0440\u0435\u0435 \u043d\u0435 \u043e\u0431\u0437\u043e\u0440, \u0430 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b.\u041a\u043e\u0440\u043e\u0442\u043a\u043e \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u044b\u043b\u043e: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b L2-\u0441\u0435\u0442\u044c, \u0431\u0430\u0441\u0442\u0438\u043e\u043d \u0441 NAT, DNS \u0438 NTP, \u0442\u0440\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043e\u0431\u0440\u0430\u0437 Stackland \u0438 YAML-\u043a\u043e\u043d\u0444\u0438\u0433\u0438. \u0417\u0430\u0442\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b sladm install \u0438 \u0447\u0435\u0440\u0435\u0437 \u0447\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043a\u043e\u043d\u0441\u043e\u043b\u044c, \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0441 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0432 Grafana \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e \u043a\u043d\u043e\u043f\u043a\u0435 \u0432 UI \u043f\u043e\u0434\u043d\u044f\u0442\u044c managed PostgreSQL, Kafka, ClickHouse \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b.\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u044b\u043b\u043e, \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u043d\u0438\u0436\u0435.\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043e \u0442\u043e\u043c, \u043a\u043e\u043c\u0443 \u0438 \u0437\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u0435\u043d Stackland\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0421\u0445\u0435\u043c\u0430 \u0441\u0435\u0442\u0438\u0428\u0430\u0433 1. \u041f\u043e\u0434\u0441\u0435\u0442\u044c \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0432 BareMetal 1.1. VRF (\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442)1.2. \u041f\u0440\u0438\u0432\u0430\u0442\u043d\u0430\u044f \u043f\u043e\u0434\u0441\u0435\u0442\u044c1.3. \u0411\u0430\u0441\u0442\u0438\u043e\u043d1.4. \u0422\u0440\u0438 \u043d\u043e\u0434\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u04301.5. \u0417\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 Stackland\u0428\u0430\u0433 2. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0430 2.1. VPN \u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u044b2.2. UFW \u0438 NAT2.3. \u041f\u0430\u043a\u0435\u0442\u044b2.4. BIND2.5. Chrony\u0428\u0430\u0433 3. ISO \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u043d\u043e\u0434\u0443\u0428\u0430\u0433 4. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 DNS \u043f\u0435\u0440\u0435\u0434 install\u0428\u0430\u0433 5. \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f sladm cluster.yamlhosts.yaml\u0428\u0430\u0433 6. sladm install\u0428\u0430\u0433 7. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u0421\u0430\u043c\u043e\u0435 \u0441\u043b\u0430\u0434\u043a\u043e\u0435: managed-\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 PostgreSQL 18Apache Kafka 4.1ClickHouse 26.3\u0427\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043d\u0435 \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0430\u041f\u0435\u0440\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (Ingress)\u0427\u0442\u043e \u0435\u0449\u0435 \u0435\u0441\u0442\u044c \u0432 Stackland \u0438 \u043d\u0435 \u0432\u043e\u0448\u043b\u043e \u0432 \u0441\u0442\u0430\u0442\u044c\u044e\u0418\u0442\u043e\u0433\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043e \u0442\u043e\u043c, \u043a\u043e\u043c\u0443 \u0438 \u0437\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u0435\u043d Stackland\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0440\u0435\u0448\u0430\u0435\u0442 \u0443\u0437\u043a\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443: Kubernetes \u0438 managed-\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u042f\u043d\u0434\u0435\u043a\u0441\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440\u0430 \u0431\u0435\u0437 \u0441\u0431\u043e\u0440\u043a\u0438 \u0438\u0437 Helm-\u0447\u0430\u0440\u0442\u043e\u0432.\u0421\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043d\u0435\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b, \u0435\u0441\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u0432\u043e\u0435\u043c \u0426\u041e\u0414\u0435 \u0438\u043b\u0438 \u0430\u0440\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u043d\u043e\u043c bare metal. \u0418\u043b\u0438 \u0435\u0441\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 PostgreSQL, Kafka \u0438 ClickHouse \u0432 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u042f\u043d\u0434\u0435\u043a\u0441\u0430, \u0430 \u043b\u0435\u0433\u0430\u0441\u0438 \u0436\u0438\u0432\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432 on-prem.\u041f\u0440\u0438 \u044d\u0442\u043e\u043c Stackland \u0432\u0440\u044f\u0434 \u043b\u0438 \u0443\u043c\u0435\u0441\u0442\u0435\u043d, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0431\u0435\u0437 PaaS. \u0422\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0449\u0435 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c k3s \u0438\u043b\u0438 managed K8s \u0432 \u043e\u0431\u043b\u0430\u043a\u0435. \u0418\u043b\u0438 \u0435\u0441\u043b\u0438 Kubernetes \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d.\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c\u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u043b\u043e\u0434\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u044b, \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0442\u044c control-plane \u0438 worker-\u043d\u043e\u0434\u044b, \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0448\u0435\u043b \u0447\u0435\u0440\u0435\u0437 combined. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0434\u043e\u043a\u0435, \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u043d\u043e\u0434\u0443 \u0441 \u0440\u043e\u043b\u044c\u044e combined \u043d\u0443\u0436\u043d\u043e:32 vCPU;64 GB RAM;\u0434\u0432\u0430 SSD \u043e\u0442 100 GB.\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u0435\u043d \u0431\u0430\u0441\u0442\u0438\u043e\u043d \u043d\u0430 Ubuntu 22.04+, \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0445\u0432\u0430\u0442\u0438\u0442 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u041c\u0435\u0436\u0434\u0443 \u043d\u043e\u0434\u0430\u043c\u0438 \u043d\u0443\u0436\u043d\u0430 L2-\u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u044c \u0432 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0439 \/24, \u0430\u0434\u0440\u0435\u0441\u0430 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0434\u0430\u0442\u044c DHCP \u0438\u043b\u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u043a\u043e\u0439. \u0415\u0449\u0435 \u043d\u0443\u0436\u043d\u044b \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f key.json \u043e\u0442 \u042f\u043d\u0434\u0435\u043a\u0441\u0430, Docker \u043d\u0430 \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0435 \u0438 sladm \u0438\u0437 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430 Stackland. \u0418 baseDomain \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0441\u0430\u043c\u043e \u0441\u043e\u0431\u043e\u0439. \u0423 \u043d\u0430\u0441 \u044d\u0442\u043e kts.internal, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u043e \u0442\u0435\u043a\u0441\u0442\u0443 \u044f \u0431\u0443\u0434\u0443 \u0432\u0435\u0437\u0434\u0435 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0435\u0433\u043e. \u0415\u0441\u043b\u0438 \u0431\u0443\u0434\u0435\u0442\u0435 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0435\u043c\u0443 \u043c\u0430\u043d\u0443\u0430\u043b\u0443, \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u0441\u0432\u043e\u0439.\u0421\u0445\u0435\u043c\u0430 \u0441\u0435\u0442\u0438\u0414\u0435\u043b\u0438\u043c \/24 \u043d\u0430 \u0442\u0440\u0438 \u0437\u043e\u043d\u044b (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f \u0438\u0437 \u0434\u043e\u043a\u0438):10.0.0.0\/24\u251c\u2500\u2500 10.0.0.0\/25     \u2014 IP \u0445\u043e\u0441\u0442\u043e\u0432 (\u043d\u043e\u0434\u044b, \u0431\u0430\u0441\u0442\u0438\u043e\u043d)\u251c\u2500\u2500 10.0.0.127      \u2014 VIP API Kubernetes (\u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439 IP)\u2514\u2500\u2500 10.0.0.128\/25   \u2014 \u043f\u0443\u043b LoadBalancer (Cilium L2)Pod CIDR:     172.16.0.0\/16Service CIDR: 10.96.0.0\/12                    [ Internet ]                         |                   [ \u0411\u0430\u0441\u0442\u0438\u043e\u043d ]                   NAT + BIND + Chrony + VPN                   10.0.0.3                         |        +&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;-+        |                |                |    node1            node2            node3  10.0.0.4         10.0.0.5         10.0.0.6   combined          combined          combined\u0428\u0430\u0433 1. \u041f\u043e\u0434\u0441\u0435\u0442\u044c \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0432 BareMetal1.1. VRF (\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442)\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0435\u043c VRF. \u042d\u0442\u043e \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 L2-\u0434\u043e\u043c\u0435\u043d \u0434\u043b\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.BMS: \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 VRF stackland\u0412 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 Yandex BareMetal \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b \u0441\u0435\u0442\u0435\u0439 \u0438 \u0436\u043c\u0435\u043c \u0421\u043e\u0437\u0434\u0430\u0442\u044c VRF. \u041c\u044b \u043d\u0430\u0437\u0432\u0430\u043b\u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 stackland, \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043f\u0443\u0441\u0442\u044b\u043c. \u0412\u0441\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043f\u043e\u0442\u043e\u043c \u0432\u0435\u0448\u0430\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u044d\u0442\u043e\u0442 VRF.1.2. \u041f\u0440\u0438\u0432\u0430\u0442\u043d\u0430\u044f \u043f\u043e\u0434\u0441\u0435\u0442\u044cBMS: \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0445 \u043f\u043e\u0434\u0441\u0435\u0442\u0435\u0439 10.0.0.0\/24BareMetal \u2192 \u041f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0435 \u043f\u043e\u0434\u0441\u0435\u0442\u0438 \u2192 \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u0434\u0441\u0435\u0442\u044c. \u041d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c 10.0.0.0\/24 \u0432 \u043f\u0443\u043b\u0435 m4, \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u0430\u044f \u043a VRF stackland. \u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c CIDR, \u0448\u043b\u044e\u0437 (\u043f\u0435\u0440\u0432\u044b\u0439 IP \u043f\u043e\u0434\u0441\u0435\u0442\u0438), \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c DHCP \u0438 \u0437\u0430\u0434\u0430\u0435\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0434\u043b\u044f \u043d\u043e\u0434.\u0423 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0442\u0430\u043a: \u043f\u0443\u043b ru-central1-m4, CIDR 10.0.0.0\/24, \u0448\u043b\u044e\u0437 10.0.0.1, DHCP \u0434\u043e .120, VRF \u0441 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e \u0448\u0430\u0433\u0430.1.3. \u0411\u0430\u0441\u0442\u0438\u043e\u043d\u0411\u0435\u0440\u0435\u043c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0433\u043e\u0442\u043e\u0432\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e. \u041d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430 \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f.BMS: \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432BareMetal \u2192 \u0417\u0430\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440 \u2192 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0443\u043b \u0438 \u0442\u0430\u0440\u0438\u0444 \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430. \u0414\u043b\u044f \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0430 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e. \u041e\u043d \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u0443\u0435\u0442 \u0442\u0440\u0430\u0444\u0438\u043a, \u043e\u0442\u0434\u0430\u0435\u0442 DNS\/NTP \u0438 \u0441 \u043d\u0435\u0433\u043e \u0436\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c sladm.BMS: \u0437\u0430\u043a\u0430\u0437 \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0430 BA-I207-H\u041d\u0430 \u0448\u0430\u0433\u0435 \u0414\u043e\u0441\u0442\u0443\u043f \u0438 \u0441\u0435\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u0443\u044e \u043f\u043e\u0434\u0441\u0435\u0442\u044c \u0438\u0437 \u043f. 1.2 \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0439 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 IP. \u041d\u0430 \u0448\u0430\u0433\u0435 \u041e\u0421 \u0441\u0442\u0430\u0432\u0438\u043c Ubuntu 24.04, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c SSH-\u043a\u043b\u044e\u0447 \u0438 \u043f\u0430\u0440\u043e\u043b\u044c root. \u0416\u043c\u0435\u043c \u0417\u0430\u043a\u0430\u0437\u0430\u0442\u044c \u0438 \u0436\u0434\u0435\u043c \u043f\u0440\u043e\u0432\u0438\u0436\u0438\u043d\u0438\u043d\u0433.1.4. \u0422\u0440\u0438 \u043d\u043e\u0434\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0430 \u043d\u0443\u0436\u043d\u044b 32 vCPU, 64 GB RAM \u0438 2 SSD. \u041d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u0441\u0442\u0435\u043d\u0434\u0435 CPU \u043c\u043e\u0436\u043d\u043e \u0443\u0440\u0435\u0437\u0430\u0442\u044c, \u043d\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0434\u0438\u0441\u043a \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d. \u0417\u0430\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0442\u0440\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0431\u0435\u0437 \u041e\u0421, \u0432 \u0442\u043e\u0439 \u0436\u0435 \u043f\u043e\u0434\u0441\u0435\u0442\u0438, \u0431\u0435\u0437 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e IP, \u0432\u0441\u0435 \u0441 \u0440\u043e\u043b\u044c\u044e combined. \u041f\u043e\u0442\u043e\u043c \u0433\u0440\u0443\u0437\u0438\u043c \u0438\u0445 \u0441 ISO Stackland.1.5. \u0417\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 Stackland\u0410\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u043b\u0438\u0437\u044b \u043b\u0435\u0436\u0430\u0442 \u0442\u0443\u0442.\u041c\u044b \u0441\u0442\u0430\u0432\u0438\u043b\u0438 26.1.5, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0442\u043e\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0441 \u0430\u043f\u0433\u0440\u0435\u0439\u0434\u043e\u043c \u0434\u043e 26.2.x. ISO \u043b\u0435\u0436\u0438\u0442 \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c \u0431\u0430\u043a\u0435\u0442\u0435:https:\/\/storage.yandexcloud.net\/stackland-public\/stackland\/26.1.5\/images\/stackland-amd64-26.1.5.iso\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0437 \u0432 BareMetal \u2192 \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043e\u0431\u0440\u0430\u0437\u044b.\u0428\u0430\u0433 2. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u04302.1. VPN \u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u044b\u0421\u0442\u0430\u0432\u0438\u043c VPN-\u043a\u043b\u0438\u0435\u043d\u0442 (WireGuard \u0438\u043b\u0438 Firezone), \u0447\u0442\u043e\u0431\u044b \u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u0443\u044e \u0441\u0435\u0442\u044c \u0438 \u043a DNS \u043d\u0430 \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0435. \u041f\u0440\u043e Firezone \u044f, \u043a \u0441\u043b\u043e\u0432\u0443, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435. \u041c\u043d\u043e\u0433\u043e\u0435 \u0442\u0430\u043c \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0432\u0435\u0440\u0438\u0442\u044c\u0441\u044f \u0441 \u043d\u0435\u0439 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438.\u0412 security groups \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0434\u0441\u0435\u0442\u044c BareMetal 10.0.0.0\/24 \u0438 \u043f\u043e\u0434\u0441\u0435\u0442\u044c VPN-\u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.2.2. UFW \u0438 NAT\u0411\u0435\u0437 NAT \u043d\u043e\u0434\u044b \u043d\u0435 \u0441\u043a\u0430\u0447\u0430\u044e\u0442 \u043e\u0431\u0440\u0430\u0437\u044b \u043f\u0440\u0438 install. \u0412 \/etc\/ufw\/before.rules \u0434\u043e \u0431\u043b\u043e\u043a\u0430 *filter \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c:*nat:POSTROUTING ACCEPT [0:0]-A POSTROUTING -s 10.0.0.0\/24 -j MASQUERADE-A POSTROUTING -s 100.64.0.0\/10 -j MASQUERADECOMMIT\u0411\u0430\u0441\u0442\u0438\u043e\u043d: NAT MASQUERADE \u0432 \/etc\/ufw\/before.rules\u041f\u043e SSH \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u0431\u0430\u0441\u0442\u0438\u043e\u043d, \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \/etc\/ufw\/before.rules \u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0431\u043b\u043e\u043a nat \u0441 MASQUERADE, \u043a\u0430\u043a \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435. \u0422\u0430\u043a \u043d\u043e\u0434\u044b \u0438 VPN-\u043a\u043b\u0438\u0435\u043d\u0442\u044b \u0432\u044b\u0445\u043e\u0434\u044f\u0442 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 \u0431\u0430\u0441\u0442\u0438\u043e\u043d. \u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u0430\u0432\u043a\u0438: ufw disable &amp;&amp; ufw enable.\u041f\u0440\u0430\u0432\u0438\u043b\u0430 UFW:ufw disableufw allow 22\/tcp comment &#8216;SSH&#8217;ufw allow from 10.0.0.0\/24 to any port 53,123 proto udpufw allow from 10.0.0.0\/25 to any port 53 proto tcpufw allow from 172.16.0.0\/16 to any port 53 proto tcpufw allow from 172.16.0.0\/16 to any port 53 proto udpufw enable\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u0432\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u044b. \u041e\u043d\u0438 \u043f\u0443\u0441\u043a\u0430\u044e\u0442 pod-\u0441\u0435\u0442\u044c 172.16.0.0\/16 \u043a DNS \u043d\u0430 \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0435. \u0411\u0435\u0437 \u043d\u0438\u0445 CoreDNS \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u0447\u0438\u0442\u0441\u044f \u0434\u043e BIND, \u0438 IAM\/YDB \u0443\u043f\u0430\u0434\u0443\u0442 \u043d\u0430 install.2.3. \u041f\u0430\u043a\u0435\u0442\u044bsudo apt updatesudo apt install -y bind9 bind9utils dnsutils chrony unzip docker.io2.4. BIND\/etc\/bind\/named.conf.options:options {    directory &#171;\/var\/cache\/bind&#187;;    forwarders { 77.88.8.8; 77.88.8.1; };    listen-on { 10.0.0.3; };    dnssec-validation auto;    listen-on-v6 { any; };};\u0411\u0430\u0441\u0442\u0438\u043e\u043d: BIND \u2014 named.conf.options\u0412 \/etc\/bind\/named.conf.options BIND \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e IP \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0430 (listen-on), \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0443\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 DNS \u042f\u043d\u0434\u0435\u043a\u0441\u0430 (77.88.8.8). \u0414\u0430\u043b\u044c\u0448\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0437\u043e\u043d\u044b \u0441 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 \u043d\u043e\u0434 \u0438 \u0434\u043e\u043c\u0435\u043d\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.\u0417\u043e\u043d\u0430 internal \u0432 \/etc\/bind\/db.internal. NS \u043d\u0430 \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0435, \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043e\u043c\u0435\u043d\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430:$TTL 1H@       IN      SOA     ns1.internal. admin.internal. (                        2025091801 3H 30M 1W 5M)@       IN      NS      ns1.internal.ns1.internal.           IN      A       10.0.0.3kts.internal.           IN      NS      node1.baremetal.internal.kts.internal.           IN      NS      node2.baremetal.internal.kts.internal.           IN      NS      node3.baremetal.internal.\u0412 \/etc\/bind\/db.baremetal.internal \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c A-\u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u043e\u0434 \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 YDB:$TTL 15M@       IN      SOA     ns1.internal. admin.internal. (                        2025091801 3H 30M 1W 5M)@       IN      NS      ns1.internal.node1               IN      A       10.0.0.4node2               IN      A       10.0.0.5node3               IN      A       10.0.0.6ydb-storage-0       IN      A       10.0.0.4ydb-storage-1       IN      A       10.0.0.5ydb-storage-2       IN      A       10.0.0.6\u0411\u0430\u0441\u0442\u0438\u043e\u043d: \u0444\u0430\u0439\u043b\u044b \u0437\u043e\u043d BIND (internal, baremetal)db.internal \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u0443\u0435\u0442 kts.internal \u043d\u0430 \u043d\u043e\u0434\u044b. \u0412 db.baremetal.internal \u043b\u0435\u0436\u0430\u0442 node1..3 \u0438 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 ydb-storage-0..2. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0437\u043e\u043d\u044b \u0432 named.conf.local, \u0433\u043e\u043d\u044f\u0435\u043c named-checkconf \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c bind9.\/etc\/bind\/named.conf.local:zone &#171;internal&#187; {    type master;    file &#171;\/etc\/bind\/db.internal&#187;;};zone &#171;baremetal.internal&#187; {    type master;    file &#171;\/etc\/bind\/db.baremetal.internal&#187;;};sudo named-checkconfsudo systemctl restart bind92.5. Chrony\u0412 \/etc\/chrony\/chrony.conf:allow 10.0.0.0\/24bindaddress 10.0.0.3\u0411\u0430\u0441\u0442\u0438\u043e\u043d: chrony.conf \u2014 allow \u0438 bindaddress\u0412 chrony.conf \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441 \u043f\u043e\u0434\u0441\u0435\u0442\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 (allow 10.0.0.0\/24) \u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441 \u043a IP \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0430 (bindaddress). \u0412 cluster.yaml \u043d\u043e\u0434\u044b Talos \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u044d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u0432 timeservers.sudo systemctl restart chrony\u0428\u0430\u0433 3. ISO \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u043d\u043e\u0434\u0443\u0427\u0435\u0440\u0435\u0437 iKVM\/IPMI \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u043c ISO Stackland \u043a\u0430\u043a \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 CD\/DVD.iKVM: \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 ISO Stackland (Virtual Media)\u0412 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 BareMetal \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440 \u2192 KVM \/ iKVM \u2192 Virtual Media \u2192 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c ISO \u2192 Reboot to cdrom. \u0422\u0430\u043a \u0434\u0435\u043b\u0430\u0435\u043c \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u0442\u0440\u0435\u0445 \u043d\u043e\u0434. \u0412 Talos \u0436\u043c\u0435\u043c F3 \u2192 Network Configuration, \u0437\u0430\u0434\u0430\u0435\u043c hostname, IP, gateway, interface \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c MAC \u0434\u043b\u044f hosts.yaml. MAC \u0442\u0430\u043a\u0436\u0435 \u0432\u0438\u0434\u0435\u043d \u0432 \u043e\u0431\u0437\u043e\u0440\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432 BMS. \u0416\u0434\u0435\u043c Talos Maintenance \u043d\u0430 \u0432\u0441\u0435\u0445 \u0442\u0440\u0435\u0445 \u043d\u043e\u0434\u0430\u0445.\u0428\u0430\u0433 4. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 DNS \u043f\u0435\u0440\u0435\u0434 install\u041f\u0435\u0440\u0435\u0434 sladm install \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e BIND \u0441\u043b\u0443\u0448\u0430\u0435\u0442 10.0.0.3:53, UFW \u043f\u0443\u0441\u043a\u0430\u0435\u0442 pod-\u0441\u0435\u0442\u044c 172.16.0.0\/16 \u043d\u0430 \u043f\u043e\u0440\u0442 53, \u0430 dig @10.0.0.3 node1.baremetal.internal \u0438 dig @10.0.0.3 ydb-storage-0.baremetal.internal \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442. VPN-\u043a\u043b\u0438\u0435\u043d\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0445\u043e\u0434\u0438\u0442\u044c \u0432 DNS \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0430 \u0434\u043b\u044f *.kts.internal.\u0428\u0430\u0433 5. \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f sladm\u041d\u0430 \u0431\u0430\u0441\u0442\u0438\u043e\u043d\u0435 \u0437\u0430\u0432\u043e\u0434\u0438\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 stackland\/:stackland\/\u251c\u2500\u2500 cluster.yaml      # StacklandClusterConfig\u251c\u2500\u2500 hosts.yaml        # StacklandHostsList\u2514\u2500\u2500 secrets.yaml      # \u0441\u0435\u043a\u0440\u0435\u0442\u044b, \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043ecluster.yamlcluster.yamlapiVersion: stackland.yandex.cloud\/v1alpha1kind: StacklandClusterConfigmetadata:  name: mainspec:  platform:    type: &#171;baremetal&#187;    loadBalancer:      type: &#171;cilium-l2&#187;      ipPools:        &#8212; cidrs:            &#8212; &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-489330","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/489330","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=489330"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/489330\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=489330"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=489330"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=489330"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}