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 los siguientes componentes facturables de Google Cloud:
- 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. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.
Antes de comenzar
- 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.
-
En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Descubre cómo confirmar que tienes habilitada la facturación en un proyecto.
- Habilita las API de Compute Engine, GKE, and Cloud Build.
Prepara tu entorno
Primero, prepara tu entorno de implementación.
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.
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.
Establece la zona predeterminada de Compute Engine en
us-east1-d
:gcloud config set compute/zone us-east1-d
Clona el código 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.
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.
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/source.read_write,cloud-platform" \ --cluster-version 1.15
Los alcances adicionales permiten a Jenkins acceder a Cloud Source Repositories y a Container Registry.
Confirma que tu clúster se está ejecutando.
gcloud container clusters list
Busca
RUNNING
en la columnaSTATUS
.NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS jenkins-cd us-east1-d 1.15.11-gke.15 35.231.8.57 n1-standard-2 1.15.11-gke.15 2 RUNNING
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 Metrics-server is running at https://130.211.178.38/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
Cómo instalar Helm
Usa Helm para implementar Jenkins desde el repositorio.
Descarga y, luego, instala el objeto binario de Helm:
wget https://get.helm.sh/helm-v3.2.1-linux-amd64.tar.gz
Descomprime el archivo en tu sistema local:
tar zxfv helm-v3.2.1-linux-amd64.tar.gz cp linux-amd64/helm .
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)
Agrega el repositorio estable oficial:
./helm repo add jenkinsci https://charts.jenkins.io ./helm repo update
Asegúrate de que Helm esté instalado correctamente mediante la ejecución del siguiente comando:
./helm version
Verás que las versiones se mostrarán para el cliente como
v3.2.1
:version.BuildInfo{Version:"v3.2.1", GitCommit:"fe51cd1e31e6a202cba7dead9552a6d418ded79a", GitTreeState:"clean", GoVersion:"go1.13.10"}
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
.
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 --version 2.6.4 --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.
Después de que se complete ese comando, asegúrate de que el pod de Jenkins vaya al estado
Running
y que el contenedor esté en el estadoREADY
:kubectl get pods
Verás
1/1
en la columnaREADY
yRunning
en la columnaSTATUS
. Jenkins puede tardar unos minutos en completar su inicialización.NAME READY STATUS RESTARTS AGE cd-jenkins-7c786475dd-vbhg4 1/1 Running 0 1m
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 &
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
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
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.
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 para el campo Contraseña.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, sigue estos pasos:
- En Cloud Console, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
- En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.
Borra discos
- En Cloud Console, ve a la página Discos.
-
Selecciona la casilla de verificación para tu disco
jenkins-home
. - Para borrar el disco, haz clic en Borrar.
Borra instancias
Para borrar una instancia de Compute Engine, utiliza lo siguiente:
- En Cloud Console, ve a la página Instancias de VM.
- Selecciona la casilla de verificación para es la instancia que deseas borrar.
- Para borrar la instancia, haz clic en Borrar.
¿Qué sigue?
Obtén más información sobre Jenkins en las recomendaciones de GKE.
Obtén más información sobre cómo configurar Jenkins para GKE.
Obtén más información sobre cómo configurar la implementación continua en GKE mediante Jenkins.
Prueba otras funciones de Google Cloud. Consulta nuestros instructivos.