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

Brug af Jenkins med Kubernetes AWS, del 3

I den første artikel, "Brug af Jenkins med Kubernetes AWS, del 1," om automatisering af Kubernetes-installation med Jenkins, installerede vi Jenkins på CoreOS, skabte de nødvendige artefakter til installation af Kubernetes og oprettede en Jenkins-node. I den anden artikel, "Brug af Jenkins med Kubernetes AWS, del 2", konfigurerede vi en Jenkinsfil og oprettede en Jenkins-pipeline. I denne artikel skal vi køre Jenkins-pipeline for at installere Kubernetes og efterfølgende teste Kubernetes-klyngen. Denne artikel har følgende sektioner:

  • Kørsel af Jenkins Pipeline
  • Test af Kubernetes-klyngen
  • Konklusion

Kørsel af Jenkins Pipeline

Klik på Byg nu at køre Jenkins Pipeline, som vist i figur 1.


Figur 1: Byg nu starter Jenkins Pipeline

Jenkins Pipeline starter, og en statuslinje angiver pipelinens fremskridt. En scenevisning for de forskellige stadier i pipelinen bliver også vist, som vist i figur 2. Kube-aws render-stadiet i Stage View har et "pauseret"-link, fordi vi har anmodet om brugerinput til arbejderantal (og brugerinput af forekomsttype, som skal blive bedt om efterfølgende) i Jenkinsfilen. Klik på linket "pause".


Figur 2: Få den offentlige IP-adresse

Klik på anmodet input i konsoludgangen for Jenkins Pipeline link, som vist i figur 3.


Figur 3: Input anmodet om antal noder

Et Antal noder dialogen bliver vist, der beder om brugerinput for antallet af noder, som vist i figur 4. En standardværdi som konfigureret i Jenkinsfilen er også indstillet. Klik på Fortsæt efter at have angivet en værdi.


Figur 4: Angivelse af antal noder

Pipeline fortsætter med at køre og bliver igen sat på pause ved en anden inputanmodning for instanstypen. Klik på Input anmodet , som vist i figur 5.


Figur 5: Input anmodet om forekomsttype

Forekomsttype dialogen vises (se figur 6). Vælg standardværdien (eller angiv en anden værdi), og klik på Fortsæt.


Figur 6: Angivelse af instanstype

Rørledningen fortsætter med at køre. I implementeringsklyngestadiet præsenteres et andet inputanmodet link, som vist i figur 7. Klik på linket.


Figur 7: Input anmodet om skal klynge implementeres

I skal implementere klynge? dialogboksen, vælg standardværdien "ja" og klik på Fortsæt, som vist i figur 8.


Figur 8: Skal du implementere Cluster?

Rørledningen fortsætter med at køre. Oprettelse af AWS-ressourcerne til en Kubernetes-klynge kan tage et stykke tid, som angivet af meddelelsen i konsoludgangen vist i figur 9.


Figur 9: Oprettelse af AWS-ressourcer

Rørledningen løber til færdiggørelse. En "SUCCES"-meddelelse angiver, at pipelinen er kørt korrekt, som vist i figur 10.


Figur 10: Jenkins Pipeline Run gennemført med succes

Stagevisningen for Jenkins-pipelinen viser de forskellige stadier af pipelinen, der er afsluttet, som vist i figur 11. Stagevisningen indeholder links til Sidste bygning, Sidste stabile konstruktion, Sidste vellykkede konstruktion og Sidste fuldførte konstruktion.


Figur 11: Scenevisning

Klik på Fuld scenevisning for at få vist hele scenevisningen separat, som vist i figur 12.


Figur 12: Valg af fuld scenevisning

Den fulde scenevisning bliver vist, som vist i figur 13.


Figur 13: Fuld scenevisning

I Dashboardet bliver ikonet ved siden af ​​Jenkins Pipeline grønt for at angive vellykket afslutning, som vist i figur 14.


Figur 14: Jenkins Dashboard med Jenkins Pipeline angivet som afsluttet med succes

For at få vist konsoludgangen skal du vælge Konsoloutput for bygningen, som vist i figur 15.


Figur 15: Build History>Konsoloutput

Konsoloutputtet vises (se figur 16).


Figur 16: Konsoloutput

Et mere detaljeret konsoloutput er angivet i følgende kodesegment:

Started by user Deepak Vohra
[Pipeline] node
Running on jenkins in /var/jenkins/workspace/install-kubernetes
[Pipeline] {
   [Pipeline] stage (set env)
   Using the 'stage' step without a block argument is deprecated
   Entering stage set env
   Proceeding
   [Pipeline] sh
   [install-kubernetes] Running shell script
   + sudo yum install gnupg2
   Loaded plugins: priorities, update-motd, upgrade-helper
   Package gnupg2-2.0.28-1.30.amzn1.x86_64 already installed and
      latest version
   Nothing to do
   [Pipeline] sh
   [install-kubernetes] Running shell script
   + gpg2 --keyserver pgp.mit.edu --recv-key FC8A365E
   gpg: directory '/home/ec2-user/.gnupg' created
   gpg: new configuration file '/home/ec2-user/.gnupg/gpg.conf'
        created
   ...
   ...
   [Pipeline] sh
   [install-kubernetes] Running shell script
   + gpg2 --fingerprint FC8A365E
   pub   4096R/FC8A365E 2016-03-02 [expires: 2021-03-01]
         Key fingerprint = 18AD 5014 C99E F7E3 BA5F  6CE9 50BD
                           D3E0 FC8A 365E
   uid   [ unknown] CoreOS Application Signing Key
         <[email protected]>
   sub   2048R/3F1B2C87 2016-03-02 [expires: 2019-03-02]
   sub   2048R/BEDDBA18 2016-03-08 [expires: 2019-03-08]
   sub   2048R/7EF48FD3 2016-03-08 [expires: 2019-03-08]

   [Pipeline] sh
   [install-kubernetes] Running shell script
   + wget https://github.com/coreos/coreos-kubernetes/releases/
      download/v0.7.1/kube-aws-linux-amd64.tar.gz
   --2016-11-29 21:22:04-- https://github.com/coreos/
      coreos-kubernetes/releases/download/v0.7.1/
      kube-aws-linux-amd64.tar.gz
   Resolving github.com (github.com)... 192.30.253.112,
      192.30.253.113
   Connecting to github.com (github.com)|192.30.253.112|:443...
      connected.
   HTTP request sent, awaiting response... 302 Found
   Location: https://github-cloud.s3.amazonaws.com/releases/
      41458519/309e294a-29b1-
   ...
   ...
   2016-11-29 21:22:05 (62.5 MB/s) - 'kube-aws-linux-amd64.tar.gz'
      saved [4655969/4655969]

   [Pipeline] sh
   [install-kubernetes] Running shell script
   + wget https://github.com/coreos/coreos-kubernetes/releases/
   download/v0.7.1/kube-aws-linux-amd64.tar.gz.sig
   --2016-11-29 21:22:05--  https://github.com/coreos/
      coreos-kubernetes/releases/download/v0.7.1/kube-aws-linux-
      amd64.tar.gz.sig
   Resolving github.com (github.com)... 192.30.253.113,
      192.30.253.112
   Connecting to github.com (github.com)|192.30.253.113|:443...
      connected.
   HTTP request sent, awaiting response... 302 Found
   Location: https://github-cloud.s3.amazonaws.com/releases/
      41458519/0543b716-2bf4-
   ...
   ...
   Saving to: 'kube-aws-linux-amd64.tar.gz.sig'

   0K                          100% 9.21M=0s

   2016-11-29 21:22:05 (9.21 MB/s) -
      'kube-aws-linux-amd64.tar.gz.sig' saved [287/287]

   [Pipeline] sh
   [install-kubernetes] Running shell script
   + gpg2 --verify kube-aws-linux-amd64.tar.gz.sig kube-aws-
   linux-amd64.tar.gz
   gpg: Signature made Mon 06 Jun 2016 09:32:47 PM UTC using RSA
        key ID BEDDBA18
   gpg: Good signature from "CoreOS Application Signing Key
        <[email protected]>" [unknown]
   gpg: WARNING: This key is not certified with a trusted
        signature!
   gpg: There is no indication that the signature belongs to the
        owner.
   Primary key fingerprint: 18AD 5014 C99E F7E3 BA5F  6CE9 50BD
                            D3E0 FC8A 365E
      Subkey fingerprint: 55DB DA91 BBE1 849E A27F  E733 A6F7
                          1EE5 BEDD BA18
   [Pipeline] sh
   [install-kubernetes] Running shell script
   + tar zxvf kube-aws-linux-amd64.tar.gz
   linux-amd64/
   linux-amd64/kube-aws
   [Pipeline] sh
   [install-kubernetes] Running shell script
   + sudo mv linux-amd64/kube-aws /usr/local/bin
   [Pipeline] sh
   [install-kubernetes] Running shell script
   ...
   ...
   [Pipeline] sh
   [install-kubernetes] Running shell script
   + aws ec2 create-volume --availability-zone us-east-1c
   --size 10 --volume-type gp2
   {
      "AvailabilityZone": "us-east-1c",
      "Encrypted":        false,
      "VolumeType":       "gp2",
      "VolumeId":         "vol-b325332f",
      "State":            "creating",
      "Iops":             100,
      "SnapshotId":       "",
      "CreateTime":       "2016-11-29T21:22:07.949Z",
      "Size":             10
   }
   [Pipeline] sh
   [install-kubernetes] Running shell script
   + aws ec2 create-key-pair --key-name kubernetes-coreos
   --query KeyMaterial --output text
   [Pipeline] sh
   [install-kubernetes] Running shell script
   + chmod 400 kubernetes-coreos.pem
   [Pipeline] stage (Kube-aws init)
   Using the 'stage' step without a block argument is deprecated
   Entering stage Kube-aws init
   Proceeding
   [Pipeline] deleteDir
   [Pipeline] sh
   [install-kubernetes] Running shell script
   + mkdir coreos-cluster
   [Pipeline] sh
   [install-kubernetes] Running shell script
   + cd coreos-cluster
   [Pipeline] sh
   [install-kubernetes] Running shell script
   + kube-aws init --cluster-name=kubernetes-coreos-cluster
   --external-dns-name=NOSQLSEARCH.COM --region=us-east-1
   --availability-zone=us-east-1c --key-name=kubernetes-coreos
   --kms-key-arn=arn:aws:kms:us-east-1:672593526685:key/
      c9748fda-2ac6-43ff-a267-d4edc5b21ad9
   Success! Created cluster.yaml

   Next steps:
   1. (Optional) Edit cluster.yaml to parameterize the cluster.
   2. Use the "kube-aws render" command to render the stack
      template.
   [Pipeline] stage (Kube-aws render)
   Using the 'stage' step without a block argument is deprecated
   Entering stage Kube-aws render
   Proceeding
   [Pipeline] input
   Input requested
   Approved by Deepak Vohra
   [Pipeline] input
   Input requested
   Approved by Deepak Vohra
   [Pipeline] sh
   [install-kubernetes] Running shell script
   + kube-aws render
   Success! Stack rendered to stack-template.json.

   Next steps:
   1. (Optional) Validate your changes to cluster.yaml with
      "kube-aws validate"
   2. (Optional) Further customize the cluster by modifying
      stack-template.json or files in ./userdata.
   3. Start the cluster with "kube-aws up".
   [Pipeline] sh
   [install-kubernetes] Running shell script
   + sed -i 's/#workerCount: 1/workerCount: 3/' cluster.yaml
   [Pipeline] sh
   [install-kubernetes] Running shell script
   + sed -i 's/#workerInstanceType: m3.medium/
      workerInstanceType: t2.micro/' cluster.yaml
   [Pipeline] sh
   [install-kubernetes] Running shell script
   + kube-aws validate
   Validating UserData...
   UserData is valid.

   Validating stack template...
   Validation Report: {
      Capabilities: ["CAPABILITY_IAM"],
      CapabilitiesReason: "The following resource(s) require
         capabilities: [AWS::IAM::Role]",
      Description: "kube-aws Kubernetes cluster
         kubernetes-coreos-cluster"
   }
   stack template is valid.

   Validation OK!
   [Pipeline] stage (Archive CFN)
   Using the 'stage' step without a block argument is deprecated
   Entering stage Archive CFN
   Proceeding
   [Pipeline] step
   Archiving artifacts
   Recording fingerprints
   [Pipeline] stage (Deploy Cluster)
   Using the 'stage' step without a block argument is deprecated
   Entering stage Deploy Cluster
   Proceeding
   [Pipeline] input
   Input requested
   Approved by Deepak Vohra
   [Pipeline] echo
   Deploying Kubernetes cluster
   [Pipeline] sh
   [install-kubernetes] Running shell script
   + kube-aws up
   Creating AWS resources. This should take around 5 minutes.
   Success! Your AWS resources have been created:
   Cluster Name:    kubernetes-coreos-cluster
   Controller IP:   34.193.183.134

   The containers that power your cluster are now being downloaded.

   You should be able to access the Kubernetes API once the
      containers finish downloading.
   [Pipeline] sh
   [install-kubernetes] Running shell script
   + kube-aws status
   Cluster Name:    kubernetes-coreos-cluster
   Controller IP:   34.193.183.134
   [Pipeline] step
   Archiving artifacts
   Recording fingerprints
   [Pipeline] }
[Pipeline]   // Node
[Pipeline] End of Pipeline
Finished: SUCCESS

Test af Kubernetes-klyngen

Efter at have installeret Kubernetes, skal vi derefter teste klyngen ved at køre et program. Først skal vi konfigurere controllerens Ip på det offentlige DNS-navn (nosqlsearch.com domæne). Kopier controllerens IP fra konsoludgangen, som vist i figur 17.


Figur 17: Få den offentlige IP-adresse

Kubernetes Controller Ip kan også fås fra EC2-konsollen, som vist i figur 18.


Figur 18: Hentning af Kubernetes Controller Ip

Tilføj en A (Host)-indgang til DNS Zone-filen for nosqlsearch.com-domænet hos hostingudbyderen, som vist i figur 19. Tilføjelse af en A-post ville være lidt anderledes for forskellige hostingudbydere.


Figur 19: Få den offentlige IP-adresse

SSH Log ind på Kubernetes Master ved hjælp af Master's Ip.

ssh -i "kubernetes-coreos.pem" [email protected]

CoreOS-kommandoprompten vises, som vist i figur 20.


Figur 20: Få den offentlige IP-adresse

Installer kubectl binære filer:

sudo wget https://storage.googleapis.com/kubernetes-release/
   release/v1.3.0/bin/linux/amd64/./kubectl
sudo chmod +x ./kubectl

Liste over noderne:

./kubectl get nodes

Kubernetes-klyndeknuderne bliver vist (se figur 21).


Figur 21: Få den offentlige IP-adresse

For at teste klyngen skal du oprette en implementering til nginx bestående af tre replikaer.

kubectl  run nginx --image=nginx --replicas=3

Angiv derefter implementeringerne:

kubectl get deployments

"nginx"-implementeringen skulle blive vist på listen, som vist i figur 22.


Figur 22: Få den offentlige IP-adresse

List de klyngeomfattende Pods:

kubectl get pods -o wide

Opret en tjeneste af typen LoadBalancer fra nginx implementering:

kubectl expose deployment nginx --port=80 --type=LoadBalancer

Liste over tjenesterne:

kubectl get services

De klyngeomfattende Pods bliver listet som vist i figur 23. "nginx"-tjenesten bliver oprettet og listet inklusive klynge-ip og den eksterne Ip.


Figur 23: Få den offentlige IP-adresse

Kald på nginx service på klyngens ip. nginx tjenesteoutput HTML-markering bliver vist, som vist i figur 24.


Figur 24: Få den offentlige IP-adresse

Konklusion

I tre artikler diskuterede vi installation af Kubernetes-klynge ved hjælp af et Jenkins-projekt. Vi oprettede et Jenkins Pipeline-projekt med en Jenkinsfil for at installere klyngen. En Jenkins-pipeline automatiserer Kubernetes-installationen, og den samme Jenkins-pipeline kan ændres efter behov og køres igen for at skabe flere Kubernetes-klynger.


  1. Hvordan opretter man et indeks for elementer i et array i PostgreSQL?

  2. Tilslutning til en database ved hjælp af PHP

  3. Sådan aktiverer du Slow Query Log i PostgreSQL

  4. Sådan overvåger du MySQL-containere med Prometheus - Implementering på Standalone og Swarm::Første del