![Page 1: Orquestación de contenedores con Kubernetes SGNext](https://reader030.vdocuments.site/reader030/viewer/2022021422/5a6490a07f8b9a36568b5023/html5/thumbnails/1.jpg)
Orquestación de contenedores con Kubernetes
Domingo Suarez Torres
domix
![Page 2: Orquestación de contenedores con Kubernetes SGNext](https://reader030.vdocuments.site/reader030/viewer/2022021422/5a6490a07f8b9a36568b5023/html5/thumbnails/2.jpg)
Historia
•Mi experiencia y mi necesidad
•¿Porque contenedores? ¿Porque Docker?
•¿Cloud?
•IaaS, PaaS, SaaS, FaaS
![Page 3: Orquestación de contenedores con Kubernetes SGNext](https://reader030.vdocuments.site/reader030/viewer/2022021422/5a6490a07f8b9a36568b5023/html5/thumbnails/3.jpg)
La necesidad
•Experimentación
•Retroalimentación
•¿Innovación?
![Page 4: Orquestación de contenedores con Kubernetes SGNext](https://reader030.vdocuments.site/reader030/viewer/2022021422/5a6490a07f8b9a36568b5023/html5/thumbnails/4.jpg)
Contenedores
• Virtualización muy ligera
• A nivel SO es un proceso
• Efímeros
• Desafortunadamente se ha convertido en moda
![Page 5: Orquestación de contenedores con Kubernetes SGNext](https://reader030.vdocuments.site/reader030/viewer/2022021422/5a6490a07f8b9a36568b5023/html5/thumbnails/5.jpg)
Retos• Contenedores deben comunicarse
• Monitoreo
• Recursos (CPU, MEM)
• Liveness
• Readdiness
• Configuración
• Administración de secretos (passwords, llaves privadas)
• ¿autoscaling? up-scale, down-scale
![Page 6: Orquestación de contenedores con Kubernetes SGNext](https://reader030.vdocuments.site/reader030/viewer/2022021422/5a6490a07f8b9a36568b5023/html5/thumbnails/6.jpg)
¿Como enfrento los retos?
![Page 7: Orquestación de contenedores con Kubernetes SGNext](https://reader030.vdocuments.site/reader030/viewer/2022021422/5a6490a07f8b9a36568b5023/html5/thumbnails/7.jpg)
Kubernetes (k8s)
• ~15 años usando contenedores
• Creo Borg para administrar los contenedores
• A partir de la experiencia de Borg, nace k8s
• Open Source con más de 1250 contribuidores
![Page 8: Orquestación de contenedores con Kubernetes SGNext](https://reader030.vdocuments.site/reader030/viewer/2022021422/5a6490a07f8b9a36568b5023/html5/thumbnails/8.jpg)
Características• Recursos de diversas maquinas (VMs, Bare-metal) como un cluster
• Control Plane (Nodos Master)
• controller-manager, scheduler, api-server
• Minion (Nodos worker)
• kubelet, kube-proxy
• Container Engine (Docker, rkt)
• DNS, Service Discovery, LoadBalancing
• Configuración, Secretos
• Federación
![Page 9: Orquestación de contenedores con Kubernetes SGNext](https://reader030.vdocuments.site/reader030/viewer/2022021422/5a6490a07f8b9a36568b5023/html5/thumbnails/9.jpg)
Conceptos de k8s• Pod: Nombre generico para la unidad minima (no necesariamente) de
configuración de componentes que viven dentro de k8s
• Deployment: Tipo de pod que define la metadata de un grupo de contenedores. Asignación de recursos, volúmenes de File System
• Service: Tipo de pod para exponer y hacer disponible en el Service Discovery contenedores. Generalmente interno, se puede externo, pero no se recomienda.
• Ingress Controller: Tipo de pod que permite rutear trafico HTTP hacia el mundo exterior. Hostnames y URIs
![Page 10: Orquestación de contenedores con Kubernetes SGNext](https://reader030.vdocuments.site/reader030/viewer/2022021422/5a6490a07f8b9a36568b5023/html5/thumbnails/10.jpg)
Caso de estudio
• Entidad federal de gobierno que administra las tributaciones en el Peru. Sunat
• Arquitectura de Microservicios con Java
• Centros de Datos propios en 2 ubicaciones geográficas diferentes
• Plataforma de recepción de declaraciones, pagos en linea con TC
![Page 11: Orquestación de contenedores con Kubernetes SGNext](https://reader030.vdocuments.site/reader030/viewer/2022021422/5a6490a07f8b9a36568b5023/html5/thumbnails/11.jpg)
Uso de Kubernetes• Gestión de configuración de los contenedores, secretos.
• Services para balanceo de carga de las diversas replicas de los contenedores
• Administración de recursos (MEM, CPU)
• Políticas de autoscaling
• Probes
• Readiness: ¿El contenedor esta listo para recibir tráfico?
• Liveness: ¿El contenedor sigue vivo?
• Gestión de la configuración basada en Git, con plantillas
![Page 12: Orquestación de contenedores con Kubernetes SGNext](https://reader030.vdocuments.site/reader030/viewer/2022021422/5a6490a07f8b9a36568b5023/html5/thumbnails/12.jpg)
![Page 13: Orquestación de contenedores con Kubernetes SGNext](https://reader030.vdocuments.site/reader030/viewer/2022021422/5a6490a07f8b9a36568b5023/html5/thumbnails/13.jpg)
kind: Deployment metadata: name: container-name spec: replicas: 1 selector: matchLabels: name: container-name template: spec: imagePullSecrets: - name: registry containers: - image: registry.mycompany.com/app:0.0.1 name: container-name env: - name: DB_PASSWORD valueFrom: secretKeyRef: name: appsecrets key: DB_PASSWORD - name: REDIS_PASSWORD valueFrom: secretKeyRef: name: appsecrets key: REDIS_PASSWORD
![Page 14: Orquestación de contenedores con Kubernetes SGNext](https://reader030.vdocuments.site/reader030/viewer/2022021422/5a6490a07f8b9a36568b5023/html5/thumbnails/14.jpg)
resources: requests: memory: "512Mi" cpu: "200m" limits: memory: "1024Mi" cpu: "300m" volumeMounts: - mountPath: /config name: config ports: - containerPort: 7137 protocol: TCP livenessProbe: httpGet: path: /healthcheck port: 17137 initialDelaySeconds: 50 periodSeconds: 50 readinessProbe: httpGet: path: /healthcheck port: 17137 initialDelaySeconds: 30 periodSeconds: 5 volumes: - name: config hostPath: # directory location on host path: /opt/app/microservices/config/
![Page 15: Orquestación de contenedores con Kubernetes SGNext](https://reader030.vdocuments.site/reader030/viewer/2022021422/5a6490a07f8b9a36568b5023/html5/thumbnails/15.jpg)
apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: container-name spec: maxReplicas: 4 minReplicas: 1 targetCPUUtilizationPercentage: 75 scaleTargetRef: apiVersion: extensions/v1beta1 kind: Deployment name: container-name
![Page 16: Orquestación de contenedores con Kubernetes SGNext](https://reader030.vdocuments.site/reader030/viewer/2022021422/5a6490a07f8b9a36568b5023/html5/thumbnails/16.jpg)
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: container-name spec: rules: - host: api.mycompany.com http: paths: - path: / backend: serviceName: container-name servicePort: 7137
![Page 17: Orquestación de contenedores con Kubernetes SGNext](https://reader030.vdocuments.site/reader030/viewer/2022021422/5a6490a07f8b9a36568b5023/html5/thumbnails/17.jpg)
Lecciones aprendidas•El consumo de recursos en una arquitectura de
microservicios es mayor.
•Monitoreo de la infraestructura es clave, sobre todo en bare-metal. CPU, FileSystem, Memoria, I/O, Networking.
•Automatización de aprovisionamiento de infraestructura (Ansible, Terraform)
•Los sysadmins tradicionales deben replantear su rol, esta cambiando todo. ¿DevOps?
![Page 18: Orquestación de contenedores con Kubernetes SGNext](https://reader030.vdocuments.site/reader030/viewer/2022021422/5a6490a07f8b9a36568b5023/html5/thumbnails/18.jpg)
Siguientes pasos
• Usar Vault para administrar secrets, por ahora k8s almacena en base64 en plano en ETCD
• Terminar de integrar el pipeline de Bamboo para despliegue continuo
• Automatización de pruebas
• Promoción de binarios (bibliotecas, contenedores)
![Page 19: Orquestación de contenedores con Kubernetes SGNext](https://reader030.vdocuments.site/reader030/viewer/2022021422/5a6490a07f8b9a36568b5023/html5/thumbnails/19.jpg)
Demo
![Page 20: Orquestación de contenedores con Kubernetes SGNext](https://reader030.vdocuments.site/reader030/viewer/2022021422/5a6490a07f8b9a36568b5023/html5/thumbnails/20.jpg)
¿Quien apuesta por k8s?
![Page 21: Orquestación de contenedores con Kubernetes SGNext](https://reader030.vdocuments.site/reader030/viewer/2022021422/5a6490a07f8b9a36568b5023/html5/thumbnails/21.jpg)
![Page 22: Orquestación de contenedores con Kubernetes SGNext](https://reader030.vdocuments.site/reader030/viewer/2022021422/5a6490a07f8b9a36568b5023/html5/thumbnails/22.jpg)