Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[ES] KubeInit_ Buenas prácticas del ecosistema de OpenStack para mejorar la manera de desplegar OKD_OpenShift

[ES] KubeInit_ Buenas prácticas del ecosistema de OpenStack para mejorar la manera de desplegar OKD_OpenShift

Carlos Camacho

October 08, 2020
Tweet

More Decks by Carlos Camacho

Other Decks in Research

Transcript

  1. KubeInit: Buenas prácticas del ecosistema de OpenStack para mejorar la

    manera de desplegar OKD/OpenShift Carlos Camacho - Sept. 24th, 2020 - Red Hat 1
  2. https://github.com/kubeinit/kubeinit 2 2 KubeInit: Buenas prácticas del ecosistema de OpenStack

    para mejorar la manera de desplegar OKD/OpenShift Carlos Camacho Red Hatter Ph.D. en Ingeniería Informática Ingeniero de Software Contribuidor OpenStack Investigando el ecosistema de k8s --- blog: www.anstack.com IRC (freenode): ccamacho slack (k8s): ccamacho GitHub: ccamacho Yo?
  3. https://github.com/kubeinit/kubeinit 3 3 Intro KubeInit: Buenas prácticas del ecosistema de

    OpenStack para mejorar la manera de desplegar OKD/OpenShift
  4. https://github.com/kubeinit/kubeinit 4 KubeInit provee playbooks y roles de Ansible para

    desplegar y configurar múltiples distribuciones de Kubernetes. La meta principal de KubeInit es tener una manera completamente automatizada de desplegar en una único comando una serie de arquitecturas preestablecidas. Sobre KubeInit KubeInit usa algunas de las mejores prácticas del ecosistema de OpenStack (TripleO) 4 OpenStack es un software de código abierto para la gestión de recursos en la nube, como cómputo, almacenamiento, y redes utilizando APIs. KubeInit: Buenas prácticas del ecosistema de OpenStack para mejorar la manera de desplegar OKD/OpenShift
  5. https://github.com/kubeinit/kubeinit 5 5 Por qué? Trabajando en otros tópicos de

    investigación tuve la necesidad de definir un mecanismo para repetir de manera reproducible ciertos experimentos basados en OpenShift. Ciencia? Para demostrar su validez, un artículo científico debe proveer la suficiente evidencia de la reproducibilidad de sus resultados. - FIRE AND FORGET - Esta evidencia debe venir de poder replicar el experimento un número determinado de veces tal que el intervalo de confianza sea el esperado. KubeInit: Buenas prácticas del ecosistema de OpenStack para mejorar la manera de desplegar OKD/OpenShift
  6. https://github.com/kubeinit/kubeinit 6 6 Cuando? Junio de 2018, para un proyecto

    de investigación llamado Pystol. Submitted to: IEEE Transactions on Cloud Computing Status: Under review Title: Chaos as a Software Product Line - A platform for improving open hybrid-cloud systems resiliency KubeInit: Buenas prácticas del ecosistema de OpenStack para mejorar la manera de desplegar OKD/OpenShift
  7. https://github.com/kubeinit/kubeinit 7 7 El logo Recuerdan, Fire and forget ?

    El logo se asemeja a un comic llamado Dragon Ball Z, donde acumulamos cierta cantidad de energía para liberarla en forma de nuestro comando de despliegue... La demo comienza ahora! KubeInit: Buenas prácticas del ecosistema de OpenStack para mejorar la manera de desplegar OKD/OpenShift
  8. https://github.com/kubeinit/kubeinit 8 8 La demo -- Pasos-- Clonar el repositorio:

    git clone https://github.com/Kubeinit/kubeinit.git cd kubeinit Ejecutar el playbook: time ansible-playbook \ --user root \ -v -i ./hosts/okd/inventory \ --become \ --become-user root \ ./playbooks/okd.yml KubeInit: Buenas prácticas del ecosistema de OpenStack para mejorar la manera de desplegar OKD/OpenShift
  9. https://github.com/kubeinit/kubeinit 9 9 tripleo-ansible/openstack-ansible documentación, estructura de los roles y

    su distribución tripleo-upgrade tests de molecule os-migrate linters, tests unitarios, CI tripleo-validations validaciones basadas en componentes Reducir, Reusar, y Refactorizar del ecosistema de OpenStack. KubeInit: Buenas prácticas del ecosistema de OpenStack para mejorar la manera de desplegar OKD/OpenShift
  10. https://github.com/kubeinit/kubeinit 11 11 Arq Infrastructure drivers k8s distribution Apache WS

    FreeIPA NFS HAProxy Bind9 ... Validations KubeVirt Servicios soportados: • Host OS: CentOS/Fedora, Debian/Ubuntu • Drivers de infraestructura: Libvirt • Distribuciones de Kubernetes: OKD y K8s • Servicios externos: Bind9, HAProxy, Apache WS, Validations KubeInit: Buenas prácticas del ecosistema de OpenStack para mejorar la manera de desplegar OKD/OpenShift
  11. https://github.com/kubeinit/kubeinit 12 12 Doc docs.kubeinit.com • Basada en Sphinx (reStructuredText).

    • Basada en el Read the Docs Sphinx Theme. • Se renderiza automáticamente a partir de los roles y módulos del proyecto. • Se genera en cada merge. • Integrada en GitHub actions. KubeInit: Buenas prácticas del ecosistema de OpenStack para mejorar la manera de desplegar OKD/OpenShift
  12. https://github.com/kubeinit/kubeinit 13 13 Roles ansible-playbook \ -i 'localhost,' \ role-addition.yml

    \ -e ansible_connection=local \ -e role_name=kubeinit-example Defaults Vars _skeleton_role_ Tasks Meta Molecule Docs KubeInit: Buenas prácticas del ecosistema de OpenStack para mejorar la manera de desplegar OKD/OpenShift
  13. https://github.com/kubeinit/kubeinit 14 14 CI Unit tests EndToEnd tests Molecule tests

    Docs build tests Linters KubeInit: Buenas prácticas del ecosistema de OpenStack para mejorar la manera de desplegar OKD/OpenShift
  14. https://github.com/kubeinit/kubeinit 15 15 CI Unit tests Molecule tests Docs build

    tests Linters • Basada en GitHub actions. • Se ejecutan en cada [push|pull_request]. • Resultados en 2 - 4 minutes. • Todo el código está cubierto: ◦ Ansible automation (funcional): Molecule ◦ Módulos de Python: Unit test ◦ Estilos: Linters ◦ Documentación: Build test KubeInit: Buenas prácticas del ecosistema de OpenStack para mejorar la manera de desplegar OKD/OpenShift
  15. https://github.com/kubeinit/kubeinit 16 16 CI EndToEnd tests • Se ejecutan internamente

    en una instancia de GitLab (runner). • Bajo demanda. 1. Dos scripts: ci/launch_e2e.py & ci/run.sh 2. Un check verifica los tags al ejecutar launch_e2e.py cada ~15 minutes. 3. Si hay un PR que haga match con el tag, entonces: a. Se configura el job. b. Se ejecuta el job. c. Se escriben de vuelta los resultados. Cómo funciona? KubeInit: Buenas prácticas del ecosistema de OpenStack para mejorar la manera de desplegar OKD/OpenShift
  16. https://github.com/kubeinit/kubeinit 17 17 Validaciones • Un rol para: ◦ Ejecutar

    verificaciones pre despliegue. ◦ Ejecutar verificaciones post despliegue. • Examples: ◦ Disponibilidad de RAM. ◦ Disponibilidad de disco. ◦ Verificación de nodos. ◦ Probar despliegue de aplicaciones. KubeInit: Buenas prácticas del ecosistema de OpenStack para mejorar la manera de desplegar OKD/OpenShift
  17. https://github.com/kubeinit/kubeinit 18 18 Deep dive KubeInit: Buenas prácticas del ecosistema

    de OpenStack para mejorar la manera de desplegar OKD/OpenShift
  18. https://github.com/kubeinit/kubeinit 19 19 Red KubeInit: Buenas prácticas del ecosistema de

    OpenStack para mejorar la manera de desplegar OKD/OpenShift
  19. https://github.com/kubeinit/kubeinit 20 20 Red KubeInit: Buenas prácticas del ecosistema de

    OpenStack para mejorar la manera de desplegar OKD/OpenShift
  20. https://github.com/kubeinit/kubeinit 21 21 Bind External view DNS internal view KubeInit:

    Buenas prácticas del ecosistema de OpenStack para mejorar la manera de desplegar OKD/OpenShift
  21. https://github.com/kubeinit/kubeinit 22 22 Bind /etc/named/zones/internals/db.watata.kubeinit.local api.watata.kubeinit.local. IN A 10.0.0.100 api-int.watata.kubeinit.local.

    IN A 10.0.0.100 *.apps.watata.kubeinit.local. IN A 10.0.0.100 console-openshift-console.apps.watata.kubeinit.local. IN A 10.0.0.100 oauth-openshift.apps.watata.kubeinit.local. IN A 10.0.0.100 KubeInit: Buenas prácticas del ecosistema de OpenStack para mejorar la manera de desplegar OKD/OpenShift
  22. https://github.com/kubeinit/kubeinit 23 23 HAProxy Note: Todo el tráfico interno se

    enruta de manera directa • openshift-api-server (port 6443) • machine-config-server (port 22623) • ingress-http (port 80) • ingress-https (port 443) KubeInit: Buenas prácticas del ecosistema de OpenStack para mejorar la manera de desplegar OKD/OpenShift
  23. https://github.com/kubeinit/kubeinit 24 24 3rd-party Cualquier aplicación externa que se instale

    en el cluster debe ser mediante el API nativo de K8s. Actualmente: KubeVirt KubeInit: Buenas prácticas del ecosistema de OpenStack para mejorar la manera de desplegar OKD/OpenShift
  24. https://github.com/kubeinit/kubeinit 27 27 • Buscar personas interesadas en dar feedback

    y contribuir creando issues o probar la herramienta. • Agregar otras distribuciones como K8s. • Despliegues desconectados (WIP). • Mejorar la cobertura de los tests. • Refactor de los roles. • Ejecutar los playbooks desde contenedores. • Modo push -> modo PR. Siguientes pasos? Integración con otros servicios como, FreeIPA KubeInit: Buenas prácticas del ecosistema de OpenStack para mejorar la manera de desplegar OKD/OpenShift
  25. Gracias! Para más detalles, dudas, contribuciones o cualquier cosa que

    necesiten manténganse en contacto! :) Preguntas? Donde mirar: www.kubeinit.com docs.kubeinit.com https://github.com/kubeinit IRC (freenode): #kubeinit 28 Si les ha gustado la presentación, pueden ayudar siguiendo el proyecto con una estrella en GitHub! https://github.com/kubeinit/kubeinit blog: www.anstack.com IRC (freenode): ccamacho slack (k8s): ccamacho GitHub: ccamacho