CoreOS to system operacyjny zaprojektowany dla kontenerów Docker. CoreOS ma wstępnie zainstalowany Docker po wyjęciu z pudełka. Kubernetes można zainstalować na CoreOS przy użyciu CloudFormation, jak omówiono szczegółowo we wcześniejszym artykule „Pierwsze kroki z Kubernetes w Amazon Web Services (AWS)”.
Problem
Kubernetes nie jest wstępnie zainstalowany na CoreOS i można go zainstalować za pomocą kube-aws narzędzie i wymaga pewnych danych wejściowych użytkownika i konfiguracji. Instalacja Kubernetes na CoreOS to skomplikowany proces i składa się z następujących etapów pokazanych na rysunku 1.
Rysunek 1: Instalacja Kubernetes na CoreOS Stages
Rozwiązanie
Jenkins Pipeline może zostać użyty do zautomatyzowania instalacji Kubernetes, jak pokazano na rysunku 2. Różne etapy instalacji można skonfigurować w pliku Jenkins a po uruchomieniu potoku kube-aws narzędzie zostanie pobrane, CloudFormation stos zostaje zainicjowany, zawartość Katalogu zasobów jest renderowana, parametry klastra, takie jak liczba instancji roboczych, są dostosowywane, a następnie klaster jest sprawdzany i uruchamiany.
Rysunek 2: Jenkins Pipeline do instalacji Kubernetes na CoreOS
Instalacja Kubernetes przy użyciu potoku Jenkins jest przykładem Automatyzacji Wzorzec projektowy DevOps.
W trzyartykułowym samouczku zautomatyzujemy proces instalacji Kubernetes za pomocą Jenkins Pipeline. Ten artykuł ma następujące sekcje:
- Ustawianie środowiska
- Tworzenie wstępnych artefaktów
- Tworzenie węzła Jenkinsa
- Wniosek
Ustawianie środowiska
Zainstalujemy Jenkinsa za pomocą obrazu Docker „jenkins” na instancji CoreOS. Uruchomimy klaster Kubernetes na instancji Amazon AMI Linux EC2 z wykorzystaniem Jenkins Pipeline. Najpierw uruchom dwie instancje EC2, jedną z systemem Amazon Linux, a drugą z systemem CoreOS, jak pokazano na rysunku 3.
Rysunek 3: Uzyskiwanie publicznego adresu IP
Tworząc instancję Amazon Linux, utwórz nową parę kluczy (na przykład „jenkins”), wybierając „Utwórz nową parę kluczy” i pobierz klucz prywatny „jenkins.pem”, który będzie używany do konfiguracji agenta Jenkins. Uzyskaj publiczny adres IP instancji EC2 z systemem CoreOS i SSH zaloguj się do instancji.
ssh -i "jenkins.pem" [email protected]
Uruchom obraz Docker dla Jenkinsa, aby uruchomić Jenkinsa.
docker run -name jenkins -p 8080:8080 -p 50000:50000 jenkins
Obraz Dockera „Jenkins” zostaje pobrany. Jenkins zaczyna. Skopiuj wygenerowane hasło. Uzyskaj publiczny DNS instancji EC2 z systemem Jenkins. Korzystanie z adresu URL
Rysunek 4: Konsola administracyjna Jenkins
Tworzenie wstępnych artefaktów
Teraz musimy utworzyć kilka artefaktów dla klastra Kubernetes, które nie podlegają automatyzacji.
- Para kluczy EC2
- Klucz KMS
- Katalog Jenkinsa /var/jenkins
- Logowanie SSH do instancji Amazon EC2 z systemem Amazon Linux
ssh -i "jenkins.pem" [email protected]
Ponieważ używany jest Amazon EC2, wymagane jest konto AWS. Musimy stworzyć zestaw poświadczeń AWS Security, których użyjemy do skonfigurowania instancji EC2, z której uruchamiany jest stos CloudFormation. Aby utworzyć nowe poświadczenia zabezpieczeń AWS, kliknij Poświadczenia zabezpieczeń dla konta użytkownika i kliknij Utwórz nowy klucz dostępu aby utworzyć klucz dostępu. Skopiuj Identyfikator klucza dostępu i klucz dostępu. W instancji Amazon Linux uruchom następujące polecenie, aby skonfigurować instancję przy użyciu poświadczeń AWS:
aws configure
Po wyświetleniu monitu określ identyfikator klucza dostępu i klucz dostępu. Określ domyślną nazwę regionu (us-east-1 ) i format wyjściowy (json ), jak pokazano na rysunku 5.
Rysunek 5: Konfigurowanie instancji Jenkins z poświadczeniami AWS, regionem i domyślnym formatem wyjściowym
Następnie utwórz parę kluczy EC2. Uruchom następujące polecenie, aby utworzyć parę kluczy o nazwie kubernetes-coreos i zapisz go jako kubernetes-coreos.pem .
aws ec2 create-key-pair --key-name kubernetes-coreos --query 'KeyMaterial' --output text > kubernetes-coreos.pem
Zmodyfikuj uprawnienia dostępu pary kluczy, używając trybu 400, który ustawia uprawnienia dostępu do odczytu przez właściciela.
chmod 400 kubernetes-coreos.pem
Zostanie utworzona para kluczy i zostaną ustawione uprawnienia dostępu (patrz Rysunek 6).
Rysunek 6: Tworzenie pary kluczy dla Kubernetes
Para kluczy jest również wyświetlana w konsoli AWS EC2, jak pokazano na rysunku 7.
Rysunek 7: Uzyskiwanie publicznego adresu IP
Następnie utwórz klucz KMS, który jest używany do szyfrowania/odszyfrowywania zasobów TLS klastra i jest identyfikowany przez ciąg Arn. Użyj aws interfejs wiersza poleceń do tworzenia klucza KMS dla regionu us-east-1 .
aws kms --region=us-east-1 create-key --description="kube-aws assets"
Zostanie utworzony klucz KMS, jak pokazano na rysunku 8. Skopiuj KeyMetadata.Arn ciąg rozpoczynający się od arn:aws:kms:us-east-1 do wykorzystania później do zainicjowania klastra CloudFormation.
Rysunek 8: Tworzenie klucza KMS
Musimy również stworzyć katalog dla Jenkinsa:
sudo mkdir /var/Jenkins sudo chmod 777 /var/jenkins
Zostanie utworzony katalog i zostaną ustawione uprawnienia, jak pokazano na rysunku 9.
Rysunek 9: Tworzenie katalogu dla Jenkinsa
Tworzenie węzła Jenkins
Jenkins Pipeline to projekt Jenkins korzystający z wtyczki Jenkins Pipeline. Potok zazwyczaj składa się z sekwencji kroków, z których każdy wykonuje zadanie. Dostępne executory na agentach są używane do uruchamiania projektu Jenkins. „Agent” to maszyna skonfigurowana do odciążania projektów z węzła głównego. Węzeł „główny” to maszyna, na której jest zainstalowany Jenkins i obsługuje wszystkie zadania systemu kompilacji, w tym parsowanie skryptów Pipeline i uruchamianie projektu Jenkins na executorze. „Executor” to zasób obliczeniowy do kompilacji kodu, który można skonfigurować na węzłach głównych lub agentach. W tej sekcji stworzymy węzeł agenta i skonfigurujemy executor na węźle. Wybierz Zarządzaj Jenkinsem w panelu Jenkins, jak pokazano na rysunku 10.
Rysunek 10: Uzyskiwanie publicznego adresu IP
Następnie wybierz Zarządzaj węzłami , jak pokazano na rysunku 11.
Rysunek 11: Uzyskiwanie publicznego adresu IP
Węzeł „główny” powinien zostać wyświetlony. Kliknij Nowy węzeł aby utworzyć węzeł agenta, jak pokazano na rysunku 12.
Rysunek 12: Uzyskiwanie publicznego adresu IP
Określ nazwę węzła (Jenkins na przykład) i wybierz Stały agent przycisk radiowy, jak pokazano na rysunku 13. Kliknij OK.
Rysunek 13: Uzyskiwanie publicznego adresu IP
Aby skonfigurować nowy węzeł agenta, będziemy potrzebować DNS hosta, na którym ma zostać utworzony agent. Skopiuj publiczny DNS z konsoli AWS EC2 dla instancji EC2 z uruchomionym obrazem Amazon Linux, jak pokazano na rysunku 14.
Rysunek 14: Uzyskiwanie publicznego adresu IP
W nowym interfejsie użytkownika do wprowadzania danych agenta podaj Nazwę (Jenkins , na przykład). Określ liczbę wykonawców jako 1. Określ Zdalny katalog główny jako /var/jenkins , który powstał wcześniej. Określ Etykiety jako „jenkins”, których znaczenie omówimy w dalszej części. W Użyciu , zachowaj domyślne ustawienie „Używaj tego węzła tak często, jak to możliwe”. W metodzie uruchamiania , wybierz „Uruchom agenty podrzędne na komputerach z systemem Unix przez SSH”. W hoście , określ publiczny DNS skopiowany z konsoli EC2. W Dostępności , wybierz „Utrzymuj tego agenta w trybie online tak często, jak to możliwe”. W przypadku Poświadczeń , kliknij Dodaj i wybierz Dostawca danych uwierzytelniających Jenkins , jak pokazano na rysunku 15.
Rysunek 15: Uzyskiwanie publicznego adresu IP
W Dodaj poświadczenia w oknie dialogowym wybierz Domena jako Globalne dane logowania i Miły jako Globalny . Określ Nazwę użytkownika jako „użytkownik ec2” i wybierz Wprowadź bezpośrednio . Skopiuj i wklej zawartość pliku klucza prywatnego jenkins.pem w Kluczu jak pokazano na rysunku 16.
Rysunek 16: Dodawanie poświadczeń Jenkinsa
Kliknij Dodaj , jak pokazano na rysunku 17.
Rysunek 17: Dostawca poświadczeń Jenkins>Dodaj
Wybierz użytkownika ec2- poświadczenie w Poświadczeniach , jak pokazano na rysunku 18. Kliknij Zapisz .
Rysunek 18: Konfiguracja węzła Jenkinsa
Zostanie dodany nowy agent, jak pokazano na rysunku 19. Początkowo agent może być niedostępny, ponieważ wciąż się rozpoczyna.
Rysunek 19: Utworzono agenta Jenkinsa
Kliknij link agenta i kliknij Uruchom ponownie agenta , w razie potrzeby, jak pokazano na rysunku 20.
Rysunek 20: Ponowne uruchomienie agenta
Komunikat wyjściowy „Agent pomyślnie połączony i online” wskazuje, że agent został uruchomiony (patrz Rysunek 21).
Rysunek 21: Agent pomyślnie połączony i online
Agent „jenkins” powinien zostać wyświetlony jako uruchomiony, jak pokazano na rysunku 22.
Rysunek 22: Agent Jenkinsa działa
Wniosek
W tym artykule przedstawiliśmy znaczenie automatyzacji instalacji Kubernetes za pomocą Jenkins. Zaczęliśmy od zainstalowania Jenkinsa na CoreOS, stworzenia wymaganych artefaktów i utworzenia węzła Jenkins. W kolejnym artykule skonfigurujemy plik Jenkins dla potoku Jenkins i utworzymy potok Jenkins. A w trzecim artykule uruchomimy potok Jenkins, aby zainstalować Kubernetes.