Jenkins admite la integración continua y la entrega continua (CI/CD). Despliegue Jenkins en un clúster de ACK para obtener alta disponibilidad y reducir los costos de operación y mantenimiento. Este tema explica cómo desplegar Jenkins y presenta un ejemplo sencillo que demuestra la compilación y el despliegue de una aplicación.
Requisitos previos
La CLI de Helm está instalada y conectada al clúster mediante kubectl. Para obtener instrucciones detalladas, consulte Installing Helm y Connect to an ACK cluster using kubectl.
Notas de uso
No se proporciona soporte técnico para Jenkins. Debe mantenerlo por su cuenta.
El chart de Helm y las imágenes de contenedor de Jenkins están alojados fuera de China continental, lo que puede provocar fallos al extraer las imágenes. Utilice una de las siguientes soluciones:
Suscríbase a imágenes fuente del extranjero mediante Container Registry. Para obtener instrucciones, consulte Sync images by using artifact subscription.
Cree una instancia de Global Accelerator (GA) para extraer imágenes directamente mediante su red de aceleración global. Para más detalles, consulte Accelerate cross-region ACK image pulls with GA.
Paso 1: Desplegar Jenkins
-
Agregue el repositorio de Helm de Jenkins.
helm repo add jenkins https://charts.jenkins.io helm repo updateSalida esperada:
Hang tight while we grab the latest from your chart repositories... ...Successfully got an update from the "jenkins" chart repository Update Complete. ⎈Happy Helming!⎈ -
Instale Jenkins.
-
Cree un namespace llamado
cicd.kubectl create ns cicd -
Despliegue Jenkins en el 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: Obligatorio. La clase de almacenamiento del volumen persistente que almacena jenkins_home. Establezca este valor en"alicloud-disk-available"para seleccionar automáticamente un tipo de disco en la nube disponible.persistence.size: Obligatorio. El tamaño del disco en la nube. Mínimo: 20 GiB.controller.serviceType: Opcional. El tipo de servicio. Valor predeterminado: ClusterIP.controller.admin.password: Opcional. La contraseña de administrador. Si no se establece, Jenkins genera una contraseña aleatoria.
Consulte helm-charts para conocer otros parámetros.
-
Compruebe el estado del pod de Jenkins y espere a que entre en estado Running.
kubectl -n cicd get poSalida esperada:
NAME READY STATUS RESTARTS AGE jenkins-0 2/2 Running 0 3m3s
-
-
Consulte la dirección IP externa del servicio.
Si el tipo de servicio es LoadBalancer, utilice la dirección IP externa para acceder al panel de Jenkins.
kubectl get -n cicd serviceSalida esperada:
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
(Opcional) Paso 2: Crear un pipeline
Cree un pipeline de ejemplo llamado first-pipeline. Jenkins inicia dinámicamente un pod esclavo para cada compilación y lo libera al finalizar. Consulte la documentación de Jenkins para conocer las opciones de configuración.
Inicie sesión en Jenkins. En el panel de navegación izquierdo, haga clic en New Item.
En la sección Enter an item name, introduzca first-pipeline, seleccione Pipeline y haga clic en OK.
Haga clic en la pestaña Pipeline, seleccione la plantilla Hello World y haga clic en Save.
En el panel de navegación izquierdo, haga clic en Build Now.
En el panel de navegación izquierdo, haga clic en Build History. Haga clic en 1# > Console Output para consultar los resultados de la compilación.
Preguntas frecuentes
¿Cómo recuperar la contraseña predeterminada de Jenkins?
Si no especificó una contraseña durante el despliegue, recupere la contraseña predeterminada:
kubectl -n cicd exec -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password && echo