Database
 sql >> Base de données >  >> RDS >> Database

Utilisation de Jenkins avec Kubernetes AWS, partie 3

Dans le premier article, « Utilisation de Jenkins avec Kubernetes AWS, partie 1 », sur l'automatisation de l'installation de Kubernetes avec Jenkins, nous avons installé Jenkins sur CoreOS, créé les artefacts prérequis pour l'installation de Kubernetes et créé un nœud Jenkins. Dans le deuxième article, « Utilisation de Jenkins avec Kubernetes AWS, partie 2 », nous avons configuré un fichier Jenkins et créé un pipeline Jenkins. Dans cet article, nous allons exécuter le pipeline Jenkins pour installer Kubernetes et ensuite tester le cluster Kubernetes. Cet article comporte les sections suivantes :

  • Exécution du pipeline Jenkins
  • Tester le cluster Kubernetes
  • Conclusion

Exécution du pipeline Jenkins

Cliquez sur Créer maintenant pour exécuter le pipeline Jenkins, comme illustré à la figure 1.


Figure 1 : Build Now démarre le pipeline Jenkins

Le pipeline Jenkins démarre et une barre de progression indique la progression du pipeline. Une vue de la scène pour les différentes étapes du pipeline s'affiche également, comme le montre la figure 2. Les Kube-aws render stage dans Stage View a un lien "pause" car nous avons demandé une entrée utilisateur pour le nombre de travailleurs (et une entrée utilisateur de type d'instance, qui sera demandée ultérieurement) dans le fichier Jenkins. Cliquez sur le lien "suspendu".


Figure 2 : Obtention de l'adresse IP publique

Dans la sortie de la console pour le pipeline Jenkins, cliquez sur Entrée demandée lien, comme illustré à la figure 3.


Figure 3 : Entrée demandée pour le nombre de nœuds

Un nombre de nœuds La boîte de dialogue s'affiche, invitant l'utilisateur à saisir le nombre de nœuds, comme illustré à la figure 4. Une valeur par défaut telle que configurée dans le fichier Jenkins est également définie. Cliquez sur Continuer après avoir spécifié une valeur.


Figure 4 : Spécification du nombre de nœuds

Le Pipeline continue de s'exécuter et est à nouveau mis en pause lors d'une autre demande d'entrée pour le type d'instance. Cliquez sur Saisie demandée , comme illustré à la figure 5.


Figure 5 : Entrée demandée pour le type d'instance

Le type d'instance La boîte de dialogue s'affiche (voir Figure 6). Sélectionnez la valeur par défaut (ou spécifiez une valeur différente) et cliquez sur Continuer.


Figure 6 : Spécification du type d'instance

Le pipeline continue de fonctionner. À l'étape Déployer le cluster, un autre lien Entrée demandée est présenté, comme illustré à la figure 7. Cliquez sur le lien.


Figure 7 : Entrée demandée pour le cluster en cas de déploiement

Dans le cluster Devrait-il déployer ? boîte de dialogue, sélectionnez la valeur par défaut "oui" et cliquez sur Continuer, comme illustré à la Figure 8.


Figure 8 : Faut-il déployer le cluster ?

Le pipeline continue de fonctionner. La création des ressources AWS pour un cluster Kubernetes peut prendre un certain temps, comme indiqué par le message dans la sortie de la console illustrée à la figure 9.


Figure 9 : Création de ressources AWS

Le pipeline s'exécute jusqu'à la fin. Un message "SUCCESS" indique que le pipeline s'est exécuté avec succès, comme illustré à la figure 10.


Figure 10 : L'exécution du pipeline Jenkins s'est terminée avec succès

La vue d'étape pour le pipeline Jenkins affiche les différentes étapes du pipeline terminées, comme illustré à la figure 11. La vue d'étape comprend des liens pour la dernière version, la dernière version stable, la dernière version réussie et la dernière version terminée.


Figure 11 : Vue de la scène

Cliquez sur Vue d'étape complète pour afficher la vue d'étape complète séparément, comme illustré à la Figure 12.


Figure 12 : Sélection de la vue de scène complète

La vue d'étape complète s'affiche, comme illustré à la figure 13.


Figure 13 : Vue complète de la scène

Dans le tableau de bord, l'icône adjacente au pipeline Jenkins devient verte pour indiquer la réussite, comme illustré à la figure 14.


Figure 14 : Tableau de bord Jenkins avec Jenkins Pipeline répertorié comme ayant terminé avec succès

Pour afficher la sortie de la console, sélectionnez Sortie de la console pour la construction, comme illustré à la figure 15.


Figure 15 : Historique de compilation>Sortie de la console

La sortie de la console s'affiche (voir Figure 16).


Figure 16 : Sortie console

Une sortie de console plus détaillée est répertoriée dans le segment de code suivant :

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

Tester le cluster Kubernetes

Après avoir installé Kubernetes, nous testerons ensuite le cluster en exécutant une application. Tout d'abord, nous devons configurer l'IP du contrôleur sur le nom DNS public (le nosqlsearch.com domaine). Copiez l'adresse IP du contrôleur à partir de la sortie de la console, comme illustré à la figure 17.


Figure 17 : Obtention de l'adresse IP publique

L'IP du contrôleur Kubernetes peut également être obtenue à partir de la console EC2, comme illustré à la Figure 18.


Figure 18 : Obtention de l'IP du contrôleur Kubernetes

Ajoutez une entrée A (hôte) au fichier de zone DNS pour le domaine nosqlsearch.com chez le fournisseur d'hébergement, comme illustré à la figure 19. L'ajout d'un enregistrement A serait légèrement différent pour différents fournisseurs d'hébergement.


Figure 19 : Obtention de l'adresse IP publique

SSH Connectez-vous au maître Kubernetes à l'aide de l'adresse IP du maître.

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

L'invite de commande CoreOS s'affiche, comme illustré à la figure 20.


Figure 20 : Obtention de l'adresse IP publique

Installez le kubectl binaires :

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

Lister les nœuds :

./kubectl get nodes

Les nœuds du cluster Kubernetes sont répertoriés (voir Figure 21).


Figure 21 : Obtention de l'adresse IP publique

Pour tester le cluster, créez un déploiement pour nginx composé de trois répliques.

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

Par la suite, listez les déploiements :

kubectl get deployments

Le déploiement « nginx » doit être répertorié, comme illustré à la figure 22.


Figure 22 : Obtention de l'adresse IP publique

Répertoriez les pods à l'échelle du cluster :

kubectl get pods -o wide

Créer un service de type LoadBalancer du nginx déploiement :

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

Lister les services :

kubectl get services

Les pods à l'échelle du cluster sont répertoriés, comme illustré à la figure 23. Le service "nginx" est créé et répertorié, y compris l'adresse IP du cluster et l'adresse IP externe.


Figure 23 : Obtention de l'adresse IP publique

Appelez le nginx service à l'adresse IP du cluster. Le nginx Le balisage HTML de la sortie du service s'affiche, comme illustré à la Figure 24.


Figure 24 : Obtention de l'adresse IP publique

Conclusion

Dans trois articles, nous avons discuté de l'installation du cluster Kubernetes à l'aide d'un projet Jenkins. Nous avons créé un projet Jenkins Pipeline avec un fichier Jenkins pour installer le cluster. Un pipeline Jenkins automatise l'installation de Kubernetes, et le même pipeline Jenkins peut être modifié selon les besoins et réexécuté pour créer plusieurs clusters Kubernetes.