Slide 1

Slide 1 text

La cloud de Google: Kubernetes Pablo Fredrikson - Lead SRE @ Invision @pablokbs

Slide 2

Slide 2 text

Pablo Fredrikson @pablokbs ● Professional Nerd ● 12 años con Linux / Open Source ● Lead SRE @ Invision

Slide 3

Slide 3 text

docker: básico FROM alpine:3.6 ENV PYTHON_VERSION 3.6.3 RUN set -ex \ && apk add --no-cache --virtual .fetch-deps \ gnupg \ libressl \ tar \ xz \ \ && wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-$PYTHON_VERSION.tar.xz" ... CMD ["python3"]

Slide 4

Slide 4 text

docker: básico $ docker run -it pablokbs/python3 hello-world.py Hello world :)

Slide 5

Slide 5 text

docker: complejo - nginx-proxy $ docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy $ docker run -e VIRTUAL_HOST=foo.bar.com pablokbs/myweb

Slide 6

Slide 6 text

docker: complejo - nginx-proxy interwebz nginx-proxy my_app VIRTUAL_HOST= foo.example.com my_other_app VIRTUAL_HOST= bar.example.com foo.example.com docker.d

Slide 7

Slide 7 text

docker: complejo - nginx-proxy $ docker run -d -P 80:80 \ -v /var/run/docker.sock:/tmp/docker.sock:ro \ -v /root/docker/ssl/pablokbs.com/:/etc/nginx/certs/ \ jwilder/nginx-proxy $ docker run -d -p 80:80 \ -e VIRTUAL_HOST=www.pablokbs.com,pablokbs.com \ -e DEBUG=false \ -e ENVIRONMENT=production \ -v /root/docker/web/mycode/:/var/www/pablokbs_code/ \ pablokbs/myweb

Slide 8

Slide 8 text

Solución! docker-compose $ cat docker-compose.yml nginx: image: jwilder/nginx-proxy ports: - "80:80" - "443:443" volumes: - /var/run/docker.sock:/tmp/docker.sock:ro - /root/docker/ssl/pablokbs.com/:/etc/nginx/certs/ myweb: image: pablokbs/myweb expose: - "80" environment: - VIRTUAL_HOST=www.pablokbs.com,pablokbs.com - DEBUG=false - ENVIRONMENT=production

Slide 9

Slide 9 text

Solución! docker-compose $ docker-compose up -d Creating docker_nginx_1 … done docker_web_1 is up-to-date $ docker-compose ps Name Command State Ports ------------------------------------------------------------------------------------------------------- docker_nginx_1 /app/docker-entrypoint.sh Up 0.0.0.0:80 -> 80/tcp docker_web_1 /myapp.sh Up 80 ->80/tcp

Slide 10

Slide 10 text

Solución! docker-compose + +

Slide 11

Slide 11 text

Mascotas vs. Ganado Rambo Alberta, Lucrecia, Susana (?)

Slide 12

Slide 12 text

Borg / Kubernetes https://landing.google.com/sre/book.html

Slide 13

Slide 13 text

Kubernetes en 5 minutos Servicios de cluster de Kubernetes API worker K worker K worker K deployment pod1: - container1 - container2 replicas: 3 pod2: - container3 replicas: 2 p1r1 p2r1 p1r2 p1r3 p2r2

Slide 14

Slide 14 text

Kubernetes en 5 minutos Servicios de cluster de Kubernetes API worker K worker K worker K deployment pod1: - container1 - container2 replicas: 3 pod2: - container3 replicas: 2 p1r1 p2r1 p1r2 p1r3 p2r2 p1r2

Slide 15

Slide 15 text

Demo

Slide 16

Slide 16 text

¿Preguntas? @pablokbs @InvisionApp