{"id":106130,"date":"2025-04-15T12:32:38","date_gmt":"2025-04-15T08:02:38","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/bootstrap-cluster-with-fluxcd-4im8\/"},"modified":"2025-04-15T12:32:38","modified_gmt":"2025-04-15T08:02:38","slug":"bootstrap-cluster-with-fluxcd-4im8","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/bootstrap-cluster-with-fluxcd-4im8\/","title":{"rendered":"\u062e\u0648\u0634\u0647 bootstrap \u0628\u0627 fluxcd &#8211; \u062c\u0627\u0645\u0639\u0647 dev"},"content":{"rendered":"<div data-article-id=\"2408255\" id=\"article-body\">\n<p>\u0627\u06cc\u0646 \u062a\u06a9\u0631\u0627\u0631 \u0628\u0639\u062f\u06cc \u0645\u0647\u0627\u062c\u0631\u062a &#8220;5 \u0635\u0628\u062d \u0628\u0627\u0634\u06af\u0627\u0647&#8221; \u0627\u0633\u062a. \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0633\u0627\u06cc\u0631 \u0646\u0648\u0634\u062a\u0647 \u0647\u0627\u06cc \u0645\u0646\u062a\u0634\u0631 \u0634\u062f\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0633\u0631\u06cc\u0627\u0644 \u0628\u0647 \u06cc\u0627\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u060c \u0645\u0646 \u0631\u0648\u0632\u0627\u0646\u0647 \u0628\u0627 Kubernetes \u0628\u0627\u0632\u06cc \u06a9\u0631\u062f\u0645. \u0646\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a \u0631\u0648\u0632\u0627\u0646\u0647 \u060c \u0628\u0644\u06a9\u0647 \u0628\u0647 \u0645\u0639\u0646\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u06a9\u0644\u0645\u0647 \u0647\u0631 \u0631\u0648\u0632. \u0635\u0627\u062f\u0642\u0627\u0646\u0647 \u0628\u06af\u0648\u06cc\u0645 \u060c \u0645\u0646 \u0627\u0632 \u0646\u062a\u0627\u06cc\u062c \u0628\u0633\u06cc\u0627\u0631 \u062e\u0648\u0634\u062d\u0627\u0644\u0645. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 \u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0646 \u06cc\u06a9 \u0686\u0627\u0644\u0634 \u062f\u0627\u0631\u062f \u060c \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062d\u0644 \u0622\u0646 \u062f\u0627\u0631\u062f. \u0632\u0645\u0627\u0646 \u0633\u0627\u062e\u062a \u0637\u0648\u0644\u0627\u0646\u06cc \u0628\u0648\u062f <strong>15 \u062f\u0642\u06cc\u0642\u0647<\/strong> \u0647\u0631 \u0631\u0648\u0632 \u060c \u0648 \u06af\u0627\u0647\u06cc \u0627\u0648\u0642\u0627\u062a \u0627\u067e\u0631\u0627\u062a\u0648\u0631 ESO \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Kustomize \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 HELM \u0628\u0627 \u0645\u0634\u06a9\u0644 \u0631\u0648\u0628\u0631\u0648 \u0645\u06cc \u0634\u062f. \u0648 \u0641\u0642\u0637 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc \u062a\u0635\u0627\u062f\u0641\u06cc \u060c \u0645\u0646 \u0645\u06cc \u062e\u0648\u0627\u0633\u062a\u0645 \u0627\u0632 \u06cc\u06a9 \u0627\u0628\u0632\u0627\u0631 \u0628\u0631\u0627\u06cc \u0628\u0648\u062a \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u062e\u0648\u0634\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0645.<\/p>\n<p>\u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0646 \u0628\u0627 \u0637\u0631\u062d \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u0622\u062e\u0631\u06cc\u0646 \u0628\u0627\u0631 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062f\u0645. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062a\u0642\u0633\u06cc\u0645 \u0645\u0646\u0637\u0642\u06cc \u062f\u0631 \u0647\u0631 \u0627\u067e\u0631\u0627\u062a\u0648\u0631 \u0628\u0627 <code>base\/overlay<\/code> \u0632\u06cc\u0631 \u06af\u0631\u0648\u0647<\/p>\n<p>\u0633\u067e\u0633 \u0645\u0646 \u0641\u06a9\u0631 \u06a9\u0631\u062f\u0645 \u060c \u0686\u0631\u0627 \u0641\u0642\u0637 \u0627\u0632 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0631\u0627\u0647 \u062d\u0644 \u0647\u0627\u06cc \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0628\u0631\u0627\u06cc \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u06cc \u06a9\u0646\u06cc\u0645\u061f<br \/>\u0627\u06cc\u062f\u0647 \u0627\u0648\u0644 \u06af\u0633\u062a\u0631\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0631\u06af\u0648 \u0628\u0631\u0627\u06cc \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0647\u0627\u06cc \u0645\u0646 \u0628\u0648\u062f. \u0627\u0645\u0627 &#8230; \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062a\u0646\u0638\u06cc\u0645 ESO \u060c Doppler Secret \u0648 ArgoCD \u062f\u0627\u0631\u062f. \u0633\u067e\u0633 \u0645\u06cc \u062a\u0648\u0627\u0646\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u0631\u0627 \u0627\u0632 \u0633\u0637\u062d GIT \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u0645.<\/p>\n<p>\u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u060c \u0622\u0633\u0627\u0646\u062a\u0631 \u060c \u0633\u0631\u06cc\u0639\u062a\u0631 \u0648 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u062a\u0631 \u0627\u0632 \u0622\u0646 \u0628\u0648\u062f \u06a9\u0647 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0628\u0648\u062f.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/bootstrap-cluster-with-fluxcd-4im8\/#%D8%A7%D8%B2_%D8%A7%D8%A8%D8%AA%D8%AF%D8%A7_%D8%B4%D8%B1%D9%88%D8%B9_%D9%85%DB%8C_%D8%B4%D9%88%D8%AF\" >\u0627\u0632 \u0627\u0628\u062a\u062f\u0627 \u0634\u0631\u0648\u0639 \u0645\u06cc \u0634\u0648\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/bootstrap-cluster-with-fluxcd-4im8\/#%D8%B3%D8%A7%D8%AE%D8%AA_%D9%85%D8%AE%D8%B2%D9%86\" >\u0633\u0627\u062e\u062a \u0645\u062e\u0632\u0646<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/bootstrap-cluster-with-fluxcd-4im8\/#%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_%D8%B4%D8%A7%D8%B1\" >\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u0627\u0631<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/bootstrap-cluster-with-fluxcd-4im8\/#%D9%85%D8%AD%DB%8C%D8%B7_%D8%A8%D9%88%D8%AA_%D8%A7%D8%B3%D8%AA%D8%B1%D8%A7%D9%BE\" >\u0645\u062d\u06cc\u0637 \u0628\u0648\u062a \u0627\u0633\u062a\u0631\u0627\u067e<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/bootstrap-cluster-with-fluxcd-4im8\/#%D8%AE%D9%84%D8%A7%D8%B5%D9%87\" >\u062e\u0644\u0627\u0635\u0647<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B2_%D8%A7%D8%A8%D8%AA%D8%AF%D8%A7_%D8%B4%D8%B1%D9%88%D8%B9_%D9%85%DB%8C_%D8%B4%D9%88%D8%AF\"><\/span>\n<p>  \u0627\u0632 \u0627\u0628\u062a\u062f\u0627 \u0634\u0631\u0648\u0639 \u0645\u06cc \u0634\u0648\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0686\u0647 \u0634\u0627\u0631 \u0627\u0633\u062a\u061f \u0648 \u0686\u0647 \u0686\u06cc\u0632\u06cc \u0646\u06cc\u0633\u062a\u061f<\/p>\n<blockquote>\n<p>Flux \u0627\u0628\u0632\u0627\u0631\u06cc \u0628\u0631\u0627\u06cc \u0646\u06af\u0647 \u062f\u0627\u0634\u062a\u0646 Kubernetes \u0627\u0633\u062a<br \/>\u062e\u0648\u0634\u0647 \u0647\u0627\u06cc \u0647\u0645\u06af\u0627\u0645 \u0628\u0627 \u0645\u0646\u0627\u0628\u0639 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc (\u0645\u0627\u0646\u0646\u062f \u0645\u062e\u0627\u0632\u0646 GIT) \u060c<br \/>\u0648 \u062f\u0631 \u0635\u0648\u0631\u062a \u0648\u062c\u0648\u062f \u06a9\u062f \u062c\u062f\u06cc\u062f \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u060c \u0628\u0647 \u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0628\u0647 \u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0647\u0627.<\/p>\n<\/blockquote>\n<p>\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 Flux \u0628\u0631\u0627\u06cc \u062d\u0641\u0638 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0644 \u062e\u0648\u0634\u0647 \u062e\u0648\u062f \u062f\u0631 Sync \u060c \u0628\u0627 \u0645\u062e\u0632\u0646 GIT \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645. \u0646\u06a9\u062a\u0647 \u062c\u0627\u0644\u0628 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u0648 \u0645\u0627\u062f\u0648\u0646 \u0642\u0631\u0645\u0632 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0634\u0627\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 \u060c \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u0628\u0627 Flux \u0628\u0647 \u0646\u0638\u0631 \u0645\u0646 \u0633\u0627\u062f\u0647 \u062a\u0631\u06cc\u0646 \u0648 \u0631\u0627\u062d\u062a \u062a\u0631\u06cc\u0646 \u0631\u0627\u0647 \u062d\u0644 \u0646\u06cc\u0633\u062a. \u0628\u0647 \u062e\u0635\u0648\u0635 \u060c \u0627\u06af\u0631 \u0645\u0627 \u0627\u063a\u0644\u0628 \u0646\u0633\u062e\u0647 \u0647\u0627 \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc \u062f\u0647\u06cc\u0645 \u0648 \u062f\u0648\u0633\u062a \u062f\u0627\u0631\u06cc\u0645 \u062d\u062f\u0627\u0642\u0644 \u0686\u0646\u062f \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0628\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u0648 \u0645\u0627\u062f\u0648\u0646 \u0642\u0631\u0645\u0632 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u060c \u0646\u0645\u0648\u0646\u0647 \u0627\u06cc\u0645\u0646 \u0645\u0646 \u0628\u0647 \u0622\u0646 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f <code>csi-driver-smb<\/code>\u060c \u06a9\u0647 \u0627\u0632 \u0637\u0631\u0641 \u062f\u06cc\u06af\u0631 \u0628\u0647 \u0622\u0646 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f <code>external-secret-operator<\/code> \u0648\u062a <code>external-secret-secret<\/code><br \/>(\u067e\u06cc\u0648\u0646\u062f \u0648\u0627\u0642\u0639\u06cc \u0628\u06cc\u0646 \u0631\u0627\u0632 \u062f\u0631\u0648\u0646 \u062e\u0648\u0634\u0647 \u0627\u06cc \u0648 ESO <code>ClusterSecretStore<\/code>). \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u060c \u0647\u0631 Relese \u062c\u062f\u06cc\u062f \u060c \u0628\u0627\u06cc\u062f \u0633\u0627\u062e\u062a\u0647 \u0634\u0648\u062f \u0648 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u062a\u0645\u0627\u0645 Kustomizations \u062f\u0631 \u0645\u062d\u0644 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.<br \/>\u0633\u067e\u0633 \u062f\u0631 \u0648\u0627\u0642\u0639 \u06cc\u06a9 \u0646\u0633\u062e\u0647 \u062c\u062f\u06cc\u062f \u0631\u0627 \u0645\u0633\u062a\u0642\u0631 \u06a9\u0646\u06cc\u062f. \u0641\u0631\u0622\u06cc\u0646\u062f \u0628\u0633\u06cc\u0627\u0631 \u0637\u0648\u0644\u0627\u0646\u06cc \u060c \u0647\u0645\u0686\u0646\u06cc\u0646 ArgoCD UI \u0641\u0642\u0637 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u0647\u062a\u0631 \u060c \u0622\u0633\u0627\u0646\u062a\u0631 \u0648 \u0642\u0637\u0639\u0627\u064b \u06a9\u0627\u0631\u0628\u0631 \u067e\u0633\u0646\u062f \u062a\u0631 \u0627\u0633\u062a &#8211; \u062d\u062f\u0627\u0642\u0644 \u0628\u0647 \u0646\u0638\u0631 \u0645\u0646.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B3%D8%A7%D8%AE%D8%AA_%D9%85%D8%AE%D8%B2%D9%86\"><\/span>\n<p>  \u0633\u0627\u062e\u062a \u0645\u062e\u0632\u0646<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u067e\u0633 \u0627\u0632 \u0686\u0646\u062f \u062f\u0648\u0631 \u0627\u0648\u0644\u06cc\u0647 \u060c \u062f\u0631 \u062d\u0627\u0644\u062a \u0632\u06cc\u0631 \u0628\u0647 \u067e\u0627\u06cc\u0627\u0646 \u0631\u0633\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"nb\">.<\/span>\n\u251c\u2500\u2500 README.md\n\u251c\u2500\u2500 clusters\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 cluster0\n\u2502\u00a0\u00a0     \u2514\u2500\u2500 flux-system\n\u2502\u00a0\u00a0         \u251c\u2500\u2500 gotk-components.yaml\n\u2502\u00a0\u00a0         \u251c\u2500\u2500 gotk-sync.yaml\n\u2502\u00a0\u00a0         \u251c\u2500\u2500 infrastructure.yaml\n\u2502\u00a0\u00a0         \u2514\u2500\u2500 kustomization.yaml\n\u2514\u2500\u2500 infrastructure\n    \u2514\u2500\u2500 controllers\n        \u251c\u2500\u2500 argocd-operator\n        \u2502\u00a0\u00a0 \u251c\u2500\u2500 configmap-patch.yaml\n        \u2502\u00a0\u00a0 \u251c\u2500\u2500 kustomization.yaml\n        \u2502\u00a0\u00a0 \u251c\u2500\u2500 namespace.yaml\n        \u2502\u00a0\u00a0 \u2514\u2500\u2500 patch-argocd-server-annotations.yaml\n        \u251c\u2500\u2500 argocd-operator-apps\n        \u2502\u00a0\u00a0 \u251c\u2500\u2500 applications.yaml\n        \u2502\u00a0\u00a0 \u251c\u2500\u2500 kustomization.yaml\n        \u2502\u00a0\u00a0 \u251c\u2500\u2500 projects.yaml\n        \u2502\u00a0\u00a0 \u2514\u2500\u2500 repositories.yaml\n        \u251c\u2500\u2500 csi-driver-smb\n        \u2502\u00a0\u00a0 \u251c\u2500\u2500 csi-driver-smb.yaml\n        \u2502\u00a0\u00a0 \u2514\u2500\u2500 kustomization.yaml\n        \u251c\u2500\u2500 external-secrets\n        \u2502\u00a0\u00a0 \u251c\u2500\u2500 external-secrets-operator.yaml\n        \u2502\u00a0\u00a0 \u2514\u2500\u2500 kustomization.yaml\n        \u251c\u2500\u2500 external-secrets-secret\n        \u2502\u00a0\u00a0 \u251c\u2500\u2500 cluster-secret-store.yaml\n        \u2502\u00a0\u00a0 \u2514\u2500\u2500 kustomization.yaml\n        \u251c\u2500\u2500 tailscale-operator\n        \u2502\u00a0\u00a0 \u251c\u2500\u2500 kustomization.yaml\n        \u2502\u00a0\u00a0 \u2514\u2500\u2500 tailscale-operator.yaml\n        \u251c\u2500\u2500 tailscale-operator-secrets\n        \u2502\u00a0\u00a0 \u251c\u2500\u2500 kustomization.yaml\n        \u2502\u00a0\u00a0 \u2514\u2500\u2500 tailscale-operator-exteral-secret.yaml\n        \u2514\u2500\u2500 traefik\n            \u251c\u2500\u2500 kustomization.yaml\n            \u2514\u2500\u2500 traefik-ext-conf.yaml\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0645\u0627 \u0628\u0647 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 \u060c \u062f\u0631\u0633\u062a \u0627\u0633\u062a\u061f<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_%D8%B4%D8%A7%D8%B1\"><\/span>\n<p>  \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u0627\u0631<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>clusters\n\u2514\u2500\u2500 cluster0\n    \u2514\u2500\u2500 flux-system\n        \u251c\u2500\u2500 gotk-components.yaml\n        \u251c\u2500\u2500 gotk-sync.yaml\n        \u251c\u2500\u2500 infrastructure.yaml\n        \u2514\u2500\u2500 kustomization.yaml\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062e\u0648\u0634\u0647 \u062e\u0648\u062f \u0631\u0627 \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u06cc\u06a9 \u0627\u06cc\u062f\u0647 \u0639\u0627\u0644\u06cc \u0627\u0633\u062a. \u062f\u0631 \u06cc\u06a9 \u0645\u062e\u0632\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u060c \u0645\u062d\u06cc\u0637 \u06cc\u0627 \u0645\u06a9\u0627\u0646 \u060c \u062a\u0646\u0638\u06cc\u0645\u0627\u062a\u06cc \u0628\u0631\u0627\u06cc \u0686\u0646\u062f\u06cc\u0646 \u062e\u0648\u0634\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645 \u0648 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0631\u0648\u0634\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u0645. \u0633\u067e\u0633 \u0645\u0627 \u067e\u0631\u0648\u0646\u062f\u0647 \u0647\u0627\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0634\u0627\u0631\u0698 \u0645\u0646\u0638\u0645 \u062f\u0627\u0631\u06cc\u0645 \u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 <code>flux-system\/gotk-components.yaml<\/code> \u0648\u062a <code>flux-system\/gotk-sync.yaml<\/code>\u0628\u0634\u0631 \u0628\u0639\u062f \u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u062f\u0631 \u0645\u0648\u0631\u062f \u0633\u0627\u062f\u0647 \u0645\u0646 \u0635\u062d\u0628\u062a \u06a9\u0646\u06cc\u0645 <code>Kustomization<\/code> \u067e\u0631\u0648\u0646\u062f\u0647<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight yaml\"><code><span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">kustomize.config.k8s.io\/v1beta1<\/span>\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Kustomization<\/span>\n<span class=\"na\">resources<\/span><span class=\"pi\">:<\/span>\n  <span class=\"pi\">-<\/span> <span class=\"s\">gotk-components.yaml<\/span>\n  <span class=\"pi\">-<\/span> <span class=\"s\">gotk-sync.yaml<\/span>\n  <span class=\"pi\">-<\/span> <span class=\"s\">infrastructure.yaml<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0641\u0642\u0637 \u0628\u0647 Flux \u0645\u06cc \u06af\u0648\u06cc\u062f \u060c \u06a9\u0647 \u0628\u0639\u062f \u0627\u0632 \u0628\u0648\u062a \u06a9\u0631\u062f\u0646 \u062e\u0648\u062f \u060c \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<br \/>\u062a\u062c\u0644\u06cc \u0628\u0631 \u0627\u0633\u0627\u0633 <code>infrastructure.yaml<\/code> \u067e\u0631\u0648\u0646\u062f\u0647 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0645\u0647\u0645\u062a\u0631\u06cc\u0646 \u0642\u0633\u0645\u062a \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0628\u06cc\u0646\u062f\u0627\u0632\u06cc\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight yaml\"><code><span class=\"nn\">---<\/span>\n<span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">kustomize.toolkit.fluxcd.io\/v1<\/span>\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Kustomization<\/span>\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">csi-driver-smb<\/span>\n  <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s\">flux-system<\/span>\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">interval<\/span><span class=\"pi\">:<\/span> <span class=\"s\">1h<\/span>\n  <span class=\"na\">retryInterval<\/span><span class=\"pi\">:<\/span> <span class=\"s\">1m<\/span>\n  <span class=\"na\">timeout<\/span><span class=\"pi\">:<\/span> <span class=\"s\">5m<\/span>\n  <span class=\"na\">sourceRef<\/span><span class=\"pi\">:<\/span>\n    <span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">GitRepository<\/span>\n    <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">flux-system<\/span>\n  <span class=\"na\">path<\/span><span class=\"pi\">:<\/span> <span class=\"s\">.\/infrastructure\/controllers\/csi-driver-smb<\/span>\n  <span class=\"na\">prune<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">true<\/span>\n  <span class=\"na\">wait<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">true<\/span>\n<span class=\"nn\">---<\/span>\n<span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">kustomize.toolkit.fluxcd.io\/v1<\/span>\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Kustomization<\/span>\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">external-secrets<\/span>\n  <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s\">flux-system<\/span>\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">interval<\/span><span class=\"pi\">:<\/span> <span class=\"s\">1h<\/span>\n  <span class=\"na\">retryInterval<\/span><span class=\"pi\">:<\/span> <span class=\"s\">1m<\/span>\n  <span class=\"na\">timeout<\/span><span class=\"pi\">:<\/span> <span class=\"s\">5m<\/span>\n  <span class=\"na\">sourceRef<\/span><span class=\"pi\">:<\/span>\n    <span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">GitRepository<\/span>\n    <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">flux-system<\/span>\n  <span class=\"na\">path<\/span><span class=\"pi\">:<\/span> <span class=\"s\">.\/infrastructure\/controllers\/external-secrets<\/span>\n  <span class=\"na\">prune<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">true<\/span>\n  <span class=\"na\">wait<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">true<\/span>\n<span class=\"nn\">---<\/span>\n<span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">kustomize.toolkit.fluxcd.io\/v1<\/span>\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Kustomization<\/span>\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">external-secrets-secret<\/span>\n  <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s\">flux-system<\/span>\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">interval<\/span><span class=\"pi\">:<\/span> <span class=\"s\">1h<\/span>\n  <span class=\"na\">retryInterval<\/span><span class=\"pi\">:<\/span> <span class=\"s\">1m<\/span>\n  <span class=\"na\">timeout<\/span><span class=\"pi\">:<\/span> <span class=\"s\">5m<\/span>\n  <span class=\"na\">sourceRef<\/span><span class=\"pi\">:<\/span>\n    <span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">GitRepository<\/span>\n    <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">flux-system<\/span>\n  <span class=\"na\">path<\/span><span class=\"pi\">:<\/span> <span class=\"s\">.\/infrastructure\/controllers\/external-secrets-secret<\/span>\n  <span class=\"na\">dependsOn<\/span><span class=\"pi\">:<\/span>\n    <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">external-secrets<\/span>\n  <span class=\"na\">prune<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">true<\/span>\n  <span class=\"na\">wait<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">true<\/span>\n<span class=\"nn\">---<\/span>\n<span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">kustomize.toolkit.fluxcd.io\/v1<\/span>\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Kustomization<\/span>\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">tailscale-operator<\/span>\n  <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s\">flux-system<\/span>\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">interval<\/span><span class=\"pi\">:<\/span> <span class=\"s\">1h<\/span>\n  <span class=\"na\">retryInterval<\/span><span class=\"pi\">:<\/span> <span class=\"s\">1m<\/span>\n  <span class=\"na\">timeout<\/span><span class=\"pi\">:<\/span> <span class=\"s\">5m<\/span>\n  <span class=\"na\">sourceRef<\/span><span class=\"pi\">:<\/span>\n    <span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">GitRepository<\/span>\n    <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">flux-system<\/span>\n  <span class=\"na\">path<\/span><span class=\"pi\">:<\/span> <span class=\"s\">.\/infrastructure\/controllers\/tailscale-operator<\/span>\n  <span class=\"na\">dependsOn<\/span><span class=\"pi\">:<\/span>\n    <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">external-secrets-secret<\/span>\n  <span class=\"na\">prune<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">true<\/span>\n  <span class=\"na\">wait<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">true<\/span>\n<span class=\"nn\">---<\/span>\n<span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">kustomize.toolkit.fluxcd.io\/v1<\/span>\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Kustomization<\/span>\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">tailscale-operator-secret<\/span>\n  <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s\">flux-system<\/span>\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">interval<\/span><span class=\"pi\">:<\/span> <span class=\"s\">1h<\/span>\n  <span class=\"na\">retryInterval<\/span><span class=\"pi\">:<\/span> <span class=\"s\">1m<\/span>\n  <span class=\"na\">timeout<\/span><span class=\"pi\">:<\/span> <span class=\"s\">5m<\/span>\n  <span class=\"na\">sourceRef<\/span><span class=\"pi\">:<\/span>\n    <span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">GitRepository<\/span>\n    <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">flux-system<\/span>\n  <span class=\"na\">path<\/span><span class=\"pi\">:<\/span> <span class=\"s\">.\/infrastructure\/controllers\/tailscale-operator-secrets<\/span>\n  <span class=\"na\">dependsOn<\/span><span class=\"pi\">:<\/span>\n    <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">external-secrets<\/span>\n  <span class=\"na\">prune<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">true<\/span>\n  <span class=\"na\">wait<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">true<\/span>\n<span class=\"nn\">---<\/span>\n<span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">kustomize.toolkit.fluxcd.io\/v1<\/span>\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Kustomization<\/span>\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">traefik<\/span>\n  <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s\">flux-system<\/span>\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">interval<\/span><span class=\"pi\">:<\/span> <span class=\"s\">1h<\/span>\n  <span class=\"na\">retryInterval<\/span><span class=\"pi\">:<\/span> <span class=\"s\">1m<\/span>\n  <span class=\"na\">timeout<\/span><span class=\"pi\">:<\/span> <span class=\"s\">5m<\/span>\n  <span class=\"na\">sourceRef<\/span><span class=\"pi\">:<\/span>\n    <span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">GitRepository<\/span>\n    <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">flux-system<\/span>\n  <span class=\"na\">path<\/span><span class=\"pi\">:<\/span> <span class=\"s\">.\/infrastructure\/controllers\/traefik<\/span>\n  <span class=\"na\">prune<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">true<\/span>\n  <span class=\"na\">wait<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">true<\/span>\n<span class=\"nn\">---<\/span>\n<span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">kustomize.toolkit.fluxcd.io\/v1<\/span>\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Kustomization<\/span>\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">argocd-operator<\/span>\n  <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s\">flux-system<\/span>\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">interval<\/span><span class=\"pi\">:<\/span> <span class=\"s\">1h<\/span>\n  <span class=\"na\">retryInterval<\/span><span class=\"pi\">:<\/span> <span class=\"s\">1m<\/span>\n  <span class=\"na\">timeout<\/span><span class=\"pi\">:<\/span> <span class=\"s\">5m<\/span>\n  <span class=\"na\">sourceRef<\/span><span class=\"pi\">:<\/span>\n    <span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">GitRepository<\/span>\n    <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">flux-system<\/span>\n  <span class=\"na\">path<\/span><span class=\"pi\">:<\/span> <span class=\"s\">.\/infrastructure\/controllers\/argocd-operator<\/span>\n  <span class=\"na\">dependsOn<\/span><span class=\"pi\">:<\/span>\n    <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">tailscale-operator<\/span>\n  <span class=\"na\">prune<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">true<\/span>\n  <span class=\"na\">wait<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">true<\/span>\n<span class=\"nn\">---<\/span>\n<span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">kustomize.toolkit.fluxcd.io\/v1<\/span>\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Kustomization<\/span>\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">argocd-apps<\/span>\n  <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s\">flux-system<\/span>\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">interval<\/span><span class=\"pi\">:<\/span> <span class=\"s\">1h<\/span>\n  <span class=\"na\">retryInterval<\/span><span class=\"pi\">:<\/span> <span class=\"s\">1m<\/span>\n  <span class=\"na\">timeout<\/span><span class=\"pi\">:<\/span> <span class=\"s\">5m<\/span>\n  <span class=\"na\">sourceRef<\/span><span class=\"pi\">:<\/span>\n    <span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">GitRepository<\/span>\n    <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">flux-system<\/span>\n  <span class=\"na\">path<\/span><span class=\"pi\">:<\/span> <span class=\"s\">.\/infrastructure\/controllers\/argocd-operator-apps<\/span>\n  <span class=\"na\">dependsOn<\/span><span class=\"pi\">:<\/span>\n    <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">argocd-operator<\/span>\n  <span class=\"na\">prune<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">true<\/span>\n  <span class=\"na\">wait<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">true<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc \u0628\u06cc\u0646\u06cc\u062f \u0645\u0646 \u0628\u0647 \u0634\u062f\u062a \u0628\u0647 \u0622\u0646 \u0627\u0639\u062a\u0645\u0627\u062f \u0645\u06cc \u06a9\u0646\u0645 <code>dependsOn<\/code> \u0641\u0631\u0645\u0627\u0646 \u0627\u06cc\u0646 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0637\u0631\u0627\u062d\u06cc Archtecture Flux \u0648 Kubernetes \u0627\u0633\u062a. \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 kustomization \u0647\u0633\u062a\u06cc\u0645 \u060c \u0645\u0627 \u062a\u0631\u062a\u06cc\u0628 \u0627\u06cc\u062c\u0627\u062f \u0645\u0646\u0627\u0628\u0639 \u0631\u0627 \u06a9\u0646\u062a\u0631\u0644 \u0646\u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0627\u0644\u0628\u062a\u0647 \u060c \u0627\u06af\u0631 \u0645\u0627 \u06cc\u06a9 \u067e\u0631\u0648\u0646\u062f\u0647 \u060c \u0633\u0631\u0648\u06cc\u0633 \u060c \u0648\u0631\u0648\u062f \u0648 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0631\u0627 \u062f\u0631 \u0622\u0646 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u0645 \u060c Kubernetes \u0645\u06cc \u062f\u0627\u0646\u062f \u0686\u06af\u0648\u0646\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u062f. \u0645\u0634\u06a9\u0644 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0648\u0642\u062a\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u06cc \u0631\u0627 \u06a9\u0647 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0628\u0647 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u062f\u0627\u0631\u062f \u060c \u0645\u0633\u062a\u0642\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u060c \u0627\u06cc\u0646 \u0686\u06cc\u0632\u06cc \u0646\u06cc\u0633\u062a \u06a9\u0647 Kubernetes \u0645\u06cc \u0641\u0647\u0645\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0627 \u0628\u0627\u06cc\u062f \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0622\u0646 \u0631\u0627 \u0645\u0634\u062e\u0635 \u06a9\u0646\u06cc\u0645. \u062f\u0631 \u0645\u062b\u0627\u0644 \u0645\u0646 <code>csi-driver-smb<\/code>\u0628\u0627 <code>external-secrets<\/code>\u0648\u062a <code>traefik<\/code> \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u0648\u0627\u0632\u06cc \u0646\u0635\u0628 \u06a9\u0631\u062f \u060c \u0627\u0645\u0627 \u067e\u0633 \u0627\u0632 \u0622\u0646 \u0645\u0627 \u0631\u0648\u0627\u0628\u0637 \u062f\u0627\u0631\u06cc\u0645. \u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u060c \u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0646\u0635\u0628 Argo \u0647\u0633\u062a\u06cc\u0645 <code>app-of-apps<\/code>\u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646 \u060c \u0628\u0647 \u0637\u0648\u0631 \u06a9\u0644\u06cc \u0628\u0647 \u062a\u0645\u0627\u0645 \u0645\u0624\u0644\u0641\u0647 \u0647\u0627\u06cc \u0642\u0628\u0644\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f <code>traefik<\/code> &#8211; \u0645\u0646 \u062a\u0631\u0627\u0641\u06cc\u06a9 \u062e\u0648\u062f \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0635\u0641\u062d\u0647 \u0645\u062e\u0641\u06cc \u062f\u0631 \u0622\u0646\u062c\u0627 \u0645\u0633\u06cc\u0631\u06cc\u0627\u0628\u06cc \u0645\u06cc \u06a9\u0646\u0645 \u060c \u0646\u0647 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a.<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0641\u06a9\u0631 \u06a9\u0646\u06cc\u062f:<\/p>\n<blockquote>\n<p><strong>\u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0631\u0646\u0627\u0645\u0647<\/strong>\u061f \u0634\u0645\u0627 \u0641\u0642\u0637 \u0645\u0627\u062f\u0648\u0646 \u0631\u0627 \u06af\u0641\u062a\u06cc\u062f!<\/p>\n<\/blockquote>\n<p>\u0627\u06cc\u0646 \u062f\u0631\u0633\u062a \u0627\u0633\u062a \u060c \u0645\u0646\u0637\u0642 \u0645\u0646 \u06a9\u0627\u0645\u0644\u0627\u064b \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0628\u0648\u062f \u060c \u0635\u0627\u062f\u0642\u0627\u0646\u0647 \u0628\u06af\u0648\u06cc\u0645. \u0628\u0647 \u06cc\u0627\u062f \u0645\u06cc \u0622\u0648\u0631\u06cc\u062f \u060c \u0648\u0642\u062a\u06cc \u0645\u0646 \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0645\u061f \u0628\u0648\u062a \u06a9\u0631\u062f\u0646 \u06a9\u0644 \u062e\u0648\u0634\u0647 \u0628\u0647 \u06af\u0648\u0646\u0647 \u0627\u06cc \u06a9\u0647 \u0628\u062a\u0648\u0627\u0646\u0645 \u0633\u0631\u06cc\u0639 \u0628\u0627 \u0622\u0646 \u06a9\u0627\u0631 \u06a9\u0646\u0645. \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u0628\u062e\u0634\u06cc \u0627\u0632 \u062e\u0648\u0634\u0647 \u06a9\u0644\u06cc \u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0647\u0633\u062a\u0646\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062a\u0639\u0631\u06cc\u0641 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0646 \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0628\u0648\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>infrastructure\/controllers\/argocd-operator-apps\n\u251c\u2500\u2500 applications.yaml\n\u251c\u2500\u2500 kustomization.yaml\n\u251c\u2500\u2500 projects.yaml\n\u2514\u2500\u2500 repositories.yaml\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u06cc\u06a9 \u0628\u0647 \u06cc\u06a9 \u0628\u0647 \u062f\u0627\u062e\u0644 \u0622\u0646 \u0634\u06cc\u0631\u062c\u0647 \u0628\u0632\u0646\u06cc\u0645.<\/p>\n<ol>\n<li>\n<p>\u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627. yaml<\/p>\n<pre class=\"highlight yaml\"><code> <span class=\"s\">---<\/span>\n <span class=\"s\">apiVersion<\/span><span class=\"err\">:<\/span> <span class=\"s\">argoproj.io\/v1alpha1<\/span>\n <span class=\"s\">kind<\/span><span class=\"err\">:<\/span> <span class=\"s\">Application<\/span>\n <span class=\"s\">metadata<\/span><span class=\"err\">:<\/span>\n   <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">self-sync<\/span>\n   <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s\">argocd<\/span>\n <span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\n   <span class=\"na\">syncPolicy<\/span><span class=\"pi\">:<\/span>\n     <span class=\"na\">automated<\/span><span class=\"pi\">:<\/span>\n       <span class=\"na\">selfHeal<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">true<\/span>\n   <span class=\"na\">project<\/span><span class=\"pi\">:<\/span> <span class=\"s\">non-core-namespaces<\/span>\n   <span class=\"na\">source<\/span><span class=\"pi\">:<\/span>\n     <span class=\"na\">repoURL<\/span><span class=\"pi\">:<\/span> <span class=\"s\">https:\/\/codeberg.org\/3sky\/argocd-for-home<\/span>\n     <span class=\"na\">targetRevision<\/span><span class=\"pi\">:<\/span> <span class=\"s\">HEAD<\/span>\n     <span class=\"na\">path<\/span><span class=\"pi\">:<\/span> <span class=\"s\">app-of-apps<\/span>\n   <span class=\"na\">destination<\/span><span class=\"pi\">:<\/span>\n     <span class=\"na\">server<\/span><span class=\"pi\">:<\/span> <span class=\"s\">https:\/\/kubernetes.default.svc<\/span>\n     <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s\">argocd<\/span>\n<\/code><\/pre>\n<p>\u0627\u06cc\u0646 \u06cc\u06a9 \u062a\u0639\u0631\u06cc\u0641 \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0627\u0632 \u0627\u0635\u0644\u06cc \u0645\u0646 \u0627\u0633\u062a <code>Application<\/code> \u0627\u06cc\u0646 \u0647\u0645\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0627\u062c\u0631\u0627 \u0634\u062f\u0647 \u0631\u0648\u06cc \u062e\u0648\u0634\u0647 \u0645\u0646 \u0631\u0627 \u06a9\u0646\u062a\u0631\u0644 \u0645\u06cc \u06a9\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0647\u06cc\u0686 \u0686\u06cc\u0632 \u062e\u0627\u0635\u06cc \u0646\u06cc\u0633\u062a \u060c \u0645\u0646 \u062f\u0631 \u062d\u0627\u0644 \u0622\u0632\u0645\u0627\u06cc\u0634 \u0628\u0648\u062f\u0645 <code>codeberg<\/code>\u060c \u0627\u0645\u0627 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0639\u062f\u0627\u064b \u062f\u0631 \u0645\u0648\u0631\u062f \u0622\u0646 \u0635\u062d\u0628\u062a \u06a9\u0646\u06cc\u0645.<\/p>\n<\/li>\n<li>\n<p>kustomization.yaml<\/p>\n<pre class=\"highlight yaml\"><code>  <span class=\"s\">---<\/span>\n  <span class=\"s\">apiVersion<\/span><span class=\"err\">:<\/span> <span class=\"s\">kustomize.config.k8s.io\/v1beta1<\/span>\n  <span class=\"s\">kind<\/span><span class=\"err\">:<\/span> <span class=\"s\">Kustomization<\/span>\n\n  <span class=\"s\">namespace<\/span><span class=\"err\">:<\/span> <span class=\"s\">argocd<\/span>\n  <span class=\"s\">resources<\/span><span class=\"err\">:<\/span>\n    <span class=\"pi\">-<\/span> <span class=\"s\">repositories.yaml<\/span>\n    <span class=\"pi\">-<\/span> <span class=\"s\">projects.yaml<\/span>\n    <span class=\"pi\">-<\/span> <span class=\"s\">applications.yaml<\/span>\n<\/code><\/pre>\n<p><code>Kustomization<\/code>  \u0633\u0627\u062f\u0647 \u0627\u0633\u062a \u060c \u0641\u0642\u0637 \u062f\u0631 \u0645\u0633\u06cc\u0631 \u0645\u0646\u0637\u0642 \u0633\u0641\u0627\u0631\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p><strong>\u0645\u062e\u0632\u0646<\/strong> -> <strong>\u067e\u0631\u0648\u0698\u0647<\/strong> -> <strong>\u06a9\u0627\u0631\u0628\u0631\u062f<\/strong><\/p>\n<\/li>\n<li>\n<p>\u067e\u0631\u0648\u0698\u0647 \u0647\u0627<\/p>\n<pre class=\"highlight yaml\"><code>  <span class=\"s\">---<\/span>\n  <span class=\"s\">apiVersion<\/span><span class=\"err\">:<\/span> <span class=\"s\">argoproj.io\/v1alpha1<\/span>\n  <span class=\"s\">kind<\/span><span class=\"err\">:<\/span> <span class=\"s\">AppProject<\/span>\n  <span class=\"s\">metadata<\/span><span class=\"err\">:<\/span>\n    <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">non-core-namespaces<\/span>\n    <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s\">argocd<\/span>\n  <span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\n    <span class=\"na\">description<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Allow argo deploy everywhere<\/span>\n    <span class=\"na\">sourceRepos<\/span><span class=\"pi\">:<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"s1\">'<\/span><span class=\"s\">https:\/\/codeberg.org\/3sky\/argocd-for-home'<\/span>\n    <span class=\"na\">destinations<\/span><span class=\"pi\">:<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s1\">'<\/span><span class=\"s\">*'<\/span>\n        <span class=\"na\">server<\/span><span class=\"pi\">:<\/span> <span class=\"s\">https:\/\/kubernetes.default.svc<\/span>\n    <span class=\"na\">namespaceResourceWhitelist<\/span><span class=\"pi\">:<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"na\">group<\/span><span class=\"pi\">:<\/span> <span class=\"s1\">'<\/span><span class=\"s\">*'<\/span>\n        <span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s1\">'<\/span><span class=\"s\">*'<\/span>\n    <span class=\"na\">clusterResourceWhitelist<\/span><span class=\"pi\">:<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"na\">group<\/span><span class=\"pi\">:<\/span> <span class=\"s1\">'<\/span><span class=\"s\">*'<\/span>\n        <span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s1\">'<\/span><span class=\"s\">*'<\/span>\n<\/code><\/pre>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u0646 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u0645 <code>namespaces<\/code> \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0628\u062e\u0634\u06cc \u0627\u0632 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0646 \u060c \u0645\u062c\u0648\u0632 \u0627\u0639\u0637\u0627 \u0634\u062f\u0647 \u0628\u0647 \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc \u0622\u0631\u06af\u0648 \u0628\u0633\u06cc\u0627\u0631 \u06af\u0633\u062a\u0631\u062f\u0647 \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u060c \u0645\u0646 \u0641\u0642\u0637 \u0628\u0647 \u0631\u0648\u0646\u062f GITOPS \u0627\u0639\u062a\u0645\u0627\u062f \u062f\u0627\u0631\u0645.<\/p>\n<\/li>\n<li>\n<p>repositories.yaml<\/p>\n<pre class=\"highlight yaml\"><code>  <span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">external-secrets.io\/v1beta1<\/span>\n  <span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ExternalSecret<\/span>\n  <span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\n    <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">gitops-with-argo-secret<\/span>\n    <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s\">argocd<\/span>\n  <span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\n    <span class=\"na\">refreshInterval<\/span><span class=\"pi\">:<\/span> <span class=\"s\">6h<\/span>\n    <span class=\"na\">secretStoreRef<\/span><span class=\"pi\">:<\/span>\n      <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">doppler-auth-argocd<\/span>\n      <span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ClusterSecretStore<\/span>\n    <span class=\"na\">target<\/span><span class=\"pi\">:<\/span>\n      <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">gitops-with-argo<\/span>\n      <span class=\"na\">creationPolicy<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Owner<\/span>\n      <span class=\"na\">template<\/span><span class=\"pi\">:<\/span>\n        <span class=\"na\">type<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Opaque<\/span>\n        <span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\n          <span class=\"na\">labels<\/span><span class=\"pi\">:<\/span>\n            <span class=\"na\">argocd.argoproj.io\/secret-type<\/span><span class=\"pi\">:<\/span> <span class=\"s\">repository<\/span>\n        <span class=\"na\">data<\/span><span class=\"pi\">:<\/span>\n          <span class=\"na\">type<\/span><span class=\"pi\">:<\/span> <span class=\"s\">git<\/span>\n          <span class=\"na\">url<\/span><span class=\"pi\">:<\/span> <span class=\"s\">https:\/\/codeberg.org\/3sky\/argocd-for-home<\/span>\n          <span class=\"na\">username<\/span><span class=\"pi\">:<\/span> <span class=\"s\">3sky<\/span>\n          <span class=\"na\">password<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">{{<\/span><span class=\"nv\"> <\/span><span class=\"s\">.password<\/span><span class=\"nv\"> <\/span><span class=\"s\">}}\"<\/span>\n    <span class=\"na\">data<\/span><span class=\"pi\">:<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"na\">secretKey<\/span><span class=\"pi\">:<\/span> <span class=\"s\">password<\/span>\n        <span class=\"na\">remoteRef<\/span><span class=\"pi\">:<\/span>\n          <span class=\"na\">key<\/span><span class=\"pi\">:<\/span> <span class=\"s\">CODEBERG_TOKEN<\/span>\n<\/code><\/pre>\n<p>\u0627\u06cc\u0646 \u0627\u062d\u062a\u0645\u0627\u0644\u0627\u064b \u062c\u0627\u0644\u0628 \u062a\u0631\u06cc\u0646 \u0642\u0633\u0645\u062a \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u0633\u062a. \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u0627 \u0642\u0627\u062f\u0631 \u0628\u0647 \u062a\u0632\u0631\u06cc\u0642 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u062e\u0648\u062f \u0628\u0647 \u0637\u0648\u0631 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0646\u06cc\u0633\u062a\u06cc\u0645 <code>argocd.argoproj.io\/secret-type: repository<\/code>\u060c \u06a9\u0647 \u06cc\u06a9 \u0631\u0627\u0632 \u0645\u0639\u0645\u0648\u0644\u06cc Kubernetes \u0627\u0633\u062a. \u0645\u0627 \u0628\u0627\u06cc\u062f \u06a9\u0644 \u0634\u06cc \u0631\u0627 \u062a\u0648\u0644\u06cc\u062f \u06a9\u0646\u06cc\u0645<br \/>\u0628\u0627 ESO &#8211; \u062c\u0632\u0626\u06cc\u0627\u062a \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u0627\u0641\u062a.<\/p>\n<\/li>\n<\/ol>\n<p>\u0648 \u0647\u0645\u06cc\u0646 \u0627\u0633\u062a. \u062d\u0627\u0644 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u062f\u0631 \u0645\u0648\u0631\u062f \u0631\u0648\u0646\u062f \u0648\u0627\u0642\u0639\u06cc Bootstrap \u0635\u062d\u0628\u062a \u06a9\u0646\u06cc\u0645.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%AD%DB%8C%D8%B7_%D8%A8%D9%88%D8%AA_%D8%A7%D8%B3%D8%AA%D8%B1%D8%A7%D9%BE\"><\/span>\n<p>  \u0645\u062d\u06cc\u0637 \u0628\u0648\u062a \u0627\u0633\u062a\u0631\u0627\u067e<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li>\n<p>\u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0647\u0627 \u0631\u0627 \u0628\u0627 Terraform \u0628\u0686\u0631\u062e\u0627\u0646\u06cc\u062f.<\/p>\n<pre class=\"highlight shell\"><code>terraform apply <span class=\"nt\">-var<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"local_ip=<\/span><span class=\"si\">$(<\/span>curl <span class=\"nt\">-s<\/span> ifconfig.me<span class=\"si\">)<\/span><span class=\"s2\">\"<\/span>\n<\/code><\/pre>\n<\/li>\n<li>\n<p>\u0646\u0635\u0628 K3s \u0628\u0627 \u0686\u0646\u06af\u0627\u0644 \u0645\u062d\u0644\u06cc K3S \u0642\u0627\u0628\u0644 \u0627\u062a\u0635\u0627\u0644.<\/p>\n<pre class=\"highlight shell\"><code>ansible-playbook playbooks\/site.yml <span class=\"nt\">-i<\/span> inventory.yml\n<\/code><\/pre>\n<\/li>\n<li>\n<p>kubeconfig \u0631\u0627 \u0628\u0627\u0631 \u06a9\u0646\u06cc\u062f<\/p>\n<pre class=\"highlight shell\"><code><span class=\"nb\">export <\/span><span class=\"nv\">KUBECONFIG<\/span><span class=\"o\">=<\/span>\/home\/kuba\/.kube\/config.hetzner-prod\nkubectl config use-context k3s-ansible\n<\/code><\/pre>\n<\/li>\n<li>\n<p>\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062f\u0627\u067e\u0644\u0631 (\u0645\u0627 \u062f\u0631 \u062c\u0627\u06cc\u06cc \u0628\u0647 \u06cc\u06a9 \u0631\u0627\u0632 \u0627\u0628\u062a\u06a9\u0627\u0631 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645)<\/p>\n<pre class=\"highlight shell\"><code>kubectl create namespace external-secrets\nkubectl create secret generic <span class=\"se\">\\<\/span>\n  <span class=\"nt\">-n<\/span> external-secrets doppler-token-argocd <span class=\"se\">\\<\/span>\n  <span class=\"nt\">--from-literal<\/span> <span class=\"nv\">dopplerToken<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"\"<\/span>\n<\/code><\/pre>\n<\/li>\n<li>\n<p>\u0628\u0648\u062a \u0627\u0633\u062a\u0631\u067e \u062e\u0648\u0634\u0647<\/p>\n<pre class=\"highlight shell\"><code>flux bootstrap github <span class=\"se\">\\<\/span>\n  <span class=\"nt\">--owner<\/span><span class=\"o\">=<\/span>3sky <span class=\"se\">\\<\/span>\n  <span class=\"nt\">--repository<\/span><span class=\"o\">=<\/span>flux-at-home <span class=\"se\">\\<\/span>\n  <span class=\"nt\">--branch<\/span><span class=\"o\">=<\/span>main <span class=\"se\">\\<\/span>\n  <span class=\"nt\">--path<\/span><span class=\"o\">=<\/span>.\/clusters\/cluster0 <span class=\"se\">\\<\/span>\n  <span class=\"nt\">--personal<\/span>\n<\/code><\/pre>\n<p>\u062c\u0627\u06cc\u06cc \u06a9\u0647 GitHub \u0628\u0647 \u0635\u0648\u0631\u062a \u0628\u0648\u0645\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u0634\u0648\u062f (\u0627\u0632 \u0637\u0631\u06cc\u0642 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc GitHub). \u0631\u0627\u0647 \u062d\u0644 \u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f CodeBerg \u0628\u0647 \u06cc\u06a9 \u0631\u0648\u0634 \u0645\u0633\u062a\u0642\u06cc\u0645 \u062a\u0631 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u0646\u062f.<\/p>\n<pre class=\"highlight shell\"><code>flux bootstrap git <span class=\"se\">\\<\/span>\n  <span class=\"nt\">--url<\/span><span class=\"o\">=<\/span>ssh:\/\/git@codeberg.org\/3sky\/flux-at-home.git <span class=\"se\">\\<\/span>\n  <span class=\"nt\">--branch<\/span><span class=\"o\">=<\/span>main   <span class=\"se\">\\<\/span>\n  <span class=\"nt\">--path<\/span><span class=\"o\">=<\/span>.\/clusters\/cluster0   <span class=\"se\">\\<\/span>\n  <span class=\"nt\">--private-key-file<\/span><span class=\"o\">=<\/span>\/home\/kuba\/.ssh\/id_ed25519_git\n<\/code><\/pre>\n<\/li>\n<li>\n<p>\u062f\u0631 \u0635\u0648\u0631\u062a \u0644\u0632\u0648\u0645 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 argocd \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f<\/p>\n<pre class=\"highlight shell\"><code>kubectl <span class=\"nt\">--namespace<\/span> argocd <span class=\"se\">\\<\/span>\n  get secret argocd-initial-admin-secret <span class=\"se\">\\<\/span>\n  <span class=\"nt\">-o<\/span> json | jq <span class=\"nt\">-r<\/span> <span class=\"s1\">'.data.password'<\/span> | <span class=\"nb\">base64<\/span> <span class=\"nt\">-d<\/span>\n<\/code><\/pre>\n<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AE%D9%84%D8%A7%D8%B5%D9%87\"><\/span>\n<p>  \u062e\u0644\u0627\u0635\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u0645\u062c\u0645\u0648\u0639\u0647 \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u060c \u0645\u0646 \u0642\u0627\u062f\u0631 \u0628\u0647 \u062a\u0646\u0638\u06cc\u0645 \u062e\u0648\u0634\u0647 \u0647\u0627\u06cc \u062a\u0627\u0632\u0647 \u060c \u0628\u0627 \u0647\u062a\u0632\u0646\u0631 \u06cc\u0627 \u0647\u0631 \u0686\u06cc\u0632 \u062f\u06cc\u06af\u0631\u06cc \u062f\u0631 7 \u062f\u0642\u06cc\u0642\u0647 \u0627\u0633\u062a. \u0634\u0631\u0648\u0639 \u0627\u0632 \u0646\u0635\u0628 K3s \u06af\u0631\u0641\u062a\u0647 \u062a\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0627\u0632 \u0637\u0631\u06cc\u0642 \u062a\u0648\u0646\u0644 Cloudflare \u06cc\u0627 Tailscale Tailnet. \u0635\u0627\u062f\u0642\u0627\u0646\u0647 \u0628\u06af\u0648\u06cc\u0645 \u0645\u0646 \u0648\u0627\u0642\u0639\u0627\u064b \u0627\u0632 \u0646\u062a\u06cc\u062c\u0647 \u0627\u06cc\u0646 \u062a\u0645\u0631\u06cc\u0646 \u0631\u0627\u0636\u06cc \u0647\u0633\u062a\u0645. \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u06cc\u06a9 \u062e\u0648\u0634\u0647 \u0637\u0648\u0644\u0627\u0646\u06cc \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u062e\u0648\u062f \u0645\u06cc\u0632\u0628\u0627\u0646 \u0645\u0646. \u0645\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u0645 \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u060c \u0633\u0631\u06cc\u0639 \u0648 \u0628\u0627 \u0647\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u06a9\u0645 \u0646\u0633\u062e\u0647 \u0647\u0627\u06cc \u062c\u062f\u06cc\u062f ARGOCD \u0631\u0627 \u0622\u0632\u0645\u0627\u06cc\u0634 \u06a9\u0646\u0645 \u060c \u06cc\u0627 <code>smb-driver<\/code> \u0627\u067e\u0631\u0627\u062a\u0648\u0631 \u060c \u0628\u062f\u0648\u0646 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0647 \u062a\u0646\u0638\u06cc\u0645 \u0641\u0639\u0644\u06cc \u0645\u0646 \u0622\u0633\u06cc\u0628 \u0628\u0631\u0633\u0627\u0646\u062f! \u0648 \u0627\u06cc\u0646 \u0639\u0627\u0644\u06cc \u0627\u0633\u062a \u060c \u0635\u0627\u062f\u0642\u0627\u0646\u0647 \u0628\u06af\u0648\u06cc\u0645. \u0628\u0647 \u062e\u0635\u0648\u0635 \u0628\u0631\u0627\u06cc \u062e\u0648\u062f \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u060c \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u0646\u062f \u062e\u0648\u0628 \u0627\u0633\u062a <code>production mode<\/code>\u060c \u062d\u062a\u06cc \u0627\u06af\u0631 \u0641\u0642\u0637 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0627\u06cc\u0646 \u062a\u06a9\u0631\u0627\u0631 \u0628\u0639\u062f\u06cc \u0645\u0647\u0627\u062c\u0631\u062a &#8220;5 \u0635\u0628\u062d \u0628\u0627\u0634\u06af\u0627\u0647&#8221; \u0627\u0633\u062a. \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0633\u0627\u06cc\u0631 \u0646\u0648\u0634\u062a\u0647 \u0647\u0627\u06cc \u0645\u0646\u062a\u0634\u0631 \u0634\u062f\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0633\u0631\u06cc\u0627\u0644 \u0628\u0647 \u06cc\u0627\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u060c \u0645\u0646 \u0631\u0648\u0632\u0627\u0646\u0647 \u0628\u0627 Kubernetes \u0628\u0627\u0632\u06cc \u06a9\u0631\u062f\u0645. \u0646\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a \u0631\u0648\u0632\u0627\u0646\u0647 \u060c \u0628\u0644\u06a9\u0647 \u0628\u0647 \u0645\u0639\u0646\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u06a9\u0644\u0645\u0647 \u0647\u0631 \u0631\u0648\u0632. \u0635\u0627\u062f\u0642\u0627\u0646\u0647 \u0628\u06af\u0648\u06cc\u0645 \u060c \u0645\u0646 \u0627\u0632 \u0646\u062a\u0627\u06cc\u062c \u0628\u0633\u06cc\u0627\u0631 \u062e\u0648\u0634\u062d\u0627\u0644\u0645. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":106131,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-106130","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/106130","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=106130"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/106130\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/106131"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=106130"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=106130"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=106130"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}