- Validar mejor zona
- Introducción
- Computo en la nube
- Continous Integration
- Kubernetes
- Machine learning
Apuntes del entrenamiento en Google - Platzi
Material oficial para realizar prácticas https://www.qwiklabs.com/
Según NIST (Instituto Nacional de Estándares y Tecnología)
- Autoservicio bajo demanda
- Acceso de red amplio
- Recursos compartidos
- Elasticidad acelerada
- Medición de servicio
- Amigable con el ambiente* Energía renovable y huella de carbono 0
Compañia enfocada en IA
Seguridad en multiples capas
- Chips, servidores, almacenamiento, red y centros de datos a la medida
- Cifrado por defecto en tránsito y en descanso
- Una de las redes más extensas del mundo, minimizando el riesgo del internet público
130 puntos de presencia en más de 35 países que carga el 40% de Internet
Compromiso con el código libre
Tecnología que más se adapte a tus necesidades
- Compute engine. Son maquinas virtuales
- Kubernetes. Abstrae la infraestructura y las aplicaciones
- App Engine. Le damos el código y Google se encarga
- Cloud Run y Cloud Functions. Serverless, funciones, microservicios que hacen cosas especificas
Permite crear maquinas virtuales predeterminadas y a la medida con diferentes modelos de consumo y precio
Google tiene inteligencia para poder reducir tus costos en maquinas virtuales y que está se pueda adaptar
Acorde a tu aplicativo, cuenta con imagenes optimizadas para contenedores
Cuentas con descuento sostenido por uso
- Cómo crear una máquina virtual
- Compute Engine: Qwik Start - Windows
- Cómo comenzar a usar Cloud Shell y gcloud
- Fue el primer servicio de computo en la nube de Google
Default service
Que ofrece hoy
- Auto escalamiento
- Bifurcación de tráfico
- Balanceo de carga global
- Alta disponibilidad
- SSL y Dominios
- Chequeos de Salud
- Cloud Task
- Monitoreo
- Logueo
Despliega con un click
App engine viene en dos sabores
- Se puede crear con contenedores
Maneja 320 billones de peticiones hoy en día
Pasamos desde:
- Montar servidores propios en las empresas
- Virtualizar maquinas en multiples servidores con diferentes sistemas operativos
- Contenedor. En el que se virtualiza el S.O. otorgando portabilidad en cualquier sistema operativo, añadiendo ligeresa y simplicidad
Webinar: Modernizando su aplicación - una jornada desde el monolito a los microservicios
https://cloudonair.withgoogle.com/events/cloud-tech-solutions-es/watch?talk=talk-6
Docker es una tecnología que te permite construir, correr y monitorear contenedores. Los contenedores de Docker utilizan Containerd como runtime, hoy en día el estándar de la industria.
Los contenedores usan el concepto de un sistema de capas, similar a los sistemas de versionamiento de código, para reutilizar capas base o comunes entre contenedores. Cuando necesitas actualizar una imagen, únicamente tienes que descargar las diferencias desde la última revisión.
Las instrucciones que definen estas capas están descritas en un archivo base. En el caso de Docker, en un Dockerfile. Cada instrucción presente en este archivo, por lo general, representa una capa adicional para tu contenedor.
Existen repositorios para que guardes de manera segura y escalable las imágenes de tus aplicaciones. Esto te da control de regresar a una versión previa en caso de alguna falla o regresión de funcionalidad. Es muy común que las organizaciones tengan repositorios privados de imágenes en donde almacenan tanto las imágenes base que los aplicativos utilizan (previamente validadas) como las imágenes de cada aplicación desplegada. En la nube de Google puedes utilizar Container Registry.
https://cloud.google.com/container-registry
Puedes desplegar un contenedor de Docker a cualquier host que tenga el runtime instalado, pero es muy común que a medida de que incrementa el número de contenedores a administrar, las organizaciones adopten orquestadores que les aligeren esta labor.
El estándar en la industria es Kubernetes, creado por Google y donado como código libre a la CNCF hace unos años. Google continúa liderando el desarrollo de Kubernetes y ofrece una experiencia de entorno administrado, Google Kubernetes Engine, para que te enfoques en la creación de valor y no en la administración de Kubernetes.
https://cloud.google.com/appengine/docs/standard/java11/runtime
https://cloud.google.com/appengine/docs/standard/java11/quickstart
- Quiero instalar una libreria externa
- Quiero utilizar un lenguaje o runtime que no es soportado
- Quiero que mi código sea portable
- Quiero estandarizar los procesos de CI
- Ambiente estándar
- Comunicación de una sola via por medio de un conector Serverless VPC access
- Ambiente flexible
- Puedes especificaar la red en la que quieres desplegar tu servicio
- Ambiente estándar
- Runtimes específicos
- Escala a cero y escala más rápida
- Tu aplicación vive en una sandbox que restringe lo que se puede hacer
- Despliegue en una sola zona. Si hay error se despliega en otra zona
- Ambiente flexible
- Tu aplicación corre en un contenedor de Docker en una VM, que da más flexibilidad(escribir a disco, librerias, etc)
- Minimo una instancia desplegada
- Instanacias más grandes (CPU y memoria)
- Utiliza grupos de instancias regionales, las instancias son distribuidas en múltiples regiones
- Haciendo borrosa la línea del PaaS
Bifurcación de tráfico para diferentes versiones de despliegue
- Contenedores
- Cualquier lenguaje
- Cualquier libreria
- Cualquier binario
- Ecosistema de imagenes base
- Estandar de la industria
Es bueno combinar Serverless y contenedores
https://knative.dev/ https://cloud.google.com/run
- Knative es un cluster que ejecuta workloads sobre kebernetes
- Opensource
- Bloque Faas y Paas
- Abstracción de cubernetes
- Google corre todo en contenedores
- Permite construir y conectar servicios de la nube
- Orientado a eventos
- Ambiente totalmente administrado
- Pagas por lo que usas
- Escala automaticamente con el uso
Son el pegamento en la nube
Al almacenar un archivo
Mensajería empresarial asincrona
Para calendarización
Controlar el escalamiento
Pool de conexiones a una Cloud functions, para que reutilize llamadas a la base de datos por ejemplo
https://firebase.google.com/docs/functions
https://cloud.google.com/functions
Creado por Netflix: https://spinnaker.io/
https://www.atlassian.com/es/software/bamboo
Creado en Java: https://www.jenkins.io/
Funciona muy similar y todo se gestiona por comandos
gcloud source repos create demo_CI-CD
gcloud source repos clone demo_CI-CD
https://cloud.google.com/source-repositories https://cloud.google.com/container-registry
https://www.jetbrains.com/es-es/teamcity/
Lab
https://cloud.google.com/deployment-manager
- Un pod es un contenedor o un conjunto de contenedores, no tienen estado
- Los servicios son una abstracción de la puerta de red
- El volumen puede almacenar la información
- Los namespaces hacen subdivición de clusters con multitenant
- Replicaset, replica pots, una actualización requiere actualizar cada replica, no es recomendable
- Deployment define un pot y replicaset para mantener el despliegue
- Statefullset Es un desplique pero cuando requieres guardar un estado, para mantener trasabilidad de los pots
- Deamonset Replicación en nodos
- Job Realizar trabajos específicos
Se debe usar kubectl
Ejemplo
https://codelabs.developers.google.com/codelabs/cloud-orchestrate-with-kubernetes/#0
gcloud init
gcloud auth list
# Name of cluster
export CLUSTER=platzi-cluster
echo $CLUSTER
#Set config Zone. South Carolina, USA us-east1
#You can check the media latency from your region in http://www.gcping.com/
export ZONE=us-central1-a
echo $ZONE
gcloud container clusters create $CLUSTER --addons HorizontalPodAutoscaling,HttpLoadBalancing,CloudRun --enable-ip-alias --enable-stackdriver-kubernetes --machine-type n1-standard-2 --zone $ZONE
- Create a cluster with name platzi-cluster: gcloud container clusters create $CLUSTER
- Add the following addons (Complementos) and enable them:
- HorizontalPodAutoscaling: Automatically scales the number of pods in a replication controller, deployment, replica set or stateful set based on observed CPU utilization. Ref https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
- HttpLoadBalancing.
- CloudRun
- Set alias, it is a good idea NOT use IP, it is better alias: –enable-stackdriver-kubernetes
- Mandatory set machine type: –machine-type n1-standard-2
- Mandatory set zone: –zone $ZONE
gcloud config set project ${PROJECT_ID}
gcloud config set compute/zone ${COMPUTE_ZONE}
gcloud container clusters create ${CLUSTER_NAME} --num-nodes=1
gcloud container clusters get-credentials ${CLUSTER_NAME}
kubectl create deployment hello-server \ --image=gcr.io/google-samples/hello-app:1.0kubectl expose deployment hello-server --type LoadBalancer \--port 80 --target-port 8080
kubectl get pods
kubectl get service hello-server
https://cloud.google.com/anthos/?hl=es-419
Anthos multinube es única en la industria
La plataforma Anthos simplifica la entrega de servicios de forma global, desde la gestión del tráfico y la telemetría en malla hasta la protección de la comunicación entre los servicios. De esta forma, facilita el trabajo a los equipos de operaciones y desarrollo. Anthos Service Mesh, la malla de servicios totalmente gestionada de Google, te permite gestionar estos entornos complejos de forma muy sencilla y disfrutar de las ventajas que ofrecen.
Kubernetes es una abstracción sobre infraestructura y un conjunto de APIs declarativas