sql >> Database teknologi >  >> RDS >> Database

Brug af Jenkins med Kubernetes AWS, del 1

CoreOS er operativsystemet designet til Docker-containere. CoreOS har Docker forudinstalleret ud af æsken. Kubernetes kan installeres på CoreOS ved hjælp af CloudFormation, som beskrevet detaljeret i en tidligere artikel, "Kom godt i gang med Kubernetes på Amazon Web Services (AWS)."

Problem

Kubernetes er ikke forudinstalleret på CoreOS og kan installeres ved at bruge kube-aws værktøj, og det kræver noget brugerinput og konfiguration. Installation af Kubernetes på CoreOS er en involveret proces og består af følgende trin vist i figur 1.


Figur 1: Kubernetes-installation på CoreOS Stages

Løsning

En Jenkins Pipeline kan bruges til at automatisere installationen af ​​Kubernetes, som vist i figur 2. De forskellige stadier af installationen kan konfigureres i en Jenkinsfile og når Pipeline køres, kube-aws værktøj bliver downloadet, CloudFormation stak bliver initialiseret, indholdet af aktivkataloget bliver gengivet, klyngeparametrene, såsom antallet af arbejderforekomster, bliver tilpasset, og efterfølgende bliver klyngen valideret og lanceret.


Figur 2: Jenkins Pipeline til installation af Kubernetes på CoreOS

Installation af Kubernetes ved hjælp af en Jenkins Pipeline er et eksempel på Automation DevOps-designmønster.

I et selvstudie med tre artikler skal vi automatisere Kubernetes installationsprocessen ved hjælp af en Jenkins Pipeline. Denne artikel har følgende sektioner:

  • Indstilling af miljøet
  • Oprettelse af de nødvendige artefakter
  • Oprettelse af en Jenkins-node
  • Konklusion

Indstilling af miljøet

Vi skal installere Jenkins ved hjælp af Docker-billedet "jenkins" på en CoreOS-instans. Vi vil lancere en Kubernetes-klynge på en Amazon AMI Linux EC2-instans ved hjælp af en Jenkins Pipeline. Start først to EC2-instanser, den ene kører Amazon Linux og den anden kører CoreOS, som vist i figur 3.


Figur 3: Få den offentlige IP-adresse

Når du opretter Amazon Linux-instansen, skal du oprette et nyt nøglepar ("jenkins", for eksempel) ved at vælge "Opret et nyt nøglepar" og downloade den private nøgle "jenkins.pem", der skal bruges til at konfigurere en Jenkins-agent. Få den offentlige IP-adresse for EC2-instansen, der kører CoreOS og SSH, log ind på instansen.

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

Kør Docker-billedet for Jenkins for at starte Jenkins.

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

Docker-billedet "Jenkins" bliver downloadet. Jenkins går i gang. Kopier den genererede adgangskode. Få den offentlige DNS for den EC2-instans, der kører Jenkins. Brug af url'en :8080 , log ind på Jenkins Dashboard, som vist i figur 4.


Figur 4: Jenkins Admin Console

Oprettelse af de nødvendige artefakter

Nu skal vi skabe nogle artefakter til en Kubernetes-klynge, som ikke kan automatiseres.

  • EC2-nøglepar
  • KMS-nøgle
  • Jenkins bibliotek /var/jenkins
  • SSH-login til Amazon EC2-instansen, der kører Amazon Linux
ssh -i "jenkins.pem"  [email protected]

Fordi Amazon EC2 bruges, kræves en AWS-konto. Vi skal oprette et sæt AWS Security-legitimationsoplysninger, som vi skal bruge til at konfigurere EC2-instansen, hvorfra CloudFormation-stakken startes. For at oprette nye AWS Security-legitimationsoplysninger skal du klikke på Security Credentials for brugerkontoen og klikke på Create New Access Key for at oprette en adgangsnøgle. Kopiér adgangsnøgle-id'et og adgangsnøglen. I Amazon Linux-forekomsten skal du køre følgende kommando for at konfigurere forekomsten med AWS-legitimationsoplysningerne:

aws configure

Angiv adgangsnøgle-id og adgangsnøgle, når du bliver bedt om det. Angiv standardområdenavnet (us-east-1 ) og outputformatet (json ), som vist i figur 5.


Figur 5: Konfiguration af Jenkins-instans med AWS-legitimationsoplysninger, region og standardoutputformat

Opret derefter et EC2-nøglepar. Kør følgende kommando for at oprette et nøglepar kaldet kubernetes-coreos og gem det som kubernetes-coreos.pem .

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

Rediger adgangstilladelserne for nøgleparret ved at bruge tilstanden som 400, som indstiller adgangstilladelser til at læse af ejeren.

chmod 400 kubernetes-coreos.pem

Et nøglepar oprettes, og adgangstilladelser indstilles (se figur 6).


Figur 6: Oprettelse af et nøglepar til Kubernetes

Nøgleparret bliver også opført i AWS EC2-konsollen, som vist i figur 7.


Figur 7: Få den offentlige IP-adresse

Opret derefter en KMS-nøgle, som bruges til at kryptere/dekryptere klynge-TLS-aktiver og identificeres af en Arn-streng. Brug aws kommandolinjegrænseflade til at oprette en KMS-nøgle til region us-east-1 .

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

En KMS-nøgle bliver oprettet, som vist i figur 8. Kopier KeyMetadata.Arn streng, der starter med arn:aws:kms:us-east-1 skal bruges senere til at initialisere klyngen CloudFormation.


Figur 8: Oprettelse af en KMS-nøgle

Vi skal også oprette en mappe til Jenkins:

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

En mappe oprettes, og tilladelser indstilles, som vist i figur 9.


Figur 9: Oprettelse af en mappe til Jenkins

Oprettelse af en Jenkins-node

En Jenkins Pipeline er et Jenkins-projekt, der gør brug af Jenkins Pipeline plug-in. En pipeline består typisk af en sekvens af trin, hvor hvert trin udfører en opgave. Tilgængelige eksekutører på agenter bruges til at køre et Jenkins-projekt. En "agent" er en maskine, der er konfigureret til at aflæse projekter fra masterknudepunktet. "Master"-knuden er den maskine, hvorpå Jenkins er installeret og håndterer alle opgaverne for byggesystemet, inklusive parsing af pipeline-scripts og kørsel af et Jenkins-projekt på en eksekvering. En "executor" er en beregningsressource til kompilering af kode, og den kan konfigureres på master- eller agentknuderne. I dette afsnit skal vi oprette en agentnode og konfigurere en eksekvering på noden. Vælg Administrer Jenkins i Jenkins Dashboard, som vist i figur 10.


Figur 10: Få den offentlige IP-adresse

Vælg derefter Administrer noder , som vist i figur 11.


Figur 11: Få den offentlige IP-adresse

"Master"-knuden bør blive vist. Klik på Ny node for at oprette en agentnode, som vist i figur 12.


Figur 12: Få den offentlige IP-adresse

Angiv et Nodenavn (jenkins , for eksempel) og vælg Permanent Agent alternativknap, som vist i figur 13. Klik på OK.


Figur 13: Få den offentlige IP-adresse

For at konfigurere den nye agentknude skal vi bruge den værts-DNS, som agenten skal oprettes på. Kopier den offentlige DNS fra AWS EC2-konsollen for EC2-instansen, der kører et Amazon Linux-billede, som vist i figur 14.


Figur 14: Få den offentlige IP-adresse

Angiv et navn i den nye agentinput-brugergrænseflade (jenkins , for eksempel). Angiv antallet af eksekutører som 1. Angiv en fjern rodmappe som /var/jenkins , som blev oprettet tidligere. Angiv Etiketter som "jenkins", hvis betydning vi vil diskutere i et efterfølgende afsnit. I Brug , behold standardindstillingen "Brug denne node så meget som muligt." I Startmetode , vælg "Start slaveagenter på Unix-maskiner via SSH." I Vært , angiv den offentlige DNS, der er kopieret fra EC2-konsollen. I Tilgængelighed , vælg "Hold denne agent online så meget som muligt." For legitimationsoplysninger , klik på Tilføj rullemenuen, og vælg Jenkins-legitimationsudbyder , som vist i figur 15.


Figur 15: Få den offentlige IP-adresse

I Tilføj legitimationsoplysninger dialogboksen skal du vælge Domæne som Globale legitimationsoplysninger og venlig som Global . Angiv Brugernavn som "ec2-bruger", og vælg Enter direkte . Kopier og indsæt indholdet af den private nøglefil jenkins.pem i Nøglen felt, som vist i figur 16.


Figur 16: Tilføjelse af Jenkins-legitimationsoplysninger

Klik på Tilføj , som vist i figur 17.


Figur 17: Jenkins-legitimationsudbyder>Tilføj

Vælg ec2-brugeren legitimationsoplysninger i legitimationsoplysninger , som vist i figur 18. Klik på Gem .


Figur 18: Konfiguration af Jenkins Node

En ny agent tilføjes, som vist i figur 19. I starten er agenten muligvis ikke tilgængelig, fordi den stadig er ved at starte.


Figur 19: Jenkins Agent oprettet

Klik på agentlinket, og klik på Genstart agent , hvis det kræves, som vist i figur 20.


Figur 20: Genlancering af agent

Outputmeddelelsen "Agenten er tilsluttet og online" angiver, at agenten er blevet startet (se figur 21).


Figur 21: Agent tilsluttet og online

"Jenkins"-agenten bør blive opført som kørende, som vist i figur 22.


Figur 22: Jenkins Agent kører

Konklusion

I denne artikel introducerede vi vigtigheden af ​​at automatisere en Kubernetes-installation med Jenkins. Vi startede med at installere Jenkins på CoreOS, oprette de nødvendige artefakter og oprette en Jenkins-node. I en efterfølgende artikel skal vi konfigurere en Jenkins-fil til en Jenkins-pipeline og oprette en Jenkins-pipeline. Og i en tredje artikel vil vi køre Jenkins-pipelinen for at installere Kubernetes.


  1. Få øverste 1 række af hver gruppe

  2. Guide til designdatabase til kalenderbegivenhed og påmindelse i MySQL

  3. SQL Server 2016 på Linux

  4. Sådan eksporteres data til CSV-fil i Oracle ved hjælp af PL SQL-procedure