Configura Jenkins en Google Kubernetes Engine

En este instructivo, te mostramos cómo configurar Jenkins en GKE para ayudar 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 componentes facturables de Google Cloud Platform, como los que se indican a continuación:

  • Compute Engine
  • Google Kubernetes Engine
  • Cloud Build

Usa la calculadora de precios para generar una estimación de los costos según el uso previsto. Los usuarios nuevos de GCP pueden ser aptos para una prueba gratuita.

Antes de comenzar

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. Selecciona o crea un proyecto de GCP.

    Ir a la página Administrar recursos

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

    Descubre cómo puedes habilitar la facturación

  4. Habilita las Compute Engine, GKE, and Cloud Build API necesarias.

    Habilita las API

Prepara tu entorno

Primero, prepara tu entorno de implementación.

  1. Activa Cloud Shell. Cloud Shell te da acceso a la línea de comandos en GCP Console, incluido el SDK de Cloud y otras herramientas que necesitas para el desarrollo de GCP. 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! For help, visit https://cloud.google.com/cloud-shell/help.
    
  2. Establece la zona predeterminada de Compute Engine en us-east1-d:

    gcloud config set compute/zone us-east1-d
    
  3. Clona el archivo de muestra o descarga el archivo zip.

    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.

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

    cd continuous-deployment-on-kubernetes
    

Cómo crear un clúster de Kubernetes

Puedes usar GKE para crear y administrar tu clúster de Kubernetes.

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

    gcloud container clusters create jenkins-cd \
      --machine-type n1-standard-2 --num-nodes 2 \
      --scopes "https://www.googleapis.com/auth/projecthosting,cloud-platform"
    

    Los alcances adicionales permiten a Jenkins acceder a Cloud Source Repositories y a Container Registry.

  2. Confirma que tu clúster se está ejecutando.

    gcloud container clusters list
    

    Busca RUNNING en la columna STATUS.

    NAME        LOCATION    MASTER_VERSION  MASTER_IP    MACHINE_TYPE   NODE_VERSION  NUM_NODES  STATUS
    jenkins-cd  us-east1-d  1.12.8-gke.10     35.231.8.57  n1-standard-2  1.12.8-gke.3   2          RUNNING
    
  3. Confirma que puedes conectarte a tu clúster.

    kubectl cluster-info
    

    Si puedes conectarte con éxito a tu clúster, se muestran las URL de los componentes de Kubernetes.

    Kubernetes master is running at https://130.211.178.38
    GLBCDefaultBackend is running at https://130.211.178.38/api/v1/proxy/namespaces/kube-system/services/default-http-backend
    Heapster is running at https://130.211.178.38/api/v1/proxy/namespaces/kube-system/services/heapster
    KubeDNS is running at https://130.211.178.38/api/v1/proxy/namespaces/kube-system/services/kube-dns
    kubernetes-dashboard is running at https://130.211.178.38/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard
    

Cómo instalar Helm

Usa Helm para implementar Jenkins desde el repositorio.

  1. Descarga y, luego, instala el objeto binario de Helm:

    wget https://storage.googleapis.com/kubernetes-helm/helm-v2.14.1-linux-amd64.tar.gz
    
  2. Descomprime el archivo en tu sistema local:

    tar zxfv helm-v2.14.1-linux-amd64.tar.gz
    cp linux-amd64/helm .
    
  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)
    
  4. Otorga a Tiller, el lado del servidor de Helm, la función de cluster-admin en tu clúster:

    kubectl create serviceaccount tiller --namespace kube-system
    kubectl create clusterrolebinding tiller-admin-binding --clusterrole=cluster-admin \
        --serviceaccount=kube-system:tiller
    
  5. Inicializa Helm. Así se garantiza que Tiller se instale de forma correcta en tu clúster.

    ./helm init --service-account=tiller
    ./helm repo update
    
  6. Asegúrate de que Helm se haya instalado de forma correcta mediante la ejecución del comando siguiente:

    ./helm version
    

    Verás que se muestran las versiones para el cliente y el servidor como v2.14.1:

    Client: &version.Version{SemVer:"v2.14.1", GitCommit:"5270352a09c7e8b6e8c9593002a73535276507c0", GitTreeState:"clean"}
    Server: &version.Version{SemVer:"v2.14.1", GitCommit:"5270352a09c7e8b6e8c9593002a73535276507c0", GitTreeState:"clean"}
    

Instala Jenkins

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 -n cd stable/jenkins -f jenkins/values.yaml --version 1.2.2 --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. Una vez que se complete ese comando, 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 1/1 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-7c786475dd-vbhg4   1/1       Running   0          1m
    
  3. 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" -o jsonpath="{.items[0].metadata.name}")
    kubectl port-forward $POD_NAME 8080:8080 >> /dev/null &
    
  4. Ahora, verifica que el servicio de Jenkins se haya creado correctamente:

    kubectl get svc
    

    Resultado de ejemplo:

    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.

Cómo conectarse con Jenkins

  1. Recupera la contraseña de administrador que el gráfico de Jenkins Helm creó automáticamente:

    printf $(kubectl get secret cd-jenkins -o jsonpath="{.data.jenkins-admin-password}" | base64 --decode);echo
    
  2. Para abrir la interfaz de usuario de Jenkins, haz clic en Vista previa web en Cloud Shell y haz clic en Preview on port 8080 (Vista previa en el puerto 8080).

    Puerto 8080

  3. Haz clic en acceder en la parte superior derecha de la ventana. Ingresa admin en el campo Usuario y el valor de contraseña del paso anterior en el campo Contraseña.

  4. Haz clic en el botón acceder.

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

Limpieza

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, haz lo siguiente:

  1. En la GCP Console, dirígete a la página Proyectos.

    Ir a la página Proyectos

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

Cómo borrar discos

  1. En GCP Console, ve a la página Discos.

    Ir a la página Discos

  2. Marca la casilla de verificación junto al disco jenkins-home.
  3. Haz clic en el botón Borrar en la parte superior de la página para borrar el disco.

Cómo borrar instancias

Para borrar una instancia de Compute Engine, haz lo siguiente:

  1. En GCP Console, dirígete a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Haz clic en la casilla de verificación junto ala instancia que deseas borrar.
  3. Haz clic en el botón Borrar en la parte superior de la página para borrar la instancia.

Pasos siguientes

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...