Doładuj Kubernetes dzięki tym niesamowitym narzędziom

W niniejszym artykule przyjrzymy się fascynującym narzędziom, które wzbogacają funkcjonalność Kubernetes, dodając mu znaczną moc.

W środowisku DevOps, kluczowe znaczenie ma zestaw solidnych narzędzi, które usprawniają manualne procesy. Dostępnych jest wiele rozwiązań dedykowanych różnym etapom i aspektom DevOps.

Kubernetes stanowi fundament, jeśli działasz w sferze DevOps i wdrażasz aplikacje w kontenerach. Wiele narzędzi integruje się z Kubernetes, rozszerzając jego możliwości. Mówimy tu o narzędziach do zarządzania, zabezpieczania, monitorowania klastra oraz tworzenia paneli kontrolnych.

Poniżej przedstawiamy listę godnych uwagi narzędzi, które wznoszą Kubernetes na wyższy poziom.

Zaczynajmy!

Helm

Helm to menedżer pakietów dla Kubernetes. Ułatwia on instalowanie aplikacji i usług o wysokim stopniu powtarzalności lub szerokim zastosowaniu, co znacznie upraszcza ich wdrażanie w typowym klastrze Kubernetes. Helm umożliwia odnajdywanie, udostępnianie i wykorzystywanie oprogramowania przeznaczonego dla Kubernetes.

Wykorzystuje on tzw. Helm Charts do definiowania, instalowania i aktualizacji złożonych aplikacji w środowisku Kubernetes.

Funkcjonalności Helm:

  • Upraszcza zarządzanie złożonością aplikacji w Kubernetes dzięki wykresom
  • Oferuje aktualizacje i niestandardowe hooki, ułatwiające modyfikacje
  • Umożliwia łatwe udostępnianie wykresów na serwerach publicznych i prywatnych
  • Zapewnia proste przywracanie poprzednich stanów za pomocą pojedynczej komendy
  • Podnosi efektywność programistów i gotowość operacyjną

Flagger

Flagger to operator do progresywnego wdrażania aplikacji w Kubernetes.

Automatyzuje on promocję wdrożeń kanaryjskich z wykorzystaniem narzędzi takich jak Istio, App Mesh, Nginx, Linkerd, Contour, Gloo, routingu Skippera do zmiany ruchu oraz Prometheusa do analizy kanarków. W wdrożeniu kanaryjskim nowa wersja aplikacji jest udostępniana ograniczonej grupie użytkowników, testowana, a po pozytywnej weryfikacji, udostępniana wszystkim.

Flagger wykorzystuje sieć usług w klastrze do zarządzania przepływem ruchu między różnymi wdrożeniami. W procesie przenoszenia ruchu do wersji kanaryjskiej mierzy wskaźniki, takie jak średni czas odpowiedzi, wskaźnik powodzenia żądań HTTP i stan podów.

Flagger umożliwia automatyczną analizę, promocję i wycofywanie aplikacji w oparciu o strategie wdrażania, takie jak Canary, testy A/B oraz wdrożenia Blue/Green.

Kubewatch

Kubewatch to open-source’owe narzędzie do monitorowania Kubernetes, które wysyła powiadomienia poprzez Slack.

Napisane w języku Go i stworzone przez Bitnami Labs, służy do śledzenia zasobów Kubernetes i informowania o ich zmianach.

Kubewatch można zainstalować za pomocą kubectl lub Helm Charts. Jest intuicyjny i posiada prosty w obsłudze interfejs. Oprócz Slacka, obsługuje również HipChat, Mattermost, Flock, webhook oraz SMTP.

W pliku ConfigMap można ustawić, które zasoby Kubernetes mają być monitorowane. Po skonfigurowaniu Kubewatch i uruchomieniu odpowiedniego poda, zaczną przychodzić powiadomienia o zdarzeniach w Kubernetes, jak przedstawiono poniżej.

Gitkube

Gitkube to narzędzie, które pozwala na budowanie i wdrażanie obrazów Dockera w Kubernetes za pomocą git push. Składa się z trzech komponentów: Remote, gitkube-controller oraz gitkubed. Remote to niestandardowe zasoby zarządzane przez gitkube-controller. gitkube-controller przesyła zmiany do gitkubed, który buduje obraz Dockera i go wdraża.

Funkcje Gitkube:

  • Prosta instalacja i obsługa typu „plug and play”
  • Zabezpieczenia oparte na kontroli dostępu (RBAC)
  • Uwierzytelnianie za pomocą klucza publicznego
  • Obsługa przestrzeni nazw dla wielu użytkowników
  • Brak dodatkowych zależności poza kubectl i git

Kube-state-metrics

Kube-state-metrics to usługa, która generuje metryki stanu obiektów, monitorując API Kubernetes. Służy do oceny kondycji różnych obiektów, takich jak węzły, pody, przestrzenie nazw i wdrożenia. Dostarcza surowe, nieprzetworzone dane z API Kubernetes.

Informacje dostarczane przez kube-state-metrics:

  • Zadania Cron i ich status
  • Status kapsuł (gotowe, uruchomione itd.)
  • Żądania i limity zasobów
  • Pojemność i status węzłów
  • Specyfikacje zestawów replik

Kamus

Kamus to narzędzie GitOps open-source do szyfrowania i deszyfrowania sekretów dla aplikacji Kubernetes. Zaszyfrowane sekrety mogą być odszyfrowane tylko przez aplikacje działające w klastrze. Do szyfrowania wykorzystuje AES, Google Cloud KMS i Azure KeyVault. Można zacząć korzystać z Kamusa za pomocą Helm Chart.

Kamus składa się z dwóch narzędzi: Kamus CLI i kontenera init Kamus. Kamus CLI służy do integracji z API szyfrowania, a kontener init Kamus z API deszyfrowania.

Standardowe sekrety w Kubernetes nie są szyfrowane, lecz zakodowane w base64. Nie można przechowywać ich w repozytorium Git w takiej postaci, gdyż nie jest to bezpieczne. Każdy, kto ma dostęp do repozytorium, ma dostęp do tych sekretów. Dlatego konieczne jest narzędzie do szyfrowania i deszyfrowania, takie jak Kamus, który dodatkowo zapewnia model zagrożeń chroniący sekrety.

Untrak

Untrak to narzędzie open-source do wyszukiwania i usuwania nieśledzonych zasobów w Kubernetes. Pomaga zidentyfikować i usunąć z klastra obiekty, które nie są objęte systemem kontroli wersji.

Po wprowadzeniu manifestów do potoku CI/CD za pomocą kubectl lub Helm, Kubernetes nie wie, kiedy obiekt zostanie usunięty z repozytorium. Te usunięte obiekty nadal pozostają w klastrze, nie będąc częścią procesu dostarczania.

Untrak, na podstawie prostego pliku konfiguracyjnego untrak.yaml, lokalizuje zasoby, które nie są już częścią zarządzania kodem źródłowym.

Scope

Weave Scope służy do wizualizacji, monitorowania i rozwiązywania problemów w Docker i Kubernetes.

Dostarcza on ogólny widok skonteneryzowanej aplikacji i infrastruktury, co ułatwia identyfikację i diagnozę problemów.

Uruchamianie aplikacji opartych na mikroserwisach w kontenerach Docker jest złożone. Komponenty są dynamiczne i trudne do monitorowania. Weave Scope ułatwia rozwiązywanie problemów z wyciekami pamięci, kontrolę zużycia procesora i wizualizację wąskich gardeł w sieci.

Funkcje Scope:

  • Monitorowanie kontenerów Docker w czasie rzeczywistym
  • Łatwa nawigacja między procesami w kontenerach
  • Wyświetlanie zużycia procesora i pamięci dla hosta i usług
  • Możliwość restartowania, zatrzymywania i wstrzymywania kontenerów za pomocą interfejsu, bez opuszczania okna przeglądarki Scope
  • Obsługa niestandardowych wtyczek, rozszerzających informacje o kontenerach, procesach i hostach

Pulpit nawigacyjny Kubernetes

Pulpit nawigacyjny Kubernetes to interfejs webowy dostarczany przez Kubernetes. Umożliwia wdrażanie, rozwiązywanie problemów i zarządzanie aplikacjami w klastrze Kubernetes. Zawiera informacje o klastrze, węzłach, przestrzeniach nazw, rolach, obciążeniach itp.

Pulpit nawigacyjny Kubernetes można wdrożyć za pomocą Helm Charts lub prostego polecenia kubectl:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml

Kops

Kops (Kubernetes Operations) to projekt open-source, który pozwala szybko i łatwo konfigurować gotowe do produkcji klastry Kubernetes. Kops jest wykorzystywany głównie do wdrażania klastrów Kubernetes na AWS i GCE.

Mały klaster Kubernetes jest łatwy w tworzeniu i utrzymaniu, ale w miarę skalowania klastra, zarządzanie operacyjne staje się wyzwaniem. Kops to narzędzie, które pomaga rozwiązać te problemy. Klaster jest zawsze aktualny i bezpieczny dzięki podejściu opartemu na konfiguracji.

Kops oferuje wiele backendów sieciowych, co ułatwia konfigurację różnych typów klastrów w zależności od potrzeb.

cAdvisor

cAdvisor to open-source’owe narzędzie do monitorowania kontenerów. Umożliwia zrozumienie wydajności i wykorzystania zasobów przez kontenery działające w klastrze.

Działa na poziomie węzła i automatycznie wykrywa wszystkie działające kontenery, gromadząc statystyki dotyczące pamięci, systemu plików, procesora i sieci. Dostarcza interfejs webowy, który wyświetla aktualne dane wszystkich kontenerów w klastrze.

Aby zacząć korzystać z cAdvisor, należy uruchomić jego obraz Dockera (google/cadvisor) i otworzyć w przeglądarce adres http://localhost:8080.

Kubespray

Kubespray to bezpłatne narzędzie, będące połączeniem playbooków Ansible i Kubernetes. Służy do zarządzania cyklem życia klastra Kubernetes.

Za pomocą Kubespray można szybko wdrożyć klaster i dostosować jego parametry, takie jak tryby wdrażania, wtyczki sieciowe, konfigurację DNS, wersje komponentów, metody generowania certyfikatów itp.

Wystarczy uruchomić pojedynczy playbook Ansible, aby uruchomić klaster. Kubespray umożliwia też łatwe skalowanie i aktualizację klastra Kubernetes.

K9s

K9s to terminalowe narzędzie open-source, pełniące funkcję panelu kontrolnego, zdolne do tego samego, co webowy interfejs Kubernetes. Służy do nawigacji, obserwacji i zarządzania aplikacjami w klastrze.

Funkcje K9s:

  • Śledzenie klastra w czasie rzeczywistym
  • Dostosowywanie wyświetlania w zależności od zasobów
  • Przeglądanie problemów z zasobami klastra
  • Obsługa kontroli dostępu (RBAC)
  • Wbudowane testy do oceny wydajności zasobów

Kubetail

Kubetail to prosty skrypt bash do agregowania dzienników z wielu podów w jeden strumień.

Jest bardzo przydatny!

Ułatwia debugowanie.

Najnowsza wersja Kubetail oferuje podświetlanie i filtrowanie, co umożliwia kolorowanie dziennika. Można go zainstalować za pomocą Homebrew. Domyślne wartości można ustawić w zmiennych środowiskowych, np. KUBETAIL_NAMESPACE, KUBETAIL_TAIL, KUBETAIL_SKIP_COLORS.

PowerfulSeal

PowerfulSeal to open-source’owe, potężne narzędzie do inżynierii chaosu, napisane w Pythonie dla klastrów Kubernetes.

Inżynieria chaosu służy do testowania odporności systemów poprzez wstrzykiwanie awarii w środowisku produkcyjnym. Pozwala zidentyfikować problemy jak najwcześniej.

Narzędzie, zainspirowane przez Netflix Chaos Monkey, ma na celu zwiększenie odporności Kubernetes. Inżynierowie, korzystając z PowerfulSeal, celowo próbują zakłócić działanie elementów klastra, aby sprawdzić, jak reaguje system.

PowerfulSeal działa w trzech trybach: autonomicznym, interaktywnym i etykietowym.

W trybie autonomicznym wykonuje scenariusze na podstawie pliku strategii. W trybie interaktywnym informuje o komponentach klastra, które użytkownik ręcznie próbuje wyłączyć. W trybie etykietowym wyłącza docelowe obiekty w klastrze, takie jak pody, za pomocą etykiet.

Popeye

Popeye to narzędzie do czyszczenia, które działa jak środek dezynfekujący 🧼 dla klastrów Kubernetes.

Popeye skanuje cały klaster i raportuje problemy związane z konfiguracjami i zasobami. Pomaga wdrożyć najlepsze praktyki w klastrze Kubernetes, aby uniknąć typowych problemów.

Narzędzie jest dostępne dla systemów Windows, Linux i macOS. Obecnie współpracuje z węzłami, podami, przestrzeniami nazw i usługami. Za pomocą Popeye można łatwo zidentyfikować martwe i nieużywane zasoby, niezgodności portów, reguły RBAC, wykorzystanie metryk i wiele innych.

Podsumowanie

Narzędzia DevOps odgrywają fundamentalną rolę w osiąganiu sukcesu. Mam nadzieję, że powyższe informacje pomogą Ci skuteczniej zarządzać Kubernetes.