
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 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 (OPA) daje możliwość tworzenia polityk na szczycie chmur aplikacyjnych w Kubernetes, począwszy od ingress, a kończąc na service mesh. 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?
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.
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?
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.
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 ( tak jak słusznie zauważył , 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. 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ą AWS oferuje funkcje bilansowania obciążenia, ale nie łączy ich automatycznie z podobnymi funkcjami Kubernetes. 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
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
— 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
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
, 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. 8–10 lutego 2021. I 8–10 lutego 2021. I 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
