Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Menggunakan Jenkins dengan Kubernetes AWS, Bagian 3

Dalam artikel pertama, “Menggunakan Jenkins dengan Kubernetes AWS, Bagian 1,” tentang mengotomatiskan instalasi Kubernetes dengan Jenkins, kami menginstal Jenkins di CoreOS, membuat artefak prasyarat untuk menginstal Kubernetes, dan membuat simpul Jenkins. Di artikel kedua, “Menggunakan Jenkins dengan Kubernetes AWS, Bagian 2,” kami mengonfigurasi Jenkinsfile dan membuat pipeline Jenkins. Pada artikel ini, kita akan menjalankan pipeline Jenkins untuk menginstal Kubernetes dan selanjutnya menguji cluster Kubernetes. Artikel ini memiliki bagian berikut:

  • Menjalankan Jenkins Pipeline
  • Menguji Cluster Kubernetes
  • Kesimpulan

Menjalankan Jenkins Pipeline

Klik Bangun Sekarang untuk menjalankan Jenkins Pipeline, seperti yang ditunjukkan pada Gambar 1.


Gambar 1: Build Now memulai Jenkins Pipeline

Jenkins Pipeline dimulai dan bilah kemajuan menunjukkan kemajuan pipeline. Tampilan Panggung untuk berbagai tahapan dalam pipeline juga akan ditampilkan, seperti yang ditunjukkan pada Gambar 2. Kube-aws render stage di Stage View memiliki tautan "dijeda" karena kami meminta input pengguna untuk jumlah pekerja (dan input pengguna tipe instance, yang akan diminta untuk selanjutnya) di Jenkinsfile. Klik tautan “dijeda”.


Gambar 2: Mendapatkan Alamat IP Publik

Di Output Konsol untuk Jenkins Pipeline, klik Input yang diminta tautan, seperti yang ditunjukkan pada Gambar 3.


Gambar 3: Input diminta untuk jumlah node

Jumlah Node dialog akan ditampilkan, meminta masukan pengguna untuk jumlah node, seperti yang ditunjukkan pada Gambar 4. Nilai default seperti yang dikonfigurasi dalam Jenkinsfile juga ditetapkan. Klik Lanjutkan setelah menentukan nilai.


Gambar 4: Menentukan Jumlah Node

Pipeline terus berjalan dan kembali dijeda pada permintaan input lain untuk jenis instans. Klik Masukan diminta , seperti yang ditunjukkan pada Gambar 5.


Gambar 5: Masukan yang Diminta untuk Jenis Instance

Jenis Instance dialog akan ditampilkan (lihat Gambar 6). Pilih nilai default (atau tentukan nilai yang berbeda) dan klik Lanjutkan.


Gambar 6: Menentukan Jenis Instance

Pipa terus berjalan. Pada tahap Deploy Cluster, tautan lain yang diminta Input ditampilkan, seperti yang ditunjukkan pada Gambar 7. Klik tautan tersebut.


Gambar 7: Masukan yang Diminta Jika Cluster Di-Deploy

Dalam Cluster yang Harus Di-Deploy? dialog, pilih nilai default "ya" dan klik Lanjutkan, seperti yang ditunjukkan pada Gambar 8.


Gambar 8: Haruskah Menyebarkan Cluster?

Pipa terus berjalan. Pembuatan sumber daya AWS untuk klaster Kubernetes dapat memakan waktu cukup lama, seperti yang ditunjukkan oleh pesan di Keluaran Konsol yang ditunjukkan pada Gambar 9.


Gambar 9: Membuat Sumber Daya AWS

Pipa berjalan sampai selesai. Pesan “SUCCESS” menunjukkan bahwa pipeline telah berhasil dijalankan, seperti yang ditunjukkan pada Gambar 10.


Gambar 10: Jenkins Pipeline Run berhasil diselesaikan

Tampilan Tahap untuk Jenkins Pipeline menampilkan berbagai tahapan pipeline yang telah selesai, seperti yang ditunjukkan pada Gambar 11. Tampilan Tahap mencakup tautan untuk Pembuatan terakhir, Pembuatan stabil terakhir, Pembuatan terakhir berhasil, dan Pembuatan terakhir selesai.


Gambar 11 Tampilan Panggung

Klik Full Stage View untuk menampilkan tampilan full stage secara terpisah, seperti yang ditunjukkan pada Gambar 12.


Gambar 12: Memilih Tampilan Panggung Penuh

Tampilan Panggung Penuh akan ditampilkan, seperti yang ditunjukkan pada Gambar 13.


Gambar 13: Tampilan Panggung Penuh

Di Dasbor, ikon yang berdekatan dengan Jenkins Pipeline berubah menjadi hijau untuk menunjukkan penyelesaian yang berhasil, seperti yang ditunjukkan pada Gambar 14.


Gambar 14: Dasbor Jenkins dengan Jenkins Pipeline terdaftar sebagai Berhasil menyelesaikan

Untuk menampilkan output konsol, pilih Output Konsol untuk Build, seperti yang ditunjukkan pada Gambar 15.


Gambar 15: Riwayat Bangun>Keluaran Konsol

Keluaran Konsol akan ditampilkan (lihat Gambar 16).


Gambar 16: Keluaran Konsol

Output Konsol yang lebih detail tercantum di segmen kode berikut:

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

Menguji Cluster Kubernetes

Setelah Kubernetes terinstal, selanjutnya kita akan menguji cluster dengan menjalankan beberapa aplikasi. Pertama, kita perlu mengkonfigurasi Ip Pengendali pada Nama DNS Publik (nosqlsearch.com domain). Salin IP Pengontrol dari Output Konsol, seperti yang ditunjukkan pada Gambar 17.


Gambar 17: Mendapatkan Alamat IP Publik

Ip Kontroler Kubernetes juga dapat diperoleh dari Konsol EC2, seperti yang ditunjukkan pada Gambar 18.


Gambar 18: Mendapatkan Ip Pengontrol Kubernetes

Tambahkan entri A (Host) ke file DNS Zone untuk domain nosqlsearch.com di penyedia hosting, seperti yang ditunjukkan pada Gambar 19. Menambahkan catatan A akan sedikit berbeda untuk penyedia hosting yang berbeda.


Gambar 19: Mendapatkan Alamat IP Publik

Masuk SSH ke Master Kubernetes menggunakan Ip Master.

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

Prompt perintah CoreOS akan ditampilkan, seperti yang ditunjukkan pada Gambar 20.


Gambar 20: Mendapatkan Alamat IP Publik

Instal kubectl binari:

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

Buat daftar node:

./kubectl get nodes

Node cluster Kubernetes terdaftar (lihat Gambar 21).


Gambar 21: Mendapatkan Alamat IP Publik

Untuk menguji cluster, buat penerapan untuk nginx terdiri dari tiga replika.

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

Selanjutnya, buat daftar penerapan:

kubectl get deployments

Penerapan "nginx" harus terdaftar, seperti yang ditunjukkan pada Gambar 22.


Gambar 22: Mendapatkan Alamat IP Publik

Buat daftar Pod di seluruh cluster:

kubectl get pods -o wide

Buat layanan dengan tipe LoadBalancer dari nginx penyebaran:

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

Buat daftar layanan:

kubectl get services

Pod di seluruh cluster terdaftar, seperti yang ditunjukkan pada Gambar 23. Layanan “nginx” dibuat dan terdaftar termasuk ip cluster dan Ip eksternal.


Gambar 23: Mendapatkan Alamat IP Publik

Aktifkan nginx layanan di cluster ip. nginx output layanan markup HTML akan ditampilkan, seperti yang ditunjukkan pada Gambar 24.


Gambar 24: Mendapatkan Alamat IP Publik

Kesimpulan

Dalam tiga artikel, kami membahas cara menginstal cluster Kubernetes menggunakan proyek Jenkins. Kami membuat proyek Jenkins Pipeline dengan Jenkinsfile untuk menginstal cluster. Pipeline Jenkins mengotomatiskan penginstalan Kubernetes, dan pipeline Jenkins yang sama dapat dimodifikasi sesuai kebutuhan dan dijalankan kembali untuk membuat beberapa cluster Kubernetes.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menggunakan COUNT dalam SQL?

  2. 5 Cara Membuat Daftar Tabel Sementara menggunakan T-SQL

  3. Kejutan dan Asumsi Kinerja :DATEADD

  4. Pulihkan Database WordPress Anda dengan WP-CLI

  5. Apakah Berkembangnya Informasi Kontak Berarti Mengubah Basis Data Anda?