English English French French Spanish Spanish German German
Geekflare cuenta con el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliados comprando enlaces en este sitio.
Comparte en:

Cómo implementar aplicaciones en Kubernetes

Cómo implementar aplicaciones en Kubernetes
Escáner de seguridad de aplicaciones web Invicti – la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

Kubernetes es una de las plataformas de automatización más populares para implementar, escalar y operar contenedores de aplicaciones en un clúster de hosts o nodos.

Este artículo discutirá uno de los objetos centrales en Kubernetes: la implementación. El objetivo es comprender su comportamiento y cómo crearlo, actualizarlo y eliminarlo.

What is a Deployment?

Una implementación es uno de los objetos que se utilizan para lanzar pods. Las mejores prácticas de Kubernetes fomentan el uso de implementaciones para aplicaciones sin estado. Sin una implementación, necesitaría crear, actualizar y eliminar manualmente varios Pods, lo que sería tedioso e inviable para muchos Pods.

Una implementación declara un solo objeto en Ñame que no solo crea los Pods, sino que también garantiza que estén actualizados y en funcionamiento. También puede escalar automáticamente fácilmente sus aplicaciones mediante una implementación en Kubernetes. Por lo tanto, una implementación se usa para escalar, implementar y revertir versiones de sus aplicaciones en Pods.

Una implementación también le dice a Kubernetes cuántas copias de un Pod queremos ejecutar, y Kubernetes se encarga del resto. El controlador asociado creará un ReplicaSet a partir de su configuración al crear una implementación. El controlador asociado con el ReplicaSet creará una serie de Pods a partir de la configuración del ReplicaSet.

Las ventajas de usar una implementación en lugar de crear directamente un ReplicaSet son:

  • Historización del objeto: cada cambio en el objeto (a través de una "aplicación" o una "edición") creará una copia de seguridad de la versión anterior.
  • Gestión de rollout y rollback: Puede volver a una configuración en relación con el punto anterior.

Creating a Deployment

Hay dos métodos que podemos usar para crear una implementación de Kubernetes:

método imperativo

Las API de Kubernetes permiten un enfoque más directo e imperativo sin necesidad de archivos de configuración o manifiestos con formato YAML. En este enfoque, todo lo que tenemos que hacer es decir lo que queremos que se haga, y Kubernetes se encargará de definir qué se debe hacer para lograr el resultado esperado.

Para usar el método imperativo, simplemente use el siguiente comando:

kubectl create deployment nginx-deployment --image nginx --port=80

Método declarativo

En este método, debe declarar todo, y cuando usa este código, Kubernetes solo lee sus definiciones y crea exactamente como se presenta o declara.

Para usar la implementación declarativa, deberá crear un archivo YAML.

Archivo YAML para implementación con el nombre new_deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  #Specifies the number of Pod Copies
  replicas: 3
 #Selects the Pod to be managed by the deployment
  selector:
    #Matches the defined labels
    matchLabels:
      deploy: example
  template:
    metadata:
      #Specifies the labels on the Pod.
       labels:
         deploy: example
    spec:
      containers:
        - name: nginx
          image: nginx:1.20.2 

En este archivo YAML, después de definir la versión de la API de Kubernetes, el tipo de objeto que está creando y el nombre de la implementación, está la sección de especificaciones. En esta sección, primero define la clave de réplicas, que indica la cantidad de instancias de Pod que la implementación debe mantener activa.

Use una etiqueta de selector para identificar los pods en la implementación. Para esto, puede usar la etiqueta de implementación, que indica que todos los pods que coinciden con estas etiquetas se agrupan en la implementación.

Después de eso, tiene el objeto de plantilla donde tiene un modelo de Pod dentro de su especificación de implementación. Cuando la implementación crea pods, los crea usando esta plantilla. La especificación de un pod normal se puede encontrar en la clave de plantilla.

Con esta implementación, las imágenes de Nginx con etiquetas se implementarán en Pods. Además, también hay que tener cuidado en este punto, y el Pod es la unidad de escalabilidad en Kubernetes, por lo que hay que pensar en el patrón que se quiere utilizar si se ponen varios contenedores en un mismo Pod.

A continuación, aplique el new_deployment.yaml Yaml, use el siguiente comando:

kubectl apply -f new_deployment.yaml

Después de unos segundos, puede obtener el estado de implementación usando lo siguiente: 

kubectl get all
desplegar

Retrieve and Update Deployment

Tenga en cuenta que tiene los Pods creados, la implementación y también un Replicaset. Por lo tanto, una implementación siempre crea y administra un conjunto de réplicas. Ahora puede usar el siguiente comando para describir la implementación:

kubectl describe deployment nginx-deployment 
describir

Ahora tiene una descripción completa de la implementación. Resalta la estrategia utilizada para crear/reconstruir los pods cuando una actualización se ha definido como RollingUpdate.

El Actualización continua La estrategia permite una migración ordenada de una versión de una aplicación a una versión más nueva. Es la estrategia por defecto utilizada en Kubernetes.

Además de esto, también tenemos las siguientes estrategias:

  • Recrear: Termina las instancias de Pod que se están ejecutando actualmente y las 'recrea' con la nueva versión;
  • Azul verde: Esta estrategia crea dos entornos separados pero idénticos. En el entorno azul, la aplicación se ejecuta tal cual, mientras que en el entorno verde, la aplicación se ejecuta como lo hará en el futuro;
  • Canario: Una estrategia de implementación en la que un subconjunto de usuarios participa en el lanzamiento incremental de una aplicación o servicio.

Si opta por la "actualización continua", puede configurar su comportamiento sobre la cantidad de réplicas deseadas.

  • maxSurge le permite indicar (en términos porcentuales o absolutos) cuántos Pods puede crear además de la cantidad de réplicas configuradas actualmente.
  • maxUnavailable le permite indicar (en términos porcentuales o absolutos) cuántos Pods pueden estar "no disponibles" durante la actualización, según la cantidad de réplicas configuradas.

Según su aplicación y su escalador automático, estas configuraciones le permitirán garantizar QoS o acelerar sus implementaciones.

A continuación, debe escalar los Pods a 10 y cambiar la etiqueta de imagen de Nginx a la más reciente.

kubectl scale deployment nginx-deployment --replicas=10
escala-1

Tenga en cuenta que tenemos 5 contenedores en creación, y de 10 Pods, tenemos 5 disponibles.

Después de unos segundos, use el siguiente comando: 

kubectl get all

Aquí puede ver que se han creado todos los pods y que los contenedores se están ejecutando.

todos-1

Deleting your Deployment

Para eliminar una implementación de Kubernetes, puede usar los siguientes comandos:

kubectl delete deploy nginx-deployment 
kubectl delete deploy new_deployment.yaml

Helm: Simplify Deployments

Cuando desea implementar una aplicación compleja que utiliza decenas o incluso cientos de recursos de Kubernetes, el kubectl herramienta se vuelve inadecuada, razón por la cual se desarrolló la herramienta Helm. Casco es un administrador de paquetes para Kubernetes que se basa en kubectl y simplifica las implementaciones de aplicaciones.

En el vocabulario de Helm, una aplicación se llama lanzamiento. Está asociado a un gráfico, es decir, una colección de archivos de configuración en formato YAML que contiene variables globales y plantillas que describen los recursos de Kubernetes.

Conclusión

La implementación es un objeto esencial de Kubernetes. Como un gran poder implica una gran responsabilidad, debes tener cuidado al configurarlo o te arriesgas a tener comportamientos inesperados. Para ir más allá con las configuraciones de implementación, puede consultar el Documentación de Kubernetes.

También puede explorar algunos de los mejores Tutoriales de Kubernetes para aprender desde cero y convertirte en un experto.

Gracias a nuestros patrocinadores
Más lecturas excelentes sobre DevOps
Impulse su negocio
Algunas de las herramientas y servicios para ayudar a que su negocio crezca.
  • Invicti utiliza Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en cuestión de horas.
    Prueba Invicti
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.
    Prueba Brightdata
  • Semrush es una solución de marketing digital todo en uno con más de 50 herramientas en SEO, redes sociales y marketing de contenido.
    Prueba Semrush
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.
    Trata Intruder