Jenkins mendukung continuous integration dan continuous delivery (CI/CD). Dengan menerapkan Jenkins di kluster ACK, Anda dapat mencapai ketersediaan tinggi dan mengurangi biaya operasional serta pemeliharaan (O&M). Topik ini menjelaskan cara menerapkan Jenkins dan memberikan contoh sederhana yang menunjukkan proses pembuatan dan penerapan aplikasi.
Prasyarat
Helm CLI telah diinstal dan terhubung ke kluster menggunakan kubectl. Untuk instruksi lengkap, lihat Installing Helm dan Connect to an ACK cluster using kubectl.
Catatan penggunaan
Tidak tersedia dukungan teknis untuk Jenkins. Anda harus mengelolanya sendiri.
Grafik Helm dan gambar kontainer untuk Jenkins dihosting di luar Tiongkok Daratan, yang dapat menyebabkan kegagalan saat menarik gambar. Gunakan salah satu solusi berikut:
Berlangganan gambar dari sumber luar negeri menggunakan Container Registry. Untuk instruksi, lihat Sync images by using artifact subscription.
Buat instans Global Accelerator (GA) untuk menarik gambar secara langsung menggunakan jaringan akselerasi global-nya. Untuk detailnya, lihat Accelerate cross-region ACK image pulls with GA.
Langkah 1: Terapkan Jenkins
-
Tambahkan repositori Helm Jenkins.
helm repo add jenkins https://charts.jenkins.io helm repo updateOutput yang diharapkan:
Hang tight while we grab the latest from your chart repositories... ...Successfully got an update from the "jenkins" chart repository Update Complete. ⎈Happy Helming!⎈ -
Instal Jenkins.
-
Buat namespace bernama
cicd.kubectl create ns cicd -
Terapkan Jenkins ke namespace
cicd.helm -n cicd install jenkins jenkins/jenkins \ --set persistence.storageClass="alicloud-disk-essd" \ --set persistence.size="20Gi" \ --set controller.serviceType="LoadBalancer" \ --set controller.admin.password="<YOUR_SECURE_PASSWORD>"-
persistence.storageClass: Wajib. Kelas penyimpanan untuk volume persisten yang menyimpan jenkins_home. Atur ke"alicloud-disk-available"untuk memilih tipe disk cloud yang tersedia secara otomatis. -
persistence.size: Wajib. Ukuran disk cloud. Minimum: 20 GiB. -
controller.serviceType: Opsional. Jenis layanan. Default: ClusterIP. -
controller.admin.password: Opsional. Kata sandi admin. Jika tidak diatur, Jenkins akan menghasilkan kata sandi acak.
Lihat helm-charts untuk parameter lainnya.
-
-
Periksa status Pod Jenkins dan tunggu hingga berada dalam status Running.
kubectl -n cicd get poOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE jenkins-0 2/2 Running 0 3m3s
-
-
Lihat alamat IP eksternal layanan.
Jika jenis layanan adalah LoadBalancer, gunakan alamat IP eksternal untuk mengakses Dasbor Jenkins.
kubectl get -n cicd serviceOutput yang diharapkan:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE jenkins LoadBalancer 192.168.***.*** 8.222.***.*** 8080:30949/TCP 2d17h jenkins-agent ClusterIP 192.168.***.* <none> 50000/TCP 2d17h
(Opsional) Langkah 2: Buat pipeline
Buat pipeline contoh bernama first-pipeline. Jenkins secara dinamis meluncurkan Pod slave untuk setiap build dan melepaskannya setelah selesai. Lihat Jenkins documentation untuk opsi konfigurasi.
-
Masuk ke Jenkins. Di panel navigasi kiri, klik New Item.
-
Di bagian Enter an item name, masukkan first-pipeline, pilih Pipeline, lalu klik OK.
-
Klik tab Pipeline, pilih templat Hello World, lalu klik Save.
-
Di panel navigasi kiri, klik Build Now.
-
Di panel navigasi kiri, klik Build History. Klik 1# > Console Output untuk melihat hasil build.
FAQ
Bagaimana cara mengambil kata sandi default Jenkins?
Jika Anda tidak menentukan kata sandi saat penerapan, ambil kata sandi default sebagai berikut:
kubectl -n cicd exec -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password && echo