Strona Główna / Blog

Jak podłączyć się do klastra Amazon EKS?

Przemek Malak

Przemek Malak

AWS Architect (Development) w Chmurowisku. Ponad 18 lat w branży IT. Architekt rozwiązań chmurowych i mobilnych oraz Programista (przez duże P). Entuzjasta rozwiązań Serverless, posiadacz kilku certyfikacji AWS (Architect, Developer, SysOps).

Uruchomiłeś właśnie swój pierwszy klaster Kubernetes w usłudze Amazon EKS i pewnie zastanawiasz się, co dalej. Jak się do niego podłączyć? W konsoli samej usługi nie za bardzo da się cokolwiek zrobić. Jest tam trochę informacji i praktycznie nic poza tym.

Klastrami Kubernetesa zarządzamy za pomocą narzędzia kubectl. W artykule pokażę Ci, w jaki sposób skonfigurować maszynę z Linuxem na pokładzie, aby móc zarządzać klastrem w EKS.

Na początek jedna uwaga. Wszystkie URL-e do instalowanych narzędzi są aktualne w momencie, gdy piszę ten tekst (grudzień 2019). Jeżeli będziesz czytać ten artykuł za jakiś czas, sprawdź proszę, czy nie ma dostępnych nowszych wersji.

Krok 1. Instalujemy narzędzia

Kubectl

1. Zaczynamy od instalacji kubectl. Narzędzie zainstalujemy w wersji „Amazonowej”.

2. Następnie czynimy ten plik wykonalnym:

3. Teraz kopiujmy go w jakieś wygodniejsze miejsce i ułatwiamy sobie życie, dodając go do przeszukiwanych miejsc.

4. Dodamy jeszcze nasz kubetcl do pliku .bashrc, dzięki czemu po ponownym uruchomieniu maszyny będzie on nadal dostępny.

5. Na koniec sprawdzamy, czy wszystko działa.

AWS IAM Authenticator

Jeśli wszystko jest w porządku, możemy zainstalować AWS IAM Authenticator. To narzędzie, którego Kubernetes używa do autentykacji w AWS.

Wszystkie polecania wykonujemy po kolei, podobnie jak w przypadku kubectl:

Teraz sprawdzamy oczywiście, czy authenticator działa:

Krok 2. Konfigurujemy klaster

W następnym kroku musimy stworzyć kubeconfig.

1. AWS IAM Authenticator for Kubernetes używa między innymi komendy aws sts get-caller-identity. Jest ona dostępna w CLI od wersji 1.16.156. Warto więc sprawdzić, którę wersją AWS CLI dysponujemy:

2. I ewentualnie wykonać update:

3. Zakładam, że CLI jest skonfigurowane. Jeżeli nie, to teraz jest na to ostatni moment. Zakładam, że mamy nowy klaster EKS, użytkownikiem musi być więc ten, który ten klaster stworzył. To ważne.

4. W końcu dodajemy nowy kontekst za pomocą polecenia:

W moim przypadku wyglądało to tak:

Stworzyliśmy plik ~/.kube/config  Ciekawi mogą do niego zajrzeć:

Możemy już spróbować jakiejś interakcji z naszym klasterm EKS. Spróbujemy pobrać listę serwisów:

Działa? Działa. :-)

Krok 3. Dodajemy innych użytkowników klastra

Dodajmy teraz kolejnego użytkownika do naszego klastra. Ktoś musi nam przecież pomóc w codziennej pracy.

Aby to zrobić, musimy wyedytować aws-auth ConfigMap. Jest to konfiguracja, którą EKS wykorzystuje do autentykacji, zarówno dla użytkowników jak i ról.

Spróbujmy na początek podejrzeć tę konfig mapę:

Jeżeli nie dodawałeś jeszcze do swojego klastra żadnych node’ów ani użytkowników, to wynik będzie prawdopodobnie taki:  Error from server (NotFound): configmaps „aws-auth” not found.

Jeżeli tak jest, musisz ściągnąć taką konfigurację i lekko ją zmienić

1. Ściągamy plik:

2. W pliku:

musimy wpisać ARN do roli, którą będą przyjmowały nody naszego klastra. Przypomnę tylko, że jest to rola z następującymi politykami:

  • AmazonEKSWorkerNodePolicy,
  • AmazonEKSCNIPolicy,
  • AmazonEC2ContainerRegistryReadOnly.

3. Po zapisaniu zmian musimy oczywiście zaaplikować je na naszym klastrze:

Teraz polecenie

powinno zadziałać.

4. Aby dodać nowego użytkownika musimy tę mapę wyedytować. Otwieramy ją:

5. W sekcji data możemy dodać naszych użytkowników. Potrzebne będą trzy dodatkowe elementy konfiguracji:

  • userarn: ARN użytkownika,
  • username: nazwa użytkownika wewnątrz klastra Kuberenetes,
  • groups: lista grup Kubernetes, do których użytkownik będzie przydzielony.

Wszystkie te dane umieszczamy w sekcji mapUsers. Ale uwaga – może jej jeszcze nie być.

U mnie po edycji ta część konfiguracji wygląda tak:

6. Zanim zapiszę zmiany, w drugim terminalu użyję poświadczeń AWS-owych nowego użytkownika eksadmin i spróbuję pobrać listę serwisów w klastrze.

Jak widać, nic z tego.

OK, wracamy do poprzedniego terminala, zapisujemy zmiany w naszej konfiguracji i jeszcze raz oddajemy głos naszemu nowemu administratorowi:

Jak widać, po dodaniu go do konfiguracji klastra EKS nie ma on już żadnych problemów z podłączeniem się do niego.

Amazon EKS – podsumowanie

Usługa Amazon EKS jest jeszcze dość słabo powiązana z innymi usługami w Amazon Web Services. Nie ma do niej na przykład żadnych metryk w CloudWatch. Za jej pomocą możemy jednak budować standardowe klastry Kubernetesowe i przenieść do AWS swoje rozwiązania.

Początki pracy z EKS mogą być trudne, próg wejścia jest na pewno wyższy niż w przypadku ECS. Dużym plusem jest jednak to, że za całego Mastera odpowiada AWS. Mamy trzy redundantne serwery i trzy etcd. Wszystko się poza tym odpowiednio skaluje.

Warto spróbować swoich sił z Amazon EKS. Mam nadzieję, że tym artykułem Wam to ułatwiłem.

To najbardziej pożądana umiejętność na rynku w 2020 roku!

Jak zostać Azure Data Engineer? WEBINAR

Dołącz do listy mailingowej!

Dołącz do naszego newslettera

Staramy się wysyłać tylko wartościowe informacje, np. co miesiąc dostaniesz spis najważniejszych nowości z chmur Azure, AWS i GCP, z krótkimi opisami i linkami.