sql >> Database >  >> RDS >> Database

Jenkins gebruiken met Kubernetes AWS, deel 3

In het eerste artikel, "Using Jenkins with Kubernetes AWS, Part 1", over het automatiseren van Kubernetes-installatie met Jenkins, installeerden we Jenkins op CoreOS, creëerden we de vereiste artefacten voor het installeren van Kubernetes en creëerden we een Jenkins-knooppunt. In het tweede artikel, "Jenkins gebruiken met Kubernetes AWS, deel 2", hebben we een Jenkins-bestand geconfigureerd en een Jenkins-pijplijn gemaakt. In dit artikel zullen we de Jenkins-pijplijn uitvoeren om Kubernetes te installeren en vervolgens het Kubernetes-cluster testen. Dit artikel heeft de volgende secties:

  • De Jenkins-pijplijn runnen
  • Het Kubernetes-cluster testen
  • Conclusie

De Jenkins-pijplijn runnen

Klik op Nu bouwen om de Jenkins-pijpleiding uit te voeren, zoals weergegeven in afbeelding 1.


Figuur 1: Build Now start de Jenkins-pijplijn

De Jenkins-pijplijn wordt gestart en een voortgangsbalk geeft de voortgang van de pijplijn aan. Een Podiumweergave voor de verschillende fasen in de pijplijn wordt ook weergegeven, zoals weergegeven in figuur 2. De Kube-aws render stage in de Stage View heeft een "gepauzeerde" link omdat we gebruikersinvoer hebben gevraagd voor het aantal werknemers (en instantietype gebruikersinvoer, die later zal worden gevraagd) in het Jenkins-bestand. Klik op de link 'onderbroken'.


Figuur 2: Het openbare IP-adres verkrijgen

Klik in de console-uitvoer voor de Jenkins-pijplijn op de Gevraagde invoer link, zoals weergegeven in Afbeelding 3.


Figuur 3: Invoer gevraagd voor aantal nodes

Een Aantal Nodes dialoogvenster wordt weergegeven, waarin wordt gevraagd om invoer van de gebruiker voor het aantal knooppunten, zoals weergegeven in Afbeelding 4. Er wordt ook een standaardwaarde ingesteld zoals geconfigureerd in het Jenkins-bestand. Klik op Doorgaan na het specificeren van een waarde.


Figuur 4: Aantal knooppunten specificeren

De pijplijn blijft lopen en wordt opnieuw onderbroken bij een ander invoerverzoek voor het instantietype. Klik op Invoer gevraagd , zoals weergegeven in afbeelding 5.


Figuur 5: Invoer gevraagd voor instantietype

Het instantietype dialoogvenster wordt weergegeven (zie Afbeelding 6). Selecteer de standaardwaarde (of geef een andere waarde op) en klik op Doorgaan.


Figuur 6: Instantietype specificeren

De pijplijn blijft lopen. In de fase Cluster implementeren wordt een andere koppeling met invoerverzoek weergegeven, zoals weergegeven in afbeelding 7. Klik op de koppeling.


Figuur 7: Invoer gevraagd voor moet cluster worden geïmplementeerd

In het cluster Moeten implementeren? dialoogvenster, selecteer de standaardwaarde "ja" en klik op Doorgaan, zoals weergegeven in Afbeelding 8.


Figuur 8: Moet cluster implementeren?

De pijplijn blijft lopen. Het maken van de AWS-bronnen voor een Kubernetes-cluster kan even duren, zoals blijkt uit het bericht in de console-uitvoer die wordt weergegeven in afbeelding 9.


Figuur 9: AWS-bronnen maken

De pijplijn loopt tot voltooiing. Een bericht "SUCCESS" geeft aan dat de pijplijn met succes is uitgevoerd, zoals weergegeven in afbeelding 10.


Figuur 10: Jenkins Pipeline Run succesvol afgerond

De faseweergave voor de Jenkins-pijplijn geeft de verschillende fasen van de pijplijn weer die zijn voltooid, zoals weergegeven in afbeelding 11. De faseweergave bevat koppelingen voor Laatste build, Laatste stabiele build, Laatste succesvolle build en Laatst voltooide build.


Figuur 11: Toneelweergave

Klik op Volledige faseweergave om de volledige faseweergave afzonderlijk weer te geven, zoals weergegeven in Afbeelding 12.


Figuur 12: Volledige faseweergave selecteren

De Full Stage View wordt weergegeven, zoals weergegeven in Afbeelding 13.


Figuur 13: Volledige weergave van het podium

In het Dashboard wordt het pictogram naast de Jenkins-pijplijn groen om aan te geven dat deze is voltooid, zoals weergegeven in Afbeelding 14.


Figuur 14: Jenkins Dashboard met Jenkins Pipeline vermeld als succesvol afgerond

Om de console-uitvoer weer te geven, selecteert u Console-uitvoer voor de build, zoals weergegeven in Afbeelding 15.


Figuur 15: Bouwgeschiedenis>Console-uitvoer

De console-uitgang wordt weergegeven (zie afbeelding 16).


Figuur 16: Console-uitgang

Een meer gedetailleerde console-uitvoer wordt vermeld in het volgende codesegment:

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

Het Kubernetes-cluster testen

Nadat we Kubernetes hebben geïnstalleerd, zullen we het cluster vervolgens testen door een applicatie uit te voeren. Eerst moeten we de Controller Ip configureren op de openbare DNS-naam (de nosqlsearch.com domein). Kopieer het controller-IP van de console-uitgang, zoals weergegeven in afbeelding 17.


Figuur 17: Het openbare IP-adres verkrijgen

De Kubernetes Controller Ip kan ook worden verkregen via de EC2-console, zoals weergegeven in Afbeelding 18.


Figuur 18: De Kubernetes Controller Ip verkrijgen

Voeg een A (Host)-item toe aan het DNS Zone-bestand voor het nosqlsearch.com-domein bij de hostingprovider, zoals weergegeven in Afbeelding 19. Het toevoegen van een A-record zou voor verschillende hostingproviders iets anders zijn.


Figuur 19: Het openbare IP-adres verkrijgen

SSH Log in op de Kubernetes-master met het IP-adres van de master.

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

De CoreOS-opdrachtprompt wordt weergegeven, zoals weergegeven in Afbeelding 20.


Figuur 20: Het openbare IP-adres verkrijgen

Installeer de kubectl binaire bestanden:

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

Maak een lijst van de knooppunten:

./kubectl get nodes

De Kubernetes-clusterknooppunten worden weergegeven (zie Afbeelding 21).


Figuur 21: Het openbare IP-adres verkrijgen

Om het cluster te testen, maakt u een implementatie voor nginx bestaande uit drie replica's.

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

Geef vervolgens de implementaties weer:

kubectl get deployments

De "nginx"-implementatie moet worden weergegeven, zoals weergegeven in Afbeelding 22.


Figuur 22: Het openbare IP-adres verkrijgen

Maak een lijst van de clusterbrede pods:

kubectl get pods -o wide

Maak een service van het type LoadBalancer van de nginx implementatie:

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

Lijst van de diensten:

kubectl get services

De clusterbrede pods worden weergegeven, zoals weergegeven in afbeelding 23. De "nginx"-service wordt gemaakt en weergegeven, inclusief cluster-ip en het externe IP-adres.


Figuur 23: Het openbare IP-adres verkrijgen

Roep de nginx . op service op het cluster ip. De nginx service-uitvoer HTML-opmaak wordt weergegeven, zoals weergegeven in Afbeelding 24.


Figuur 24: Het openbare IP-adres verkrijgen

Conclusie

In drie artikelen bespraken we het installeren van Kubernetes-cluster met behulp van een Jenkins-project. We hebben een Jenkins Pipeline-project gemaakt met een Jenkinsfile om het cluster te installeren. Een Jenkins-pijplijn automatiseert de Kubernetes-installatie en dezelfde Jenkins-pijplijn kan indien nodig worden gewijzigd en opnieuw worden uitgevoerd om meerdere Kubernetes-clusters te maken.


  1. DATEDIFF() geeft verkeerde resultaten in SQL Server? Lees dit.

  2. Verbinding maken met meerdere SQL-servers in één klik (geregistreerde serversgroep) - SQL Server / TSQL-zelfstudie, deel 5

  3. MySQL-server is verdwenen - over precies 60 seconden

  4. SQL Server 2017-back-up -3