sql >> Databáze >  >> RDS >> Database

Použití Jenkinse s Kubernetes AWS, část 3

V prvním článku „Použití Jenkins s Kubernetes AWS, část 1“ o automatizaci instalace Kubernetes pomocí Jenkins jsme nainstalovali Jenkins na CoreOS, vytvořili nezbytné artefakty pro instalaci Kubernetes a vytvořili uzel Jenkins. Ve druhém článku „Použití Jenkins s Kubernetes AWS, část 2“ jsme nakonfigurovali Jenkinsfile a vytvořili Jenkins potrubí. V tomto článku spustíme potrubí Jenkins, abychom nainstalovali Kubernetes a následně otestovali cluster Kubernetes. Tento článek má následující sekce:

  • Spuštění Jenkinsova potrubí
  • Testování clusteru Kubernetes
  • Závěr

Spuštění Jenkinsova potrubí

Klikněte na Vytvořit nyní pro spuštění Jenkinsova potrubí, jak je znázorněno na obrázku 1.


Obrázek 1: Build Now spustí Jenkins Pipeline

Jenkins Pipeline se spustí a indikátor průběhu ukazuje průběh potrubí. Pohled na scénu pro různé fáze v potrubí se také zobrazí, jak je znázorněno na obrázku 2. Kube-aws fáze renderu v zobrazení Stage má odkaz „pozastaveno“, protože jsme požadovali uživatelský vstup pro počet pracovníků (a uživatelský vstup typu instance, který bude následně vyzván) v souboru Jenkinsfile. Klikněte na odkaz „pozastaveno“.


Obrázek 2: Získání veřejné IP adresy

Ve výstupu konzoly pro Jenkins Pipeline klikněte na Požadovaný vstup odkaz, jak je znázorněno na obrázku 3.


Obrázek 3: Požadovaný vstup pro počet uzlů

Počet uzlů zobrazí se dialogové okno s výzvou k zadání počtu uzlů uživatele, jak je znázorněno na obrázku 4. Je také nastavena výchozí hodnota, jak je nakonfigurována v souboru Jenkinsfile. Klikněte na Pokračovat po zadání hodnoty.


Obrázek 4: Určení počtu uzlů

Pipeline pokračuje v běhu a znovu se pozastaví při jiném vstupním požadavku pro typ instance. Klikněte na Vyžadován vstup , jak je znázorněno na obrázku 5.


Obrázek 5: Vstup požadován pro typ instance

Typ instance zobrazí se dialog (viz obrázek 6). Vyberte výchozí hodnotu (nebo zadejte jinou hodnotu) a klikněte na Pokračovat.


Obrázek 6: Určení typu instance

Potrubí pokračuje v provozu. Ve fázi Deploy Cluster se zobrazí další odkaz požadovaný vstupem, jak je znázorněno na obrázku 7. Klikněte na odkaz.


Obrázek 7: Vstup požadovaný pro Měl by být nasazen klastr

V clusteru Mělo by nasadit? vyberte výchozí hodnotu „yes“ a klikněte na Pokračovat, jak je znázorněno na obrázku 8.


Obrázek 8: Měl by nasadit Cluster?

Potrubí pokračuje v provozu. Vytvoření prostředků AWS pro cluster Kubernetes může chvíli trvat, jak naznačuje zpráva ve výstupu konzoly zobrazená na obrázku 9.


Obrázek 9: Vytváření zdrojů AWS

Potrubí běží až do konce. Zpráva „SUCCESS“ znamená, že potrubí proběhlo úspěšně, jak je znázorněno na obrázku 10.


Obrázek 10: Jenkins Pipeline Run byl úspěšně dokončen

Zobrazení fáze pro Jenkins Pipeline zobrazuje různé fáze potrubí po dokončení, jak ukazuje obrázek 11. Zobrazení fáze obsahuje odkazy pro Poslední sestavení, Poslední stabilní sestavení, Poslední úspěšné sestavení a Poslední dokončené sestavení.


Obrázek 11: Stage View

Kliknutím na Full Stage View zobrazíte celé zobrazení scény samostatně, jak ukazuje Obrázek 12.


Obrázek 12: Výběr Full Stage View

Zobrazí se Full Stage View, jak je znázorněno na obrázku 13.


Obrázek 13: Úplný pohled na scénu

Na řídicím panelu se ikona vedle Jenkins Pipeline zezelená, což znamená úspěšné dokončení, jak je znázorněno na obrázku 14.


Obrázek 14: Jenkins Dashboard s Jenkins Pipeline uvedeným jako úspěšně dokončené

Chcete-li zobrazit výstup konzoly, vyberte položku Výstup konzoly pro sestavu, jak je znázorněno na obrázku 15.


Obrázek 15: Historie sestavení>Výstup konzoly

Zobrazí se výstup konzoly (viz obrázek 16).


Obrázek 16: Výstup konzoly

Podrobnější výstup konzoly je uveden v následujícím segmentu kódu:

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

Testování clusteru Kubernetes

Po instalaci Kubernetes dále otestujeme cluster spuštěním nějaké aplikace. Nejprve musíme nakonfigurovat IP řadiče na veřejném názvu DNS (nosqlsearch.com doména). Zkopírujte IP kontroléru z výstupu konzoly, jak je znázorněno na obrázku 17.


Obrázek 17: Získání veřejné IP adresy

Kubernetes Controller IP lze také získat z EC2 Console, jak je znázorněno na obrázku 18.


Obrázek 18: Získání IP ovladače Kubernetes

Přidejte záznam A (Host) do souboru zóny DNS pro doménu nosqlsearch.com u poskytovatele hostingu, jak je znázorněno na obrázku 19. Přidání záznamu A by se u různých poskytovatelů hostingu mírně lišilo.


Obrázek 19: Získání veřejné IP adresy

SSH Přihlaste se do Kubernetes Master pomocí Master's IP.

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

Zobrazí se příkazový řádek CoreOS, jak je znázorněno na obrázku 20.


Obrázek 20: Získání veřejné IP adresy

Nainstalujte kubectl binární soubory:

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

Seznam uzlů:

./kubectl get nodes

Zobrazí se seznam uzlů clusteru Kubernetes (viz obrázek 21).


Obrázek 21: Získání veřejné IP adresy

Chcete-li cluster otestovat, vytvořte rozmístění pro nginx skládající se ze tří replik.

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

Následně uveďte seznam nasazení:

kubectl get deployments

Mělo by být uvedeno nasazení „nginx“, jak je znázorněno na obrázku 22.


Obrázek 22: Získání veřejné IP adresy

Seznam modulů v celém clusteru:

kubectl get pods -o wide

Vytvořte službu typu LoadBalancer z nginx nasazení:

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

Seznam služeb:

kubectl get services

Zobrazí se seznam modulů v celém clusteru, jak je znázorněno na obrázku 23. Vytvoří se a zobrazí služba „nginx“ včetně IP clusteru a externí IP.


Obrázek 23: Získání veřejné IP adresy

Vyvolejte nginx služba na ip clusteru. nginx Zobrazí se HTML označení výstupu služby, jak je znázorněno na obrázku 24.


Obrázek 24: Získání veřejné IP adresy

Závěr

Ve třech článcích jsme diskutovali o instalaci clusteru Kubernetes pomocí projektu Jenkins. Pro instalaci clusteru jsme vytvořili projekt Jenkins Pipeline s Jenkinsfile. Potrubí Jenkins automatizuje instalaci Kubernetes a stejný kanál Jenkins lze podle potřeby upravit a znovu spustit za účelem vytvoření více clusterů Kubernetes.


  1. Úvod do uživatelsky definovaných funkcí v SQL Server

  2. Mohu použít stream k VLOŽENÍ nebo AKTUALIZACI řádku na serveru SQL Server (C#)?

  3. ORA-00932:nekonzistentní datové typy:očekáváno - dostal CLOB

  4. Generování sekvence v pořadí