Opublikuj standaryzowane zasoby klastra i kontenera EKS za pomocą Katalogu usług AWS

22 lutego 2022

Tempo rozwoju aplikacji w nowoczesnych środowiskach natywnych dla chmury stale rośnie wraz z innowacjami biznesowymi. Wiele firm ma trudności ze znalezieniem sposobu utrzymania najlepszych praktyk w zakresie zarządzania i wymogów zgodności przy jednoczesnym utrzymaniu zwinnej kultury innowacji.

Katalog usług AWS pozwala osiągnąć spójne zarządzanie, podczas gdy członkowie zespołu mogą łatwo uzyskać niezbędne zasoby AWS.

Twoja organizacja może wymagać od zespołów posiadania niezależnych klastrów EKS z każdym wymaganym ustawieniem zgodności. Możesz także mieć użytkowników biznesowych, którzy wymagają aplikacji z minimalnymi procesami żądań i zatwierdzania. Co więcej, są programiści, którzy potrzebują gotowych standaryzowanych potoków CI/CD bez martwienia się o poszczególne etapy potoku, dzięki czemu mogą skupić się na aplikacji.

Poniższy tekst przedstawi, jak wdrożyć ustandaryzowany klaster EKS – na przykład zasoby kontenera przy użyciu Helm i przykładowy potok CI/CD przy użyciu katalogu usług AWS. Aby wdrożyć wymagane zasoby katalogu usług AWS, użyjesz zestawu AWS Cloud Development Kit (CDK). AWS CDK pozwala zdefiniować zasoby aplikacji w chmurze przy użyciu znanych języków programowania, z AWS CloudFormation jako zapleczem. Zacznij od ustawienia środowiska dla AWS CDK. Poza tym zalecana jest podstawowa wiedza na temat SSH i Github, aby śledzić to demo.

Ogólny zarys

Opublikuj standaryzowane zasoby klastra i kontenera EKS za pomocą Katalogu usług AWS

To rozwiązanie składa się z czterech głównych części:

  1. Katalog usług AWS umożliwia samoobsługę użytkownikom końcowym, takim jak programiści, badacze danych lub użytkownicy biznesowi. W Portfolio of AWS Service Catalog zdefiniuj zestaw standaryzowanych Produktów – kombinację wielu serwisów AWS i zasobów Kubernetes. W tym poście wykorzystywane są trzy Produkty:
  • Standaryzowany klaster EKS;
  • Zasób Kubernetes do uruchomienia witryny WordPress;
  • Pipeline CI/CD dla programistów do wdrożenia w określonym klastrze EKS.
  1. Jako pierwszy produkt zostanie udostępniony klaster EKS. Ten produkt prosi o kluczowe parametry w celu skonfigurowania klastra w sposób, w jaki został zaprojektowany. Jako przykład użyty zostanie standardowy szablon AWS EKS QuickStart.
  2. Następnie twórcy udostępnią predefiniowany wykres Helm, który wdraża WordPress jako przykład, aby zademonstrować, jak publikować zasoby kontenerów w środowisku Kubernetes przy użyciu Katalogu usług AWS. Helm to manager pakietów dla Kubernetes, który pomaga definiować, instalować i aktualizować nawet najbardziej złożone aplikacje Kubernetes.
  3. Wreszcie potok kodu kontenera, w tym AWS CodePipeline i Amazon Elastic Container Registry (Amazon ECR), zostanie wdrożony jako ostatni produkt. Pozwala to programistom na wdrażanie znormalizowanego potoku CI/CD ukierunkowanego na określony klaster EKS w sposób samoobsługowy. AWS CodePipeline to w pełni zarządzana usługa ciągłego dostarczania, która pomaga zautomatyzować potoki wydań w celu uzyskania szybkich i niezawodnych aktualizacji aplikacji i infrastruktury. Potok przechowuje obrazy kontenerów zbudowane z predefiniowanych etapów przy użyciu Amazon ECR. Jest to w pełni zarządzany rejestr kontenerów, który ułatwia przechowywanie, zarządzanie, udostępnianie i wdrażanie obrazów i artefaktów kontenerów w dowolnym miejscu.

Rozwiązanie potoku DevOps do wdrażania aplikacji kontenerowych za pomocą Amazon EKS

Rozwiązanie potoku DevOps do wdrażania aplikacji kontenerowych za pomocą Amazon EKS

Autorzy przeprowadzą Cię krok po kroku przez proces wdrażania każdego wymienionego komponentu na Twoim koncie AWS. Zanim zagłębisz się w szczegóły, zobacz, jak przebiega cała demonstracja.

  1. Najpierw sklonuj repozytorium GitHub. To repozytorium GitHub obsługuje aplikację AWS CDK i przewodnik README. Sklonuj to repozytorium, aby mieć podstawowe ustawienie Katalogu usług AWS – portfolio, produkty i role uruchamiania.
  2. Gdy sklonujesz repozytorium i gotowe narzędzia AWS CDK, uruchomisz cdk deploy w celu wdrożenia wymienionych zasobów katalogu usług AWS na swoim koncie.
  3. AWS CloudFormation wykona zadania aprowizacji w imieniu Twojej akcji cdk cli. Po zakończeniu wdrożenia dane wyjściowe CloudFormation zostaną wydrukowane w terminalu. Po tym kroku sprawdź poprawność wdrożenia w konsoli zarządzania AWS.
  4. Aby przetestować Produkty jako jeden z użytkowników końcowych, przyjmujesz Rolę Uprawnień i tworzysz Produkty.

Instalacja wymagań wstępnych

Przegląd oparty jest na regionie Wirginia Północna (us-east-1). Jako administrator operacji AWS będziesz tworzyć zasoby Katalogu Usług AWS za pomocą AWS CDK.

  • Zainstaluj każde wymagane narzędzie dla dzisiejszej prezentacji

 

# If you are running these commands in Cloud9 or already have CDK installed, then skip this command
npm i -g aws-cdk@1.94.1

Uwaga: w poniższym przewodniku założono, że masz już skonfigurowane poświadczenia AWS w swoim terminalu. Jeśli tego nie zrobiłeś, znajdź instrukcje konfiguracji plików za pomocą CLI na tym łączu.

  • Wdróż CustomResource w celu poświadczenia wykresów Helm
aws cloudformation create-stack \
       --stack-name awsqs-kubernetes-helm-resource \
       --capabilities CAPABILITY_NAMED_IAM \
       ----template-url https://s3.amazonaws.com/aws-quickstart/quickstart-helm-resource-provider/deploy.template.yaml
  • Sklonuj aplikację demonstracyjną CDK i wdróż ją na swoim koncie:
git clone https://github.com/yjw113080/eks-servicecatalog-cdk.git
cd eks-servicecatalog-cdk
npm i && npm run build

ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
cdk bootstrap aws://$ACCOUNT_ID/us-east-1
cdk deploy --require-approval never

Gdy aplikacja cdk zostanie pomyślnie wdrożona, zobaczysz komunikat o zakończeniu z terminala. Znajdź ARN roli IAM o nazwie enduserarn, którą zakładasz, aby przetestować portfolio usług katalogowych:

Gdy aplikacja cdk zostanie pomyślnie wdrożona, zobaczysz komunikat o zakończeniu z terminala. Znajdź ARN roli IAM o nazwie enduserarn, którą zakładasz, aby przetestować portfolio usług katalogowych:

Zweryfikuj utworzone zasoby Katalogu Usług AWS

Jako użytkownik końcowy Katalogu Usług AWS przejdziesz przez proces tworzenia Produktów dostarczonych przez administratora.

1. Użyj danych wyjściowych, aby przyjąć rolę.Po kliknięciu informacji logowania w prawym górnym rogu zobaczysz opcję Przełącz rolę. Po kliknięciu zobaczysz następującą konsolę, w której możesz podać informacje o roli uprawnień, którą próbujesz przejąć.

Uwaga: Wpisz nazwę roli, a nie pełny ARN w polu Rola.

Wpisz nazwę roli, a nie pełny ARN w polu Rola.

2. Po pomyślnym przejęciu roli przejdź do konsoli Katalogu usług AWS, gdzie zobaczysz gotowe produkty:

2.	Po pomyślnym przejęciu roli przejdź do konsoli Katalogu usług AWS, gdzie zobaczysz gotowe produkty

Utwórz ustandaryzowany klaster EKS za pomocą Katalogu usług AWS

Ten krok zapewnia 1 nowy VPC i 4 nowe elastyczne adresy IP dla bram NAT i hosta bastionu. Upewnij się, że posiadasz wymagane uprawnienia, limity kont i dostęp do tworzenia tych zasobów.

Kliknij Klaster EKS, aby najpierw udostępnić klaster. Po kliknięciu zobaczysz stronę Szczegóły produktu. Kliknij Uruchom produkt. 

Klaster EKS

Wprowadź nazwę produktu, który próbujesz utworzyć lub kliknij pole wyboru, aby automatycznie wygenerować nazwę produktu.

Wprowadź nazwę produktu, który próbujesz utworzyć lub kliknij pole wyboru, aby automatycznie wygenerować nazwę produktu.

Przewiń w dół do parametrów. Zobaczysz opcje dostosowywania klastra EKS. To, co możesz dostosować, jest określane przez administratora Katalogu usług AWS.

Uwaga: Autorzy pominą panel wersji, ponieważ posiadają tylko jedną wersję.

Parametry

Wprowadź podstawową konfigurację klastra EKS zgodnie z opisem na zrzucie ekranu.W tym demo użyto trzech Stref Dostępności w regionie Północnej Wirginii (us-east-1).Do celów testowych zezwolono również wszystkim adresom IP z zakresu CIDR na dostęp do instancji, ale nigdy nie jest to zalecane dla wszystkich środowisk produkcyjnych.W polu Dozwolony dostęp zewnętrzny CIDR wpisz 0.0.0.0/0 dla wygody testu.W środowisku produkcyjnym upewnij się, że jest to zgodne z polityką bezpieczeństwa Twojej organizacji.Następnie określ klucz SSH, który ma być używany podczas uzyskiwania dostępu do wystąpień EC2 używanych dla klastra EKS.

Konfiguracja klastra EKS

Następnie w konfiguracji Amazon EKS włącz publiczny punkt końcowy dostępu EKS dla AWS CodePipeline, aby przeprowadzić wdrożenie w imieniu programisty.

Przejdź do następnego kroku. Zdecydowanie zaleca się zapoznanie się z opcjami udostępnionymi przez AWS Quickstart i wykorzystanie ich jako możliwej metody przesyłania standardowych aplikacji do klastra EKS i do rzeczywistych użytkowników końcowych w organizacji.

Przewiń w dół do końca strony, a następnie kliknij Uruchom produkt.

Konfiguracja EKS

Po kliknięciu przycisku Uruchom produkt zobaczysz, że został utworzony produkt, który wdraża zasoby AWS w Twoim imieniu. Jeśli przewiniesz w dół do zakładki Zdarzenie, zobaczysz ARN stosu AWS CloudFormation. Możesz śledzić postęp, klikając łącze CloudFormation. Udostępnienie każdego zasobu może zająć ponad 30 minut. W tym czasie zdecydowanie możesz zrobić sobie przerwę.

Konfiguracja EKS

Gdy zasoby będą gotowe, dane wyjściowe CloudFormation będą dostępne na stronie Szczegóły produktu w menu Katalog Usług AWS. Zanotuj EKSClusterName, aby można było go używać dla pozostałych dwóch produktów.

Opublikuj standaryzowane zasoby klastra i kontenera EKS za pomocą Katalogu usług AWS

Uruchamiając Produkt Klastra EKS, stworzyłeś następujące zasoby:

Produkt Klastra EKS

Uzyskaj dostęp do klastra EKS, uzyskując dostęp do hosta bastionu i wykorzystując go do testowania potoku:

Uzyskaj dostęp do klastra EKS, uzyskując dostęp do hosta bastionu i wykorzystując go do testowania potoku

Chcesz sprawdzić udostępniony klaster EKS? Zaloguj się do hosta bastionu przy użyciu adresu IP w sekcji wyjściowej. Użyj podanego klucza ssh. Możesz zobaczyć wynik wyświetlany jako następujący zrzut ekranu po uruchomieniu kubectl get node.

Wdroż aplikację WordPress na utworzony klaster EKS

Następnie pora na wdrożenie zasobów kontenera w klastrze za pomocą wykresów Helm. Wróć do listy produktów, a następnie kliknij WordPress w klastrze EKS. Gdy zobaczysz stronę Szczegóły produktu, kliknij Uruchom produkt.

Wordpress EKS

Wpisz nazwę produktu, którą chcesz udostępnić, a następnie przewiń w dół do panelu Parametr. Zostaniesz poproszony o wpisanie nazwy klastra EKS, w którym powinien znajdować się Twój WordPress. Wprowadź zanotowaną nazwę klastra EKS, którą właśnie utworzyliśmy na podstawie produktu z katalogu usług AWS. Następnie przewiń w dół i kliknij Uruchom produkt.

Wordpress EKS

Po zakończeniu zadań aprowizacji można zobaczyć, że stan produktu zmienił się na Dostępny. Przekonaj się czy to prawda. Wróć do sesji ssh i do hosta bastionu. Sprawdź nowo dodane zasoby Kubernetes, uruchamiając kubectl get pod.

kubectl get pod

Skoro już wiesz, że zasoby Kubernetes zostały pomyślnie utworzone, sprawdź, czy nowa aplikacja WordPress rzeczywiście działa. Uruchom kubectl get svc i znajdź adres URL modułu równoważenia obciążenia aplikacji WordPress.

kubectl get svc

Skopiuj i wklej adres URL LoadBalancera do swojej przeglądarki internetowej, a zobaczysz aplikację WordPress! Jako użytkownik biznesowy możesz z powodzeniem wdrożyć aplikację pod kontrolą administratora.

Uwaga: utworzenie systemu równoważenia obciążenia zajmuje kilka minut.

Wordpress EKS

Tworzenie potoku CI/CD

Na koniec utwórz potok dla nowego projektu dewelopera, w tym repozytorium AWS CodeCommit i Amazon Elastic Container Registry.

1. Wróć do listy produktów, a następnie kliknij CodePipeline z CodeCommit. Gdy zobaczysz stronę Szczegóły produktu, kliknij Uruchom produkt.

2. Wypełnij pola informacyjne nazwą klastra, rolą uprawnień i informacjami o repozytorium CodeCommit.

CodePipeline z CodeCommit

  • Najpierw wprowadź nazwę klastra EKS, który będzie celem ostatecznego wdrożenia potoku.
  • Aby potok mógł utworzyć wymagane zasoby kontenera w klastrze Kubernetes, musi mieć odpowiedni poziom uwierzytelniania. W tym demo użyjemy danych wyjściowych stosu CDK, w którym udostępniliśmy katalog usług AWS. Launchrole ARN znajdziesz w swoim terminalu.

klaster EKS

  • Wprowadź nazwę repozytorium CodeCommit w celu hostowania aplikacji.

3. Po utworzeniu wszystkich zasobów możesz zobaczyć następujące dane wyjściowe ze strony szczegółów produktu:

CodeCommit

Zanotuj CodeCommitRepository w następnym kroku.

  1. 4. Jeśli klikniesz wartość wyjściową potoku, zobaczysz nieudany CodePipeline, jeśli udostępniono. Dzieje się tak, ponieważ źródłowe repozytorium CodeCommit jest również nowo utworzone, co oznacza, że ​​nie ma żadnego zatwierdzenia do śledzenia przez potok.

5. Aby przetestować potok, udostępnij host bastionu repozytoriom AWS CodeCommit, wykonując poniższe czynności:

  • Skopiuj RoleName z wydrukowanego wyniku po uruchomieniu
aws iam list-roles | grep BastionRole
  • Wykonaj następujące polecenie
aws iam attach-role-policy --role-name <<BastionRole 
RoleName>> --policy-arn 
arn:aws:iam::aws:policy/AWSCodeCommitPowerUser

6. Wklej następujące polecenia w terminalu, w którym działa Twoja sesja SSH:

git config --global credential.helper '!aws codecommit credential-helper $@'
git config --global credential.UseHttpPath true 
git clone https://github.com/yjw113080/aws-cdk-multi-region-sample-app
git clone <<CodeCommitRepository>> codecommit # replace <<CodeCommitRepository>> with the product output from the console.
cp -R aws-cdk-multi-region-sample-app/* codecommit/
cd codecommit
git add .
git commit -m "initial commit"
git push

Jeśli przejdziesz do konsoli AWS CodePipeline przy użyciu danych wyjściowych produktu, zobaczysz, że potok jest wyzwalany przez polecenia w powyższym bloku kodu.

AWS CodePipeline

Po zakończeniu potoku będzie można zobaczyć nowo utworzony zasób Kubernetes, uruchamiając kubectl get all w sesji SSH.

AWS Kubernetes SSH

Skopiuj ZEWNĘTRZNY-IP usługi/hello-py i wklej go do przeglądarki. Zobaczysz, że wdrożony kod źródłowy został pomyślnie wdrożony.

EKS stack hello

Sprzątanie

Aby uniknąć opłat, wykonaj następujące kroki, aby usunąć zasoby udostępnione w tym poście.

  1. Jako użytkownik końcowy lub programista z konsoli AWS Service Catalog przejdź do listy Provisioned products, aby zakończyć udostępniane zasoby. Zamykaj produkty pojedynczo, w odwrotnej kolejności niż udostępnianie.
  • CodePipeline z CodeCommit;
  • WordPress w klastrze EKS;
  • Klaster EKS.
  1. Dla każdego produktu w Akcje wybierz Zakończ, wpisz zakończ, a następnie wybierz Zakończ.
  2. Po usunięciu wszystkich udostępnionych produktów zniszcz zasoby katalogu usług AWS, uruchamiając polecenie cdk destroy w terminalu, w którym uruchomiono wdrażanie cdk.

Jeśli zdecydowałeś się uruchomić zasób za pomocą AWS CloudFormation, przejdź do konsoli za pomocą tego linku i usuń utworzony Stack.

AWS CloudFormation

Wnioski

W tym artykule pokazano, jak wdrożyć katalog usług AWS przy użyciu AWS CDK i jak może pomóc w standaryzacji klastra EKS i powiązanych zasobów, w tym zasobów Kubernetes i CI/CD Pipeline. Dzięki Katalogowi usług AWS możesz pomóc użytkownikom końcowym w łatwym pozyskiwaniu zasobów IT i utrzymaniu tempa innowacji bez naruszania jakichkolwiek najlepszych praktyk zarządzania i wymagań zgodności organizacji.

źródło: AWS



Case Studies
Referencje

Jesteśmy ogromnie zadowoleni ze współpracy z firmą Hostersi. Ich specjaliści bardzo nam pomogli w procesie migracji oraz zaprojektowania infrastruktury hybrydowej (Amazon Web Services i on-premise). Polecamy zespół Hostersi jako rzetelnego i profesjonalnego partnera o ogromnych kompetencjach w obszarze DevOps i Cloud Computingu.

Zbigniew Ćwikliński
Director of the Customer Relationship and Technology Development Department
W skrócie o nas
Specjalizujemy się w dostarczaniu rozwiązań IT w obszarach projektowania infrastruktury serwerowej, wdrażania chmury obliczeniowej, opieki administracyjnej i bezpieczeństwa danych.