sql >> Database >  >> RDS >> Database

Jenkins gebruiken met Kubernetes AWS, deel 1

CoreOS is het besturingssysteem dat is ontworpen voor Docker-containers. CoreOS heeft Docker voorgeïnstalleerd uit de doos. Kubernetes kan op CoreOS worden geïnstalleerd met CloudFormation, zoals in detail besproken in een eerder artikel, "Aan de slag met Kubernetes op Amazon Web Services (AWS)."

Probleem

Kubernetes is niet vooraf geïnstalleerd op CoreOS en kan worden geïnstalleerd met behulp van de kube-aws tool en het vereist enige invoer en configuratie van de gebruiker. Het installeren van Kubernetes op CoreOS is een ingewikkeld proces en bestaat uit de volgende fasen die worden weergegeven in Afbeelding 1.


Figuur 1: Kubernetes-installatie op CoreOS Stages

Oplossing

Een Jenkins-pijplijn kan worden gebruikt om de installatie van Kubernetes te automatiseren, zoals weergegeven in afbeelding 2. De verschillende installatiefasen kunnen worden geconfigureerd in een Jenkinsbestand en, wanneer de Pipeline wordt uitgevoerd, de kube-aws tool wordt gedownload, de CloudFormation stack wordt geïnitialiseerd, de inhoud van de Asset Directory wordt weergegeven, de clusterparameters zoals het aantal werkinstanties worden aangepast en vervolgens wordt het cluster gevalideerd en gelanceerd.


Figuur 2: Jenkins Pipeline voor het installeren van Kubernetes op CoreOS

Het installeren van Kubernetes met behulp van een Jenkins-pijplijn is een voorbeeld van de Automatisering DevOps-ontwerppatroon.

In een zelfstudie van drie artikelen automatiseren we het Kubernetes-installatieproces met behulp van een Jenkins-pijplijn. Dit artikel heeft de volgende secties:

  • De omgeving instellen
  • De vereiste artefacten maken
  • Een Jenkins-knooppunt maken
  • Conclusie

De omgeving instellen

We zullen Jenkins installeren met behulp van Docker-afbeelding "jenkins" op een CoreOS-instantie. We zullen een Kubernetes-cluster lanceren op een Amazon AMI Linux EC2-instantie met behulp van een Jenkins-pijplijn. Start eerst twee EC2-instanties, één met Amazon Linux en de andere met CoreOS, zoals weergegeven in afbeelding 3.


Figuur 3: Het openbare IP-adres verkrijgen

Maak bij het maken van de Amazon Linux-instantie een nieuw sleutelpaar (bijvoorbeeld "jenkins") door "Een nieuw sleutelpaar maken" te selecteren en download de privésleutel "jenkins.pem" die moet worden gebruikt voor het configureren van een Jenkins-agent. Verkrijg het openbare IP-adres van de EC2-instantie waarop CoreOS wordt uitgevoerd en log in op de instantie.

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

Voer de Docker-image voor Jenkins uit om Jenkins te starten.

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

Docker-afbeelding "Jenkins" wordt gedownload. Jenkins gaat aan de slag. Kopieer het gegenereerde wachtwoord. Verkrijg de openbare DNS van de EC2-instantie waarop Jenkins wordt uitgevoerd. De url :8080 gebruiken , log in op het Jenkins-dashboard, zoals weergegeven in afbeelding 4.


Figuur 4: Jenkins-beheerdersconsole

De vereiste artefacten maken

Nu moeten we enkele artefacten maken voor een Kubernetes-cluster die niet kunnen worden geautomatiseerd.

  • EC2 sleutelpaar
  • KMS-sleutel
  • Jenkins-directory /var/jenkins
  • SSH-login op de Amazon EC2-instantie met Amazon Linux
ssh -i "jenkins.pem"  [email protected]

Omdat Amazon EC2 wordt gebruikt, is een AWS-account vereist. We moeten een set AWS-beveiligingsreferenties maken, die we zullen gebruiken om de EC2-instantie te configureren van waaruit de CloudFormation-stack wordt gestart. Om nieuwe AWS-beveiligingsreferenties te maken, klikt u op Beveiligingsreferenties voor het gebruikersaccount en klikt u op Nieuwe toegangssleutel maken om een ​​toegangssleutel te maken. Kopieer de Toegangssleutel-ID en de toegangssleutel. Voer in de Amazon Linux-instantie de volgende opdracht uit om de instantie te configureren met de AWS-referenties:

aws configure

Geef de toegangssleutel-ID en toegangssleutel op wanneer daarom wordt gevraagd. Specificeer de standaard regionaam (us-east-1 ) en het uitvoerformaat (json ), zoals weergegeven in Afbeelding 5.


Figuur 5: Jenkins-instantie configureren met AWS-referenties, regio en standaarduitvoerformaat

Maak vervolgens een EC2-sleutelpaar. Voer de volgende opdracht uit om een ​​sleutelpaar te maken met de naam kubernetes-coreos en sla het op als kubernetes-coreos.pem .

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

Wijzig de toegangsrechten van het sleutelpaar met de modus als 400, waarmee de toegangsrechten worden ingesteld om door de eigenaar te worden gelezen.

chmod 400 kubernetes-coreos.pem

Er wordt een sleutelpaar gemaakt en toegangsrechten worden ingesteld (zie afbeelding 6).


Figuur 6: Een sleutelpaar maken voor Kubernetes

Het sleutelpaar wordt ook vermeld in de AWS EC2-console, zoals weergegeven in Afbeelding 7.


Figuur 7: Het openbare IP-adres verkrijgen

Maak vervolgens een KMS-sleutel, die wordt gebruikt voor het versleutelen/ontsleutelen van cluster-TLS-assets en wordt geïdentificeerd door een Arn-tekenreeks. Gebruik de aws opdrachtregelinterface om een ​​KMS-sleutel te maken voor regio us-east-1 .

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

Er wordt een KMS-sleutel gemaakt, zoals weergegeven in Afbeelding 8. Kopieer de KeyMetadata.Arn tekenreeks die begint met arn:aws:kms:us-east-1 om later te gebruiken om het cluster CloudFormation te initialiseren.


Figuur 8: Een KMS-sleutel maken

We moeten ook een directory voor Jenkins maken:

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

Er wordt een map gemaakt en de rechten worden ingesteld, zoals weergegeven in Afbeelding 9.


Figuur 9: Een directory voor Jenkins maken

Een Jenkins-knooppunt maken

Een Jenkins Pipeline is een Jenkins-project dat gebruik maakt van de Jenkins Pipeline-plug-in. Een pijplijn bestaat doorgaans uit een reeks stappen, waarbij elke stap een taak uitvoert. Beschikbare uitvoerders op agenten worden gebruikt om een ​​Jenkins-project uit te voeren. Een "agent" is een machine die is geconfigureerd om projecten van het hoofdknooppunt te ontladen. Het "master" -knooppunt is de machine waarop Jenkins is geïnstalleerd en handelt alle taken voor het bouwsysteem af, inclusief het ontleden van pijplijnscripts en het uitvoeren van een Jenkins-project op een uitvoerder. Een "uitvoerder" is een rekenhulpmiddel voor het compileren van code en kan worden geconfigureerd op de master- of agentknooppunten. In deze sectie zullen we een agentknooppunt maken en een uitvoerder op het knooppunt configureren. Selecteer Jenkins beheren in het Jenkins-dashboard, zoals weergegeven in afbeelding 10.


Figuur 10: Het openbare IP-adres verkrijgen

Selecteer vervolgens Knooppunten beheren , zoals weergegeven in afbeelding 11.


Figuur 11: Het openbare IP-adres verkrijgen

Het "master" -knooppunt moet worden vermeld. Klik op Nieuw knooppunt om een ​​agentknooppunt te maken, zoals weergegeven in Afbeelding 12.


Figuur 12: Het openbare IP-adres verkrijgen

Specificeer een Knooppuntnaam (jenkins , bijvoorbeeld) en selecteer de Permanent Agent keuzerondje, zoals weergegeven in Afbeelding 13. Klik op OK.


Figuur 13: Het openbare IP-adres verkrijgen

Om het nieuwe agentknooppunt te configureren, hebben we de host-DNS nodig waarop de agent moet worden gemaakt. Kopieer de openbare DNS van de AWS EC2-console voor de EC2-instantie waarop een Amazon Linux-image wordt uitgevoerd, zoals weergegeven in afbeelding 14.


Figuur 14: Het openbare IP-adres verkrijgen

Geef in de nieuwe gebruikersinterface voor agentinvoer een Naam . op (jenkins , bijvoorbeeld). Specificeer het # uitvoerders als 1. Specificeer een Externe hoofdmap als /var/jenkins , die eerder is gemaakt. Specificeer Labels als "jenkins", waarvan we de betekenis in een volgende sectie zullen bespreken. In Gebruik , behoudt u de standaardinstelling "Gebruik dit knooppunt zoveel mogelijk". In Lanceermethode , selecteer "Lanceer slave-agenten op Unix-machines via SSH." In Host , specificeer de openbare DNS die is gekopieerd van de EC2-console. In Beschikbaarheid , selecteer "Houd deze agent zoveel mogelijk online". Voor Inloggegevens , klik op de Toevoegen vervolgkeuzelijst en selecteer Jenkins-referentieprovider , zoals weergegeven in Afbeelding 15.


Figuur 15: Het openbare IP-adres verkrijgen

In de Inloggegevens toevoegen dialoogvenster, selecteer Domein als Algemene referenties en Vriendelijk als Globaal . Specificeer Gebruikersnaam als “ec2-gebruiker” en selecteer Direct invoeren . Kopieer en plak de inhoud van het privésleutelbestand jenkins.pem in de Sleutel veld, zoals weergegeven in Afbeelding 16.


Figuur 16: Jenkins-referenties toevoegen

Klik op Toevoegen , zoals weergegeven in Afbeelding 17.


Figuur 17: Jenkins-referentieprovider>Toevoegen

Selecteer de ec2-gebruiker inloggegevens in Inloggegevens , zoals weergegeven in Afbeelding 18. Klik op Opslaan .


Figuur 18: Jenkins Node configureren

Er wordt een nieuwe agent toegevoegd, zoals weergegeven in Afbeelding 19. In eerste instantie is de agent mogelijk niet beschikbaar omdat deze nog moet beginnen.


Figuur 19: Jenkins-agent gemaakt

Klik op de agent-link en klik op Agent opnieuw starten , indien nodig, zoals weergegeven in Afbeelding 20.


Figuur 20: Agent opnieuw lanceren

Het uitvoerbericht "Agent succesvol verbonden en online" geeft aan dat de agent is gestart (zie Afbeelding 21).


Figuur 21: Agent succesvol verbonden en online

De "jenkins"-agent zou als actief moeten worden weergegeven, zoals weergegeven in Afbeelding 22.


Figuur 22: Jenkins-agent loopt

Conclusie

In dit artikel hebben we het belang geïntroduceerd van het automatiseren van een Kubernetes-installatie met Jenkins. We zijn begonnen met het installeren van Jenkins op CoreOS, het maken van de vereiste artefacten en het maken van een Jenkins-knooppunt. In een volgend artikel zullen we een Jenkins-bestand configureren voor een Jenkins-pijplijn en een Jenkins-pijplijn maken. En in een derde artikel zullen we de Jenkins-pijplijn gebruiken om Kubernetes te installeren.


  1. Gegevens invoegen in SQL Server 2017

  2. SQLiteConstraintException-fout die wordt weergegeven na het starten van elke activiteit

  3. Uw SQL Server-workload leren kennen

  4. Entiteitsframework erg traag om voor de eerste keer te laden na elke compilatie