Terapkan Jenkins pada kluster ACK Serverless dan gunakan contoh sederhana untuk membangun serta menerapkan sebuah aplikasi.
Prasyarat
-
Anda telah membuat kluster ACK Serverless. Untuk informasi selengkapnya, lihat Buat kluster ACK Serverless.
-
Anda telah terhubung ke kluster Kubernetes menggunakan kubectl. Untuk informasi selengkapnya, lihat Hubungkan ke kluster Kubernetes menggunakan kubectl.
Pertimbangan
Anda bertanggung jawab atas pemeliharaan sistem Jenkins Anda. Dukungan teknis tingkat enterprise tidak disediakan untuk Jenkins.
Langkah 1: Terapkan Jenkins
-
Jalankan perintah berikut untuk menambahkan dan memperbarui 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!⎈CatatanRepositori Helm berlokasi di luar Tiongkok daratan. Jika Anda memperbarui repositori dari kluster ACK Serverless di Tiongkok daratan, proses tersebut mungkin memerlukan waktu lebih lama.
-
Instal Jenkins.
-
Jalankan perintah berikut untuk membuat namespace
cicd.kubectl create ns cicd -
Buat volume penyimpanan NAS bersama.
Tanpa volume persisten untuk direktori home Jenkins, semua konfigurasi akan hilang jika Pod controller direstart.
-
Jika Anda menggunakan Plugin Container Storage Interface (CSI), lihat Gunakan volume NAS yang disediakan secara statis.
-
Jika Anda menggunakan Plugin FlexVolume, lihat Gunakan volume NAS yang disediakan secara statis.
-
-
Jalankan perintah berikut untuk menerapkan Jenkins ke namespace
cicd.helm -n cicd install jenkins jenkins/jenkins \ --set persistence.existingClaim=pvc-nas \ --set controller.serviceType="LoadBalancer" \ --set controller.adminPassword="admin"-
persistence.existingClaim=pvc-nas: Wajib. Nama persistent volume claim (PVC). Pada contoh ini, PVC bernama pvc-nas dan dibuat di namespace
cicd. -
controller.serviceType="LoadBalancer": Opsional. Jenis layanan default adalah ClusterIP.
-
controller.adminPassword="admin": Opsional. Jika Anda tidak mengatur parameter ini, kata sandi acak akan dibuat secara otomatis. Untuk mendapatkan kata sandi tersebut, lihat Akses Jenkins dan dapatkan kata sandi default.
Untuk informasi selengkapnya mengenai parameter penerapan, lihat helm-charts.
-
-
Jalankan perintah berikut untuk memeriksa status Pod Jenkins. Tunggu hingga Pod berada dalam status Running.
kubectl -n cicd get poOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE jenkins-0 2/2 Running 0 3m3s
-
-
Akses layanan Jenkins melalui browser web dan masuk menggunakan username dan password Anda.
Untuk informasi selengkapnya, lihat Akses Jenkins dan dapatkan kata sandi default.
Langkah 2: Buat tugas pipeline
Buat tugas pipeline bernama first-pipeline. Saat Anda menjalankan pipeline, Jenkins secara otomatis meluncurkan slave pod dinamis di kluster ACK Serverless Anda untuk menjalankan pekerjaan build. Setelah pekerjaan selesai, slave pod tersebut langsung dilepas. Untuk informasi selengkapnya mengenai konfigurasi Jenkins, lihat dokumentasi resmi Jenkins.
-
Masuk ke Jenkins. Di panel navigasi kiri, klik New Item.
-
Di bidang Enter an item name, masukkan first-pipeline, pilih Pipeline sebagai jenis item, lalu klik OK.
-
Klik tab Pipeline, pilih templat Hello World, lalu klik Save.
-
Di panel navigasi kiri, klik Build Now untuk memulai build.
-
Di bagian Build History pada panel navigasi kiri, klik nomor build, misalnya #1, untuk membuka halaman detail build tersebut. Kemudian, klik Console Output untuk melihat output build.
Akses Jenkins dan dapatkan kata sandi default
-
Secara default, layanan Jenkins menggunakan tipe ClusterIP. Untuk mengekspos layanan melalui load balancer, jalankan perintah berikut:
kubectl -n cicd patch svc jenkins -p '{"spec": {"type": "LoadBalancer"}}' -
Jika Anda tidak menentukan kata sandi saat penerapan, jalankan perintah berikut untuk mengambil kata sandi acak default:
kubectl -n cicd exec -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password && echo