Jak skonfigurować konta usług w Kubernetes

Jak skonfigurować konta usług w Kubernetes

Przegląd kont usług i ich działania znajduje się w tym artykule. Kluczową częścią Kubernetes, która zapewnia bezpieczny dostęp do serwera API, jest konto serwisowe. Interakcja z klastrem Kubernetes wymaga komunikacji z serwerem API. Żądania są składane na serwerze API w celu komunikacji. Kiedy serwer API odbiera żądanie, najpierw próbuje je uwierzytelnić. Jeśli to uwierzytelnianie się nie powiedzie, żądanie jest uważane za anonimowe. Oznacza to, że każdy proces, niezależnie od tego, czy jest to część klastra, czy nie, musi uwierzytelnić się przed wysłaniem żądania do serwera API, w tym użytkownika wpisującego Kubectl na pulpicie i procesie Kubelet, który działa na węźle. Ten kontekst opisuje typy kont Kubernetes i sposób skonfigurowania konta serwisowego z podstawowymi przykładami.

Rodzaje konta w Kubernetes

W Kubernetes istnieją dwa rodzaje kont, które są wymienione w następujący sposób:

Konto użytkownika

Jest używany przez ludzi, którzy mogą być administratorami lub programistami, którzy próbują uzyskać dostęp do zasobów na poziomie klastra i uzyskać dostęp do klastra Kubernetes. Ci użytkownicy mogą zarządzać zewnętrznym klastrem, ale klaster Kubernetes jest tego świadomy. Konto użytkownika nie ma określonej przestrzeni nazw.

Konto serwisowe

To są konta na poziomie maszynowym. Procesy aktywne w kapsułach klastra są reprezentowane przez rachunki usługowe. Serwer API uwierzytelnia kapsułkę za pomocą konta serwisowego, zanim będzie dostępny do klastra.

Co to jest konto usługi Kubernetes?

Jest stosowany do uwierzytelnienia procesów na poziomie maszyny, aby umożliwić im dostęp do naszego klastra Kubernetes. Serwer API jest odpowiedzialny za wykonanie takiego uwierzytelnienia dla procesów działających w POD. Klaster Kubernetes zarządza kontami usług. Konta usług mają określoną przestrzeń nazw. Są one generowane automatycznie przez serwer API lub ręcznie za pośrednictwem połączeń API.

Jak działa konto serwisowe Kubernetes?

Wyjaśnimy, jak to działa w scenariuszu, w którym aplikacja ze strony trzeciej próbuje połączyć się z serwerami API klastra Kubernetes.


Powiedzmy, że istnieje strona internetowa, moja strona internetowa, która musi pobrać dane z serwera API znajdującego się w klastrze Kubernetes, jak pokazano na poprzedniej figurze, aby wyświetlić listę obiektów. Aby uzyskać dostęp do danych z serwerów klastrów i uwierzytelnij je, potrzebujemy konta serwisowego, które działa jako most udostępniany przez serwery API klastra.

Wymagania wstępne

Przed pracą z sondą uruchamiania, warunki wstępne to klaster Kubernetes z dwoma węzłami, które nie działają jako hosty i oprogramowanie linii poleceń Kubectl, które należy skonfigurować do komunikacji między klastrami. Jeśli nie utworzyłeś klastra, możesz użyć minikube, aby utworzyć klaster. Istnieją inne opcje placu zabaw Kubernetes online, których można użyć do tworzenia klastra.

Utwórz konto serwisowe

Musimy teraz utworzyć konto serwisowe, postępując zgodnie z instrukcjami krok po kroku, aby uzyskać dostęp do klastra Kubernetes. Zaczynajmy!

Krok 1: Rozpocznij minikube

Najpierw uruchom klaster minikube, abyś mógł użyć poleceń Kubectl i uruchomić aplikację. Klaster minikube umożliwia wdrożenie węzłów, kapsułów, a nawet klastrów w środowisku Kubernetes. Dlatego konieczne jest utrzymanie minikupu w trybie aktywnym za pomocą następującego polecenia:

> Minikube start


To aktywuje klaster minikube i przygotowuje środowisko Kubernetes.


Krok 2: Użyj domyślnego konta usługi, aby uzyskać dostęp do usługi API

PODSIS ATHITHINE jako określone konto usługi, gdy komunikują się z serwerem API. Domyślne konto usługi dla każdej przestrzeni nazw Kubernetes, domyślnie jest obecne w każdej przestrzeni nazw i stanowi minimalną liczbę kont usług. Po budowaniu POD, Kubernetes automatycznie przydzielają konto usługi o nazwie DEMAUALT w tym przestrzeni nazw, jeśli nie okreścisz jednego.

Możesz pobrać informacje dla wygenerowanego POD, wykonując następujące polecenie:

> kubectl zdobądź serviceAccounts



Krok 3: Wyjście API poświadczenia automatyki

Plik manifestu Yaml konta serwisowego powinien zostać otwarty najpierw.

> Nano ServiceAccount.Yaml


Zamiast kubelet, aby automatycznie zamontować poświadczenia API ServiceAccount, możesz zmienić normalne zachowanie.


Krok 4: Utwórz dodatkowe konto serwisowe

Dodatkowe obiekty konta serwisowego można utworzyć w następujący sposób, jak wspomniano:

> kubectl Apply -f ServiceAccount.Yaml



Krok 5: Użyj wielu kont usług

W tym kontekście każdy kapsułki generowane w klastrze Kubernetes z określonym przestrzeni nazw. Token serwisowy i niezbędny tajny obiekt są automatycznie tworzone przez domyślne konto serwisowe.

Uruchamiając następujące polecenie, możesz wymienić każdy zasób ServiceAccount w swojej bieżącej przestrzeni nazw:

> kubectl zdobądź serviceAccounts



Krok 6: Zdobądź zrzut konta serwisowego

Jeśli obiekt konta serwisowego jest całkowicie zrzucony, wygląda na następujący zrzut ekranu. Odbywa się to z załączonym poleceniem tutaj:

> kubectl zdobądź serviceAccounts/Build -Robot -o Yaml



Krok 7: Oczyść konto serwisowe

Usuń uruchomione konto przed skonfigurowaniem konta serwisowego kompilacji za pomocą następującego polecenia:

> Kubectl Usuń serviceACocount/Build-Robot



Krok 8: Utwórz token API

Załóżmy, że masz już nazwę konta usługi „Build-robot”, jak wspomniano w poprzednim przykładzie. Korzystając z następującego polecenia, możesz uzyskać krótki token API dla tego konta usługi:

> kubectl stwórz token demo1



Dane wyjściowe poprzedniego polecenia są przeniesione do uwierzytelnienia dla tego konta usługi. Korzystanie z polecenia implikuje -wytrwałość, możesz wygenerować unikalny czas trwania tokena.

Krok 9: Utwórz ręcznie długotrwały token API dla konta serwisowego

Utwórz nowy sekret z unikalną adnotacją, jeśli chcesz uzyskać token API dla konta serwisowego. Oto następujące polecenie:

> Nano Secret.Yaml


Oto pełny plik konfiguracyjny:


Na załączonym zrzucie ekranu możesz zobaczyć, że konto serwisowe jest tworzone pomyślnie.


Krok 10: Wyświetl szczegóły tajnego obiektu

Musisz użyć następującego polecenia, aby zobaczyć zawartość tajnego elementu:

> Kubectl Opisz tajemnice/demo1


Jak widać, token API „Build-Robot” ServiceAccount jest teraz obecny w tajnym obiekcie.


Uruchamiając wyżej wspomniane polecenie, możesz zobaczyć kodowaną wartość kodowania tokena, która jest wyświetlana na poprzednim obrazie.

Dlatego ten domyślny tajny obiekt może być użyty do przyznania dostępu do serwerów API, które znajdują się w tej samej przestrzeni nazw klastra dla naszej aplikacji, która jest wdrożona w POD tej samej przestrzeni nazw.

Krok 11: Dodaj ImagePullSecrets do konta serwisowego

Utwórz ImagePullSecret. Następnie upewnij się, że został wygenerowany. W tym celu polecenie jest następujące:

> Kubectl Utwórz tajną regułę dokera MyregistryKey--Docker-Server = manekin_server \--Docker-Username = manekin_username--Docker-Password = manek


Upewnij się, że jest tworzony. Możesz to sprawdzić za pomocą podanego polecenia tutaj:

> kubectl zdobądź tajemnice myRegistryKey



Krok 12: Dodaj ImagePullSecret do konta serwisowego

Zmień domyślne konto usługi przestrzeni nazw tak, że używa tego sekretu jako ImagePullSecret. Polecenie jest podane w następujący sposób:

> Kubectl Patch ServiceAccount default -p '„ImagePullSecrets”: [„name”: „myRegistryKey”]


Wniosek

Dowiedzieliśmy się o koncie serwisowym, które, oferując uwierzytelnianie, autoryzację i kontrolę administracyjną, umożliwia serwer API przy zapewnieniu bezpieczeństwa aplikacji. Aby uwierzytelnić komunikację między programami zewnętrznymi i interfejsami API, konto serwisowe służy jako link do procesu, który działa w POD. Przykład praktyki do utworzenia konta serwisowego i skonfigurowania go z prostym przykładem jest zaimplementowany w tym artykule.