11 narzędzi, które sprawiają, że Kubernetes jest lepszy

11 narzędzi, które sprawiają, że Kubernetes jest lepszy

Nie wszystkie platformy serwerowe, nawet te najsilniejsze i najbardziej skalowalne, zaspokajają wszystkie potrzeby w swoim pierwotnym kształcie. Choć Kubernetes działa doskonale samodzielnie, może mu brakować istotnych elementów do pełnego funkcjonowania. Zawsze znajdzie się specyficzny przypadek, który ignoruje Twoje potrzeby lub w którym Kubernetes nie działa przy domyślnej konfiguracji — na przykład wsparcie dla baz danych czy działanie CD.

Tutaj pojawiają się dodatki, rozszerzenia i różne przydatne rzeczy dla tego orkiestratora kontenerów, wspierane przez bardzo szeroką społeczność. W tym artykule przedstawimy 11 najlepszych elementów, które znaleźliśmy. Nam samym są one Southbridge bardzo interesujące i planujemy przyjrzeć się im dokładniej — rozebrać na części i zobaczyć, co kryje się wewnątrz. Część z nich doskonale uzupełni każdy klaster Kubernetes, inne zaś pomogą rozwiązać specyficzne problemy, które nie zostały zaimplementowane w standardowej wersji Kubernetes.

Gatekeeper: Zarządzanie politykami

Projekt Open Policy Agent (OPA) daje możliwość tworzenia polityk na szczycie chmur aplikacyjnych w Kubernetes, począwszy od ingress, a kończąc na service mesh. Gatekeeper oferuje natywną dla Kubernetes możliwość automatycznego egzekwowania polityk w klastrze, a także umożliwia weryfikację wszelkich zdarzeń lub zasobów naruszających politykę. Wszystko to jest obsługiwane przez relatywnie nowy mechanizm Kubernetes, czyli webhooki dostępu, które uruchamiają się przy każdej zmianie zasobów. Dzięki Gatekeeper polityki OPA stają się integralną częścią stanu Twojego klastra Kubernetes, nie wymagając ciągłego nadzoru.

Gravity: Przenośne klastry Kubernetes

Jeśli chcesz wdrożyć aplikację w Kubernetes, wiele aplikacji ma Helm chart, który prowadzi i automatyzuje ten proces. Ale co jeśli chcesz zabrać swój klaster Kubernetes „jak jest” i wdrożyć go gdzie indziej?

Gravity tworzy migawki stanu klastrów Kubernetes, ich registry dla obrazów kontenerowych oraz uruchomionych aplikacji, które nazywane są „pakietami aplikacji”. Taki pakiet, będący zwykłym plikiem .tar, może replikować klaster wszędzie tam, gdzie Kubernetes jest w stanie działać.

Gravity sprawdza również, czy docelowa infrastruktura działa tak samo jak źródłowa, a także, czy środowisko Kubernetes w docelowym klastrze jest dostępne. Płatna wersja Gravity dodaje również funkcje bezpieczeństwa, w tym RBAC oraz możliwość synchronizacji ustawień bezpieczeństwa między różnymi wdrożeniami klastrów.

Najbardziej aktualna wersja, Gravity 7, może wdrożyć obraz Gravity w istniejącym klastrze Kubernetes, zamiast tworzyć całkowicie nowy klaster z obrazu. Gravity 7 może również działać z klastrami zainstalowanymi bez użycia obrazu Gravity. Ponadto Gravity obsługuje SELinux i działa natywnie z bramą SSH Teleport.

Kaniko: Budowanie kontenerów w klastrze Kubernetes

Większość obrazów kontenerów jest tworzona na systemach poza stosem kontenerów. Czasami jednak trzeba zbudować obraz wewnątrz stosu kontenerów, na przykład gdzieś w działającym kontenerze lub w klastrze Kubernetes.

Kaniko przeprowadza budowę kontenerów wewnątrz środowiska kontenerowego, ale bez zależności od usług konteneryzacji, takich jak Docker. Zamiast tego Kaniko wydobywa system plików z podstawowego obrazu, wykonuje wszystkie komendy budowy w przestrzeni użytkownika na wyodrębnionym systemie plików, robiąc migawkę systemu plików po każdej komendzie.

Uwaga: Kaniko obecnie (maj 2020 roku, przyp. tłumacza) nie może budować kontenerów Windows.

Kubecost: Opcje kosztów wdrożenia Kubernetes

Większość narzędzi administracyjnych Kubernetes ma na celu uproszczenie użycia, monitorowanie, rozumienie zachowania wewnątrz poda, itd. A co z obserwacją kosztów - w złotówkach i groszach - związanych z wdrożeniem Kubernetes?

Kubecost przetwarza parametry Kubernetes w czasie rzeczywistym, co prowadzi do dostarczania informacji o aktualnych kosztach z uruchomionych klastrów u głównych dostawców usług chmurowych, wyświetlanych na panelu z miesięcznymi kosztami każdego klastra. Ceny za pamięć operacyjną, czas procesora, GPU i podsystem dyskowy są rozbite według komponentów Kubernetes (kontener, pod, usługa, itd.)

Kubecost również śledzi koszt zewnętrznych zasobów, takich jak wiadra Amazon S3, chociaż jest to ograniczone do AWS. Dane o kosztach mogą być wysyłane do Prometheus, dzięki czemu można je wykorzystać do programowego zmieniania zachowania klastra.

Kubecost jest bezpłatny w użyciu, jeśli wystarczają Ci dane z logów sprzed 15 dni. Ceny za dodatkowe funkcje zaczynają się od 199$ miesięcznie za monitorowanie 50 węzłów.

KubeDB: Uruchamianie baz danych w produkcji w Kubernetes

Uruchamianie baz danych w Kubernetes może być dość skomplikowane. Znajdziesz operatorów Kubernetes dla MySQL, PostgreSQL, MongoDB i Redis, ale każdy z nich ma swoje wady. Domyślny zestaw funkcji Kubernetes nie rozwiązuje bezpośrednio większości specyficznych problemów z bazami danych.

KubeDB pomaga Ci stworzyć własne operatory Kubernetes do zarządzania bazami danych. W jego skład wchodzą funkcje takie jak uruchamianie kopii zapasowych, klonowanie, monitorowanie, tworzenie snapshotów i deklaratywne tworzenie baz. Zauważ, że wsparcie dla funkcji zależy od bazy danych. Na przykład, tworzenie klastra działa dla PostgreSQL, ale nie dla MySQL (już tak jak słusznie zauważył dnbstd, przyp. tłumacza).

Kube-monkey: Chaos Monkey dla Kubernetes

Najskuteczniejszym sposobem testowania obciążenia są przypadkowe awarie. Teoria ta leży u podstaw Chaos Monkey od Netflix, chaotycznego narzędzia inżynieryjnego, które losowo wyłącza maszyny wirtualne i kontenery w środowisku produkcyjnym, aby "zmusić" programistów do tworzenia bardziej odpornych systemów. Kube-monkey to implementacja tej samej podstawowej teorii testowania obciążenia dla klastrów Kubernetes. Działa, losowo zabijając moduły w klastrze, które określiłeś, a także może być skonfigurowany do działania w określonym przedziale czasowym.

Kubernetes Ingress Controller dla AWS

Kubernetes zapewnia zewnętrzny bilansujący obciążenie i usługi sieciowe klastra przez usługę nazywaną Ingress AWS oferuje funkcje bilansowania obciążenia, ale nie łączy ich automatycznie z podobnymi funkcjami Kubernetes. Kubernetes Ingress Controller for AWS zamyka tę lukę.

Automatycznie zarządza zasobami AWS dla każdego obiektu ingress w klastrze, tworząc bilansujące obciążenie dla nowych zasobów ingress i usuwając je przy usuwaniu zasobów. Używa CloudFormation, aby upewnić się, że stan klastra pozostaje spójny. Obsługuje również ustawienia CloudWatch Alarm i automatycznie zarządza innymi elementami używanymi w klastrze, takimi jak certyfikaty SSL i grupy automatycznego skalowania EC2.

Kubespray: Automatyczna instalacja Kubernetes

Kubespray Automatyzuje instalację gotowego do użycia klastra Kubernetes, od instalacji na serwerach fizycznych po główne publiczne chmury. Używa Ansible (Vagrant — dodatkowo) do uruchamiania wdrożeń i tworzenia wysoko dostępnego klastra od podstaw z wybranym przez Ciebie dodatkiem sieciowym (np. Flannel, Calico i inne) na wybranym przez Ciebie popularnym dystrybucie Linux podczas instalacji na serwerach fizycznych.

Skaffold: Iteracyjny rozwój dla Kubernetes

Skaffold — jeden z narzędzi Google, stosowany do organizacji CD aplikacji w Kubernetes. Kiedy wprowadzisz zmiany w kodzie źródłowym, skaffold automatycznie je wykrywa, uruchamia budowę i wdrożenie, informując Cię o ewentualnych błędach. Skaffold działa całkowicie po stronie klienta, więc mogą wystąpić drobne niuanse związane z instalacją lub aktualizacją. Może być używany z istniejącymi potokami CICD oraz współdziałać z niektórymi zewnętrznymi narzędziami do budowy, głównie z Bazel od Google.

Teresa: Najprostszy PaaS na Kubernetes

Teresa to system wdrażania aplikacji, który uruchamia najprostszy PaaS na Kubernetes. Użytkownicy podzieleni na zespoły mogą wdrażać i zarządzać swoimi aplikacjami. Ułatwia to trochę pracę osobom, które ufają tej aplikacji i nie chcą borykać się z Kubernetes i jego złożonościami.

Tilt: Strumieniowe wysyłanie aktualizacji kontenerów do klastrów Kubernetes

Tilt, opracowany przez Windmill Engineering, monitoruje zmiany w różnych plikach Dockerfile, a następnie stopniowo wdraża odpowiednie kontenery w klastrze Kubernetes. W zasadzie pozwala to na aktualizację działającego klastra w czasie rzeczywistym po prostu poprzez aktualizację plików Dockerfile. Tilt wykonuje budowę wewnątrz klastra, a kod źródłowy — to wszystko, co trzeba zmieniać. Możesz również zrobić zrzut stanu klastra i utrwalić warunki wyzwalania błędów bezpośrednio z Tilt, aby podzielić się nimi z członkami zespołu w celu debugowania.

P.S. Wszystkie te narzędzia przetestowaliśmy wielokrotnie naszymi ciekawskimi dłońmi. Aby zaprezentować realne praktyki już (mam nadzieję!) na intensywnych zajęciach offline w lutym. Southbridge 8–10 lutego 2021. I Kubernetes Podstawy 8–10 lutego 2021. I Kubernetes Mega 12-14 lutego. Szczerze, również tęsknimy za ciepłą i energetycznie naładowaną atmosferą offline'owego uczenia się. Cokolwiek zaawansowanego by nie wprowadzały technologie, nie zastąpią one bezpośredniego kontaktu międzyludzkiego i wyjątkowej atmosfery, gdy gromadzą się osoby o podobnych poglądach.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster