# Despliegues a Kubernetes usando Jenkins CI/CD | Construyendo con Kaniko --- ¡ATENCIÓN! usar mejor [este otro proyecto](https://gitserver.reymota.es/creylopez/jenkins-install.git) --- Las ideas han salido de este Vídeo. ## Comprobar y añadir repositorios Helm helm repo list el resultado en mi equipo es NAME URL rancher-latest https://releases.rancher.com/server-charts/latest jetstack https://charts.jetstack.io longhorn https://charts.longhorn.io relacionado todo con la instalación de Rancher. helm repo add jenkinsci https://charts.jenkins.io helm repo update helm search repo jenkins resultado: NAME CHART VERSION APP VERSION DESCRIPTION jenkinsci/jenkins 5.8.83 2.516.2 Jenkins - Build great things at any scale! As t... ## Obtener fichero de valores por defecto y adaptarlo helm show values jenkinsci/jenkins > ./jenkins.yaml ### Valores a cambiar. | sección | campo | valor | |--------|----|:-------:| | admin: | username: | "admin" | | admin: | password: | "una-password" | | serviceType:| | NodePort | | nodePort: | | 32000 | | installLatestPlugins: | | true | | installLatestSpecifiedPlugins: | | true | | persistence: | enabled: | true | | persistence: | existingClaim: | pvc-jenkins | #### Plugins a instalar Para buscar la última versión de los plugins ir a [Jenkins Plugins](https://plugins.jenkins.io) En la sección installPlugins: añadir - blueocean:1.27.21 - ansicolor:1.0.6 ## Instalar Jenkins helm install jenkins jenkinsci/jenkins --values ./jenkins.yaml -n jenkins ## Preparando proyecto En el directorio raíz del proyecto tiene que haber un fichero llamado ```Jenkinsfile``` que contiene la descripción de lo que hay que hacer. En el proyecto de prueba, el fichero es este pipeline { options { ansiColor('xterm') } agent { kubernetes { yamlFile 'builder.yaml' } } stages { stage('Kaniko Build & Push Image') { steps { container('kaniko') { script { sh ''' /kaniko/executor --dockerfile `pwd`/Dockerfile \ --context `pwd` \ --destination=registry.reymota.es/myweb:${BUILD_NUMBER} ''' } } } } stage('Deploy App to Kubernetes') { steps { container('kubectl') { withCredentials([file(credentialsId: 'kubeconfig-imac', variable: 'KUBECONFIG')]) { sh 'sed -i "s//${BUILD_NUMBER}/" myweb.yaml' sh 'kubectl apply -f myweb.yaml' } } } } } } ### Creando secreto para el registry el comando para crear el secreto es kubectl create secret docker-registry regcred --docker-server=registry.reymota.es --docker-username=creylopez --docker-password= --docker-email=creylopez@yahoo.es --namespace jenkins ### Credenciales del cluster Las credenciales del cluster hay que añadirlas a través del interfaz de Jenkins, en el apartado ```Administrar Jenkins->Credenciales```. Hay que añadir una credencial de tipo ```Secret file``` y subir nuestro fichero de configuación. En el ```id``` hay qu eponer exactamente el nombre que tenemos en el fichero Jenkinsfile.