CoreOS je operační systém navržený pro kontejnery Docker. CoreOS má Docker předinstalovaný hned po vybalení. Kubernetes lze nainstalovat na CoreOS pomocí CloudFormation, jak je podrobně popsáno v dřívějším článku „Začínáme s Kubernetes na Amazon Web Services (AWS).“
Problém
Kubernetes není předinstalovaný na CoreOS a lze jej nainstalovat pomocí kube-aws a vyžaduje určitý uživatelský vstup a konfiguraci. Instalace Kubernetes na CoreOS je obtížný proces a skládá se z následujících fází znázorněných na obrázku 1.
Obrázek 1: Instalace Kubernetes na CoreOS Stages
Řešení
Jenkins Pipeline lze použít k automatizaci instalace Kubernetes, jak je znázorněno na obrázku 2. Různé fáze instalace lze nakonfigurovat v Jenkinsfile a když je potrubí spuštěno, kube-aws stáhne se nástroj, CloudFormation zásobník se inicializuje, vykreslí se obsah adresáře aktiv, přizpůsobí se parametry clusteru, jako je počet instancí pracovníků, a následně se cluster ověří a spustí.
Obrázek 2: Jenkins Pipeline pro instalaci Kubernetes na CoreOS
Instalace Kubernetes pomocí Jenkins Pipeline je příkladem Automation Návrhový vzor DevOps.
V tutoriálu se třemi články zautomatizujeme proces instalace Kubernetes pomocí Jenkins Pipeline. Tento článek má následující sekce:
- Nastavení prostředí
- Vytvoření nezbytných artefaktů
- Vytvoření Jenkinsova uzlu
- Závěr
Nastavení prostředí
Nainstalujeme Jenkins pomocí Docker image „jenkins“ na instanci CoreOS. Spustíme cluster Kubernetes na instanci Amazon AMI Linux EC2 pomocí Jenkins Pipeline. Nejprve spusťte dvě instance EC2, jednu s Amazon Linux a druhou s CoreOS, jak ukazuje obrázek 3.
Obrázek 3: Získání veřejné IP adresy
Při vytváření instance Amazon Linux vytvořte nový pár klíčů (například „jenkins“) výběrem „Vytvořit nový pár klíčů“ a stáhněte si soukromý klíč „jenkins.pem“, který se použije pro konfiguraci agenta Jenkins. Získejte veřejnou IP adresu instance EC2 se systémem CoreOS a SSH a přihlaste se k instanci.
ssh -i "jenkins.pem" [email protected]
Spusťte obraz Docker pro Jenkinse a spusťte Jenkins.
docker run -name jenkins -p 8080:8080 -p 50000:50000 jenkins
Stáhne se obrázek Dockeru „Jenkins“. Jenkins začíná. Zkopírujte vygenerované heslo. Získejte veřejné DNS instance EC2, na které běží Jenkins. Pomocí adresy URL
Obrázek 4: Jenkins Admin Console
Vytvoření nezbytných artefaktů
Nyní musíme vytvořit nějaké artefakty pro cluster Kubernetes, které nejsou přístupné automatizaci.
- Pár klíčů EC2
- Klíč KMS
- Adresář Jenkins /var/jenkins
- Přihlášení pomocí SSH k instanci Amazon EC2 se systémem Amazon Linux
ssh -i "jenkins.pem" [email protected]
Protože se používá Amazon EC2, je vyžadován účet AWS. Potřebujeme vytvořit sadu přihlašovacích údajů AWS Security, které použijeme ke konfiguraci instance EC2, ze které se spouští zásobník CloudFormation. Chcete-li vytvořit nová pověření zabezpečení AWS, klikněte na Pověření zabezpečení pro uživatelský účet a klikněte na Vytvořit nový přístupový klíč pro vytvoření přístupového klíče. Zkopírujte ID přístupového klíče a přístupový klíč. V instanci Amazon Linux spusťte následující příkaz pro konfiguraci instance s přihlašovacími údaji AWS:
aws configure
Po zobrazení výzvy zadejte ID přístupového klíče a přístupový klíč. Zadejte výchozí název oblasti (us-east-1 ) a výstupní formát (json ), jak je znázorněno na obrázku 5.
Obrázek 5: Konfigurace instance Jenkins pomocí pověření AWS, oblasti a výchozího výstupního formátu
Dále vytvořte pár klíčů EC2. Spuštěním následujícího příkazu vytvořte pár klíčů s názvem kubernetes-coreos a uložte jej jako kubernetes-coreos.pem .
aws ec2 create-key-pair --key-name kubernetes-coreos --query 'KeyMaterial' --output text > kubernetes-coreos.pem
Upravte přístupová oprávnění páru klíčů pomocí režimu 400, který nastavuje oprávnění ke čtení vlastníkem.
chmod 400 kubernetes-coreos.pem
Vytvoří se pár klíčů a nastaví se přístupová oprávnění (viz obrázek 6).
Obrázek 6: Vytvoření páru klíčů pro Kubernetes
Pár klíčů se také zobrazí v konzole AWS EC2, jak je znázorněno na obrázku 7.
Obrázek 7: Získání veřejné IP adresy
Dále vytvořte klíč KMS, který se používá k šifrování/dešifrování aktiv clusteru TLS a je identifikován řetězcem Arn. Použijte aws rozhraní příkazového řádku k vytvoření klíče KMS pro region us-east-1 .
aws kms --region=us-east-1 create-key --description="kube-aws assets"
Vytvoří se klíč KMS, jak ukazuje obrázek 8. Zkopírujte KeyMetadata.Arn řetězec začínající arn:aws:kms:us-east-1 k pozdějšímu použití k inicializaci clusteru CloudFormation.
Obrázek 8: Vytvoření klíče KMS
Potřebujeme také vytvořit adresář pro Jenkinse:
sudo mkdir /var/Jenkins sudo chmod 777 /var/jenkins
Vytvoří se adresář a nastaví se oprávnění, jak ukazuje obrázek 9.
Obrázek 9: Vytvoření adresáře pro Jenkinse
Vytvoření Jenkinsova uzlu
Jenkins Pipeline je projekt Jenkins, který využívá zásuvný modul Jenkins Pipeline. Potrubí se obvykle skládá z posloupnosti kroků, přičemž každý krok provádí úkol. Dostupné exekutory na agentech se používají ke spuštění projektu Jenkins. „Agent“ je stroj konfigurovaný pro stahování projektů z hlavního uzlu. „Hlavní“ uzel je stroj, na kterém je Jenkins nainstalován a zpracovává všechny úlohy systému sestavení, včetně analýzy skriptů Pipeline a spuštění projektu Jenkins na exekutoru. „Exekutor“ je výpočetní prostředek pro kompilaci kódu a mohl by být konfigurován na uzlech master nebo agent. V této části vytvoříme uzel agenta a nakonfigurujeme na něm spouštěče. Vyberte možnost Spravovat Jenkinse v Jenkins Dashboard, jak je znázorněno na obrázku 10.
Obrázek 10: Získání veřejné IP adresy
Následně vyberte Spravovat uzly , jak je znázorněno na obrázku 11.
Obrázek 11: Získání veřejné IP adresy
Měl by být uveden „hlavní“ uzel. Klikněte na Nový uzel vytvořte uzel agenta, jak je znázorněno na obrázku 12.
Obrázek 12: Získání veřejné IP adresy
Zadejte Název uzlu (jenkins , například) a vyberte Stálého zástupce přepínací tlačítko, jak je znázorněno na obrázku 13. Klepněte na tlačítko OK.
Obrázek 13: Získání veřejné IP adresy
Ke konfiguraci nového uzlu agenta potřebujeme hostitelský DNS, na kterém má být agent vytvořen. Zkopírujte veřejný DNS z konzoly AWS EC2 pro instanci EC2 s bitovou kopií Amazon Linux, jak je znázorněno na obrázku 14.
Obrázek 14: Získání veřejné IP adresy
V novém uživatelském rozhraní pro vstup agenta zadejte Název (jenkins , například). Zadejte # exekutorů jako 1. Zadejte Vzdálený kořenový adresář jako /var/jenkins , který byl vytvořen dříve. Zadejte Štítky jako „jenkins“, jejichž význam probereme v následující části. V části Použití , ponechte výchozí nastavení „Používejte tento uzel co nejvíce“. V části Metoda spuštění , vyberte „Spustit podřízené agenty na strojích Unix přes SSH“. V Hostitel , zadejte veřejný DNS zkopírovaný z EC2 Console. V části Dostupnost , vyberte „Udržovat tohoto agenta co nejvíce online“. Pro Přihlašovací údaje , klikněte na tlačítko Přidat a vyberte Poskytovatel pověření Jenkins , jak je znázorněno na obrázku 15.
Obrázek 15: Získání veřejné IP adresy
V části Přidat přihlašovací údaje vyberte jako Globální přihlašovací údaje možnost Doména a Laskavý jako Globální . Zadejte Uživatelské jméno jako „ec2-user“ a vyberte Zadat přímo . Zkopírujte a vložte obsah souboru soukromého klíče jenkins.pem v Klíče pole, jak je znázorněno na obrázku 16.
Obrázek 16: Přidání Jenkinsových přihlašovacích údajů
Klikněte na Přidat , jak je znázorněno na obrázku 17.
Obrázek 17: Jenkins Credentials Provider>Přidat
Vyberte ec2-user přihlašovací údaje v Přihlašovací údaje , jak je znázorněno na obrázku 18. Klikněte na Uložit .
Obrázek 18: Konfigurace Jenkins Node
Bude přidán nový agent, jak je znázorněno na obrázku 19. Zpočátku nemusí být agent dostupný, protože se stále začíná.
Obrázek 19: Jenkins Agent vytvořen
Klikněte na odkaz agenta a klikněte na Znovu spustit agenta , v případě potřeby, jak je znázorněno na obrázku 20.
Obrázek 20: Opětovné spuštění agenta
Výstupní zpráva „Agent byl úspěšně připojen a online“ znamená, že agent byl spuštěn (viz Obrázek 21).
Obrázek 21: Agent se úspěšně připojil a je online
Agent „jenkins“ by měl být uveden jako spuštěný, jak je znázorněno na obrázku 22.
Obrázek 22: Jenkins Agent Running
Závěr
V tomto článku jsme představili důležitost automatizace instalace Kubernetes pomocí Jenkins. Začali jsme instalací Jenkinse na CoreOS, vytvořením nezbytných artefaktů a vytvořením Jenkinsova uzlu. V následujícím článku nakonfigurujeme Jenkinsfile pro Jenkinsovo potrubí a vytvoříme Jenkinsovo potrubí. A ve 3. článku spustíme Jenkinsovo potrubí pro instalaci Kubernetes.