Tutorial ini memandu Anda melalui proses deployment Jenkins di kluster ACK Serverless menggunakan Helm, lalu menjalankan pipeline build pertama Anda. Jenkins menjalankan controller-nya pada pod persisten dan secara dinamis membuat pod agent di kluster untuk setiap tugas build.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
-
Kluster ACK Serverless. Lihat Create an ACK Serverless cluster
-
kubectl yang telah dikonfigurasi untuk terhubung ke kluster. Lihat Connect to an ACK cluster by using kubectl
Catatan penggunaan
Jenkins adalah tool open source yang dikelola oleh komunitas. Alibaba Cloud tidak menyediakan dukungan teknis untuk Jenkins. Anda bertanggung jawab atas pemeliharaan instalasi Jenkins Anda.
Langkah 1: Deploy Jenkins
Konfigurasikan repositori Helm
Tambahkan repositori Helm Jenkins dan perbarui indeks chart lokal Anda:
helm repo add jenkins https://charts.jenkins.io
helm repo update
Output 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!
Repositori Helm Jenkins di-hosting di luar Tiongkok daratan. Jika kluster ACK Serverless Anda dideploy di Tiongkok daratan, perintah helm repo update mungkin memerlukan waktu lebih lama dari biasanya.
Instal Jenkins
-
Buat namespace
cicd:kubectl create ns cicd -
Buat volume NAS untuk direktori home Jenkins. Tanpa penyimpanan persisten, semua konfigurasi Jenkins dan riwayat job akan hilang setiap kali pod controller direstart. Buat volume Network Attached Storage (NAS) dan persistent volume claim (PVC) bernama
pvc-nasdi namespacecicdsebelum melanjutkan:-
Jika kluster Anda menggunakan plugin Container Storage Interface (CSI), lihat Mount a statically provisioned NAS volume.
-
Jika kluster Anda menggunakan plugin FlexVolume, lihat Mount a statically provisioned NAS volume.
-
-
Deploy Jenkins di namespace
cicd:helm -n cicd install jenkins jenkins/jenkins \ --set persistence.existingClaim=pvc-nas \ --set controller.serviceType="LoadBalancer" \ --set controller.adminPassword="admin"Parameter Deskripsi Wajib persistence.existingClaim=pvc-nasNama PVC yang memasang volume NAS. Harus sesuai dengan PVC yang Anda buat di namespace cicd.Ya controller.serviceType="LoadBalancer"Mengekspos layanan Jenkins secara eksternal melalui load balancer cloud. Nilai default-nya adalah ClusterIP, yang hanya dapat diakses dari dalam kluster. Di kluster ACK Serverless, atur nilai ini menjadiLoadBalanceragar Anda dapat mengakses UI Jenkins dari browser.Tidak controller.adminPassword="admin"Menetapkan password admin tetap. Jika diabaikan, Jenkins akan menghasilkan password acak. Lihat Get the randomly generated password jika Anda melewatkan parameter ini. Tidak Untuk semua parameter yang tersedia, lihat jenkins/helm-charts.
-
Tunggu hingga pod controller Jenkins mencapai status
Running:kubectl -n cicd get poOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE jenkins-0 2/2 Running 0 3m3s
Akses Jenkins
Setelah pod berjalan, buka browser dan arahkan ke alamat IP eksternal layanan Jenkins. Login dengan username admin dan password yang Anda tetapkan saat instalasi.
Untuk mencari tahu alamat IP eksternal, jalankan:
kubectl -n cicd get svc jenkins
Kolom EXTERNAL-IP menampilkan IP load balancer.
Dapatkan password yang dihasilkan secara acak
Jika Anda tidak menetapkan controller.adminPassword saat instalasi, ambil password yang dihasilkan dengan perintah berikut:
kubectl -n cicd exec -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password && echo
Ubah tipe Service setelah instalasi
Jika Anda mendeploy Jenkins dengan tipe Service default ClusterIP dan ingin mengeksposnya melalui load balancer setelah instalasi, jalankan:
kubectl -n cicd patch svc jenkins -p '{"spec": {"type": "LoadBalancer"}}'
Langkah 2: Buat pipeline build
Jenkins berintegrasi dengan kluster ACK Serverless melalui plugin Kubernetes. Saat Anda memicu build, Jenkins secara dinamis membuat pod agent di kluster untuk menjalankan tugas tersebut. Pod tersebut berisi kontainer jnlp yang berfungsi sebagai agent Jenkins dan terhubung kembali ke controller. Setelah build selesai, Jenkins segera menghentikan pod agent tersebut, sehingga sumber daya kluster hanya digunakan selama build aktif.
Langkah-langkah berikut membuat pipeline build bernama first-pipeline menggunakan templat Hello World.
-
Login ke Jenkins dan klik New Item di panel navigasi sebelah kiri.
-
Di bidang Enter an item name, ketik
first-pipeline, pilih Pipeline, lalu klik OK. -
Di bagian atas halaman konfigurasi, klik tab Pipeline. Pilih templat Hello World dan klik Save.

-
Di panel navigasi sebelah kiri, klik Build Now untuk memicu build.
-
Setelah build dimulai, klik Build History di panel navigasi sebelah kiri, lalu klik 1# untuk membuka detail build. Klik Console Output untuk melihat log build dan memastikan build berhasil.
Langkah selanjutnya
-
Kustomisasi templat pod agent untuk menggunakan gambar kontainer tertentu atau tambahkan beberapa kontainer untuk build spesifik bahasa pemrograman. Lihat Jenkins Kubernetes Plugin.
-
Konfigurasikan manajemen kode sumber dan webhook untuk memicu pipeline build secara otomatis saat terjadi perubahan kode. Lihat Jenkins documentation.