Kubernetes кластерін дайындау оңай және ыңғайлы ма? Қосымша операторды хабарлау

Kubernetes кластерін дайындау оңай және ыңғайлы ма? Қосымша операторды хабарлау

Кейін қабық операторы біз оның ағасының өкіліміз - қосымша операторы. Бұл Kubernetes кластерінде жүйелік құрамдастарды орнату үшін пайдаланылатын ашық бастапқы жоба, оны жалпы сөзбен - қондырмалармен атауға болады.

Неліктен кез келген қосымшаларды қосу керек?

Кубернетес дайын барлығы бір өнім емес екені ешкімге құпия емес және «ересек» кластерін құру үшін әртүрлі қондырмалар қажет болады. Addon-оператор осы қосымшаларды орнатуға, конфигурациялауға және жаңартуға көмектеседі.

Кластердегі қосымша құрамдастардың қажеттілігі қамтылған есеп әріптестер Дриуша. Қысқасы, қазіргі уақытта Kubernetes-тің жағдайы қарапайым «ойнау» орнату үшін сіз қораптан шыққан компоненттермен жұмыс істей аласыз, әзірлеушілер мен тестілеу үшін сіз Ingress қосуға болады, бірақ толыққанды «Өндірісіңіз дайын» ​​деп айтуға болатын орнатуды ондаған түрлі толықтырулармен қосу керек: бақылау үшін бірдеңе, журналдар үшін бірдеңе, кіруді және сертификат-менеджерді ұмытпаңыз, түйіндер топтарын таңдаңыз, желілік саясаттарды қосыңыз, Sysctl және pod autoscaler параметрлерін дәмдеңіз...

Kubernetes кластерін дайындау оңай және ыңғайлы ма? Қосымша операторды хабарлау

Олармен жұмыс істеудің ерекшеліктері қандай?

Тәжірибе көрсеткендей, мәселе бір орнатумен шектелмейді. Кластермен ыңғайлы жұмыс істеу үшін қондырмаларды жаңарту, өшіру (кластерден жойылу) қажет және оны өндірістік кластерге орнатпас бұрын бірдеңені тексергіңіз келеді.

Бұл жерде Ansible жеткілікті болуы мүмкін бе? Мүмкін. Бірақ жалпы жағдайда толыққанды қондырмалар параметрлерсіз өмір сүрмейді. Бұл параметрлер кластер нұсқасына байланысты әр түрлі болуы мүмкін (aws, gce, ақшыл, жалаңаш металл, істеу, ...). Кейбір параметрлерді алдын ала орнату мүмкін емес - оларды кластерден алу керек. Ал кластер статикалық емес: кейбір параметрлер үшін өзгерістерді орындауға тура келеді. Және бұл жерде Ansible жеткіліксіз: сізге кластерде тұратын бағдарлама қажет, яғни. Kubernetes операторы.

Тырысып көргендер қабық операторы, олар қондырмалар мен бақылау параметрлерін орнату және жаңарту тапсырмаларын пайдалану арқылы толығымен шешуге болатынын айтады. ілгектер қабық операторы үшін. Шартты орындайтын сценарий жаза аласыз kubectl apply және, мысалы, параметрлер сақталатын ConfigMap қолданбасын орындаңыз. Бұл шамамен addon-операторда орындалатын нәрсе.

Ол addon-операторда қалай ұйымдастырылған?

Жаңа шешімді жасай отырып, біз келесі принциптерге сүйендік:

  • Қосымшаны орнатушы қолдау көрсетуі керек шаблондау және декларативті конфигурация. Біз қондырмаларды орнататын сиқырлы сценарийлерді жасамаймыз. Addon-оператор қондырмаларды орнату үшін Helm пайдаланады. Орнату үшін диаграмма жасап, конфигурациялау үшін пайдаланылатын мәндерді таңдау керек.
  • Параметрлер мүмкін орнату кезінде жасаңыз, олар істей алады кластерден алыңыз, немесе жаңартуларды алукластерлік ресурстарды бақылау кезінде. Бұл операцияларды ілмектердің көмегімен жүзеге асыруға болады.
  • Параметрлер мүмкін кластерде сақтаңыз. Кластерде параметрлерді сақтау үшін ConfigMap/addon-операторы жасалады және Addon-операторы осы ConfigMap өзгерістерін бақылайды. Addon-оператор қарапайым конвенциялар арқылы ілмектерге параметрлерге қол жеткізуге мүмкіндік береді.
  • Қосымша параметрлерге байланысты. Параметрлер өзгертілсе, Addon-operator жаңа мәндері бар Helm-диаграммасын шығарады. Біз Helm диаграммасының, оның мәндерінің және ілгектердің қосындысын модуль деп атадық (толығырақ ақпаратты төменде қараңыз).
  • Сахналау. Сиқырлы шығарылым сценарийлері жоқ. Жаңарту механизмі кәдімгі қолданбаға ұқсайды - қондырмаларды және қосымша операторды суретке жинап, белгілеп, шығарыңыз.
  • Нәтижені бақылау. Addon-оператор Prometheus үшін көрсеткіштерді қайтара алады.

Addon-оператордағы қосу дегеніміз не?

Кластерге жаңа мүмкіндіктер қосатын кез келген нәрсені қосымша деп санауға болады. Мысалы, Ingress орнатуы қондырманың тамаша үлгісі болып табылады. Бұл өзінің CRD-і бар кез келген оператор немесе контроллер болуы мүмкін: прометей-оператор, сертификат-менеджер, kube-контроллер-менеджер және т.б. Немесе тізілім құпияларын жаңа аттар кеңістігіне көшіретін құпия көшіргіш немесе жаңа түйіндерде sysctl параметрлерін реттейтін sysctl тюнері сияқты шағын, бірақ пайдалану оңайырақ нәрсе.

Қосымшаларды енгізу үшін Addon-operator бірнеше тұжырымдамаларды ұсынады:

  • Руль диаграммасы кластерге әртүрлі бағдарламалық жасақтаманы орнату үшін қолданылады - мысалы, Prometheus, Grafana, nginx-ingress. Қажетті компонентте Helm диаграммасы болса, оны Addon-операторы арқылы орнату өте оңай болады.
  • құндылықтарды сақтау. Шеңбер диаграммаларында әдетте уақыт өте келе өзгеретін көптеген әртүрлі параметрлер болады. Addon-оператор бұл параметрлерді сақтауды қолдайды және Helm диаграммасын жаңа мәндермен қалпына келтіру үшін олардың өзгерістерін қадағалайды.
  • Ілмектер Addon-операторы оқиғаларда жұмыс істейтін және мәндер қоймасына кіретін орындалатын файлдар. Ілмек кластердегі өзгерістерді бақылап, құндылықтар қоймасындағы мәндерді жаңарта алады. Анау. ілгектерді пайдалана отырып, сіз іске қосу кезінде немесе кесте бойынша кластерден мәндерді жинау үшін табуды жасай аласыз немесе кластердегі өзгерістер негізінде кластерден мәндерді жинай отырып, үздіксіз табуды жасай аласыз.
  • Модуль Helm диаграммасының, құндылықтарды сақтаудың және ілгектердің қосындысы болып табылады. Модульдерді қосуға және өшіруге болады. Модульді өшіру барлық Helm-диаграмма шығарылымдарын жояды. Модульдер өздерін динамикалық түрде қамтуы мүмкін, мысалы, егер оған қажет барлық модульдер қосылса немесе ілмектерде қажетті параметрлер табылса - бұл көмекші қосылған сценарий арқылы жасалады.
  • Ғаламдық ілмектер. Бұл «өз бетінше» ілгектер, олар модульдерге кірмейді және жаһандық құндылықтар қоймасына қол жеткізе алады, олардың мәндері модульдердегі барлық ілмектерге қол жетімді.

Бұл бөліктер қалай бірге жұмыс істейді? Құжаттамадағы суретті қарастырыңыз:

Kubernetes кластерін дайындау оңай және ыңғайлы ма? Қосымша операторды хабарлау

Екі жұмыс сценарийі бар:

  1. Жаһандық ілмек оқиға арқылы іске қосылады - мысалы, кластердегі ресурс өзгерген кезде. Бұл ілмек өзгерістерді өңдейді және жаһандық құндылықтар қоймасына жаңа мәндерді жазады. Addon-оператор жаһандық дүкеннің өзгергенін байқап, барлық модульдерді іске қосады. Әрбір модуль оны қосу қажеттігін анықтау үшін ілмектерін пайдаланады және оның мәндер қоймасын жаңартады. Егер модуль қосылған болса, онда Addon-операторы Helm-диаграммасын орнатуды бастайды. Сонымен қатар, модуль қоймасынан және ғаламдық жадтан алынған мәндер Helm диаграммасында қол жетімді.
  2. Екінші сценарий оңайырақ: модуль ілгегі оқиға арқылы іске қосылады, модульдің мәндер қоймасындағы мәндерді өзгертеді. Қосымша операторы мұны байқап, жаңартылған мәндері бар Helm диаграммасын іске қосады.

Қосымшаны бір ілмек ретінде немесе жалғыз Helm диаграммасы ретінде немесе тіпті бірнеше тәуелді модульдер ретінде - бұл кластерде орнатылған құрамдас бөліктің күрделілігіне және конфигурация икемділігінің қажетті деңгейіне байланысты. Мысалы, репозиторийде (/ мысалдар) қосымша sysctl-тюнер бар, ол ілмекпен және Helm-диаграммасы бар қарапайым модуль ретінде және ConfigMap өңдеу арқылы параметрлерді қосуға мүмкіндік беретін мәндер қоймасын пайдалану арқылы жүзеге асырылады.

Жаңартуларды жеткізу

Addon-операторы орнататын құрамдас жаңартуларды ұйымдастыру туралы бірнеше сөз.

Addon-операторын кластерде іске қосу үшін сізге қажет қосымшалары бар суретті құрастыру ілмек файлдары және Helm диаграммалары ретінде екілік файлды қосыңыз addon-operator және ілмектерге қажет нәрсенің бәрі: bash, kubectl, jq, python және т.б. Әрі қарай, бұл кескінді кластерге кәдімгі қолданба ретінде шығаруға болады және сіз бір немесе басқа тегтеу схемасын ұйымдастырғыңыз келуі мүмкін. Кластерлер аз болса, қолданбалардағы сияқты тәсіл қолайлы болуы мүмкін: жаңа шығарылым, жаңа нұсқа, барлық кластерлерді аралап өтіп, Pods кескінін түзетіңіз. Дегенмен, кластерлердің айтарлықтай санына шығарылған жағдайда, арнадан өзін-өзі жаңарту тұжырымдамасы бізге қолайлы болды.

Біз оны келесідей орнаттық:

  • Арна негізінен кез келген нәрсеге орнатуға болатын идентификатор болып табылады (мысалы, dev/stage/ea/stable).
  • Арна атауы кескін тегі болып табылады. Арнаға жаңартуларды шығару қажет болғанда, жаңа сурет салынып, арна атауымен белгіленеді.
  • Тізбеде жаңа кескін пайда болған кезде Addon-операторы қайта іске қосылады және жаңа кескіннен басталады.

Бұл мақалада жазылғандай ең жақсы тәжірибе емес Kubernetes құжаттамасы. Мұны істеу ұсынылмайды, бірақ біз бұл туралы айтып отырмыз бір кластерде тұратын қалыпты қолданба. Addon-оператор жағдайында қолданба кластерлер бойынша шашыраңқы көптеген Орналастырулар болып табылады және өзін-өзі жаңарту көп көмектеседі және өмірді жеңілдетеді.

Арналар көмектеседі және тестілеуде: көмекші кластер болса, оны арнаға орнатуға болады stage және арналарға шығарар алдында жаңартуларды қосыңыз ea и stable. Егер арнада кластер болса ea қате орын алды, оны өзгертуге болады stableбұл кластерге қатысты мәселе зерттелуде. Егер кластер белсенді қолдаудан шығарылса, ол өзінің «мұздатылған» арнасына ауысады - мысалы, freeze-2019-03-20.

Ілмектерді және Helm диаграммаларын жаңартумен қатар, сізге қажет болуы мүмкін жаңарту және үшінші тарап құрамдас бөлігі. Мысалы, сіз шартты түйінді экспорттаушы қатені байқадыңыз және тіпті оны түзету жолын анықтадыңыз. Содан кейін біз PR аштық және барлық кластерлерді аралап, кескіннің нұсқасын ұлғайту үшін жаңа шығарылымды күтеміз. Шексіз күтпеу үшін сіз PR-ды қабылдамас бұрын өзіңіздің түйін-экспортеріңізді құра аласыз және оған ауыса аласыз.

Жалпы, бұл Addon-операторынсыз жасалуы мүмкін, бірақ Addon-операторымен түйін экспорттаушыны орнату модулі бір репозиторийде көрінетін болады, суретіңізді сол жерде құру үшін Dockerfile сақтай аласыз, бұл оңайырақ болады. процестің барлық қатысушылары мұның болатынын түсінуі үшін… Ал егер бірнеше кластер болса, PR-ды сынау да, жаңа нұсқаны шығару да оңайырақ болады!

Бұл компонентті жаңарту ұйымы біз үшін сәтті жұмыс істейді, бірақ кез келген басқа қолайлы схеманы жүзеге асыруға болады - ақыр соңында бұл жағдайда addon-operator қарапайым екілік файл болып табылады.

қорытынды

Addon-операторында іске асырылған принциптер қарапайым қолданбаларды әзірлеуге ұқсас кластерде қондырмаларды жасау, сынау, орнату және жаңарту үшін мөлдір процесті құруға мүмкіндік береді.

Модульдер пішіміндегі Addon-операторға арналған қосымшалар (Helm-диаграмма + ілгектер) жалпыға қолжетімді болуы мүмкін. Біз, Flant компаниясы, әзірлемелерімізді жаз бойы осындай толықтырулар түрінде жариялауды жоспарлап отырмыз. GitHub әзірлеуге қосылыңыз (қабық операторы, қосымша операторы), негізінде қосуды жасауға тырысыңыз мысалдар келтіріңіз и құжаттама, Хабре және біздің жаңалықтарды күтіңіз YouTube арнасы!

PS

Біздің блогта да оқыңыз:

Ақпарат көзі: www.habr.com

пікір қалдыру