{"id":78641,"date":"2024-10-01T06:30:51","date_gmt":"2024-10-01T03:00:51","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/local-kubernetes-cluster-external-traffic-without-ingress-using-kftray-2n66\/"},"modified":"2024-10-01T06:30:51","modified_gmt":"2024-10-01T03:00:51","slug":"local-kubernetes-cluster-external-traffic-without-ingress-using-kftray-2n66","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/local-kubernetes-cluster-external-traffic-without-ingress-using-kftray-2n66\/","title":{"rendered":"\u062e\u0648\u0634\u0647 \u0645\u062d\u0644\u06cc Kubernetes &#8211; \u062a\u0631\u0627\u0641\u06cc\u06a9 \u062e\u0627\u0631\u062c\u06cc \u0628\u062f\u0648\u0646 \u0648\u0631\u0648\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Kftray"},"content":{"rendered":"<div data-article-id=\"2021188\" id=\"article-body\">\n<p><\/p>\n<p>\u0633\u0644\u0627\u0645. \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a\u060c \u0645\u0646 \u0628\u0647 \u0634\u0645\u0627 \u0646\u0634\u0627\u0646 \u062e\u0648\u0627\u0647\u0645 \u062f\u0627\u062f \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u06cc\u06a9 \u062e\u0648\u0634\u0647 \u0645\u062d\u0644\u06cc Kubernetes \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Kind\u060c Terraform \u0648 Kftray \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f. \u0645\u0627 \u0647\u0645\u0647 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u062f\u0627\u062e\u0644 \u062e\u0648\u0634\u0647 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u06cc\u0645\u060c \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06a9\u0646\u062a\u0631\u0644\u200c\u06a9\u0646\u0646\u062f\u0647\u200c\u0647\u0627\u06cc \u0648\u0631\u0648\u062f\u06cc \u06cc\u0627 \u0627\u0641\u0634\u0627\u06cc \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f NodePort \u06cc\u0627 LoadBalancer. \u0645\u0646 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0634\u0645\u0627 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u06a9\u062f Terraform \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u062e\u0648\u0627\u0647\u0645 \u06a9\u0631\u062f.<\/p>\n<p>\u06a9\u062f Terraform \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a \u0648\u0628\u0644\u0627\u06af: https:\/\/github.com\/hcavarsan\/kftray-k8s-tf-example<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 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=\"\u062a\u063a\u06cc\u06cc\u0631 \u0648\u0636\u0639\u06cc\u062a \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628\"><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\/local-kubernetes-cluster-external-traffic-without-ingress-using-kftray-2n66\/#%DA%86%D8%B1%D8%A7_%D8%AE%D8%AF%D9%85%D8%A7%D8%AA_%D8%B1%D8%A7_%D8%AF%D8%B1_%D8%AF%D8%A7%D8%AE%D9%84_%D8%AE%D9%88%D8%B4%D9%87_%D9%86%DA%AF%D9%87_%D8%AF%D8%A7%D8%B1%DB%8C%D8%AF%D8%9F\" >\u0686\u0631\u0627 \u062e\u062f\u0645\u0627\u062a \u0631\u0627 \u062f\u0631 \u062f\u0627\u062e\u0644 \u062e\u0648\u0634\u0647 \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u062f\u061f<\/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\/local-kubernetes-cluster-external-traffic-without-ingress-using-kftray-2n66\/#%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1%D9%87%D8%A7%DB%8C%DB%8C_%DA%A9%D9%87_%D9%86%DB%8C%D8%A7%D8%B2_%D8%AF%D8%A7%D8%B1%DB%8C%D8%AF\" >\u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f<\/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\/local-kubernetes-cluster-external-traffic-without-ingress-using-kftray-2n66\/#%D8%B4%D8%A8%DB%8C%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D9%85%D8%AE%D8%B2%D9%86\" >\u0634\u0628\u06cc\u0647 \u0633\u0627\u0632\u06cc \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-4\" href=\"https:\/\/nabfollower.com\/blog\/local-kubernetes-cluster-external-traffic-without-ingress-using-kftray-2n66\/#%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C_%D8%A8%D8%A7_%DA%A9%D8%AF_Terraform\" >\u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u06a9\u062f Terraform<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/local-kubernetes-cluster-external-traffic-without-ingress-using-kftray-2n66\/#%D8%B3%D8%A7%D8%AE%D8%AA%D8%A7%D8%B1_%D9%BE%D8%B1%D9%88%DA%98%D9%87\" >\u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0631\u0648\u0698\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/local-kubernetes-cluster-external-traffic-without-ingress-using-kftray-2n66\/#providerstf\" >providers.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/local-kubernetes-cluster-external-traffic-without-ingress-using-kftray-2n66\/#%D9%85%D8%AA%D8%BA%DB%8C%D8%B1%D9%87%D8%A7tf\" >\u0645\u062a\u063a\u06cc\u0631\u0647\u0627.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/local-kubernetes-cluster-external-traffic-without-ingress-using-kftray-2n66\/#kindtf\" >kind.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/local-kubernetes-cluster-external-traffic-without-ingress-using-kftray-2n66\/#localstf\" >locals.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/local-kubernetes-cluster-external-traffic-without-ingress-using-kftray-2n66\/#helmtf\" >helm.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/local-kubernetes-cluster-external-traffic-without-ingress-using-kftray-2n66\/#%D9%82%D8%A7%D9%84%D8%A8_%D9%87%D8%A7\" >\u0642\u0627\u0644\u0628 \u0647\u0627\/<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/local-kubernetes-cluster-external-traffic-without-ingress-using-kftray-2n66\/#%D8%AE%D8%B1%D9%88%D8%AC%DB%8C_%D9%87%D8%A7tf\" >\u062e\u0631\u0648\u062c\u06cc \u0647\u0627.tf<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/local-kubernetes-cluster-external-traffic-without-ingress-using-kftray-2n66\/#%D8%A7%D8%B9%D9%85%D8%A7%D9%84_%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_Terraform\" >\u0627\u0639\u0645\u0627\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Terraform<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/nabfollower.com\/blog\/local-kubernetes-cluster-external-traffic-without-ingress-using-kftray-2n66\/#%D9%86%D8%B5%D8%A8_%DA%A9%D9%81%D8%AA%D8%B1%D8%A7%DB%8C\" >\u0646\u0635\u0628 \u06a9\u0641\u062a\u0631\u0627\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/nabfollower.com\/blog\/local-kubernetes-cluster-external-traffic-without-ingress-using-kftray-2n66\/#%D9%88%D8%A7%D8%B1%D8%AF_%DA%A9%D8%B1%D8%AF%D9%86_%D8%AA%D9%86%D8%B8%DB%8C%D9%85%D8%A7%D8%AA_Port-Forward_%D8%A8%D9%87_Kftray\" >\u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a Port-Forward \u0628\u0647 Kftray<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/nabfollower.com\/blog\/local-kubernetes-cluster-external-traffic-without-ingress-using-kftray-2n66\/#%D8%A8%D8%A7_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_Kftray_GUI\" >\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Kftray GUI<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/nabfollower.com\/blog\/local-kubernetes-cluster-external-traffic-without-ingress-using-kftray-2n66\/#%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_Kftui_%D8%B1%D8%A7%D8%A8%D8%B7_%D8%AA%D8%B1%D9%85%DB%8C%D9%86%D8%A7%D9%84\" >\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Kftui (\u0631\u0627\u0628\u0637 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/nabfollower.com\/blog\/local-kubernetes-cluster-external-traffic-without-ingress-using-kftray-2n66\/#%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C_%D8%A8%D9%87_%D8%AE%D8%AF%D9%85%D8%A7%D8%AA_%D8%AE%D9%88%D8%AF_%D8%A8%D9%87_%D8%B5%D9%88%D8%B1%D8%AA_%D9%85%D8%AD%D9%84%DB%8C\" >\u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u062e\u062f\u0645\u0627\u062a \u062e\u0648\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/nabfollower.com\/blog\/local-kubernetes-cluster-external-traffic-without-ingress-using-kftray-2n66\/#%D8%AA%D9%86%D8%B8%DB%8C%D9%85%D8%A7%D8%AA_%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%DB%8C_Kftray\" >\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0633\u0641\u0627\u0631\u0634\u06cc Kftray<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/nabfollower.com\/blog\/local-kubernetes-cluster-external-traffic-without-ingress-using-kftray-2n66\/#%D8%AA%D9%86%D8%B8%DB%8C%D9%85_%D8%AA%D9%86%D8%B8%DB%8C%D9%85%D8%A7%D8%AA_%D8%AD%D9%85%D9%84_%D9%88_%D9%86%D9%82%D9%84_%D9%BE%D9%88%D8%B1%D8%AA_Kftray\" >\u062a\u0646\u0638\u06cc\u0645 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062d\u0645\u0644 \u0648 \u0646\u0642\u0644 \u067e\u0648\u0631\u062a Kftray<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/nabfollower.com\/blog\/local-kubernetes-cluster-external-traffic-without-ingress-using-kftray-2n66\/#%D8%AA%D9%85%DB%8C%D8%B2_%DA%A9%D8%B1%D8%AF%D9%86\" >\u062a\u0645\u06cc\u0632 \u06a9\u0631\u062f\u0646<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/nabfollower.com\/blog\/local-kubernetes-cluster-external-traffic-without-ingress-using-kftray-2n66\/#%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\" >\u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%DA%86%D8%B1%D8%A7_%D8%AE%D8%AF%D9%85%D8%A7%D8%AA_%D8%B1%D8%A7_%D8%AF%D8%B1_%D8%AF%D8%A7%D8%AE%D9%84_%D8%AE%D9%88%D8%B4%D9%87_%D9%86%DA%AF%D9%87_%D8%AF%D8%A7%D8%B1%DB%8C%D8%AF%D8%9F\"><\/span>\n<p>  \u0686\u0631\u0627 \u062e\u062f\u0645\u0627\u062a \u0631\u0627 \u062f\u0631 \u062f\u0627\u062e\u0644 \u062e\u0648\u0634\u0647 \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u062f\u061f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u0631\u0627\u0626\u0647 \u062e\u062f\u0645\u0627\u062a \u0628\u0647 \u0635\u0648\u0631\u062a \u062e\u0627\u0631\u062c\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u0648 \u062e\u0637\u0631\u0627\u062a \u0627\u0645\u0646\u06cc\u062a\u06cc \u0628\u0627\u0644\u0642\u0648\u0647 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u062f. \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0645\u062d\u0644\u06cc \u06cc\u0627 \u0645\u062d\u06cc\u0637 \u0647\u0627\u06cc \u0627\u0645\u0646\u060c \u0627\u063a\u0644\u0628 \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0631\u0627 \u062f\u0627\u062e\u0644\u06cc \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u062f. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>kubectl port-forward<\/code> \u0648 \u0628\u0627 \u062e\u0648\u062f\u06a9\u0627\u0631\u0633\u0627\u0632\u06cc \u0622\u0646 \u0628\u0627 Kftray\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0647 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0631 \u062f\u0627\u062e\u0644 \u062e\u0648\u0634\u0647 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645\u060c \u0628\u062f\u0648\u0646 \u0627\u06cc\u0646\u06a9\u0647 \u0622\u0646\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0645\u0639\u0631\u0636 \u062f\u0646\u06cc\u0627\u06cc \u062e\u0627\u0631\u062c \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u0645.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1%D9%87%D8%A7%DB%8C%DB%8C_%DA%A9%D9%87_%D9%86%DB%8C%D8%A7%D8%B2_%D8%AF%D8%A7%D8%B1%DB%8C%D8%AF\"><\/span>\n<p>  \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0642\u0628\u0644 \u0627\u0632 \u0634\u0631\u0648\u0639\u060c \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f:<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B4%D8%A8%DB%8C%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D9%85%D8%AE%D8%B2%D9%86\"><\/span>\n<p>  \u0634\u0628\u06cc\u0647 \u0633\u0627\u0632\u06cc \u0645\u062e\u0632\u0646<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u0628\u062a\u062f\u0627 \u0645\u062e\u0632\u0646 \u062d\u0627\u0648\u06cc \u06a9\u062f Terraform \u0631\u0627 \u06a9\u0644\u0648\u0646 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>git clone https:\/\/github.com\/hcavarsan\/kftray-k8s-tf-example\n<span class=\"nb\">cd <\/span>kftray-k8s-tf-example\/terraform\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>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\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<h2><span class=\"ez-toc-section\" id=\"%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C_%D8%A8%D8%A7_%DA%A9%D8%AF_Terraform\"><\/span>\n<p>  \u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u06a9\u062f Terraform<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u06a9\u062f Terraform \u062f\u0631 \u0627\u06cc\u0646 \u0645\u062e\u0632\u0646 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<ul>\n<li>\u06cc\u06a9 \u062e\u0648\u0634\u0647 Kind Kubernetes \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc Helm \u0631\u0627 \u0628\u0631\u0627\u06cc Argo CD\u060c Prometheus\u060c Alertmanager\u060c Grafana \u0648 Jaeger \u0628\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u0628\u0631\u062f.<\/li>\n<li>\u062d\u0627\u0634\u06cc\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0647\u0627\u06cc \u0633\u0631\u0648\u06cc\u0633 \u0631\u0627 \u0628\u0631\u0627\u06cc Kftray \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u067e\u0648\u0631\u062a \u0641\u0648\u0631\u0648\u0627\u0631\u062f \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0648\u0627\u0631\u062f \u06a9\u0646\u062f.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B3%D8%A7%D8%AE%D8%AA%D8%A7%D8%B1_%D9%BE%D8%B1%D9%88%DA%98%D9%87\"><\/span>\n<p>  \u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0631\u0648\u0698\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u0633\u0627\u0632\u0645\u0627\u0646\u062f\u0647\u06cc \u067e\u0631\u0648\u0698\u0647 \u0622\u0645\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>kftray-k8s-tf-example\n\u251c\u2500\u2500 terraform\n\u2502   \u251c\u2500\u2500 helm.tf\n\u2502   \u251c\u2500\u2500 outputs.tf\n\u2502   \u251c\u2500\u2500 locals.tf\n\u2502   \u251c\u2500\u2500 providers.tf\n\u2502   \u251c\u2500\u2500 variables.tf\n\u2502   \u251c\u2500\u2500 templates\n\u2502   \u2502   \u251c\u2500\u2500 argocd-values.yaml.tpl\n\u2502   \u2502   \u251c\u2500\u2500 grafana-values.yaml.tpl\n\u2502   \u2502   \u251c\u2500\u2500 jaeger-values.yaml.tpl\n\u2502   \u2502   \u2514\u2500\u2500 prometheus-values.yaml.tpl\n\u2502   \u2514\u2500\u2500 kind.tf\n\u251c\u2500\u2500 Makefile\n\u251c\u2500\u2500 docs\n\u2502   \u251c\u2500\u2500 kftray.gif\n\u2502   \u2514\u2500\u2500 kftui.gif\n\u2514\u2500\u2500 README.md\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>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\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<h3><span class=\"ez-toc-section\" id=\"providerstf\"><\/span>\n<p>  providers.tf<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 Terraform \u0631\u0627 \u06a9\u0647 \u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">terraform<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">required_version<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"&gt;= 1.0.0\"<\/span>\n\n  <span class=\"nx\">required_providers<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">kind<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">source<\/span>  <span class=\"p\">=<\/span> <span class=\"s2\">\"tehcyx\/kind\"<\/span>\n      <span class=\"nx\">version<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"0.4.0\"<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"nx\">helm<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">source<\/span>  <span class=\"p\">=<\/span> <span class=\"s2\">\"hashicorp\/helm\"<\/span>\n      <span class=\"nx\">version<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"&gt;= 2.0.0\"<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"nx\">kubernetes<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">source<\/span>  <span class=\"p\">=<\/span> <span class=\"s2\">\"hashicorp\/kubernetes\"<\/span>\n      <span class=\"nx\">version<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"&gt;= 2.0.0\"<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"nx\">template<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">source<\/span>  <span class=\"p\">=<\/span> <span class=\"s2\">\"hashicorp\/template\"<\/span>\n      <span class=\"nx\">version<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"&gt;= 2.0.0\"<\/span>\n    <span class=\"p\">}<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">provider<\/span> <span class=\"s2\">\"kind\"<\/span> <span class=\"p\">{<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">provider<\/span> <span class=\"s2\">\"kubernetes\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">config_path<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">kind_cluster<\/span><span class=\"p\">.<\/span><span class=\"nx\">default<\/span><span class=\"p\">.<\/span><span class=\"nx\">kubeconfig_path<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">provider<\/span> <span class=\"s2\">\"helm\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">kubernetes<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">config_path<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">kind_cluster<\/span><span class=\"p\">.<\/span><span class=\"nx\">default<\/span><span class=\"p\">.<\/span><span class=\"nx\">kubeconfig_path<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/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>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\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<ul>\n<li>\n<strong>\u0645\u0647\u0631\u0628\u0627\u0646<\/strong>: \u062e\u0648\u0634\u0647 \u0647\u0627\u06cc Kind \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\n<strong>\u06a9\u0648\u0628\u0631\u0646\u062a\u0633<\/strong>: \u0628\u0627 \u062e\u0648\u0634\u0647 Kubernetes \u062a\u0639\u0627\u0645\u0644 \u062f\u0627\u0631\u062f.<\/li>\n<li>\n<strong>\u0633\u06a9\u0627\u0646<\/strong>: \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc Helm \u0631\u0627 \u0645\u0633\u062a\u0642\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\n<strong>\u0642\u0627\u0644\u0628<\/strong>: \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0642\u0627\u0644\u0628 \u0631\u0627 \u067e\u0631\u062f\u0627\u0632\u0634 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%AA%D8%BA%DB%8C%D8%B1%D9%87%D8%A7tf\"><\/span>\n<p>  \u0645\u062a\u063a\u06cc\u0631\u0647\u0627.tf<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Terraform \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">variable<\/span> <span class=\"s2\">\"cluster_name\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"Name of the Kind cluster\"<\/span>\n  <span class=\"nx\">type<\/span>        <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n  <span class=\"nx\">default<\/span>     <span class=\"p\">=<\/span> <span class=\"s2\">\"kftray-cluster\"<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"kubernetes_version\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"Version of the Kind node image\"<\/span>\n  <span class=\"nx\">type<\/span>        <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n  <span class=\"nx\">default<\/span>     <span class=\"p\">=<\/span> <span class=\"s2\">\"v1.30.4\"<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"kubeconfig_dir\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"Directory to store the kubeconfig file\"<\/span>\n  <span class=\"nx\">type<\/span>        <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n  <span class=\"nx\">default<\/span>     <span class=\"p\">=<\/span> <span class=\"s2\">\"~\/.kube\"<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"c1\"># Chart versions<\/span>\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"argocd_chart_version\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"Version of the Argo CD Helm chart\"<\/span>\n  <span class=\"nx\">type<\/span>        <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n  <span class=\"nx\">default<\/span>     <span class=\"p\">=<\/span> <span class=\"s2\">\"5.19.12\"<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"prometheus_chart_version\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"The version of the Prometheus chart to deploy.\"<\/span>\n  <span class=\"nx\">type<\/span>        <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n  <span class=\"nx\">default<\/span>     <span class=\"p\">=<\/span> <span class=\"s2\">\"25.27.0\"<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"grafana_chart_version\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"The version of the Grafana chart to deploy.\"<\/span>\n  <span class=\"nx\">type<\/span>        <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n  <span class=\"nx\">default<\/span>     <span class=\"p\">=<\/span> <span class=\"s2\">\"8.5.0\"<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"jaeger_chart_version\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"The version of the Jaeger chart to deploy.\"<\/span>\n  <span class=\"nx\">type<\/span>        <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n  <span class=\"nx\">default<\/span>     <span class=\"p\">=<\/span> <span class=\"s2\">\"3.3.1\"<\/span>\n<span class=\"p\">}<\/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>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\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<h3><span class=\"ez-toc-section\" id=\"kindtf\"><\/span>\n<p>  kind.tf<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062e\u0648\u0634\u0647 Kind \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">resource<\/span> <span class=\"s2\">\"kind_cluster\"<\/span> <span class=\"s2\">\"default\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">name<\/span>            <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">cluster_name<\/span>\n  <span class=\"nx\">node_image<\/span>      <span class=\"p\">=<\/span> <span class=\"s2\">\"kindest\/node:${var.kubernetes_version}\"<\/span>\n  <span class=\"nx\">kubeconfig_path<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">pathexpand<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"${var.kubeconfig_dir}\/kind-config-${var.cluster_name}\"<\/span><span class=\"p\">)<\/span>\n  <span class=\"nx\">wait_for_ready<\/span>  <span class=\"p\">=<\/span> <span class=\"kc\">true<\/span>\n\n  <span class=\"nx\">kind_config<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">kind<\/span>        <span class=\"p\">=<\/span> <span class=\"s2\">\"Cluster\"<\/span>\n    <span class=\"nx\">api_version<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"kind.x-k8s.io\/v1alpha4\"<\/span>\n\n    <span class=\"nx\">node<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">role<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"control-plane\"<\/span>\n\n      <span class=\"nx\">extra_port_mappings<\/span> <span class=\"p\">{<\/span>\n        <span class=\"nx\">container_port<\/span> <span class=\"p\">=<\/span> <span class=\"mi\">80<\/span>\n        <span class=\"nx\">host_port<\/span>      <span class=\"p\">=<\/span> <span class=\"mi\">80<\/span>\n        <span class=\"nx\">protocol<\/span>       <span class=\"p\">=<\/span> <span class=\"s2\">\"TCP\"<\/span>\n      <span class=\"p\">}<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"nx\">node<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">role<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"worker\"<\/span>\n    <span class=\"p\">}<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/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>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\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<ul>\n<li>\n<strong>\u0646\u0627\u0645<\/strong>: \u0646\u0627\u0645 \u062e\u0648\u0634\u0647.<\/li>\n<li>\n<strong>node_image<\/strong>: \u0646\u0633\u062e\u0647 Kubernetes.<\/li>\n<li>\n<strong>kubeconfig_path<\/strong>: \u0645\u062d\u0644 \u0630\u062e\u06cc\u0631\u0647 \u0641\u0627\u06cc\u0644 kubeconfig.<\/li>\n<li>\n<strong>\u0645\u0646\u062a\u0638\u0631_\u0628\u0631\u0627\u06cc_\u0622\u0645\u0627\u062f\u0647<\/strong>: \u0635\u0628\u0631 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u062e\u0648\u0634\u0647 \u0622\u0645\u0627\u062f\u0647 \u0634\u0648\u062f.<\/li>\n<li>\n<strong>kind_config<\/strong>: \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0646\u0648\u0639 \u0633\u0641\u0627\u0631\u0634\u06cc.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"localstf\"><\/span>\n<p>  locals.tf<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u062d\u0644\u06cc \u0648 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0633\u0631\u0648\u06cc\u0633 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">locals<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">services<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">argocd<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">namespace<\/span>  <span class=\"p\">=<\/span> <span class=\"s2\">\"argocd\"<\/span>\n      <span class=\"nx\">repository<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"https:\/\/argoproj.github.io\/argo-helm\"<\/span>\n      <span class=\"nx\">chart<\/span>      <span class=\"p\">=<\/span> <span class=\"s2\">\"argo-cd\"<\/span>\n      <span class=\"nx\">version<\/span>    <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">argocd_chart_version<\/span>\n      <span class=\"nx\">kftray<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\n        <span class=\"nx\">server<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\n          <span class=\"nx\">alias<\/span>       <span class=\"p\">=<\/span> <span class=\"s2\">\"argocd\"<\/span>\n          <span class=\"nx\">local_port<\/span>  <span class=\"p\">=<\/span> <span class=\"s2\">\"16080\"<\/span>\n          <span class=\"nx\">target_port<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"http\"<\/span>\n        <span class=\"p\">}<\/span>\n      <span class=\"p\">}<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"c1\"># ... other services ...<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"nx\">services_values<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">for<\/span> <span class=\"nx\">service_name<\/span><span class=\"p\">,<\/span> <span class=\"nx\">service<\/span> <span class=\"nx\">in<\/span> <span class=\"nx\">local<\/span><span class=\"p\">.<\/span><span class=\"nx\">services<\/span> <span class=\"err\">:<\/span>\n    <span class=\"nx\">service_name<\/span> <span class=\"p\">=<\/span><span class=\"err\">&gt;<\/span> <span class=\"nx\">templatefile<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"${path.module}\/templates\/${service_name}-values.yaml.tpl\"<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">kftray<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">service<\/span><span class=\"p\">.<\/span><span class=\"nx\">kftray<\/span>\n    <span class=\"p\">})<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/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>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\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<ul>\n<li>\n<strong>\u062e\u062f\u0645\u0627\u062a<\/strong>: \u0646\u0642\u0634\u0647 \u0627\u06cc \u0627\u0632 \u062e\u062f\u0645\u0627\u062a \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631.<\/li>\n<li>\n<strong>\u0643\u0641\u062a\u0631\u0627\u064a<\/strong>: \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u067e\u0648\u0631\u062a \u0641\u0648\u0631\u0648\u0627\u0631\u062f \u0628\u0631\u0627\u06cc Kftray.<\/li>\n<li>\n<strong>\u062e\u062f\u0645\u0627\u062a_\u0627\u0631\u0632\u0634 \u0647\u0627<\/strong>: \u0627\u0644\u06af\u0648\u0647\u0627\u06cc \u0645\u0642\u0627\u062f\u06cc\u0631 Helm \u0631\u0627 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0633\u0631\u0648\u06cc\u0633 \u067e\u0631\u062f\u0627\u0632\u0634 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"helmtf\"><\/span>\n<p>  helm.tf<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062e\u062f\u0645\u0627\u062a \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Helm \u0645\u0633\u062a\u0642\u0631 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">resource<\/span> <span class=\"s2\">\"helm_release\"<\/span> <span class=\"s2\">\"services\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">depends_on<\/span> <span class=\"p\">=<\/span> <span class=\"p\">[<\/span><span class=\"nx\">kind_cluster<\/span><span class=\"p\">.<\/span><span class=\"nx\">default<\/span><span class=\"p\">]<\/span>\n  <span class=\"nx\">for_each<\/span>         <span class=\"p\">=<\/span> <span class=\"nx\">local<\/span><span class=\"p\">.<\/span><span class=\"nx\">services<\/span>\n  <span class=\"nx\">name<\/span>             <span class=\"p\">=<\/span> <span class=\"nx\">each<\/span><span class=\"p\">.<\/span><span class=\"nx\">key<\/span>\n  <span class=\"nx\">namespace<\/span>        <span class=\"p\">=<\/span> <span class=\"nx\">each<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"p\">.<\/span><span class=\"nx\">namespace<\/span>\n  <span class=\"nx\">create_namespace<\/span> <span class=\"p\">=<\/span> <span class=\"kc\">true<\/span>\n  <span class=\"nx\">repository<\/span>       <span class=\"p\">=<\/span> <span class=\"nx\">each<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"p\">.<\/span><span class=\"nx\">repository<\/span>\n  <span class=\"nx\">chart<\/span>            <span class=\"p\">=<\/span> <span class=\"nx\">each<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"p\">.<\/span><span class=\"nx\">chart<\/span>\n  <span class=\"nx\">version<\/span>          <span class=\"p\">=<\/span> <span class=\"nx\">each<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"p\">.<\/span><span class=\"nx\">version<\/span>\n\n  <span class=\"nx\">values<\/span> <span class=\"p\">=<\/span> <span class=\"p\">[<\/span>\n    <span class=\"nx\">local<\/span><span class=\"p\">.<\/span><span class=\"nx\">services_values<\/span><span class=\"p\">[<\/span><span class=\"nx\">each<\/span><span class=\"p\">.<\/span><span class=\"nx\">key<\/span><span class=\"p\">]<\/span>\n  <span class=\"p\">]<\/span>\n<span class=\"p\">}<\/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>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\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<ul>\n<li>\n<strong>\u0628\u0631\u0627\u06cc_\u0647\u0631 \u06a9\u062f\u0627\u0645<\/strong>: \u0631\u0648\u06cc \u0647\u0631 \u0633\u0631\u0648\u06cc\u0633 \u062a\u06a9\u0631\u0627\u0631 \u0645\u06cc \u0634\u0648\u062f.<\/li>\n<li>\n<strong>\u0646\u0627\u0645<\/strong>: \u0646\u0627\u0645 \u0627\u0646\u062a\u0634\u0627\u0631.<\/li>\n<li>\n<strong>\u0641\u0636\u0627\u06cc \u0646\u0627\u0645<\/strong>: \u0641\u0636\u0627\u06cc \u0646\u0627\u0645 Kubernetes.<\/li>\n<li>\n<strong>\u0645\u062e\u0632\u0646<\/strong>: \u0645\u062e\u0632\u0646 \u0646\u0645\u0648\u062f\u0627\u0631 \u0647\u0644\u0645.<\/li>\n<li>\n<strong>\u0646\u0645\u0648\u062f\u0627\u0631<\/strong>: \u0646\u0627\u0645 \u0646\u0645\u0648\u062f\u0627\u0631 \u0647\u0644\u0645.<\/li>\n<li>\n<strong>\u0646\u0633\u062e\u0647<\/strong>: \u0646\u0633\u062e\u0647 \u0646\u0645\u0648\u062f\u0627\u0631.<\/li>\n<li>\n<strong>\u0627\u0631\u0632\u0634 \u0647\u0627<\/strong>: \u0645\u0642\u0627\u062f\u06cc\u0631 \u0633\u0641\u0627\u0631\u0634\u06cc \u0628\u0631\u0627\u06cc \u0646\u0645\u0648\u062f\u0627\u0631 Helm.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%D9%82%D8%A7%D9%84%D8%A8_%D9%87%D8%A7\"><\/span>\n<p>  \u0642\u0627\u0644\u0628 \u0647\u0627\/<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062d\u0627\u0648\u06cc \u0627\u0644\u06af\u0648\u0647\u0627\u06cc \u0645\u0642\u0627\u062f\u06cc\u0631 Helm \u0628\u0631\u0627\u06cc \u0647\u0631 \u0633\u0631\u0648\u06cc\u0633 (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c <code>argocd-values.yaml.tpl<\/code>). \u0627\u06cc\u0646 \u0642\u0627\u0644\u0628 \u0647\u0627 \u062d\u0627\u0634\u06cc\u0647 \u0646\u0648\u06cc\u0633\u06cc Kftray \u0631\u0627 \u0628\u0647 \u062a\u0639\u0627\u0631\u06cc\u0641 \u0633\u0631\u0648\u06cc\u0633 \u062a\u0632\u0631\u06cc\u0642 \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AE%D8%B1%D9%88%D8%AC%DB%8C_%D9%87%D8%A7tf\"><\/span>\n<p>  \u062e\u0631\u0648\u062c\u06cc \u0647\u0627.tf<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062e\u0631\u0648\u062c\u06cc \u0647\u0627 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc Terraform \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">output<\/span> <span class=\"s2\">\"endpoint\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"API endpoint for the Kind cluster.\"<\/span>\n  <span class=\"nx\">value<\/span>       <span class=\"p\">=<\/span> <span class=\"nx\">kind_cluster<\/span><span class=\"p\">.<\/span><span class=\"nx\">default<\/span><span class=\"p\">.<\/span><span class=\"nx\">endpoint<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">output<\/span> <span class=\"s2\">\"kubeconfig\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"Kubeconfig file for the Kind cluster.\"<\/span>\n  <span class=\"nx\">value<\/span>       <span class=\"p\">=<\/span> <span class=\"nx\">kind_cluster<\/span><span class=\"p\">.<\/span><span class=\"nx\">default<\/span><span class=\"p\">.<\/span><span class=\"nx\">kubeconfig<\/span>\n  <span class=\"nx\">sensitive<\/span>   <span class=\"p\">=<\/span> <span class=\"kc\">true<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">output<\/span> <span class=\"s2\">\"credentials\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"Credentials for authenticating with the Kind cluster.\"<\/span>\n  <span class=\"nx\">value<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">client_certificate<\/span>     <span class=\"p\">=<\/span> <span class=\"nx\">kind_cluster<\/span><span class=\"p\">.<\/span><span class=\"nx\">default<\/span><span class=\"p\">.<\/span><span class=\"nx\">client_certificate<\/span>\n    <span class=\"nx\">client_key<\/span>             <span class=\"p\">=<\/span> <span class=\"nx\">kind_cluster<\/span><span class=\"p\">.<\/span><span class=\"nx\">default<\/span><span class=\"p\">.<\/span><span class=\"nx\">client_key<\/span>\n    <span class=\"nx\">cluster_ca_certificate<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">kind_cluster<\/span><span class=\"p\">.<\/span><span class=\"nx\">default<\/span><span class=\"p\">.<\/span><span class=\"nx\">cluster_ca_certificate<\/span>\n  <span class=\"p\">}<\/span>\n  <span class=\"nx\">sensitive<\/span> <span class=\"p\">=<\/span> <span class=\"kc\">true<\/span>\n<span class=\"p\">}<\/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>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\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<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B9%D9%85%D8%A7%D9%84_%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_Terraform\"><\/span>\n<p>  \u0627\u0639\u0645\u0627\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Terraform<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0631\u0627\u06cc \u0627\u0639\u0645\u0627\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Terraform \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0644\u0627\u0633\u062a\u0631\u060c \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>make apply\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>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\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 \u062e\u0648\u0627\u0647\u062f \u0634\u062f:<\/p>\n<ul>\n<li>Terraform \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\u062e\u0648\u0634\u0647 Kind \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc Helm \u0631\u0627 \u0645\u0633\u062a\u0642\u0631 \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\u062d\u0627\u0634\u06cc\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0633\u0631\u0648\u06cc\u0633 \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D8%B5%D8%A8_%DA%A9%D9%81%D8%AA%D8%B1%D8%A7%DB%8C\"><\/span>\n<p>  \u0646\u0635\u0628 \u06a9\u0641\u062a\u0631\u0627\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0647 \u0635\u0641\u062d\u0647 Kftray GitHub \u0628\u0631\u0648\u06cc\u062f \u0648 \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u0647\u0627\u06cc \u0646\u0635\u0628 \u0633\u06cc\u0633\u062a\u0645 \u0639\u0627\u0645\u0644 \u062e\u0648\u062f \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%88%D8%A7%D8%B1%D8%AF_%DA%A9%D8%B1%D8%AF%D9%86_%D8%AA%D9%86%D8%B8%DB%8C%D9%85%D8%A7%D8%AA_Port-Forward_%D8%A8%D9%87_Kftray\"><\/span>\n<p>  \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a Port-Forward \u0628\u0647 Kftray<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A8%D8%A7_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_Kftray_GUI\"><\/span>\n<p>  \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Kftray GUI<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol>\n<li>Kftray \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0647 \u0648 \u0631\u0648\u06cc \u0646\u0645\u0627\u062f \u0633\u06cc\u0646\u06cc \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u067e\u0646\u062c\u0631\u0647 \u0627\u0635\u0644\u06cc \u0628\u0627\u0632 \u0634\u0648\u062f.<\/li>\n<li>\u0631\u0648\u06cc \u0646\u0645\u0627\u062f \u0645\u0646\u0648 \u062f\u0631 \u06af\u0648\u0634\u0647 \u0633\u0645\u062a \u0686\u067e \u067e\u0627\u06cc\u06cc\u0646 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f.<\/li>\n<li>&#8220;\u0648\u0627\u0631\u062f\u0627\u062a \u062e\u0648\u062f\u06a9\u0627\u0631&#8221; \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\u0631\u0648\u06cc &#8220;\u062a\u0646\u0638\u06cc\u0645 kubeconfig&#8221; \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f \u0648 \u0641\u0627\u06cc\u0644 kubeconfig \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 Terraform \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f (\u0645\u0639\u0645\u0648\u0644\u0627 <code>~\/.kube\/kind-config-kftray-cluster<\/code>).<\/li>\n<li>\u0632\u0645\u06cc\u0646\u0647 \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f <code>kftray-cluster<\/code> \u0627\u0632 \u0645\u0646\u0648\u06cc \u06a9\u0634\u0648\u06cc\u06cc<\/li>\n<li>\u0628\u0631\u0627\u06cc \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u067e\u0648\u0631\u062a \u0641\u0648\u0631\u0648\u0627\u0631\u062f \u0631\u0648\u06cc &#8220;\u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646&#8221; \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgkrvd71jre34vge7f7la.gif\" alt=\"\u0628\u0646\u0631 \u06a9\u0641\u062a\u0631\u06cc\" loading=\"lazy\" width=\"450\" height=\"500\" data-animated=\"true\" title=\"\"><\/p>\n<p>\u067e\u0633 \u0627\u0632 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u062c\u0627\u0628\u0647\u200c\u062c\u0627\u06cc\u06cc \u0633\u0648\u0626\u06cc\u0686 \u06a9\u0646\u0627\u0631 \u0647\u0631 \u0633\u0631\u0648\u06cc\u0633 \u06cc\u0627 \u0628\u0627 \u06a9\u0644\u06cc\u06a9 \u06a9\u0631\u062f\u0646 \u0631\u0648\u06cc \u00ab\u0634\u0631\u0648\u0639 \u0647\u0645\u0647\u00bb\u060c \u0627\u0646\u062a\u0642\u0627\u0644 \u067e\u0648\u0631\u062a \u0631\u0627 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_Kftui_%D8%B1%D8%A7%D8%A8%D8%B7_%D8%AA%D8%B1%D9%85%DB%8C%D9%86%D8%A7%D9%84\"><\/span>\n<p>  \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Kftui (\u0631\u0627\u0628\u0637 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644)<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol>\n<li>\u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f <code>KUBECONFIG<\/code> \u0645\u062a\u063a\u06cc\u0631 \u0645\u062d\u06cc\u0637\u06cc:\n<\/li>\n<\/ol>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>   <span class=\"nb\">export <\/span><span class=\"nv\">KUBECONFIG<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"~\/.kube\/kind-config-kftray-cluster\"<\/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>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\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<ol>\n<li>Kftui \u0631\u0627 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f:\n<\/li>\n<\/ol>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>   kftui\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>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\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<ol>\n<li>\u0631\u0627 \u0641\u0634\u0627\u0631 \u062f\u0647\u06cc\u062f <code>Tab<\/code> \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0645\u0646\u0648\u06cc \u0628\u0627\u0644\u0627 \u0648 \u0627\u0646\u062a\u062e\u0627\u0628 \u00ab\u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 \u062e\u0648\u062f\u06a9\u0627\u0631\u00bb<\/li>\n<li>\u0631\u0627 \u0641\u0634\u0627\u0631 \u062f\u0647\u06cc\u062f <code>Ctrl+A<\/code> \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u062a\u0645\u0627\u0645 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a<\/li>\n<li>\u0631\u0627 \u0641\u0634\u0627\u0631 \u062f\u0647\u06cc\u062f <code>F<\/code> \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u062a\u0645\u0627\u0645 \u067e\u0648\u0631\u062a \u0641\u0648\u0631\u0648\u0627\u0631\u062f.<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpj66296vgfaalg960mkk.gif\" alt=\"kftui\" loading=\"lazy\" width=\"854\" height=\"596\" data-animated=\"true\" title=\"\"><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C_%D8%A8%D9%87_%D8%AE%D8%AF%D9%85%D8%A7%D8%AA_%D8%AE%D9%88%D8%AF_%D8%A8%D9%87_%D8%B5%D9%88%D8%B1%D8%AA_%D9%85%D8%AD%D9%84%DB%8C\"><\/span>\n<p>  \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u062e\u062f\u0645\u0627\u062a \u062e\u0648\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u0648\u0631\u062a \u0641\u0648\u0631\u0648\u0627\u0631\u062f\u06cc\u0646\u06af\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u062e\u062f\u0645\u0627\u062a \u062e\u0648\u062f \u062f\u0631 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u062d\u0644\u06cc \u062e\u0648\u062f \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f:<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AA%D9%86%D8%B8%DB%8C%D9%85%D8%A7%D8%AA_%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%DB%8C_Kftray\"><\/span>\n<p>  \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0633\u0641\u0627\u0631\u0634\u06cc Kftray<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AA%D9%86%D8%B8%DB%8C%D9%85_%D8%AA%D9%86%D8%B8%DB%8C%D9%85%D8%A7%D8%AA_%D8%AD%D9%85%D9%84_%D9%88_%D9%86%D9%82%D9%84_%D9%BE%D9%88%D8%B1%D8%AA_Kftray\"><\/span>\n<p>  \u062a\u0646\u0638\u06cc\u0645 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062d\u0645\u0644 \u0648 \u0646\u0642\u0644 \u067e\u0648\u0631\u062a Kftray<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0631\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u06a9\u0631\u062f\u0646 \u0646\u062d\u0648\u0647 \u0627\u0631\u0633\u0627\u0644 \u067e\u0648\u0631\u062a \u0647\u0627\u06cc Kftray\u060c \u0622\u0646 \u0631\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f <code>locals.tf<\/code> \u0641\u0627\u06cc\u0644:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">locals<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">services<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">argocd<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">kftray<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\n        <span class=\"nx\">server<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\n          <span class=\"nx\">alias<\/span>       <span class=\"p\">=<\/span> <span class=\"s2\">\"argocd\"<\/span>\n          <span class=\"nx\">local_port<\/span>  <span class=\"p\">=<\/span> <span class=\"s2\">\"16080\"<\/span>\n          <span class=\"nx\">target_port<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"http\"<\/span>\n        <span class=\"p\">}<\/span>\n      <span class=\"p\">}<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"c1\"># Other services...<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/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>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\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<ul>\n<li>\n<strong>\u0646\u0627\u0645 \u0645\u0633\u062a\u0639\u0627\u0631<\/strong>: \u0646\u0627\u0645 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u062f\u0631 \u06a9\u0641\u062a\u0631\u06cc.<\/li>\n<li>\n<strong>local_port<\/strong>: \u067e\u0648\u0631\u062a \u062f\u0633\u062a\u06af\u0627\u0647 \u0634\u0645\u0627 \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0633\u0631\u0648\u06cc\u0633.<\/li>\n<li>\n<strong>target_port<\/strong>: \u067e\u0648\u0631\u062a \u06cc\u0627 \u0646\u0627\u0645 \u067e\u0648\u0631\u062a \u0633\u0631\u0648\u06cc\u0633 \u062f\u0631 \u062f\u0627\u062e\u0644 \u062e\u0648\u0634\u0647.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AA%D9%85%DB%8C%D8%B2_%DA%A9%D8%B1%D8%AF%D9%86\"><\/span>\n<p>  \u062a\u0645\u06cc\u0632 \u06a9\u0631\u062f\u0646<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06af\u0631 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u062e\u0648\u0634\u0647 \u0631\u0627 \u0627\u0632 \u0628\u06cc\u0646 \u0628\u0628\u0631\u06cc\u062f \u0648 \u0647\u0645\u0647 \u0645\u0646\u0627\u0628\u0639 \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f\u060c \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>make destroy\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>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\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 \u06a9\u0627\u0631 \u0628\u0627\u0639\u062b \u0627\u0632 \u0628\u06cc\u0646 \u0631\u0641\u062a\u0646 \u062e\u0648\u0634\u0647 \u0648 \u062d\u0630\u0641 \u062a\u0645\u0627\u0645 \u0645\u0646\u0627\u0628\u0639 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 Terraform \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\"><\/span>\n<p>  \u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0627 \u0646\u06af\u0647 \u062f\u0627\u0634\u062a\u0646 \u062a\u0645\u0627\u0645\u06cc \u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u062f\u0631 \u062f\u0627\u062e\u0644 \u06a9\u0644\u0627\u0633\u062a\u0631 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Kftray \u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u067e\u0648\u0631\u062a\u060c \u0645\u062d\u06cc\u0637\u06cc \u0633\u0627\u062f\u0647 \u062a\u0631 \u0648 \u0627\u0645\u0646 \u062a\u0631 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0645\u062d\u0644\u06cc \u0648 \u0645\u0648\u0642\u0639\u06cc\u062a\u200c\u0647\u0627\u06cc\u06cc \u0645\u0641\u06cc\u062f \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u0632 \u0627\u0641\u0634\u0627\u06cc \u062e\u062f\u0645\u0627\u062a \u062e\u0627\u0631\u062c\u06cc \u062e\u0648\u062f\u062f\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06a9\u062f Terraform \u0631\u0627 \u0645\u0637\u0627\u0628\u0642 \u0628\u0627 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u062e\u0648\u062f \u06a9\u0627\u0648\u0634 \u0648 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f. \u0627\u06af\u0631 \u0633\u0648\u0627\u0644\u06cc \u062f\u0627\u0631\u06cc\u062f \u06cc\u0627 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06a9\u0645\u06a9 \u062f\u0627\u0631\u06cc\u062f\u060c \u062f\u0631 \u062a\u0645\u0627\u0633 \u0628\u0627\u0634\u06cc\u062f.<\/p>\n<p>\u0628\u0627 \u062a\u0634\u06a9\u0631 \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646. \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u06a9\u0627\u0631\u0647\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631\u06cc \u0627\u0632 \u0645\u0646 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f \u06cc\u0627 \u062f\u0631 GitHub \u062f\u0631 \u062a\u0645\u0627\u0633 \u0628\u0627\u0634\u06cc\u062f.<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0633\u0644\u0627\u0645. \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a\u060c \u0645\u0646 \u0628\u0647 \u0634\u0645\u0627 \u0646\u0634\u0627\u0646 \u062e\u0648\u0627\u0647\u0645 \u062f\u0627\u062f \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u06cc\u06a9 \u062e\u0648\u0634\u0647 \u0645\u062d\u0644\u06cc Kubernetes \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Kind\u060c Terraform \u0648 Kftray \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f. \u0645\u0627 \u0647\u0645\u0647 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u062f\u0627\u062e\u0644 \u062e\u0648\u0634\u0647 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u06cc\u0645\u060c \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06a9\u0646\u062a\u0631\u0644\u200c\u06a9\u0646\u0646\u062f\u0647\u200c\u0647\u0627\u06cc \u0648\u0631\u0648\u062f\u06cc \u06cc\u0627 \u0627\u0641\u0634\u0627\u06cc \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f NodePort \u06cc\u0627 LoadBalancer. \u0645\u0646 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0634\u0645\u0627 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u06a9\u062f &hellip;<\/p>\n","protected":false},"author":2,"featured_media":78642,"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-78641","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\/78641","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=78641"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/78641\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/78642"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=78641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=78641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=78641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}