Di bagian pertama dari tiga artikel tentang mengotomatiskan penginstalan Kubernetes dengan Jenkins, “Menggunakan Jenkins dengan Kubernetes AWS, Bagian 1,” kami membuat artefak prasyarat dan membuat simpul Jenkins. Dalam artikel lanjutan ini, kita akan mengonfigurasi Jenkinsfile untuk pipeline Jenkins dan membuat pipeline Jenkins. Artikel ini memiliki bagian berikut:
- Mengonfigurasi file Jenkins
- Membuat Pipeline Jenkins
- Kesimpulan
Membuat Jenkinsfile
Jenkins Pipeline dikonfigurasi dalam file teks bernama Jenkinsfile dalam sintaks Groovy. Jenkinsfile terdiri dari langkah . "Langkah" adalah langkah pembuatan, instruksi untuk diterapkan Jenkins. Dua jenis langkah yang didukung:node dan panggung . Sebuah "simpul" adalah langkah tingkat atas yang memilih pelaksana pada agen untuk menjalankan kode. Node adalah mesin (master atau agen ) dan label dalam langkah simpul harus cocok dengan label pada mesin agar simpul dapat memilih mesin. Langkah “simpul” membuat ruang kerja , yang merupakan direktori file, untuk pekerjaan Jenkins tertentu untuk pemrosesan intensif sumber daya. Langkah “node” juga menjadwalkan langkah-langkah yang ditentukan di dalamnya pada slot eksekutor dengan menambahkannya ke antrian build Jenkins. Saat slot eksekutor mengosongkan, langkah terjadwal akan dijalankan dari antrean build.
Buat file bernama Jenkinsfile (tanpa akhiran apapun). File tanpa akhiran dibuat di Windows dengan perintah berikut dari command prompt. Perhatikan "." Di akhir perintah, yang akan disertakan.
>notepad Jenkinsfile.
Dalam dialog “Tidak dapat menemukan file Jenkins. mengajukan. Apakah Anda ingin membuat file baru?” klik Ya. Sebuah Jenkinsfile file akan dibuat. Dalam Jenkinsfile , buat langkah tingkat atas yang disebut “simpul” di mana label “jenkins” sama dengan nilai Label yang dikonfigurasi di agen Jenkins.
node('jenkins') { }
Dalam langkah simpul, tambahkan langkah lainnya untuk menginstal cluster Kubernetes. Tambahkan langkah panggung untuk menginstal Kubernetes. Prosedur untuk menginstal Kubernetes didokumentasikan dengan baik dan tidak akan dibahas lagi. Untuk referensi, “Memulai Kubernetes di Amazon Web Services (AWS)” membahas prosedur penginstalan secara mendetail. Perintah shell dijalankan dengan "sh". Masukan pengguna untuk variabel seperti jumlah pekerja dan jenis instans mungkin diminta.
init kube-aws perintah untuk menginisialisasi tumpukan CloudFormation memiliki nama cluster yang dikodekan sebagai "kubernetes-coreos-cluster" (nama arbitrer). --nama-dns-eksternal diatur ke nama domain, NOSQLSEARCH.COM , yang akan berbeda untuk pengguna yang berbeda. Pasangan kunci EC2 diatur dengan --key-name ke kubernetes-coreos , yang telah dibuat sebelumnya. Kunci KMS diatur ke KeyMetadata.Arn string yang dihasilkan sebelumnya dengan aws kms perintah di --kms-key pilihan. Jenkinsfile . yang dihasilkan tercantum di bawah ini:
node('jenkins') { stage 'set env' sh "sudo yum install gnupg2" sh "gpg2 --keyserver pgp.mit.edu --recv-key FC8A365E" sh "gpg2 --fingerprint FC8A365E" sh "wget https://github.com/coreos/coreos-kubernetes/releases/ download/v0.7.1/kube-aws-linux-amd64.tar.gz" sh "wget https://github.com/coreos/coreos-kubernetes/releases/ download/v0.7.1/kube-aws-linux-amd64.tar.gz.sig" sh "gpg2 --verify kube-aws-linux-amd64.tar.gz.sig kube-aws-linux- amd64.tar.gz" sh "tar zxvf kube-aws-linux-amd64.tar.gz" sh "sudo mv linux-amd64/kube-aws /usr/local/bin" sh "export AWS_ACCESS_KEY_ID=AKIAJGFCP4HUFH4453FA" sh "export AWS_SECRET_ACCESS_KEY=7BaiUETep3zPYrhrzKYpBdwkwVV16 BTT+pt2/EXF" sh "aws ec2 create-volume --availability-zone us-east-1c --size 10 --volume-type gp2" stage 'kube-aws init' deleteDir() sh "mkdir coreos-cluster" sh "cd coreos-cluster" sh "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/ f380f8b3-e93d-4a37-b87f-9ad1dbe909be '" stage "kube-aws render" WORKER_COUNT = input message: 'Number of Nodes', parameters: [[$class: 'StringParameterDefinition', defaultValue: '3', description: '', name: 'WORKER_COUNT']] INSTANCE_TYPE = input message: 'Instance Type', parameters: [[$class: 'StringParameterDefinition', defaultValue: 't2.micro', description: '', name: 'INSTANCE_TYPE']] sh "kube-aws render" sh "sed -i '''s/#workerCount: 1/workerCount: '''$WORKER_COUNT'''/''' cluster.yaml" sh "sed -i '''s/#workerInstanceType: m3.medium/workerInstanceType: '''$INSTANCE_TYPE'''/''' cluster.yaml" sh "kube-aws validate" stage "Archive CFN" step([$class: 'ArtifactArchiver', artifacts: 'cluster.yaml, stack-template.json,credentials/*,userdata/*', fingerprint: true]) stage "Deploy Cluster" shouldDeploy = input message: 'Should Deploy Cluster?', parameters: [[$class: 'ChoiceParameterDefinition', choices: 'yesno', description: '', name: 'Deploy']] if(shouldDeploy == "yes") { echo "Deploying Kubernetes cluster" sh "kube-aws up" sh "kube-aws status" step([$class: 'ArtifactArchiver', artifacts: 'kubeconfig', fingerprint: true]) } }
Membuat Pipeline Jenkins
Di Dasbor Jenkins, klik buat pekerjaan baru untuk membuat Jenkins Pipeline, seperti yang ditunjukkan pada Gambar 1.
Gambar 1: Pilih “buat pekerjaan baru” untuk membuat pekerjaan Jenkins
Di antarmuka pengguna, tentukan nama saluran (install-kubernetes ), misalnya, dan pilih Pipa , seperti yang ditunjukkan pada Gambar 2. Klik OK.
Gambar 2: Memilih Pipa
Wizard konfigurasi pipeline akan dimulai, seperti yang ditunjukkan pada Gambar 3.
Gambar 3: Wizard Konfigurasi Pipa Jenkins
Pilih Pipa tab. Dalam Definisi bidang, pilih Skrip saluran pilihan, seperti yang ditunjukkan pada Gambar 4.
Gambar 4: Tab saluran
Salin dan tempel file Jenkins yang terdaftar sebelumnya. Klik Simpan , seperti yang ditunjukkan pada Gambar 5.
Gambar 5: Mengonfigurasi Skrip Pipeline
Jenkins Pipeline baru akan dibuat (lihat Gambar 6).
Gambar 6: Jenkins Pipeline dibuat
Awalnya, pipeline tidak berjalan dan Status tidak boleh mencantumkan Build apa pun yang telah dimulai atau dijalankan, seperti yang ditunjukkan pada Gambar 7.
Gambar 7: Status Pipa Jenkins
Kesimpulan
Pada artikel ini, kami mengonfigurasi Jenkinsfile dan menggunakan Jenkinsfile untuk membuat pipeline Jenkins. Dalam artikel 3 dan penutup tentang mengotomatiskan instalasi Kubernetes dengan Jenkins, kita akan menjalankan pipa Jenkins yang dibuat dalam artikel ini untuk menginstal Kubernetes. Selanjutnya, kita akan menguji cluster Kubernetes yang terinstal.