Esta sesión comparte desde un punto de vista técnico las experiencias y aprendizajes obtenidos al orquestar contenedores usando la tecnología Kubernetes en el SUNAT,
la dependencia de gobierno federal en Perú encargada de la administración tributaria.
Sesión presentada por Domingo Suárez en SG Next 2017
7. Kubernetes (k8s)
•Google
•~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
8. 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
9. 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
10. 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
11. 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
17. 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?
18. 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)