Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Orquestación de
contenedores con Kubernetes
Domingo Suarez Torres
domix
domingo.suarez@gmail.com
Historia
•Mi experiencia y mi necesidad
•¿Porque contenedores? ¿Porque Docker?
•¿Cloud?
•IaaS, PaaS, SaaS, FaaS
La necesidad
•Experimentación
•Retroalimentación
•¿Innovación?
Contenedores
• Virtualización muy ligera
• A nivel SO es un proceso
• Efímeros
• Desafortunadamente se ha convertido en mo...
Retos
• Contenedores deben comunicarse
• Monitoreo
• Recursos (CPU, MEM)
• Liveness
• Readdiness
• Configuración
• Administ...
¿Como enfrento los retos?
Kubernetes (k8s)
•Google
•~15 años usando contenedores
•Creo Borg para administrar los contenedores
•A partir de la experi...
Características
• Recursos de diversas maquinas (VMs, Bare-metal) como un cluster
• Control Plane (Nodos Master)
• control...
Conceptos de k8s
• Pod: Nombre generico para la unidad minima (no necesariamente) de
configuración de componentes que viven...
Caso de estudio
•Entidad federal de gobierno que administra las tributaciones en
el Peru. Sunat
•Arquitectura de Microserv...
Uso de Kubernetes
• Gestión de configuración de los contenedores, secretos.
• Services para balanceo de carga de las divers...
kind: Deployment
metadata:
name: container-name
spec:
replicas: 1
selector:
matchLabels:
name: container-name
template:
sp...
resources:
requests:
memory: "512Mi"
cpu: "200m"
limits:
memory: "1024Mi"
cpu: "300m"
volumeMounts:
- mountPath: /config
n...
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: container-name
spec:
maxReplicas: 4
minReplicas: ...
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: container-name
spec:
rules:
- host: api.mycompany.com
http:
p...
Lecciones aprendidas
•El consumo de recursos en una arquitectura de
microservicios es mayor.
•Monitoreo de la infraestruct...
Siguientes pasos
• Usar Vault para administrar secrets, por ahora k8s
almacena en base64 en plano en ETCD
• Terminar de in...
Demo
¿Quien apuesta por k8s?
¿Preguntas?
Domingo Suarez Torres
domix
domingo.suarez@gmail.com
Orquestación de contenedores con Kubernetes SGNext
Orquestación de contenedores con Kubernetes SGNext
Orquestación de contenedores con Kubernetes SGNext
Upcoming SlideShare
Loading in …5
×

Orquestación de contenedores con Kubernetes SGNext

1,107 views

Published on

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 SUNAT, la dependencia de gobierno federal en Perú encargada de la administración tributaria.

Published in: Technology
  • Be the first to comment

Orquestación de contenedores con Kubernetes SGNext

  1. 1. Orquestación de contenedores con Kubernetes Domingo Suarez Torres domix domingo.suarez@gmail.com
  2. 2. Historia •Mi experiencia y mi necesidad •¿Porque contenedores? ¿Porque Docker? •¿Cloud? •IaaS, PaaS, SaaS, FaaS
  3. 3. La necesidad •Experimentación •Retroalimentación •¿Innovación?
  4. 4. Contenedores • Virtualización muy ligera • A nivel SO es un proceso • Efímeros • Desafortunadamente se ha convertido en moda
  5. 5. Retos • Contenedores deben comunicarse • Monitoreo • Recursos (CPU, MEM) • Liveness • Readdiness • Configuración • Administración de secretos (passwords, llaves privadas) • ¿autoscaling? up-scale, down-scale
  6. 6. ¿Como enfrento los retos?
  7. 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. 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. 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. 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. 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
  12. 12. 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
  13. 13. 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/
  14. 14. 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
  15. 15. apiVersion: extensions/v1beta1 kind: Ingress metadata: name: container-name spec: rules: - host: api.mycompany.com http: paths: - path: / backend: serviceName: container-name servicePort: 7137
  16. 16. 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?
  17. 17. 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)
  18. 18. Demo
  19. 19. ¿Quien apuesta por k8s?
  20. 20. ¿Preguntas? Domingo Suarez Torres domix domingo.suarez@gmail.com

×