= Sesión 11 Jenkins
== big data (Cloudera)
{{ :info:cursos:pue:devops:cloudera-introduction.pdf |}}
* MapReduce -> Spark
* MapReduce : repartir la carga entre X servidores que no tengan colisiones y meterlo en un lugar común
* Hive : SQL to MapReduce
* Pig : lenguaje para no SQL (pero que se le parece tanto...)
* kafka : cluster
* impala : consumo intensivo RAM, accede al FS directamente (sin pasar por HDFS)
* HDFS : Hadoop Distributed FS (Java) -> lento
* SOLR : indexador
* Kite : ¿api?
* Resource Management
* YARN : Yet Another Resource Negotation
* sistema de colas
* Filesystem: HDFS
* Relational: kudu
* Security
* Sentry : kerberos
* RecordService: ¿registro a qye se ha accedido?
* NoSQL: HBase (el perdedor contra Casandra)
* Storage
* Batch
* sqoop
* Real-Time
* Kafka
* Hadoop Cluster
* NameNode (de 2 a 3, este último para Journal)
* zookeeper : service discovery
* secondaryNameNode : helper
* Resource manager (YARN)
* DataNode
* Just a Band of Disc
* RAID1 para disco OS
* hacen el trabajo
* HDFS
* sistema raid
* bloques de 128MG
* replicación (3 dataNode)
* reglas de afinidad de la replicación
* sueltas el archivo de Gb o Tb
* Beowulf cluster
* [[https://es.wikipedia.org/wiki/Cluster_Beowulf]]
* [[https://es.wikipedia.org/wiki/Grace_Murray_Hopper]]
* mejor 2 equipos que un equipo con el doble
== Jenkins
=== en otras sesiones
GitLab demo 1:{{:info:cursos:pue:devops:pasted:20190322-085906.png }}
GitLab demo 1 Job:docker run --name demo1-${BUILD_NUMBER} --rm -d gitlab/nginx-demo1
sleep 15
CONTAINER_IP=$(docker inspect --format '{{ .NetworkSettings.IPAddress }}' demo1-${BUILD_NUMBER})
CODE_STATUS=$(curl -sI ${CONTAINER_IP} | grep -c "^HTTP/1.1 200")
docker stop demo1-${BUILD_NUMBER}
#[[ ${CODE_STATUS} == 1 ]] && { echo "OK"; exit 0; } || { echo "KO";exit 1; }
if [ ${CODE_STATUS} -eq 1 ]; then {
exit 0;
} else {
exit 1;
}
fi
gitlab demo 1 pipeline:
node {
stage("build") {
def job = build job: 'gitlab demo1'
}
stage("execute") {
def job = build job: 'gitlab demo1 job'
}
stage("publish") {
def job = build job: 'gitlab demo1 publish'
}
}
gitlab demo1 publish:
node ("docker-agent") {
stage ("tag") {
sh ('docker tag gitlab/nginx-demo1:latest registry.floss.cat/mate/demo1:latest')
}
stage ("push") {
withCredentials([usernamePassword(credentialsId: 'registry.floss.cat', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {
sh('''
docker login --username=${USERNAME} --password=${PASSWORD} registry.floss.cat
docker push registry.floss.cat/mate/demo1:latest
''')
}
}
}
=== pipelines
* [[https://jenkins.io/doc/book/pipeline/docker/]]
* [[https://jenkins.io/doc/book/pipeline/syntax/]]
* [[https://jenkins.io/doc/book/pipeline/jenkinsfile/]]
* [[https://github.com/stefanprodan/dockerdash/blob/master/Jenkinsfile]]
* blue-ocean
* Jenkinsfile:
* SCM
* pipeline as code
== k8s
* [[https://medium.com/@geraldcroes/kubernetes-traefik-101-when-simplicity-matters-957eeede2cf8]]
* traefik + kubernetes
* deployment for traefik: [[https://docs.traefik.io/user-guide/kubernetes/]]
* calico: driver red para kubernetes + policy (para establecer como se ven los servicios de un namespace)
* [[https://kubernetes.io/docs/tasks/tools/install-minikube/]]