Introducción a Google Kubernetes Engine

1

Introducción a Google Kubernetes Engine

2

¿Qué es Kubernetes?

Repaso de Docker

3

Qué son los contenedores

4

Qué es Docker

5

Comandos Básicos de Docker

6

Creación del contenedor de Docker

Conceptos Basicos

7

Cluster y nodos ¿Qué son y cómo funcionan?

8

¿Qué son los Pods?

9

Deployments

10

Pods y Deployments en practica

11

Servicios

12

Servicios en práctica

13

Servicios en práctica / Loadbalancer

14

Servicios en práctica / Node Port

15

Crea tu primer Hola Mundo en Google Kubernetes Engine

Conceptos intermedios

16

Archivos descriptivos de infraestructura teoria y práctica

17

Labels teoría

18

Namespaces teoría

19

Labels y Namespaces explicación gráfica

20

Labels y Namespaces en práctica

21

Deployment Avanzado (Blue-green y Canary Deployment)

22

Implementando Deployment avanzados

23

Terminando de implementar nuestro canary deployment

24

Volúmenes

25

Volúmenes en práctica

26

RETO: Crea un blue green deployment

Arquitectura de una app más robusta

27

Desplegar una aplicación Stateful Teoría

28

Desplegar una aplicación Stateful Práctica

29

Auto Scaling teoría

30

Auto Scaling en práctica

31

Node Pools teoría

32

Node Pools práctica

Contenido Bonus

33

Generando un certificado https con Let's Encrypt para GCP

34

Certificado https

35

Service mesh con Istio

36

StackDriver

37

CI/CD con Cloud Builder

38

CI/CD con Cloud Builder práctica

39

Knative, GKE Serverless Addon

40

Comandos utilizados en el curso

41

Buenas prácticas

Generando un certificado https con Let's Encrypt para GCP

33/41

Lectura

El protocolo https es una herramienta útil a nivel de seguridad de la información debido a que te permite cifrar la información haciendo más segura la transmisión de datos. Esta herramienta también te permite generar confianza en tus usuarios por que les indica que estas preocupado por proteger su información. Por este motivo en esta lectura vamos a ver como crear un certificado https con Let’s Encrypt para que funcione en los diferentes servicios de Google Cloud Platform.

Lo primero que tienes que saber es que es Let’s Encrypt, la cual es una entidad certificadora que está dando certificados ssl de manera gratuita (normalmente estos certificados tienen un costo que supera los 50 dólares por año) con una duración de 3 meses (esto significa que hay que renovarlos antes de la fecha de vencimiento).

Ahora vamos a ver cuales son los pasos para crear el certificado:

0. Prerrequisitos:

a. Comprar un dominio y tener acceso al administrador de los DNS
b. Configurar un proyecto en Google Cloud Platform
c. Habilitar la facturación ingresando una tarjeta de crédito (te sugiero activar los créditos que ofrece la plataforma para no tener gastos en la tarjeta de crédito).
d. Acceder a Google Cloud Shell entrando a https://console.cloud.google.com y haciendo click en el botón de Cloud Shell que está en la parte superior izquierda del panel
Captura de pantalla 2018-09-18 a la(s) 9.17.08 a. m..png

O ingresando desde el navegador a https://console.cloud.google.com/cloudshell

1. Instalación del agente:

Para generar el certificado hay que instalar un agente llamado certbot, él cual es un programa en línea de comandos que permite automatizar la mayor parte de los pasos. La forma más sencilla de utilizarlo es por medio de la imagen oficial de docker. Para facilitar su utilización vamos a crear un alias del comando de docker para utilizarlo como si fuera el comando certbot.

echo "alias certbot='docker run -it -v ~/letsencrypt/:/etc/letsencrypt/ certbot/certbot'" >> .aliases echo "source .aliases" >> .bashrc source .aliases

2. Creación del certificado:

Para la creación del certificado vamos a correr el comando cerbot con las banderas –manual --preferred-challenges dns para indicar que la creación es de manera manual (porque Let’s Encrypt permite crear el certificado de manera automática como plugin de Apache o Nginx), utilizando reto para la validación y que dicho reto es por DNS (o sea poniendo un registro de tipo TXT en los DNS). Para ello corremos los siguientes comandos:

certbot certonly --manual --preferred-challenges dns

Esto activará un asistente paso a paso el cual nos preguntará cual es el correo electrónico que estará ligado al certificado y luego nos preguntará si estamos de acuerdo con las políticas de uso del servicio, a lo cual responderemos con la letra A (de Agree).

Luego preguntará si estamos de acuerdo con compartir nuestra dirección de correo como parte de la validación del certificado a lo cual puedes responder Y o N dependiendo de tus preferencias.

Ahora nos pregunta cual es el dominio para el cual le vamos a instalar el certificado en mi caso es test.carlos-prieto.com

Please enter in your domain name(s) (comma and/or space separated) (Enter 'c' to cancel): test.carlos-prieto.com Obtaining a new certificate Performing the following challenges: dns-01 challenge for test.carlos-prieto.com
Después nos pide confirmación para guardar la IP del dominio en los registros de Let’s Encrypt a lo cual debemos responder Y.

Ahora aparece un mensaje el cual dice que debemos crear un registro de tipo TXT para el dominio _acme-challenge.<tu dominio.com> en mi caso es _acme-challenge.test.carlos-prieto.com con una cadena de texto que muestra el mensaje.

`- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.<tu dominio.com> with the following value:
sdsa3bLuFmkJXh-8pGvDLWoCcSAWUPwNnyyf1VvJUio
Before continuing, verify the record is deployed.

Ahora vamos a nuestro servicio de dns creamos el registro txt con la cadena de texto y verificamos el registro. para ello podemos hacerlo por medio de la página https://mxtoolbox.com/ y en la caja de texto Domain Name ponemos txt:_acme-challenge.<tudominio.com> en mi caso es txt:_acme-challenge.test.carlos-prieto.com

Captura de pantalla 2018-09-18 a la(s) 10.15.19 a. m..png

Hacemos click en el botón para verificar (esto puede tardar algún tiempo dependiendo del TTL que configures, por lo que tendrás que hacerlo varias veces ) y aparecerá un mensaje como el siguiente.

Captura de pantalla 2018-09-18 a la(s) 10.18.39 a. m..png

Después vamos nuevamente al Cloud Shell y damos Enter para que se valide la información. Si todo fue correcto Let’s Encrypt nos felicitara diciendo que el proceso fue exitoso.

3. Creación de llave privada en rsa y configuración de permisos sobre archivos.

Para tener acceso a los archivos del certificado y poderlos manipular le vamos a dar permisos de lectura y escritura a nuestro usuario con el siguiente comando:

sudo chmod -R 755 ~/letsencrypt/archive

Para que se pueda configurar el certificado que acabamos de generar en Google Cloud Platform hay que convertir la llave privada al formato rsa para lo cual ejecutamos el siguiente comando (Cambiar la palabra <tu dominio.com> por tu dominio en mi caso es test.carlos-prieto.com).

sudo openssl rsa -inform pem -in ~/letsencrypt/archive/<tu dominio.com>/privkey1.pem -outform pem > ~/letsencrypt/archive/<tu dominio.com>/rsaprivatekey.pem

Con estos pasos ya están listo los archivos para poder realizar la configuración del certificado https en los servicios de GCP Loadbalancer o Google App Engine. Para poder copiarlos más fácilmente te sugiero abras estos archivos con el editor de texto de Cloud Shell haciendo click en el icono del lápiz en Cloud Shell.

Captura de pantalla 2018-09-18 a la(s) 11.00.51 a. m..png

Espero que esta información te sirva para la creación del certificado https en tus proyectos de GCP y no olvides visitar el curso de Kubernetes Engine que esta en https://platzi.com/cursos/kubernetes-xertica/

Aportes 2

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Si les da error de permisos, revisen chown ademas de chmod

sudo chown YOUR_USER:YOUR_USER ~/letsencrypt/archive

No me funcionó

$ echo "alias certbot='docker run -it -v ~/letsencrypt/:/etc/letsencrypt/ certbot/certbot'" >> .aliases echo "source .aliases" >> .bashrc source .aliases
$ certbot
-bash: certbot: command not found