sql >> Databasteknik >  >> RDS >> Database

Använda Jenkins med Kubernetes AWS, del 3

I den första artikeln, "Using Jenkins with Kubernetes AWS, Part 1," om automatisering av Kubernetes-installation med Jenkins, installerade vi Jenkins på CoreOS, skapade de nödvändiga artefakterna för att installera Kubernetes och skapade en Jenkins-nod. I den andra artikeln, "Använda Jenkins med Kubernetes AWS, del 2", konfigurerade vi en Jenkinsfil och skapade en Jenkins-pipeline. I den här artikeln ska vi köra Jenkins pipeline för att installera Kubernetes och därefter testa Kubernetes-klustret. Den här artikeln har följande avsnitt:

  • Kör Jenkins Pipeline
  • Testa Kubernetes-klustret
  • Slutsats

Kör Jenkins Pipeline

Klicka på Bygg nu för att köra Jenkins Pipeline, som visas i figur 1.


Figur 1: Bygg nu startar Jenkins Pipeline

Jenkins Pipeline startar och en förloppsindikator indikerar förloppet för pipelinen. En Scenvy för de olika stadierna i pipelinen visas också, som visas i figur 2. Kube-aws render-steget i Stage View har en "pausad" länk eftersom vi begärde användarinmatning för antal arbetare (och instanstyp användarinmatning, som kommer att uppmanas till senare) i Jenkinsfilen. Klicka på länken "pausad".


Figur 2: Få den offentliga IP-adressen

I konsolutgången för Jenkins Pipeline klickar du på Indata begärd länk, som visas i figur 3.


Figur 3: Inmatning begärd för antal noder

Ett antal noder dialogruta visas och uppmanar användaren att ange antalet noder, som visas i figur 4. Ett standardvärde som konfigurerats i Jenkinsfilen är också inställt. Klicka på Fortsätt efter att ha angett ett värde.


Figur 4: Ange antal noder

Pipeline fortsätter att köras och pausas igen vid en annan inmatningsförfrågan för instanstypen. Klicka på Inmatning begärd , som visas i figur 5.


Figur 5: Inmatning begärd för instanstyp

Instanstyp dialogrutan visas (se figur 6). Välj standardvärdet (eller ange ett annat värde) och klicka på Fortsätt.


Figur 6: Ange instanstyp

Rörledningen fortsätter att löpa. I steget Deploy Cluster presenteras en annan inmatningsbegärd länk, som visas i figur 7. Klicka på länken.


Figur 7: Indata begärs för Bör kluster distribueras

I Bör distribuera klustret? dialogrutan, välj standardvärdet för "ja" och klicka på Fortsätt, som visas i figur 8.


Figur 8: Bör distribuera kluster?

Rörledningen fortsätter att löpa. Att skapa AWS-resurserna för ett Kubernetes-kluster kan ta ett tag, vilket indikeras av meddelandet i konsolutgången som visas i figur 9.


Figur 9: Skapa AWS-resurser

Rörledningen löper till slut. Ett "SUCCESS"-meddelande indikerar att pipelinen har körts framgångsrikt, som visas i figur 10.


Figur 10: Jenkins Pipeline Run slutfördes framgångsrikt

Stagevyn för Jenkins Pipeline visar de olika stadierna av pipeline som har slutförts, som visas i figur 11. Scenvyn innehåller länkar för Senaste bygg, Senaste stabila bygg, Senaste framgångsrika bygg och Senaste färdigbyggt.


Figur 11: Scenvy

Klicka på Full scenvy för att visa hela scenvyn separat, som visas i figur 12.


Figur 12: Välja hel scenvy

Hela scenvyn visas, som visas i figur 13.


Figur 13: Hela scenen

I instrumentpanelen blir ikonen bredvid Jenkins Pipeline grön för att indikera framgångsrikt slutförande, som visas i figur 14.


Figur 14: Jenkins Dashboard med Jenkins Pipeline listad som att ha slutförts framgångsrikt

För att visa konsolutgången, välj Konsolutgång för byggnaden, som visas i figur 15.


Figur 15: Bygghistorik>Konsolutdata

Konsolutgången visas (se figur 16).


Figur 16: Konsolutgång

En mer detaljerad konsolutgång listas i följande kodsegment:

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

Testa Kubernetes-klustret

Efter att ha installerat Kubernetes ska vi testa klustret genom att köra något program. Först måste vi konfigurera Controller Ip på det offentliga DNS-namnet (nosqlsearch.com domän). Kopiera styrenhetens IP från konsolutgången, som visas i figur 17.


Figur 17: Få den offentliga IP-adressen

Kubernetes Controller Ip kan också erhållas från EC2-konsolen, som visas i figur 18.


Figur 18: Skaffa Kubernetes Controller Ip

Lägg till en A-post (värd) i DNS-zonfilen för nosqlsearch.com-domänen hos värdleverantören, som visas i figur 19. Att lägga till en A-post skulle vara något annorlunda för olika värdleverantörer.


Figur 19: Få den offentliga IP-adressen

SSH Logga in på Kubernetes Master med Master's Ip.

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

CoreOS-kommandotolken visas, som visas i figur 20.


Figur 20: Få den offentliga IP-adressen

Installera kubectl binärer:

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

Lista noderna:

./kubectl get nodes

Kubernetes-klusternoderna listas (se figur 21).


Figur 21: Få den offentliga IP-adressen

För att testa klustret, skapa en distribution för nginx bestående av tre repliker.

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

Lista sedan distributionerna:

kubectl get deployments

"nginx"-distributionen bör listas, som visas i figur 22.


Figur 22: Få den offentliga IP-adressen

Lista de klusteromfattande poddarna:

kubectl get pods -o wide

Skapa en tjänst av typen LoadBalancer från nginx distribution:

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

Lista tjänsterna:

kubectl get services

De klusteromfattande poddarna listas, som visas i figur 23. "nginx"-tjänsten skapas och listas inklusive kluster-ip och den externa IP-adressen.


Figur 23: Få den offentliga IP-adressen

Anropa nginx tjänst på klustrets ip. nginx tjänstutdata HTML-markering visas, som visas i figur 24.


Figur 24: Få den offentliga IP-adressen

Slutsats

I tre artiklar diskuterade vi installation av Kubernetes-kluster med ett Jenkins-projekt. Vi skapade ett Jenkins Pipeline-projekt med en Jenkinsfil för att installera klustret. En Jenkins-pipeline automatiserar Kubernetes-installationen, och samma Jenkins-pipeline kan modifieras efter behov och köras igen för att skapa flera Kubernetes-kluster.


  1. Avgränsare i MySQL

  2. Finns det ett PL/SQL-pragma som liknar DETERMINISTIC, men för omfattningen av en enda SQL SELECT?

  3. Vad är en betrodd anslutning?

  4. Proaktiva SQL Server Health Checks, Del 1:Diskutrymme