sql >> Databasteknik >  >> RDS >> Database

Använda Jenkins med Kubernetes AWS, del 1

CoreOS är operativsystemet designat för Docker-containrar. CoreOS har Docker förinstallerat ur kartongen. Kubernetes kan installeras på CoreOS med CloudFormation, som diskuterats i detalj i en tidigare artikel, "Komma igång med Kubernetes på Amazon Web Services (AWS)."

Problem

Kubernetes är inte förinstallerat på CoreOS och kan installeras med hjälp av kube-aws verktyg och det kräver viss användarinmatning och konfiguration. Att installera Kubernetes på CoreOS är en involverad process och består av följande steg som visas i figur 1.


Figur 1: Kubernetes-installation på CoreOS Stages

Lösning

En Jenkins Pipeline kan användas för att automatisera installationen av Kubernetes, som visas i figur 2. De olika stegen av installationen kan konfigureras i en Jenkinsfil och, när Pipeline körs, kube-aws verktyget laddas ner, CloudFormation stack initieras, innehållet i tillgångskatalogen renderas, klusterparametrarna som antalet arbetarinstanser anpassas, och därefter valideras och lanseras klustret.


Figur 2: Jenkins Pipeline för att installera Kubernetes på CoreOS

Att installera Kubernetes med en Jenkins Pipeline är ett exempel på Automation DevOps designmönster.

I en handledning med tre artiklar ska vi automatisera Kubernetes-installationsprocessen med hjälp av en Jenkins Pipeline. Den här artikeln har följande avsnitt:

  • Ställa in miljön
  • Skapa de nödvändiga artefakterna
  • Skapa en Jenkins-nod
  • Slutsats

Ställa in miljön

Vi ska installera Jenkins med Docker-bilden "jenkins" på en CoreOS-instans. Vi kommer att lansera ett Kubernetes-kluster på en Amazon AMI Linux EC2-instans med en Jenkins Pipeline. Starta först två EC2-instanser, en som kör Amazon Linux och den andra som kör CoreOS, som visas i figur 3.


Figur 3: Få den offentliga IP-adressen

När du skapar Amazon Linux-instansen, skapa ett nytt nyckelpar ("jenkins", till exempel) genom att välja "Skapa ett nytt nyckelpar" och ladda ner den privata nyckeln "jenkins.pem" som ska användas för att konfigurera en Jenkins-agent. Skaffa den offentliga IP-adressen för EC2-instansen som kör CoreOS och SSH och logga in på instansen.

ssh -i "jenkins.pem"  [email protected]

Kör Docker-bilden för Jenkins för att starta Jenkins.

docker run -name jenkins -p 8080:8080 -p 50000:50000 jenkins

Docker-bilden "Jenkins" laddas ner. Jenkins sätter igång. Kopiera det skapade lösenordet. Skaffa den offentliga DNS för EC2-instansen som kör Jenkins. Använder webbadressen :8080 , logga in på Jenkins Dashboard, som visas i figur 4.


Figur 4: Jenkins administratörskonsol

Skapa de nödvändiga artefakterna

Nu måste vi skapa några artefakter för ett Kubernetes-kluster som inte är mottagliga för automatisering.

  • EC2-nyckelpar
  • KMS-nyckel
  • Jenkins katalog /var/jenkins
  • SSH-inloggning till Amazon EC2-instansen som kör Amazon Linux
ssh -i "jenkins.pem"  [email protected]

Eftersom Amazon EC2 används krävs ett AWS-konto. Vi behöver skapa en uppsättning AWS Security-referenser, som vi ska använda för att konfigurera EC2-instansen från vilken CloudFormation-stacken startas. För att skapa nya AWS-säkerhetsuppgifter, klicka på Säkerhetsuppgifter för användarkontot och klicka på Skapa ny åtkomstnyckel för att skapa en åtkomstnyckel. Kopiera åtkomstnyckel-ID och åtkomstnyckeln. I Amazon Linux-instansen, kör följande kommando för att konfigurera instansen med AWS-referenserna:

aws configure

Ange åtkomstnyckel-id och åtkomstnyckel när du uppmanas. Ange standardregionnamnet (us-east-1 ) och utdataformatet (json ), som visas i figur 5.


Figur 5: Konfigurera Jenkins-instans med AWS-uppgifter, region och standardutdataformat

Skapa sedan ett EC2-nyckelpar. Kör följande kommando för att skapa ett nyckelpar som heter kubernetes-coreos och spara den som kubernetes-coreos.pem .

aws ec2 create-key-pair
   --key-name kubernetes-coreos
   --query 'KeyMaterial'
   --output text > kubernetes-coreos.pem

Ändra åtkomstbehörigheterna för nyckelparet med läget som 400, vilket ställer in åtkomstbehörigheter att läsa av ägaren.

chmod 400 kubernetes-coreos.pem

Ett nyckelpar skapas och åtkomstbehörigheter ställs in (se figur 6).


Figur 6: Skapa ett nyckelpar för Kubernetes

Nyckelparet listas också i AWS EC2-konsolen, som visas i figur 7.


Figur 7: Få den offentliga IP-adressen

Skapa sedan en KMS-nyckel, som används för att kryptera/dekryptera kluster TLS-tillgångar och identifieras av en Arn-sträng. Använd aws kommandoradsgränssnitt för att skapa en KMS-nyckel för region us-east-1 .

aws kms
   --region=us-east-1 create-key
   --description="kube-aws assets"

En KMS-nyckel skapas, som visas i figur 8. Kopiera KeyMetadata.Arn sträng som börjar med arn:aws:kms:us-east-1 att användas senare för att initiera klustret CloudFormation.


Figur 8: Skapa en KMS-nyckel

Vi måste också skapa en katalog för Jenkins:

sudo mkdir /var/Jenkins
sudo chmod 777 /var/jenkins

En katalog skapas och behörigheter ställs in, som visas i figur 9.


Figur 9: Skapa en katalog för Jenkins

Skapa en Jenkins-nod

En Jenkins Pipeline är ett Jenkins-projekt som använder sig av Jenkins Pipeline-plugin. En pipeline består vanligtvis av en sekvens av steg, där varje steg utför en uppgift. Tillgängliga exekutörer på agenter används för att driva ett Jenkins-projekt. En "agent" är en maskin som är konfigurerad att ladda ner projekt från huvudnoden. "Master"-noden är den maskin som Jenkins är installerad på och hanterar alla uppgifter för byggsystemet, inklusive att analysera pipeline-skript och köra ett Jenkins-projekt på en executor. En "executor" är en beräkningsresurs för att kompilera kod och den kan konfigureras på master- eller agentnoderna. I det här avsnittet ska vi skapa en agentnod och konfigurera en executor på noden. Välj Hantera Jenkins i Jenkins Dashboard, som visas i figur 10.


Figur 10: Få den offentliga IP-adressen

Välj sedan Hantera noder , som visas i figur 11.


Figur 11: Få den offentliga IP-adressen

"Master"-noden bör listas. Klicka på Ny nod för att skapa en agentnod, som visas i figur 12.


Figur 12: Få den offentliga IP-adressen

Ange ett nodnamn (jenkins , till exempel) och välj Permanent agent alternativknapp, som visas i figur 13. Klicka på OK.


Figur 13: Få den offentliga IP-adressen

För att konfigurera den nya agentnoden behöver vi värd-DNS som agenten ska skapas på. Kopiera den offentliga DNS:n från AWS EC2-konsolen för EC2-instansen som kör en Amazon Linux-bild, som visas i figur 14.


Figur 14: Få den offentliga IP-adressen

Ange ett namn i det nya användargränssnittet för agentinmatning (jenkins , till exempel). Ange antalet exekutörer som 1. Ange en fjärrrotkatalog som /var/jenkins , som skapades tidigare. Ange Etiketter som "jenkins", vars betydelse vi kommer att diskutera i ett efterföljande avsnitt. I Användning , behåll standardinställningen "Använd den här noden så mycket som möjligt." I Startmetod , välj "Starta slavagenter på Unix-maskiner via SSH." I värd , ange den offentliga DNS som kopierats från EC2-konsolen. I Tillgänglighet , välj "Håll den här agenten online så mycket som möjligt." För Inloggningsuppgifter klickar du på Lägg till rullgardinsmenyn och välj Jenkins Credentials Provider , som visas i figur 15.


Figur 15: Få den offentliga IP-adressen

I Lägg till autentiseringsuppgifter väljer du Domän som Globala referenser och Snäll som Global . Ange Användarnamn som "ec2-user" och välj Enter direkt . Kopiera och klistra in innehållet i den privata nyckelfilen jenkins.pem i nyckeln fältet, som visas i figur 16.


Figur 16: Lägger till Jenkins-uppgifter

Klicka på Lägg till , som visas i figur 17.


Figur 17: Jenkins Credentials Provider>Lägg till

Välj ec2-användare inloggningsuppgifter i Inloggningsuppgifter , som visas i figur 18. Klicka på Spara .


Figur 18: Konfigurera Jenkins Node

En ny agent läggs till, som visas i figur 19. Inledningsvis kanske agenten inte är tillgänglig eftersom den fortfarande håller på att komma igång.


Figur 19: Jenkins Agent skapad

Klicka på agentlänken och klicka på Starta om agent , om det behövs, som visas i figur 20.


Figur 20: Återlanserar Agent

Utmatningsmeddelandet "Agent framgångsrikt ansluten och online" indikerar att agenten har startat (se figur 21).


Figur 21: Agent ansluten och online

"Jenkins"-agenten bör listas som igång, som visas i figur 22.


Figur 22: Jenkins Agent igång

Slutsats

I den här artikeln introducerade vi vikten av att automatisera en Kubernetes-installation med Jenkins. Vi började med att installera Jenkins på CoreOS, skapa de nödvändiga artefakterna och skapa en Jenkins-nod. I en efterföljande artikel ska vi konfigurera en Jenkins-fil för en Jenkins-pipeline och skapa en Jenkins-pipeline. Och i en tredje artikel kommer vi att köra Jenkins pipeline för att installera Kubernetes.


  1. Hur kan jag söka (skiftlägeskänsligt) i en kolumn med hjälp av LIKE jokertecken?

  2. Distribuera MySQL, MariaDB, Percona Server, MongoDB eller PostgreSQL - enkelt med ClusterControl

  3. EXTRACTA (datetime) Funktion i Oracle

  4. PostgreSQL multi INSERT...RETURNERAR med flera kolumner