Configura Jenkins en Google Kubernetes Engine

En este instructivo, se muestra cómo configurar Jenkins en Google Kubernetes Engine (GKE) para ayudarte a organizar tu canalización de entrega de software.

Objetivos

  • Crear un clúster de Kubernetes con GKE.
  • Instalar Jenkins mediante Helm.
  • Conectar con Jenkins.

Costos

En este instructivo, se usan los siguientes componentes facturables de Google Cloud:

  • Google Kubernetes Engine

Usa la calculadora de precios para generar una estimación de los costos según el uso previsto. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Comprueba que la facturación esté habilitada en tu proyecto.

    Descubre cómo puedes habilitar la facturación

  4. Habilita las API de GKE.

    Habilita las API

  5. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  6. Comprueba que la facturación esté habilitada en tu proyecto.

    Descubre cómo puedes habilitar la facturación

  7. Habilita las API de GKE.

    Habilita las API

Prepara tu entorno

Primero, prepara tu entorno de implementación.

  1. Activa Cloud Shell. Cloud Shell te brinda acceso a la línea de comandos en Cloud Console y, también, incluye el SDK de Cloud y otras herramientas que necesitas para el desarrollo de Google Cloud. Cloud Shell puede tardar varios minutos en aprovisionarse.

    Activar Cloud Shell

    Una vez que se complete el proceso, verás el siguiente resultado:

    Welcome to Cloud Shell! Type "help" to get started.
    
  2. Clona el código de muestra con el siguiente comando:

    git clone https://github.com/GoogleCloudPlatform/continuous-deployment-on-kubernetes.git
    

    El repositorio de Git contiene los manifiestos de Kubernetes que utilizarás para implementar Jenkins. Los manifiestos y su configuración se describen en Cómo configurar Jenkins para GKE.

  3. Dirígete al directorio de código de muestra:

    cd continuous-deployment-on-kubernetes
    

Crea un clúster de GKE

  1. Aprovisiona un clúster de GKE. Este paso puede tardar varios minutos en completarse.

    gcloud container clusters create jenkins-cd \
      --zone us-east1-d --scopes cloud-platform
    

    El alcance cloud-platform permite que Jenkins acceda a Cloud Source Repositories y a Container Registry.

  2. Confirma que puedes conectarte a tu clúster.

    kubectl cluster-info
    

    Si puedes conectarte con éxito a tu clúster, el resultado es similar al siguiente:

    Kubernetes control plane is running at https://35.196.84.95
    GLBCDefaultBackend is running at https://35.196.84.95/api/v1/namespaces/kube-system/services/default-http-backend:http/proxy
    KubeDNS is running at https://35.196.84.95/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
    Metrics-server is running at https://35.196.84.95/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
    
  3. Añádete como administrador de clústeres en el RBAC del clúster para que puedas otorgar permisos Jenkins en el clúster:

    kubectl create clusterrolebinding cluster-admin-binding \
      --clusterrole=cluster-admin --user=$(gcloud config get-value account)
    

Instala Jenkins

Usa Helm para implementar Jenkins desde el repositorio.

  1. Agrega el repositorio de gráficos de Helm para Jenkins:

    helm repo add jenkinsci https://charts.jenkins.io
    helm repo update
    

Utilizarás un archivo de valores personalizado para configurar la instalación de Jenkins. Para obtener detalles sobre la configuración, consulta el archivo jenkins/values.yaml.

  1. Utiliza la CLI de Helm para implementar el gráfico con tus ajustes de configuración.

    helm install cd-jenkins -f jenkins/values.yaml jenkinsci/jenkins --wait
    

    Para obtener más información sobre cómo configurar la instalación de Jenkins, dirígete a la página de documentación de gráficos de Jenkins.

  2. Asegúrate de que el pod de Jenkins pase al estado Running y que el contenedor esté en el estado READY:

    kubectl get pods
    

    Verás 2/2 en la columna READY y Running en la columna STATUS. Jenkins puede tardar unos minutos en completar su inicialización.

    NAME           READY   STATUS    RESTARTS   AGE
    cd-jenkins-0   2/2     Running   0          6m30s
    
  3. Verifica que los servicios de Kubernetes se hayan creado correctamente.

    kubectl get svc
    

    El resultado se parece al siguiente:

    NAME               CLUSTER-IP     EXTERNAL-IP   PORT(S)     AGE
    cd-jenkins         10.35.249.67   <none>        8080/TCP    3h
    cd-jenkins-agent   10.35.248.1    <none>        50000/TCP   3h
    kubernetes         10.35.240.1    <none>        443/TCP     9h
    

La instalación de Jenkins utiliza el complemento de Kubernetes para crear agentes de creación. Se ejecutarán automáticamente según sea necesario cuando el máster de Jenkins necesite ejecutar una compilación. Una vez finalizado su trabajo, se terminarán automáticamente y los recursos se agregarán de nuevo al grupo de recursos de clústeres.

Conéctate a Jenkins

  1. Configura la redirección de puertos a la IU de Jenkins desde Cloud Shell:

    export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/component=jenkins-master" -l "app.kubernetes.io/instance=cd-jenkins" -o jsonpath="{.items[0].metadata.name}")
    kubectl port-forward $POD_NAME 8080:8080 >> /dev/null 2>&1 &
    
  2. Para abrir la interfaz de usuario de Jenkins, haz clic en Vista previa en la Web en Cloud Shell y haz clic en Vista previa en el puerto 8080.

    port8080

Ahora tienes acceso a Jenkins y un GKE. Para aprovechar aún más esta solución, puedes usar estos componentes en la canalización de entrega continua.

Limpia

Una vez que terminaste el instructivo, limpia los recursos que creaste en GCP para que no se facturen en el futuro.

Borra el proyecto

La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.

Para borrar el proyecto, sigue estos pasos:

  1. En Cloud Console, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

Borra el clúster de GKE

  1. Borra el clúster de GKE:
    gcloud container clusters delete jenkins-cd --zone us-east1-d
    

¿Qué sigue?