Jenkins digunakan untuk menerapkan integrasi berkelanjutan dan penyebaran berkelanjutan (CI/CD). Anda dapat menyebarkan Jenkins di kluster Container Service for Kubernetes (ACK) guna memastikan ketersediaan tinggi layanan dan mengurangi biaya operasional serta pemeliharaan (O&M). Topik ini menjelaskan cara menyebarkan Jenkins di kluster ACK, lalu membuat dan menyebarkan aplikasi sederhana.
Prasyarat
Helm CLI telah diinstal dan terhubung ke kluster menggunakan kubectl. Untuk instruksi lengkapnya, lihat Installing Helm dan Connect to an ACK cluster using kubectl.
Perhatian
Tidak tersedia dukungan teknis untuk Jenkins. Pengembang yang menggunakan Jenkins harus memeliharanya sendiri.
Grafik Helm dan gambar kontainer untuk Jenkins berasal dari repositori di luar Tiongkok Daratan, yang dapat menyebabkan kegagalan saat menarik gambar. Anda dapat menggunakan salah satu solusi berikut:
Berlangganan gambar sumber luar negeri menggunakan Container Registry. Untuk instruksinya, 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: Sebarkan 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 -
Sebarkan 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. Menentukan kelas penyimpanan untuk volume persisten yang menyimpan direktori jenkins_home. Jika Anda mengaturnya ke"alicloud-disk-available", sistem akan secara otomatis memilih tipe disk cloud yang tersedia. -
persistence.size: Wajib. Menentukan ukuran disk cloud. Ukuran minimum untuk disk cloud Alibaba Cloud ECS adalah 20 GiB. -
controller.serviceType: Opsional. Menentukan tipe layanan. Nilai default-nya adalah ClusterIP. -
controller.admin.password: Opsional. Menentukan kata sandi untuk pengguna admin. Jika tidak ditentukan, Jenkins akan menghasilkan kata sandi acak.
Untuk informasi lebih lanjut tentang parameter lainnya, lihat helm-charts.
-
-
Periksa status Pod Jenkins dan tunggu hingga masuk ke 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 Anda mengatur tipe layanan ke LoadBalancer, gunakan alamat IP eksternal untuk mengakses Dasbor Jenkins di browser Anda.
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
Bagian ini menggunakan contoh pembuatan pipeline first-pipeline untuk menunjukkan cara membuat pipeline build. Saat Anda membuat pipeline build, Jenkins secara dinamis meluncurkan Pod slave di kluster ACK dan menjalankan build secara default. Setelah Jenkins selesai menjalankan build, Pod slave tersebut langsung dilepas. Untuk informasi lebih lanjut tentang konfigurasi Jenkins, lihat Jenkins.
Masuk ke Jenkins. Di panel navigasi kiri, klik New Item.
Di bagian Enter an item name, masukkan first-pipeline, pilih Pipeline, lalu klik OK.
-
Di bagian atas halaman, klik tab Pipeline, pilih templat Hello World, lalu klik Save.
Di panel navigasi kiri, klik Build Now untuk menjalankan build.
Di panel navigasi kiri, klik Build History. Klik 1# untuk membuka halaman detail pipeline, lalu klik Console Output untuk melihat hasil build.
FAQ
Bagaimana cara mengambil password default Jenkins?
Jika Anda tidak menentukan kata sandi saat penerapan, jalankan perintah berikut untuk mengambil kata sandi default:
kubectl -n cicd exec -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password && echo