Hace poco, Kubernetes anunció un strategic partnership con Nutanix para ayudar a eliminar las problemas en los despliegues de cloud híbridos para empresas. Los cloud híbridos, entendiéndose estos como la suma de un despliegue on-premise y en cloud público (como Google Cloud), permiten a las organizaciones correr aplicaciones en ambos y aprovecharse de sus ventajas:— Incrementar la velocidad de puesta en producción de nuevos productos y funcionalidades,— Incrementar los recursos para dar servicio a las demandas de los clientes,— Mover aplicaciones al cloud público al ritmo que ellos necesiten,— Reducir el tiempo que se dedica a infraestructura, e incrementar el tiempo que se dedica a escribir código,— Reducir costes al mejorar la utilización de los recursos y la eficiencia de computación.
La gran mayoría de las empresas tienen un portfolio de aplicaciones con diferentes necesidades. En algunos casos, la soberanía de los datos y los requerimientos de cumplimiento fuerzan a un modelo de despliegue jurisdiccional donde una aplicación y sus datos deben residir en un entorno on-premise o en unas limitaciones por país. Alternativamente, las aplicaciones IoT y móviles están caracterizadas por un modelo de consumo impredecible que hace que los modelos de pago por uso y bajo demanda sean las mejores elecciones para ellas.
Es por esto que los modelos de despliegue híbridos ayudan a proporcionar la seguridad, cumplimiento y potencia de computación que se requiere con la agilidad, flexibilidad y escalado necesarios.Y el caso de cloud híbrido con estas soluciones (Nutanix, Kubernetes y Google Cloud) cumplen estos tres componentes clave:— On-premise: Nutanix infrastructure— Public cloud: Google Cloud Platform (GCP)— Open source: Kubernetes y containers.
Usamos los contenedores porque proporcionan una infraestructura inmutable y altamente portable que permite a los desarrolladores desplegar apps de una forma predecible a lo largo y ancho de cualquier entorno donde se pueda correr una máquina contenedora.
Esto hace posible que se pueda correr la misma aplicación sobre la misma máquina física, cloud privado o cloud público. Sin embargo, como la tendencia de los desarrolladores es ir hacia arquitecturas de microservicios, tienen que enfrentarse a nuevos retos, como el escalado, nuevas actualizaciones, descubrimiento, logging, monitorización y conectividad de red.
Kubernetes y Google
La experiencia de Google corriendo sistemas internos basados en contenedores llevó a la creación de Kubernetes y Google Container Engine, una plataforma open source y Google Cloud para correr aplicaciones en contenedores a través de un pool de recursos.¿Cómo? Kubernetes abstrae la infraestructura inferior y proporciona capacidad para correr aplicaciones en contenedores. Kubernetes introduce el concepto de modelo de despliegue declarativo. En este modelo, una persona de operaciones proporciona un esquema (template) que describe cómo la aplicación debería correr, y Kubernetes se asegura de que el estado real de la aplicación es igual que el estado deseado.Además, Kubernetes gestiona el container scheduling, escalado, health, ciclo de vida, persistencia de datos, logging y monitorización.
Partnership con Nutanix
En una primera fase, el partnership entre Nutanix y Google Cloud se dirigía hacia facilitar las operaciones híbridas usando Nutanix Calm como control plane único para la gestión de la carga de trabajo tanto en el Nutanix on-premise como en el entorno de GCP, y usar Kubernetes como capa de gestión de contenedores de ambos.Nutanix Calm fue anunciado en la conferencia .NEXT de este año y, cuando sea accesible, se usará para automatizar las operaciones de provisión y el ciclo de vida en los despliegues cloud híbridos.El sistema operativo Nutanix Enterprise Cloud OS soporta Kubernetes corriendo tanto en el entorno de Google Computing Engine en la nube, como en el Nutanix on-premise.De esta manera, los clientes pueden desplegar “blueprints” portables de aplicaciones que corran en ambos entornos.
Pasos para montar un entorno híbrido usando Nutanix y GCP
Los pasos a seguir son los siguientes:
- Provisionar un cluster on-premise de 4 nodos usando un blueprint en Nutanix Calm.
- Provisionar un cluster de cuatro nodos con máquinas Google Compute Engine usando el mismo blueprint Kubernetes de Nutanix Calm, pero configurado para Google Cloud.
- Usar Kubectl para gestionar ambos clústeres Kubernetes.
- Usar Helm para desplegar la misma chart WordPress en ambos clústeres.
Provisionar un cluster on-premise de 4 nodos usando un blueprint en Nutanix Calm
Se usa Nutanix Calm para provisionar un cluster on-premise de Kubernetes y Nutanix Prism (la solución de Nutanix para gestionar infraestructuras virtualizadas de datacenters) para lanzar el cluster de computación y storage virtualizado.Esto dará como resultado un pool gestionado de computación y storage que está listo para ser orquestado con Nutanix Calm, y listo para despliegues de paquetes open source o de pago.
Ahora ya se puede seleccionar el blueprint de Kubernetes para que apunte al entorno de Nutanix on-premise.
El blueprint Kubernetes para Calm que se muestra más abajo configura el clúster de 4 nodos que incluye todo el software base de todos los nodos y el master.También se ha customizado el blueprint de Kubernetes para configurar el Helm Tiller del cluster, para que se pueda usar Helm para desplegar la tabla WordPress.Los blueprints Calm también permiten crear workflows de forma que las tareas de configuración se pueden producir en un order marcado, como indica la acción “create”:
Y ahora, se lanza el blueprint Kubernetes. Después de un par de minutos, el cluster Kubernetes está funcionando con cinco VMs (un master node y cuatro nodos).
Provisionar un cluster de cuatro nodos con máquinas Google Compute Engine usando el mismo blueprint Kubernetes de Nutanix Calm
Usando Nutanix Calm podemos ahora desplegar el blueprint Kubernetes en GCP.El cluster Kubernetes quedará listo y en funcionamiento con Compute Engines en pocos minutos, de nuevo con cinco VMs (un master node y cuatro nodos). Y ya está todo listo para desplegar workloads en el entorno híbrido. En este ejemplo desplegaremos un stack de WordPress.
Usar Kubectl para gestionar ambos clústeres Kubernetes
Kubectl es una herramienta de CLI (command line interface) que viene con Kubernetes para correr comandos en lo clústeres Kubernetes.Ahora ya se puede apuntar a cada clúster del entorno híbrido y usar kubectl para correr comandos básicos.Primero SSH para acceder y lanzar algunos comandos en el entorno on-premise.
# List out the nodes in the cluster
$ kubectl get nodes
NAME STATUS AGE10.21.80.54 Ready 16m10.21.80.59 Ready 16m10.21.80.65 Ready 16m10.21.80.67 Ready 16m
# View the cluster config
$ kubectl config view
apiVersion: v1clusters:- cluster:server: http://10.21.80.66:8080name: default-clustercontexts:- context:cluster: default-clusteruser: default-adminname: default-contextcurrent-context: default-contextkind: Configpreferences: {}users: []
# Describe the storageclass configured. This is the Nutanix storage volume plugin for Kubernetes
$ kubectl get storageclass
NAME KIND
silver StorageClass.v1.storage.k8s.io
$ kubectl describe storageclass silver
Name: silverIsDefaultClass: NoAnnotations: storageclass.kubernetes.io/is-default-class=trueProvisioner: kubernetes.io/nutanix-volume
Usar Helm para desplegar la misma chart WordPress en ambos clústeres
En este ejemplo se usa Helm, un gestor de paquetes usado para instalar y gestionar aplicaciones Kubernetes. Los blueprints de Kubernetes para Calm incluyen Helm como parte del setup del clúster.El clúster on-premise Kubernetes está configurado con Nutanix Acropolis, el hipervisor de Nutanix que permite realiar provisionamiento de storage, para que automáticamente cree volúmenes persistentes de Kubernetes para los pods de WordPress.Así que despleguemos ahora WordPress on-premise y en Google Cloud:
# Deploy wordpress
$ helm install wordpress-0.6.4.tgz
NAME: quaffing-crabLAST DEPLOYED: Sun Jul 2 03:32:21 2017NAMESPACE: defaultSTATUS: DEPLOYED
RESOURCES:==> v1/SecretNAME TYPE DATA AGEquaffing-crab-mariadb Opaque 2 1squaffing-crab-wordpress Opaque 3 1s
==> v1/ConfigMapNAME DATA AGEquaffing-crab-mariadb 1 1s
==> v1/PersistentVolumeClaimNAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGEquaffing-crab-wordpress Pending silver 1squaffing-crab-mariadb Pending silver 1s
==> v1/ServiceNAME CLUSTER-IP EXTERNAL-IP PORT(S) AGEquaffing-crab-mariadb 10.21.150.254 3306/TCP 1squaffing-crab-wordpress 10.21.150.73 80:32376/TCP,443:30998/TCP 1s
==> v1beta1/DeploymentNAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEquaffing-crab-wordpress 1 1 1 0 1squaffing-crab-mariadb
Ahora, se pueden correr los comandos kubetcl para explorar el despligue on-premise:# Take a look at the persistent volume claims
$ kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESSMODES AGE
quaffing-crab-mariadb Bound 94d90daca29eaafa7439b33cc26187536e2fcdfc20d78deddda6606db506a646-nutanix-k8-volume 8Gi RWO 1m
quaffing-crab-wordpress Bound 764e5462d809a82165863af8423a3e0a52b546dd97211dfdec5e24b1e448b63c-nutanix-k8-volume 10Gi RWO 1m
# Take a look at the running pods
$ kubectl get po
NAME READY STATUS RESTARTS AGE
quaffing-crab-mariadb-3339155510-428wb 1/1 Running 0 3m
quaffing-crab-wordpress-713434103-5j613 1/1 Running 0 3m
# Take a look at the services exposed
$ kubectl get svc
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.254.0.1 443/TCP 16d
quaffing-crab-mariadb 10.21.150.254 3306/TCP 4m
quaffing-crab-wordpress 10.21.150.73 #.#.#.# 80:32376/TCP,443:30998/TCP 4m
Este entorno on-premise no tiene un balanceador de carga provisionado, con o que usamos las IPs del clúster para navegar por el site WordPress.El despliegue en Google Cloud asignó automáticamente un balanceador de carga al servicio WordPress con una dirección IP externa.Y listo : – )
Hagamos un resumen…
- Nutanix Calm proporciona un modelo de despliegue de one-click para provisionar un cluster Kubernetes tanto en el cloud Nutanix como en Google Cloud.
- Una vez el clúster Kubernetes está corriendo en el entorno híbrido, puedes usar las mismas herramientas (Helm kubectl) para desplegar aplicaciones en contenedores apuntando a cada entorno. Esto representa un modelo de despliegue “escribe una vez, despliega muchas” (write once, deploy anywhere).
- Kubernetes abstrae los componentes de la infraestructura subyacente, haciendo posible desplegar de manera consistente y corre aplicaciones en contenedores en entornos cloud heterogéneos.