<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Job Céspedes Ortiz</title>
    <description>The latest articles on DEV Community by Job Céspedes Ortiz (@jobcespedes).</description>
    <link>https://dev.to/jobcespedes</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F344695%2Fe0984f77-ccc0-4671-b0c7-a5c697f4eba8.jpeg</url>
      <title>DEV Community: Job Céspedes Ortiz</title>
      <link>https://dev.to/jobcespedes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jobcespedes"/>
    <language>en</language>
    <item>
      <title>El estado actual de la IA en LMS de código abierto: Comparación entre Moodle, Canvas, Open edX y Sakai</title>
      <dc:creator>Job Céspedes Ortiz</dc:creator>
      <pubDate>Mon, 17 Jun 2024 23:36:59 +0000</pubDate>
      <link>https://dev.to/jobcespedes/el-estado-actual-de-la-ia-en-lms-de-codigo-abierto-comparacion-entre-moodle-canvas-open-edx-y-sakai-1jl6</link>
      <guid>https://dev.to/jobcespedes/el-estado-actual-de-la-ia-en-lms-de-codigo-abierto-comparacion-entre-moodle-canvas-open-edx-y-sakai-1jl6</guid>
      <description>&lt;p&gt;En los últimos años, la integración de la Inteligencia Artificial (IA) en los Sistemas de Gestión del Aprendizaje (LMS) ha revolucionado la tecnología educativa. Se espera que las plataformas LMS de código abierto como Moodle, Canvas, Open edX y Sakai lideren esta revolución, aportando capacidades de IA únicas para mejorar las experiencias de enseñanza y aprendizaje. Este blog explora el estado actual de la integración de la IA en estas populares plataformas LMS de código abierto, comparando sus características, fortalezas, debilidades y adopción mundial.&lt;/p&gt;

&lt;h2&gt;
  
  
  El papel de la IA en las plataformas LMS modernas
&lt;/h2&gt;

&lt;p&gt;La IA generativa ha transformado el panorama educativo al automatizar tareas repetitivas, personalizar experiencias de aprendizaje y mejorar la accesibilidad. Todas las principales plataformas LMS de código abierto han reconocido este potencial y están trabajando activamente en la integración de la IA para optimizar los resultados educativos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comparación de características de IA en plataformas LMS de código abierto
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Moodle™ LMS
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Sitio web&lt;/strong&gt;: &lt;a href="https://moodle.com/es"&gt;Moodle&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Moodle está a la vanguardia de la integración de la IA con un subsistema de IA integral en desarrollo. Las características clave incluyen:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://moodle.com/us/about/moodle-ai-principles/"&gt;Principios de IA&lt;/a&gt;&lt;/strong&gt;: Moodle se adhiere a un conjunto de principios de IA centrados en la transparencia, la configurabilidad, la protección de datos, la igualdad, la práctica ética y la educación.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://tracker.moodle.org/browse/MDL-80889"&gt;Subsistema de IA&lt;/a&gt;&lt;/strong&gt;: Proporciona formas fáciles de interactuar con la IA, como generar contenido, resumir textos y crear imágenes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plugins&lt;/strong&gt;: Múltiples plugins de IA como &lt;a href="https://moodle.org/plugins/local_ai_connector"&gt;AI Connector&lt;/a&gt;, &lt;a href="https://moodle.org/plugins/local_aiquestions"&gt;AI Questions Generator&lt;/a&gt; y &lt;a href="https://moodle.org/plugins/block_openai_chat"&gt;OpenAI Chat Block&lt;/a&gt; mejoran las capacidades de Moodle.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://moodle.org/enrol/index.php?id=17254"&gt;Grupo de Investigación de IA&lt;/a&gt;&lt;/strong&gt;: Explora nuevas tecnologías para dar forma al futuro de la plataforma Moodle. Colaboran con la comunidad de Moodle a través de encuestas y discusiones para entender cómo se puede utilizar mejor la IA para mejorar las experiencias de aprendizaje.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Fortalezas y debilidades de Moodle LMS
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Fortalezas&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Principios de IA integrales que garantizan un uso ético.&lt;/li&gt;
&lt;li&gt;Robusto ecosistema de plugins para la integración de IA.&lt;/li&gt;
&lt;li&gt;Activo grupo de investigación de IA y apoyo comunitario.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Debilidades&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Complejidad en la gestión de múltiples plugins de IA.&lt;/li&gt;
&lt;li&gt;Requiere experiencia técnica para una configuración y uso óptimos.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Adopción mundial y madurez comunitaria de Moodle LMS
&lt;/h4&gt;

&lt;p&gt;Moodle cuenta con más de 180,000 instalaciones y 200 millones de usuarios en todo el mundo, apoyado por una comunidad madura y activa de código abierto. Su extenso directorio de plugins y actualizaciones frecuentes lo convierten en un favorito entre educadores e instituciones.&lt;/p&gt;

&lt;h3&gt;
  
  
  Canvas LMS
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Sitio web&lt;/strong&gt;: &lt;a href="https://www.instructure.com/canvas"&gt;Canvas&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Canvas también está aprovechando la IA para agilizar los procesos educativos. Las características notables de la IA incluyen:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Herramientas de IA para docentes&lt;/strong&gt;: Herramientas para acelerar el proceso de aprendizaje mediante la automatización de tareas administrativas y la provisión de conocimientos más profundos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gamificación y personalización&lt;/strong&gt;: Gamificación impulsada por IA para involucrar a los estudiantes y personalizar las rutas de aprendizaje.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cumplimiento&lt;/strong&gt;: Alineado con la Orden Ejecutiva sobre IA de la Casa Blanca, asegurando un uso ético y responsable de las tecnologías de IA.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Fortalezas y debilidades de Canvas LMS
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Fortalezas&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fuerte enfoque en el apoyo y eficiencia docente.&lt;/li&gt;
&lt;li&gt;Personalización y gamificación impulsadas por IA.&lt;/li&gt;
&lt;li&gt;Cumplimiento de estándares éticos y órdenes ejecutivas.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Debilidades&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Transparencia limitada sobre funcionalidades específicas de IA.&lt;/li&gt;
&lt;li&gt;Puede requerir recursos adicionales para una utilización completa de la IA.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Adopción mundial y madurez comunitaria de Canvas LMS
&lt;/h4&gt;

&lt;p&gt;Canvas es ampliamente adoptado en Norteamérica y más allá, con un fuerte apoyo institucional y una vibrante comunidad. Su interfaz fácil de usar y características poderosas contribuyen a su popularidad.&lt;/p&gt;

&lt;h3&gt;
  
  
  Open edX
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Sitio web&lt;/strong&gt;: &lt;a href="https://openedx.org"&gt;Open edX&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open edX utiliza la IA para mejorar la creación de contenido y la interacción con los estudiantes. Las características clave incluyen:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Creación de cursos impulsada por IA&lt;/strong&gt;: Utiliza modelos de lenguaje grandes (LLM) para crear contenido de cursos atractivo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ChatGPT XBlock&lt;/strong&gt;: Integra ChatGPT para experiencias de aprendizaje interactivas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Impacto en el aprendizaje&lt;/strong&gt;: Se centra en cómo la IA puede transformar el aprendizaje en línea mejorando el compromiso y la calidad del curso.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Fortalezas y debilidades de Open edX
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Fortalezas&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Herramientas avanzadas de creación de contenido impulsadas por IA.&lt;/li&gt;
&lt;li&gt;Características de IA interactivas como ChatGPT XBlock.&lt;/li&gt;
&lt;li&gt;Fuerte énfasis en mejorar el compromiso de aprendizaje.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Debilidades&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requiere conocimientos técnicos para integrar herramientas avanzadas de IA.&lt;/li&gt;
&lt;li&gt;Menor enfoque en funcionalidades administrativas de IA en comparación con otros.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Adopción mundial y madurez comunitaria de Open edX
&lt;/h4&gt;

&lt;p&gt;Open edX es utilizado por instituciones prestigiosas como MIT y Harvard, lo que demuestra su fiabilidad y escalabilidad. Su comunidad de código abierto es innovadora, contribuyendo significativamente a su desarrollo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sakai
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Sitio web&lt;/strong&gt;: &lt;a href="https://www.sakailms.org"&gt;Sakai&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sakai está actualmente rezagado en la integración de la IA en comparación con otras plataformas. Aunque hay potencial, las características y herramientas de IA detalladas aún no se han desarrollado y presentado prominentemente.&lt;/p&gt;

&lt;h4&gt;
  
  
  Fortalezas y debilidades de Sakai
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Fortalezas&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Potencial de crecimiento en la integración de IA.&lt;/li&gt;
&lt;li&gt;Apoyo comunitario activo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Debilidades&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Actualmente carece de características significativas de IA.&lt;/li&gt;
&lt;li&gt;Necesita más desarrollo para ponerse al día con otras plataformas.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Adopción mundial y madurez comunitaria de Sakai
&lt;/h4&gt;

&lt;p&gt;Sakai, aunque no tan ampliamente adoptado como Moodle o Canvas, tiene una base de usuarios y comunidad dedicados. Es particularmente popular en ciertas instituciones académicas y continúa creciendo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;La integración de la IA en las plataformas LMS está transformando nuestra forma de abordar la educación, haciéndola más eficiente, personalizada y accesible. Mientras que Moodle, Canvas y Open edX están liderando la carga con características innovadoras de IA, Sakai tiene el potencial de crecer en este espacio. Al elegir el LMS adecuado y aprovechar las capacidades de IA, las instituciones educativas pueden mejorar significativamente sus procesos de enseñanza y aprendizaje.&lt;/p&gt;

&lt;p&gt;Para obtener información más detallada sobre las capacidades de IA de cada LMS, visite sus respectivos sitios web:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://moodle.com/es"&gt;Moodle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.instructure.com/canvas"&gt;Canvas&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://openedx.org"&gt;Open edX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sakailms.org"&gt;Sakai&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Considera el servicio gestionado de Krestomatio para una experiencia sin complicaciones con Moodle LMS. Visita &lt;a href="https://krestomatio.com/es/pricing/"&gt;nuestra página de precios de suscripción&lt;/a&gt; para obtener más información.&lt;/p&gt;

&lt;p&gt;Al mantenerse informado sobre los últimos avances en IA y plataformas LMS, los educadores y las instituciones pueden aprovechar al máximo estas poderosas herramientas para mejorar los resultados del aprendizaje y la eficiencia operativa.&lt;/p&gt;

</description>
      <category>lms</category>
      <category>ai</category>
      <category>hosting</category>
      <category>krestomatio</category>
    </item>
    <item>
      <title>The Current State of AI in Open Source LMS: Moodle, Canvas, Open edX, and Sakai Compared</title>
      <dc:creator>Job Céspedes Ortiz</dc:creator>
      <pubDate>Mon, 17 Jun 2024 23:35:30 +0000</pubDate>
      <link>https://dev.to/krestomatio/the-current-state-of-ai-in-open-source-lms-moodle-canvas-open-edx-and-sakai-compared-4e90</link>
      <guid>https://dev.to/krestomatio/the-current-state-of-ai-in-open-source-lms-moodle-canvas-open-edx-and-sakai-compared-4e90</guid>
      <description>&lt;p&gt;In recent years, the integration of Artificial Intelligence (AI) into Learning Management Systems (LMS) has been a game-changer for educational technology. Open-source LMS platforms like Moodle, Canvas, Open edX, and Sakai are expected to lead this revolution, bringing unique AI capabilities to enhance teaching and learning experiences. This blog post explores the current status of AI integration in these popular open-source LMS platforms, comparing their features, strengths, weaknesses and worldwide adoption.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Role of AI in Modern LMS Platforms
&lt;/h2&gt;

&lt;p&gt;Generative AI has transformed the landscape of education by automating repetitive tasks, personalizing learning experiences, and improving accessibility. All the major open-source LMS platforms have recognized this potential and are actively working on integrating AI to optimize educational outcomes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comparing AI Features in Open Source LMS Platforms
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Moodle™ LMS
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt;: &lt;a href="https://moodle.com"&gt;Moodle&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Moodle is at the forefront of AI integration with a comprehensive AI subsystem in development. Key features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://moodle.com/us/about/moodle-ai-principles/"&gt;AI principles&lt;/a&gt;&lt;/strong&gt;: Moodle adheres to a set of AI principles focused on transparency, configurability, data protection, equality, ethical practice, and education.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://tracker.moodle.org/browse/MDL-80889"&gt;AI Subsystem&lt;/a&gt;&lt;/strong&gt;: Provides user-friendly ways for interaction with AI, such as generating content, summarizing text, and creating images.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plugins&lt;/strong&gt;: Multiple AI plugins like &lt;a href="https://moodle.org/plugins/local_ai_connector"&gt;AI Connector&lt;/a&gt;, &lt;a href="https://moodle.org/plugins/local_aiquestions"&gt;AI Questions Generator&lt;/a&gt;, and &lt;a href="https://moodle.org/plugins/block_openai_chat"&gt;OpenAI Chat Block&lt;/a&gt; enhance Moodle's capabilities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://moodle.org/enrol/index.php?id=17254"&gt;AI Research Group&lt;/a&gt;&lt;/strong&gt;: Explores new technologies to shape the future of the Moodle platform. They collaborate with the Moodle community through surveys and discussions to understand how AI can best be used to enhance learning experiences.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Strengths and Weaknesses of Moodle LMS
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Strengths&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Comprehensive AI principles ensuring ethical use.&lt;/li&gt;
&lt;li&gt;Robust plugin ecosystem for AI integration.&lt;/li&gt;
&lt;li&gt;Active AI research group and community support.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Weaknesses&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Complexity in managing multiple AI plugins.&lt;/li&gt;
&lt;li&gt;Requires technical expertise for optimal setup and use.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Worldwide Adoption and Community Maturity of Moodle LMS
&lt;/h4&gt;

&lt;p&gt;Moodle boasts over 180,000 installations and 200 million users worldwide, supported by a mature and active open-source community. Its extensive plugin directory and frequent updates make it a favorite among educators and institutions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Canvas LMS
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt;: &lt;a href="https://www.instructure.com/canvas"&gt;Canvas&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Canvas is also leveraging AI to streamline educational processes. Notable AI features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI Tools for Teachers&lt;/strong&gt;: Tools to accelerate the learning process by automating administrative tasks and providing deeper insights.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gamification and Personalization&lt;/strong&gt;: AI-driven gamification to engage students and personalize learning paths.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compliance&lt;/strong&gt;: Aligns with the White House's Executive Order on AI, ensuring ethical and responsible use of AI technologies.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Strengths and Weaknesses of Canvas LMS
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Strengths&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Strong focus on teacher support and efficiency.&lt;/li&gt;
&lt;li&gt;AI-driven personalization and gamification.&lt;/li&gt;
&lt;li&gt;Compliance with ethical standards and executive orders.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Weaknesses&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Limited transparency on specific AI functionalities.&lt;/li&gt;
&lt;li&gt;May require additional resources for full AI utilization.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Worldwide Adoption and Community Maturity of Canvas LMS
&lt;/h4&gt;

&lt;p&gt;Canvas is widely adopted in North America and beyond, with strong institutional support and a vibrant community. Its user-friendly interface and powerful features contribute to its popularity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Open edX
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt;: &lt;a href="https://openedx.org"&gt;Open edX&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open edX utilizes AI to enhance content creation and student interaction. Key features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI-Driven Course Creation&lt;/strong&gt;: Uses large language models (LLMs) to craft engaging course content.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ChatGPT XBlock&lt;/strong&gt;: Integrates ChatGPT for interactive learning experiences.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Impact on Learning&lt;/strong&gt;: Focuses on how AI can transform online learning by improving engagement and course quality.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Strengths and Weaknesses of Open edX
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Strengths&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Advanced AI-driven content creation tools.&lt;/li&gt;
&lt;li&gt;Interactive AI features like ChatGPT XBlock.&lt;/li&gt;
&lt;li&gt;Strong emphasis on improving learning engagement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Weaknesses&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requires technical know-how for integrating advanced AI tools.&lt;/li&gt;
&lt;li&gt;Less focus on administrative AI functionalities compared to others.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Worldwide Adoption and Community Maturity of Open edX
&lt;/h4&gt;

&lt;p&gt;Open edX is used by prestigious institutions like MIT and Harvard, showcasing its reliability and scalability. Its open-source community is innovative, contributing significantly to its development.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sakai
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt;: &lt;a href="https://www.sakailms.org"&gt;Sakai&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sakai is currently lagging behind in AI integration compared to other platforms. While there is potential, detailed AI features and tools are yet to be prominently developed and showcased.&lt;/p&gt;

&lt;h4&gt;
  
  
  Strengths and Weaknesses of Sakai
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Strengths&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Potential for growth in AI integration.&lt;/li&gt;
&lt;li&gt;Active community support.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Weaknesses&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Currently lacks significant AI features.&lt;/li&gt;
&lt;li&gt;Needs more development to catch up with other platforms.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Worldwide Adoption and Community Maturity of Sakai
&lt;/h4&gt;

&lt;p&gt;Sakai, while not as widely adopted as Moodle or Canvas, has a dedicated user base and community. It is particularly popular in certain academic institutions and continues to grow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The integration of AI into LMS platforms is transforming the way we approach education, making it more efficient, personalized, and accessible. While Moodle, Canvas, and Open edX are leading the charge with innovative AI features, Sakai has the potential to grow in this space. By choosing the right LMS and leveraging AI capabilities, educational institutions can significantly enhance their teaching and learning processes.&lt;/p&gt;

&lt;p&gt;For more detailed insights into the AI capabilities of each LMS, visit their respective websites:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://moodle.com"&gt;Moodle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.instructure.com/canvas"&gt;Canvas&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://openedx.org"&gt;Open edX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sakailms.org"&gt;Sakai&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Consider Krestomatio's managed service for a hassle-free Moodle LMS experience. Visit &lt;a href="https://krestomatio.com/pricing/"&gt;our subscription pricing page&lt;/a&gt; for more information.&lt;/p&gt;

&lt;p&gt;By staying informed about the latest advancements in AI and LMS platforms, educators and institutions can make the most of these powerful tools to enhance learning outcomes and operational efficiency.&lt;/p&gt;

</description>
      <category>lms</category>
      <category>ai</category>
      <category>hosting</category>
      <category>krestomatio</category>
    </item>
    <item>
      <title>LMS de código abierto versus propietario - ¿Cuál eligir?</title>
      <dc:creator>Job Céspedes Ortiz</dc:creator>
      <pubDate>Wed, 15 May 2024 20:45:08 +0000</pubDate>
      <link>https://dev.to/krestomatio/lms-de-codigo-abierto-versus-propietario-cual-eligir-28f0</link>
      <guid>https://dev.to/krestomatio/lms-de-codigo-abierto-versus-propietario-cual-eligir-28f0</guid>
      <description>&lt;p&gt;En el panorama actual del aprendizaje digital, los &lt;strong&gt;Sistemas de Gestión de Aprendizaje (LMS)&lt;/strong&gt; se han convertido en una piedra angular para impartir contenido educativo y fomentar la colaboración. Pero con una gran cantidad de opciones disponibles, elegir la plataforma LMS adecuada para su organización, ya sea una empresa, una institución académica o un grupo con necesidades de enseñanza específicas, puede ser una tarea desalentadora. Aquí, profundizaremos en las dos categorías principales de LMS: &lt;strong&gt;Propietario&lt;/strong&gt; y &lt;strong&gt;Código Abierto&lt;/strong&gt;, explorando sus ventajas y desventajas para ayudarlo a tomar una decisión informada.&lt;/p&gt;

&lt;h2&gt;
  
  
  Entendiendo el software de código abierto vs. propietario
&lt;/h2&gt;

&lt;p&gt;Antes de sumergirnos en las especificaciones de los LMS, establezcamos la diferencia fundamental entre el software de código abierto y el software propietario. El &lt;strong&gt;software de código abierto&lt;/strong&gt; cuenta con código fuente disponible gratuitamente, lo que permite a los usuarios modificarlo, personalizarlo y distribuirlo libremente. Por el contrario, el &lt;strong&gt;software propietario&lt;/strong&gt; tiene un acceso restringido a su código fuente, y los usuarios generalmente requieren licencias para su uso.&lt;/p&gt;

&lt;h2&gt;
  
  
  LMS de código abierto: flexibilidad y libertad
&lt;/h2&gt;

&lt;p&gt;Las plataformas LMS de código abierto como Moodle™ LMS, Canvas LMS y Open edX ofrecen una propuesta atractiva para las organizaciones que buscan flexibilidad y control. A continuación, se muestra un desglose de sus principales beneficios:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rentabilidad:&lt;/strong&gt; Los LMS de código abierto eliminan las costosas tarifas de licencia, lo que los hace ideales para organizaciones con un presupuesto limitado. Si bien el software en sí es gratuito, hay costos a considerar para alojar la plataforma, lo que se puede hacer internamente o a través de un proveedor externo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Personalización:&lt;/strong&gt; La naturaleza de código abierto permite una amplia personalización para adaptar la plataforma a sus necesidades y flujos de trabajo de enseñanza específicos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integración:&lt;/strong&gt; Muchas plataformas LMS de código abierto ofrecen API sólidas que facilitan la integración perfecta con las herramientas y recursos existentes dentro de su organización.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Soporte de la comunidad:&lt;/strong&gt; Los proyectos de código abierto a menudo se benefician de comunidades en línea vibrantes donde los usuarios pueden buscar ayuda, compartir mejores prácticas y contribuir al desarrollo continuo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sin embargo, los LMS de código abierto también tienen algunos inconvenientes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Implementación y mantenimiento:&lt;/strong&gt; La configuración, el mantenimiento y la seguridad de un LMS de código abierto pueden requerir experiencia técnica interna, lo que puede ser un desafío para las organizaciones con recursos informáticos limitados.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Problemas de seguridad:&lt;/strong&gt; Las actualizaciones y el mantenimiento de seguridad regulares se convierten en responsabilidad del usuario, lo que representa un riesgo potencial si no se abordan con diligencia.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Soporte limitado:&lt;/strong&gt; Si bien existe soporte de la comunidad, es posible que no ofrezca el mismo nivel de servicio al cliente dedicado que a menudo se encuentra con las soluciones propietarias.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  LMS propietario: comodidad y soporte garantizado
&lt;/h2&gt;

&lt;p&gt;Las plataformas LMS propietarias como Blackboard y D2L ofrecen una experiencia más fácil de usar con funcionalidades y características readily available (fácilmente disponibles). Considere estas ventajas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Facilidad de uso:&lt;/strong&gt; Los LMS propietarios generalmente están diseñados teniendo en cuenta la facilidad de uso, lo que minimiza la necesidad de un amplio conocimiento técnico para su implementación y uso.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Soporte dedicado:&lt;/strong&gt; Los usuarios con licencia generalmente se benefician del soporte al cliente dedicado, que ofrece asistencia oportuna para solucionar problemas técnicos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Actualizaciones garantizadas:&lt;/strong&gt; Los proveedores de software propietario publican regularmente actualizaciones que abordan las vulnerabilidades de seguridad y mejoran las funcionalidades. El alojamiento generalmente se incluye como parte del paquete de licencias, lo que garantiza un entorno confiable y seguro para su LMS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sin embargo, los LMS propietarios vienen con su propio conjunto de limitaciones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Costo:&lt;/strong&gt; Las tarifas de licencia para los LMS propietarios pueden ser significativas, especialmente para las organizaciones grandes con un alto volumen de usuarios, y a menudo incluyen los costos de alojamiento incluidos en el paquete de licencias.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependencia del proveedor:&lt;/strong&gt; La dependencia de un proveedor específico puede limitar las opciones de personalización y restringir potencialmente la escalabilidad futura.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Control limitado:&lt;/strong&gt; Los sistemas propietarios ofrecen menos control sobre el código fuente y las funcionalidades en comparación con las opciones de código abierto.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Entonces, ¿cuál LMS es el adecuado?
&lt;/h2&gt;

&lt;p&gt;La solución LMS ideal depende de varios factores específicos de su organización. Considere estas preguntas para tener una idea más clara:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Presupuesto:&lt;/strong&gt; Los LMS de código abierto ofrecen ventajas de costo significativas, especialmente para organizaciones con limitaciones presupuestarias, pero no olvide tener en cuenta los posibles costos de alojamiento. (Search terms: LMS de código abierto, LMS gratuito, LMS rentable)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Experiencia técnica:&lt;/strong&gt; La disponibilidad de recursos informáticos internos para la implementación, el mantenimiento y la seguridad del LMS debe tenerse en cuenta al considerar opciones de código abierto. (Search terms: Implementación de LMS de código abierto, Mantenimiento de LMS)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Necesidades de personalización:&lt;/strong&gt; Si la personalización extensiva es crucial para su enfoque de enseñanza único, los LMS de código abierto brindan mayor flexibilidad. (Search terms: LMS personalizable, LMS para necesidades de enseñanza únicas)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Requisitos de soporte:&lt;/strong&gt; El nivel de soporte dedicado necesario para una operación fluida debe compararse con los recursos disponibles dentro de su organización. (Search terms: Soporte LMS dedicado, Soporte al cliente LMS)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Krestomatio: simplificando Moodle LMS para su organización&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Si ha optado por un LMS de código abierto, particularmente Moodle LMS, &lt;a href="https://krestomatio.com/es"&gt;Krestomatio&lt;/a&gt; puede simplificar su proceso. Ofrecemos un &lt;a href="https://krestomatio.com/es/pricing"&gt;servicio gestionado integral para Moodle LMS&lt;/a&gt; (en inglés), que se encarga de la instalación, el alojamiento, la optimización y las actualizaciones, lo que le permite concentrarse en brindar experiencias de aprendizaje excepcionales.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;Elegir el LMS correcto requiere una consideración cuidadosa de las necesidades y recursos específicos de su organización. Tanto los LMS de código abierto como los propietarios ofrecen ventajas y desventajas distintivas. Al comprender estas diferencias clave, puede tomar una decisión informada que impulse a su organización a brindar experiencias de aprendizaje efectivas y atractivas.&lt;/p&gt;

</description>
      <category>lms</category>
      <category>elearning</category>
      <category>moodle</category>
      <category>hospedaje</category>
    </item>
    <item>
      <title>Open Source vs Proprietary LMS: Choosing the Right Fit for Your Needs</title>
      <dc:creator>Job Céspedes Ortiz</dc:creator>
      <pubDate>Wed, 15 May 2024 20:24:12 +0000</pubDate>
      <link>https://dev.to/krestomatio/open-source-vs-proprietary-learning-management-systems-choosing-the-right-fit-for-your-needs-596d</link>
      <guid>https://dev.to/krestomatio/open-source-vs-proprietary-learning-management-systems-choosing-the-right-fit-for-your-needs-596d</guid>
      <description>&lt;p&gt;In today's digital learning landscape, &lt;strong&gt;Learning Management Systems (LMS)&lt;/strong&gt; have become a cornerstone for delivering educational content and fostering collaboration. But with a plethora of options available, choosing the right LMS platform for your organization, be it a company, academic institution, or a group with specific teaching needs, can be a daunting task. Here, we'll delve into the two main LMS categories: &lt;strong&gt;Proprietary&lt;/strong&gt; and &lt;strong&gt;Open Source&lt;/strong&gt;, exploring their advantages and disadvantages to empower you to make an informed decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding Open Source vs Proprietary Software
&lt;/h2&gt;

&lt;p&gt;Before diving into LMS specifics, let's establish the fundamental difference between open-source and proprietary software. &lt;strong&gt;Open-source software&lt;/strong&gt; boasts freely available source code, allowing users to modify, customize, and distribute it freely. Conversely, &lt;strong&gt;proprietary software&lt;/strong&gt; comes with restricted access to its source code, and users typically require licenses for its use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open Source LMS: Flexibility and Freedom
&lt;/h2&gt;

&lt;p&gt;Open-source LMS platforms like Moodle™ LMS, Canvas LMS, and Open edX offer a compelling proposition for organizations seeking flexibility and control. Here's a breakdown of their key benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cost-Effectiveness:&lt;/strong&gt; Open-source LMS eliminate hefty licensing fees, making them ideal for budget-conscious organizations. While the software itself is free, there are costs to consider for hosting the platform, which can be done in-house or through a third-party provider.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customization:&lt;/strong&gt; The open-source nature allows for extensive customization to tailor the platform to your specific teaching needs and workflows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integration:&lt;/strong&gt; Many open-source LMS platforms offer robust APIs that facilitate seamless integration with existing tools and resources within your organization.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community Support:&lt;/strong&gt; Open-source projects often benefit from vibrant online communities where users can seek help, share best practices, and contribute to ongoing development.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, open-source LMS also come with some drawbacks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Implementation and Maintenance:&lt;/strong&gt; Setting up, maintaining, and securing an open-source LMS might require in-house technical expertise, which can be a challenge for organizations with limited IT resources.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security Concerns:&lt;/strong&gt;  Regular security updates and maintenance become the responsibility of the user, posing a potential risk if not addressed diligently.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limited Support:&lt;/strong&gt; While community support exists, it might not offer the same level of dedicated customer service often available with proprietary solutions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Proprietary LMS: Convenience and Guaranteed Support
&lt;/h2&gt;

&lt;p&gt;Proprietary LMS platforms like Blackboard and D2L offer a more user-friendly experience with readily available functionalities and features. Consider these advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ease of Use:&lt;/strong&gt;  Proprietary LMS are typically designed with user-friendliness in mind, minimizing the need for extensive technical knowledge for implementation and use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dedicated Support:&lt;/strong&gt;  Licensed users typically benefit from dedicated customer support, offering timely assistance with troubleshooting and technical issues.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guaranteed Updates:&lt;/strong&gt;  Proprietary software vendors regularly release updates that address security vulnerabilities and enhance functionalities. Hosting is typically included as part of the licensing package, ensuring a reliable and secure environment for your LMS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, proprietary LMS come with their own set of limitations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cost:&lt;/strong&gt; Licensing fees for proprietary LMS can be significant, especially for large organizations with high user volumes, and often include hosting costs bundled into the licensing package.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vendor Lock-In:&lt;/strong&gt; Dependence on a specific vendor can limit customization options and potentially restrict future scalability.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limited Control:&lt;/strong&gt;  Proprietary systems offer less control over the source code and functionalities compared to open-source options.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  So, Which LMS is Right for You?
&lt;/h2&gt;

&lt;p&gt;The ideal LMS solution depends on various factors specific to your organization. Consider these questions for a clearer picture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Budget:&lt;/strong&gt;  Open-source LMS offer significant cost advantages, particularly for organizations with budget constraints, but don't forget to factor in potential hosting costs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Technical Expertise:&lt;/strong&gt; The availability of in-house IT resources for implementation, maintenance, and security of the LMS should be factored in when considering open-source options.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customization Needs:&lt;/strong&gt; If extensive customization is crucial for your unique teaching approach, open-source LMS provide greater flexibility.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Support Requirements:&lt;/strong&gt;  The level of dedicated support needed for smooth operation should be weighed against the resources available within your organization.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Krestomatio: Simplifying Moodle LMS for Your Organization&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you've opted for an open-source LMS, particularly Moodle LMS, &lt;a href="https://krestomatio.com"&gt;Krestomatio&lt;/a&gt; can simplify your journey. We offer a comprehensive &lt;a href="https://krestomatio.com/pricing"&gt;managed service for Moodle LMS&lt;/a&gt;, taking care of installation, hosting, optimization, and updates, allowing you to focus on delivering exceptional learning experiences.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Choosing the right LMS requires careful consideration of your organization's specific needs and resources. Both open-source and proprietary LMS offer distinct advantages and disadvantages. By understanding these key differences, you can make an informed decision that empowers your organization to deliver effective and engaging learning experiences.&lt;/p&gt;

</description>
      <category>lms</category>
      <category>elearning</category>
      <category>moodle</category>
      <category>hosting</category>
    </item>
    <item>
      <title>Presentación del Operador LMS Moodle</title>
      <dc:creator>Job Céspedes Ortiz</dc:creator>
      <pubDate>Mon, 29 Apr 2024 23:06:02 +0000</pubDate>
      <link>https://dev.to/krestomatio/presentacion-del-operador-lms-moodle-264n</link>
      <guid>https://dev.to/krestomatio/presentacion-del-operador-lms-moodle-264n</guid>
      <description>&lt;p&gt;¿Estás buscando una forma sin complicaciones de implementar el &lt;a href="https://moodle.org/"&gt;LMS Moodle&lt;/a&gt; Learning Management Systems (LMS) en &lt;a href="https://kubernetes.io/"&gt;Kubernetes&lt;/a&gt;? ¡No busques más! Krestomatio presenta el &lt;strong&gt;&lt;a href="https://github.com/krestomatio/lms-moodle-operator"&gt;Operador LMS Moodle&lt;/a&gt;&lt;/strong&gt;, un Operador de Kubernetes de código abierto diseñado para simplificar la implementación y gestión de instancias del LMS Moodle en clústeres de Kubernetes. Veamos qué hace que esta herramienta sea una gran opción para administradores y desarrolladores del LMS Moodle por igual.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Qué es el Operador LMS Moodle?
&lt;/h3&gt;

&lt;p&gt;El Operador LMS Moodle actúa como un meta-operador, orquestando la implementación y gestión de instancias del LMS Moodle en Kubernetes. Maneja toda la pila necesaria para ejecutar el LMS Moodle, incluyendo componentes como &lt;a href="https://www.postgresql.org/"&gt;Postgres&lt;/a&gt;, &lt;a href="https://docs.keydb.dev/"&gt;Keydb&lt;/a&gt;, &lt;a href="https://github.com/nfs-ganesha/nfs-ganesha"&gt;NFS-Ganesha&lt;/a&gt; y el &lt;a href="https://docs.moodle.org/"&gt;LMS Moodle&lt;/a&gt; en sí. Cada uno de estos componentes tiene su propio Operador de Kubernetes, asegurando una integración y gestión sin problemas.&lt;/p&gt;

&lt;h3&gt;
  
  
  Funciones Clave del Operador LMS Moodle:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Implementación Automatizada:&lt;/strong&gt; El Operador LMS Moodle automatiza la provisión, configuración, gestión y actualizaciones de instancias del LMS Moodle, ahorrando tiempo y esfuerzo a los administradores.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Arquitectura de Meta-Operador:&lt;/strong&gt; Actuando como un centro central, el Operador LMS Moodle utiliza una &lt;a href="https://github.com/cncf/tag-app-delivery/blob/main/operator-whitepaper/v1/Operator-WhitePaper_v1-0.md#operator-of-operators"&gt;arquitectura de Operador de Operadores&lt;/a&gt;, simplificando la gestión de toda la pila del LMS Moodle.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Gestión de Pila Completa:&lt;/strong&gt; Desde la capa web hasta la capa de base de datos y almacenamiento en caché, el Operador LMS Moodle maneja toda la pila necesaria para ejecutar el LMS Moodle, asegurando una solución integral.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Definiciones de Recursos Personalizados (CRDs):&lt;/strong&gt; El Operador LMS Moodle introduce definiciones de recursos personalizados como &lt;code&gt;LMSMoodle&lt;/code&gt; y &lt;code&gt;LMSMoodleTemplate&lt;/code&gt;, permitiendo a los usuarios definir y gestionar instancias de Moodle de forma declarativa.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ¿Por qué aprovechar Kubernetes para el LMS Moodle?
&lt;/h3&gt;

&lt;p&gt;Entendamos por qué Kubernetes es la plataforma ideal para desplegar aplicaciones como el LMS Moodle. Kubernetes ofrece una variedad de beneficios, lo que lo convierte en una opción convincente para gestionar aplicaciones en entornos multi-nube y locales:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Agnóstico de Multi-Nube:&lt;/strong&gt; Kubernetes es agnóstico de la nube, lo que significa que puede ejecutarse en varias plataformas de nube (AWS, Azure, GCP) o en infraestructura local. Esta flexibilidad garantiza implementaciones consistentes en diferentes entornos, evitando el bloqueo de proveedores.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Automatización Estandarizada:&lt;/strong&gt; Los operadores de Kubernetes amplían las capacidades de la plataforma al automatizar la lógica específica de la aplicación para la implementación, configuración y gestión del ciclo de vida. Este enfoque estandarizado reduce errores manuales y garantiza implementaciones consistentes en entornos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Gestión Declarativa:&lt;/strong&gt; Kubernetes aprovecha un enfoque declarativo para la configuración, donde defines el estado deseado de tu aplicación, y Kubernetes se encarga de alcanzar ese estado. Esto simplifica la gestión y facilita el seguimiento y la reversión de cambios.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Escalabilidad y Elasticidad:&lt;/strong&gt; Kubernetes destaca en la escalabilidad de aplicaciones según la demanda. Con operadores gestionando implementaciones, puedes escalar automáticamente tus instancias del LMS Moodle para manejar cargas de trabajo fluctuantes, optimizando la utilización de recursos.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ¿Cómo empezar?
&lt;/h3&gt;

&lt;p&gt;Empezar con el Operador LMS Moodle es fácil. Simplemente sigue estos pasos:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Instala el Operador:&lt;/strong&gt; Implementa el Operador LMS Moodle junto con sus requisitos previos opcionales y necesarios usando manifiestos de Kubernetes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Configura Plantillas:&lt;/strong&gt; Define un &lt;code&gt;LMSMoodleTemplate&lt;/code&gt; para especificar la configuración deseada para tus instancias del LMS Moodle.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Implementa Instancias del LMS Moodle:&lt;/strong&gt; Crea e implementa instancias de &lt;code&gt;LMSMoodle&lt;/code&gt; usando las plantillas configuradas y supervisa el proceso de implementación usando herramientas de Kubernetes.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Para instrucciones detalladas de instalación y configuración, consulta la &lt;a href="https://krestomatio.com/docs/lms-moodle-operator"&gt;documentación oficial&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Por qué elegir el servicio gestionado de Krestomatio?
&lt;/h3&gt;

&lt;p&gt;Si bien la autoimplementación con el Operador LMS Moodle ofrece una flexibilidad y control incomparables, Krestomatio reconoce que algunas organizaciones pueden preferir un enfoque de servicio gestionado. Con &lt;a href="https://krestomatio.com/es/pricing"&gt;el servicio gestionado de Krestomatio para el LMS Moodle&lt;/a&gt;, puedes disfrutar de una experiencia sin complicaciones sin preocuparte por las complejidades de la infraestructura subyacente y operativa.&lt;/p&gt;

&lt;p&gt;El servicio gestionado de Krestomatio abstrae las complejidades de la implementación del LMS Moodle, permitiendo que tus equipos se centren en competencias clave como el desarrollo de aplicaciones y la gestión de usuarios. Con la provisión, configuración, optimización y mantenimiento automáticos, puedes estar seguro de que tu LMS Moodle está en buenas manos.&lt;/p&gt;

&lt;p&gt;En conclusión, ya sea que elijas autoimplementar con el Operador LMS Moodle o optar por el servicio gestionado de Krestomatio, tienes garantizada una implementación del LMS Moodle confiable y escalable adaptada a tus necesidades.¡Da el primer paso hacia una experiencia del LMS Moodle sin problemas hoy mismo!&lt;/p&gt;

</description>
      <category>moodle</category>
      <category>kubernetes</category>
      <category>lms</category>
      <category>hospedaje</category>
    </item>
    <item>
      <title>Introducing LMS Moodle Operator</title>
      <dc:creator>Job Céspedes Ortiz</dc:creator>
      <pubDate>Mon, 29 Apr 2024 22:58:56 +0000</pubDate>
      <link>https://dev.to/krestomatio/introducing-lms-moodle-operator-251l</link>
      <guid>https://dev.to/krestomatio/introducing-lms-moodle-operator-251l</guid>
      <description>&lt;p&gt;Are you looking for a hassle-free way to deploy &lt;a href="https://moodle.org/"&gt;Moodle LMS&lt;/a&gt; Learning Management Systems (LMS) on &lt;a href="https://kubernetes.io/"&gt;Kubernetes&lt;/a&gt;? Look no further! Krestomatio presents the &lt;strong&gt;&lt;a href="https://github.com/krestomatio/lms-moodle-operator"&gt;LMS Moodle Operator&lt;/a&gt;&lt;/strong&gt;, an open-source Kubernetes Operator designed to simplify the deployment and management of Moodle LMS instances on Kubernetes clusters. Let's dive into what makes this tool a great choice for Moodle LMS administrators and developers alike.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is the LMS Moodle Operator?
&lt;/h3&gt;

&lt;p&gt;The LMS Moodle Operator serves as a meta-operator, orchestrating the deployment and management of Moodle LMS instances in Kubernetes. It handles the entire stack required to run Moodle LMS, including components like &lt;a href="https://www.postgresql.org/"&gt;Postgres&lt;/a&gt;, &lt;a href="https://docs.keydb.dev/"&gt;Keydb&lt;/a&gt;, &lt;a href="https://github.com/nfs-ganesha/nfs-ganesha"&gt;NFS-Ganesha&lt;/a&gt;, and &lt;a href="https://docs.moodle.org/"&gt;Moodle LMS&lt;/a&gt; itself. Each of these components has its own Kubernetes Operator, ensuring seamless integration and management.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features of LMS Moodle Operator:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Automated Deployment:&lt;/strong&gt; The LMS Moodle Operator automates the provisioning, configuration, management and upgrades of Moodle LMS instances, saving administrators valuable time and effort.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Meta-Operator Architecture:&lt;/strong&gt; Acting as a central hub, the LMS Moodle Operator utilizes an &lt;a href="https://github.com/cncf/tag-app-delivery/blob/main/operator-whitepaper/v1/Operator-WhitePaper_v1-0.md#operator-of-operators"&gt;Operator of Operators architecture&lt;/a&gt;, simplifying the management of the entire Moodle LMS stack.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Full Stack Management:&lt;/strong&gt; From the web layer to the database layer and caching, the LMS Moodle Operator handles the full stack required to run Moodle LMS, ensuring a comprehensive solution.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Custom Resource Definitions (CRDs):&lt;/strong&gt; The LMS Moodle Operator introduces custom resource definitions like &lt;code&gt;LMSMoodle&lt;/code&gt; and &lt;code&gt;LMSMoodleTemplate&lt;/code&gt;, enabling users to define and manage Moodle LMS instances declaratively.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why Leverage Kubernetes for Moodle LMS?
&lt;/h3&gt;

&lt;p&gt;Let's understand why Kubernetes serves as the ideal platform for deploying applications like Moodle LMS. Kubernetes offers a myriad of benefits, making it a compelling choice for managing applications in multi-cloud and on-premises environments:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Multi-Cloud Agnostic:&lt;/strong&gt; Kubernetes is cloud-agnostic, meaning it can run on various cloud platforms (AWS, Azure, GCP) or on-premises infrastructure. This flexibility ensures consistent deployments across different environments, avoiding vendor lock-in.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Standardized Automation:&lt;/strong&gt; Kubernetes operators extend the platform's capabilities by automating application-specific logic for deployment, configuration, and lifecycle management. This standardized approach reduces manual errors and ensures consistent deployments across environments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Declarative Management:&lt;/strong&gt; Kubernetes leverages a declarative approach to configuration, where you define the desired state of your application, and Kubernetes handles achieving that state. This simplifies management and facilitates tracking and rolling back changes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scalability and Elasticity:&lt;/strong&gt; Kubernetes excels at scaling applications based on demand. With operators managing deployments, you can automatically scale your Moodle LMS instances to handle fluctuating workloads, optimizing resource utilization.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How to Get Started?
&lt;/h3&gt;

&lt;p&gt;Getting started with the LMS Moodle Operator is easy. Simply follow these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Install the Operator:&lt;/strong&gt; Deploy the LMS Moodle Operator along with its required and optional prerequisites using Kubernetes manifests.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Configure Templates:&lt;/strong&gt; Define a &lt;code&gt;LMSMoodleTemplate&lt;/code&gt; to specify the desired configuration for your Moodle LMS instances.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Deploy Moodle LMS Instances:&lt;/strong&gt; Create and deploy &lt;code&gt;LMSMoodle&lt;/code&gt; instances using the configured templates, and monitor the deployment process using Kubernetes tools.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For detailed installation and configuration instructions, refer to the &lt;a href="https://krestomatio.com/docs/lms-moodle-operator"&gt;official documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Choose Krestomatio Managed Service?
&lt;/h3&gt;

&lt;p&gt;While self-hosting with the LMS Moodle Operator offers unparalleled flexibility and control, Krestomatio recognizes that some organizations may prefer a managed service approach. With &lt;a href="https://krestomatio.com/pricing"&gt;Krestomatio\'s managed service for Moodle LMS&lt;/a&gt;, you can enjoy a streamlined experience without worrying about the underlying infrastructure and operational complexities.&lt;/p&gt;

&lt;p&gt;Krestomatio's managed service abstracts away the intricacies of hosting Moodle LMS, allowing your teams to focus on core competencies like application development and user management. With automatic provisioning, configuration, optimization, and maintenance, you can rest assured knowing that your Moodle LMS is in good hands.&lt;/p&gt;

&lt;p&gt;In conclusion, whether you choose to self-host using the LMS Moodle Operator or opt for Krestomatio's managed service, you're guaranteed a reliable and scalable Moodle LMS deployment tailored to your needs. Take the first step towards a seamless Moodle LMS experience today!&lt;/p&gt;

</description>
      <category>moodle</category>
      <category>kubernetes</category>
      <category>lms</category>
      <category>hosting</category>
    </item>
    <item>
      <title>Building a K3s Cluster with Armbian on Orange Pi 5 Plus: A Step-by-Step Guide</title>
      <dc:creator>Job Céspedes Ortiz</dc:creator>
      <pubDate>Mon, 13 Nov 2023 15:47:24 +0000</pubDate>
      <link>https://dev.to/getdevopspro/building-a-k3s-cluster-with-armbian-on-orange-pi-5-plus-a-step-by-step-guide-18b</link>
      <guid>https://dev.to/getdevopspro/building-a-k3s-cluster-with-armbian-on-orange-pi-5-plus-a-step-by-step-guide-18b</guid>
      <description>&lt;p&gt;In this blog post, I'll be sharing my hands-on experience in building a K3s Cluster on the Orange Pi 5 Plus (opi5+) using Armbian as the Operating System (OS) and Ansible. The post is meant as a straightforward guide for anyone looking to replicate the process. I hope it proves helpful for your own setup.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Please consider that in some sections, there are references to external guides containing the respective steps.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why Armbian?
&lt;/h2&gt;

&lt;p&gt;After &lt;a href="https://dev.to/jobcespedes/building-a-k3s-cluster-with-fedora-coreos-on-orange-pi-5-plus-lessons-from-my-unsuccessful-attempt-2hf"&gt;my failed attempt using Fedora CoreOS&lt;/a&gt;, Armbian + K3s was one of the options I considered. Among the reasons behind selecting Armbian as the OS, there are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Wide Hardware Support&lt;/strong&gt;: Armbian provides support for a wide range of ARM-based single-board computers (SBCs), giving you flexibility in choosing hardware for your K3s cluster.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stability and Reliability&lt;/strong&gt;: Armbian is known for its stability and reliability, making it a suitable choice for building robust and resilient K3s clusters.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Optimized for ARM Architecture&lt;/strong&gt;: Armbian is optimized specifically for ARM architecture, ensuring efficient performance on ARM-based devices commonly used for SBCs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Regular Updates&lt;/strong&gt;: Armbian releases regular updates and security patches, helping you keep your system up-to-date and secure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Low Resource Footprint&lt;/strong&gt;: Armbian is designed to be resource-efficient, making it suitable for resource-constrained environments common in SBCs, which is ideal for setting up cost-effective K3s clusters.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Community Support&lt;/strong&gt;: Being an open-source project, Armbian has an active community that provides support, documentation, and troubleshooting assistance, which can be valuable when setting up and maintaining a K3s cluster.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Warning
&lt;/h2&gt;

&lt;p&gt;There are a couple of things you should be aware of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This is a laboratory environment.&lt;/li&gt;
&lt;li&gt;Some steps involve commands that will erase data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Assumptions
&lt;/h2&gt;

&lt;p&gt;The following assumptions have been made:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Device is Orange Pi 5+ version.&lt;/li&gt;
&lt;li&gt;There is another laptop/PC for preparations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Preparations
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Items
&lt;/h3&gt;

&lt;p&gt;The items used for this task are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1x SD Card with at least 4GB&lt;/li&gt;
&lt;li&gt;3x &lt;a href="https://www.aliexpress.com/item/1005005775077219.html" rel="noopener noreferrer"&gt;Orange Pi5 Plus 16G + 256G EMMC Module with US 5V4A Type C Power&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;3x &lt;a href="https://www.aliexpress.com/item/1005005626040665.html" rel="noopener noreferrer"&gt;Geekworm Orange Pi 5 Plus Cluster Acrylic Case with Fan and Heatsink Kit&lt;/a&gt;. Please note:

&lt;ul&gt;
&lt;li&gt;The included heatsink may not fit perfectly and might require some force to install.&lt;/li&gt;
&lt;li&gt;One of the screws on the fan may touch a clip on the heatsink and lift the top cover on one side. To address this, you can remove that specific fan screw, leaving only 3 of the 4, to prevent any unevenness in the top stack.&lt;/li&gt;
&lt;li&gt;There is no step-by-step manual or video guide available.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;1x &lt;a href="https://aliexpress.com/item/1005005118650350.html" rel="noopener noreferrer"&gt;HORACO 8 Port 2.5G Ethernet Switch&lt;/a&gt;
&lt;/li&gt;

&lt;/ul&gt;

&lt;h4&gt;
  
  
  Other items
&lt;/h4&gt;

&lt;p&gt;Two additional items were acquired, specifically for a Linux storage server and not intended for the K3s cluster. Below are the details of these items in case they serve as a reference. Kindly note that they are not meant or required for the K3s Cluster:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1x &lt;a href="https://www.aliexpress.com/item/1005002276380808.html" rel="noopener noreferrer"&gt;25G SFP28 SFP+ DAC Cable - 25GBASE-CR SFP28 to SFP28 Passive Direct Attach Copper&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;1x ConnectX-4 Lx EN CX4121A-ACAT 2-Port 10/25GbE SFP28 PCI-E&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Install Armbian
&lt;/h2&gt;

&lt;p&gt;To install Armbian, follow &lt;a href="https://docs.armbian.com/User-Guide_Getting-Started/" rel="noopener noreferrer"&gt;Armbian Quickstart&lt;/a&gt;. The steps include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Downloading Armbian image for opi5+&lt;/li&gt;
&lt;li&gt;Installing Armbian image in the SD Card&lt;/li&gt;
&lt;li&gt;Booting from SD card, do basic config, and install image in opi5+ eMMC with: &lt;code&gt;armbian-install&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Powering off&lt;/li&gt;
&lt;li&gt;Removing SD card&lt;/li&gt;
&lt;li&gt;Booting into eMMC and Armbian&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Other Basic Config
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Remove the SD card&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Boot into eMMC and configure basic settings before proceeding further. Access using SSH keys without asking for a password is required for installing K3s using ansible. The other steps are optional:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Get root access&lt;/li&gt;
&lt;li&gt;Change root password&lt;/li&gt;
&lt;li&gt;Change user password&lt;/li&gt;
&lt;li&gt;Upgrade OS and packages&lt;/li&gt;
&lt;li&gt;Allow sudo without password&lt;/li&gt;
&lt;li&gt;Allow auth using SSH keys&lt;/li&gt;
&lt;li&gt;Customize /etc/hosts&lt;/li&gt;
&lt;li&gt;Create network teaming/bonding&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Below are the commands to perform the steps listed above. Change variable values according to your context. Replicate them in each of the other devices. Remember you need root access:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;## as root.&lt;/span&gt;
&lt;span class="c"&gt;# sudo bash&lt;/span&gt;

&lt;span class="c"&gt;## change passwords&lt;/span&gt;
&lt;span class="c"&gt;# passwd root&lt;/span&gt;
&lt;span class="c"&gt;# passwd ${opi_hostname}&lt;/span&gt;

&lt;span class="c"&gt;## upgrade pkgs&lt;/span&gt;
apt update
&lt;span class="nv"&gt;DEBIAN_FRONTEND&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;noninteractive apt upgrade &lt;span class="nt"&gt;-y&lt;/span&gt;

&lt;span class="c"&gt;## vars /CHANGE_THEM&lt;/span&gt;
&lt;span class="nv"&gt;opi_username&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;changeme
&lt;span class="nv"&gt;opi_hostname&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;changeme-01
&lt;span class="nv"&gt;opi_domain&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;change.me
&lt;span class="nv"&gt;opi_fqdn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;opi_hostname&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;.&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;opi_domain&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
&lt;span class="nv"&gt;opi_cidr&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;192.168.1.10/24
&lt;span class="nv"&gt;opi_gw&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;192.168.1.1
&lt;span class="nv"&gt;opi_dns&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'8.8.8.8 8.8.4.4'&lt;/span&gt;
&lt;span class="nv"&gt;opi_ssh_authorized_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'ssh-rsa CHANGEME'&lt;/span&gt;

&lt;span class="c"&gt;## sudo&lt;/span&gt;
&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;_EOF&lt;/span&gt;&lt;span class="sh"&gt; &amp;gt; /etc/sudoers.d/10-opi5-user
# User rules for &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;opi_username&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;
&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;opi_username&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="sh"&gt; ALL=(ALL) NOPASSWD:ALL
&lt;/span&gt;&lt;span class="no"&gt;_EOF

&lt;/span&gt;&lt;span class="c"&gt;## ssh&lt;/span&gt;
&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /home/&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;opi_username&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;/.ssh
&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;_EOF&lt;/span&gt;&lt;span class="sh"&gt; &amp;gt; /home/&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;opi_username&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;/.ssh/authorized_keys
ssh-rsa &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;opi_ssh_authorized_key&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;
&lt;/span&gt;&lt;span class="no"&gt;_EOF
&lt;/span&gt;&lt;span class="nb"&gt;chmod &lt;/span&gt;0700 &lt;span class="nt"&gt;-R&lt;/span&gt; /home/&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;opi_username&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;/.ssh
&lt;span class="nb"&gt;chown&lt;/span&gt; &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;opi_username&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;:&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;opi_username&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt; &lt;span class="nt"&gt;-R&lt;/span&gt; /home/&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;opi_username&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;/.ssh
&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s2"&gt;"s@#PasswordAuthentication.*@PasswordAuthentication no@"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  /etc/ssh/sshd_config
systemctl restart ssh

&lt;span class="c"&gt;## /etc/hosts&lt;/span&gt;
&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;_EOF&lt;/span&gt;&lt;span class="sh"&gt; &amp;gt; /etc/hosts
127.0.0.1   localhost
127.0.1.1   &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;opi_fqdn&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="sh"&gt; &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;opi_hostname&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;
::1         localhost ip6-localhost ip6-loopback &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;opi_fqdn&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="sh"&gt; &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;opi_hostname&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;
fe00::0     ip6-localnet
ff00::0     ip6-mcastprefix
ff02::1     ip6-allnodes
ff02::2     ip6-allrouters
&lt;/span&gt;&lt;span class="no"&gt;_EOF

&lt;/span&gt;&lt;span class="c"&gt;## hostname&lt;/span&gt;
hostnamectl set-hostname &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;opi_hostname&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;## lock root password&lt;/span&gt;
passwd &lt;span class="nt"&gt;-l&lt;/span&gt; root

&lt;span class="c"&gt;## network bonding&lt;/span&gt;
&lt;span class="c"&gt;# workaround: https://github.com/coreos/fedora-coreos-tracker/issues/919&lt;/span&gt;
&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;_EOF&lt;/span&gt;&lt;span class="sh"&gt; &amp;gt; /etc/systemd/network/98-bond-inherit-mac.link
[Match]
Type=bond

[Link]
MACAddressPolicy=none
&lt;/span&gt;&lt;span class="no"&gt;_EOF

&lt;/span&gt;&lt;span class="c"&gt;# add bond interface&lt;/span&gt;
&lt;span class="c"&gt;# this could cause disconection&lt;/span&gt;
nmcli connection add &lt;span class="nb"&gt;type &lt;/span&gt;bond con-name bond0 ifname bond0 &lt;span class="se"&gt;\&lt;/span&gt;
  bond.options &lt;span class="s2"&gt;"mode=balance-alb,miimon=1000"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  ipv4.addresses &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;opi_cidr&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; ipv4.gateway &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;opi_gw&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  ipv4.dns &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;opi_dns&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; ipv4.dns-search &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;opi_domain&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  ipv4.method manual bond.options &lt;span class="s2"&gt;"mode=balance-alb,miimon=1000"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  mtu 9000
&lt;span class="c"&gt;# add current devices&lt;/span&gt;
nmcli connection add &lt;span class="nb"&gt;type &lt;/span&gt;ethernet slave-type bond &lt;span class="se"&gt;\&lt;/span&gt;
  con-name bond0-port1 ifname enP3p49s0 master bond0 mtu 9000
nmcli connection add &lt;span class="nb"&gt;type &lt;/span&gt;ethernet slave-type bond &lt;span class="se"&gt;\&lt;/span&gt;
  con-name bond0-port2 ifname enP4p65s0 master bond0 mtu 9000
&lt;span class="c"&gt;# delete old connections&lt;/span&gt;
nmcli connection delete &lt;span class="s2"&gt;"Wired connection 1"&lt;/span&gt;
nmcli connection delete &lt;span class="s2"&gt;"Wired connection 2"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install K3s
&lt;/h2&gt;

&lt;p&gt;Now you are ready to install K3s, using Ansible and &lt;a href="https://github.com/PyratLabs/ansible-role-k3s" rel="noopener noreferrer"&gt;a K3s role&lt;/a&gt;. Perform the following steps on a system other than your Opi5+ devices:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install &lt;a href="https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html" rel="noopener noreferrer"&gt;Ansible&lt;/a&gt; and the &lt;a href="https://github.com/PyratLabs/ansible-role-k3s" rel="noopener noreferrer"&gt;K3s role&lt;/a&gt;.

&lt;ul&gt;
&lt;li&gt;For &lt;a href="https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html" rel="noopener noreferrer"&gt;installing Ansible&lt;/a&gt;, you could run &lt;code&gt;pip install ansible&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;For installing the &lt;a href="https://github.com/PyratLabs/ansible-role-k3s" rel="noopener noreferrer"&gt;K3s role&lt;/a&gt;, you could run &lt;code&gt;ansible-galaxy role install xanmanning.k3s&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Install a Highly Available (HA) K3s Cluster with embedded etcd, following &lt;a href="https://github.com/PyratLabs/ansible-role-k3s/blob/main/documentation/quickstart-ha-cluster.md" rel="noopener noreferrer"&gt;these steps&lt;/a&gt;. They include:

&lt;ul&gt;
&lt;li&gt;Creating an inventory with your opi5+ devices&lt;/li&gt;
&lt;li&gt;Creating a playbook, using that inventory and &lt;a href="https://github.com/PyratLabs/ansible-role-k3s" rel="noopener noreferrer"&gt;the K3s role&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Running the playbook&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Enjoy!
&lt;/h2&gt;

&lt;p&gt;To wrap it up, building the K3s Cluster on the Orange Pi 5 Plus was a hands-on experience. Now I will use it to develop and test &lt;a href="https://krestomatio.com/" rel="noopener noreferrer"&gt;Moodle™ instances managed by Krestomatio&lt;/a&gt; &lt;a href="https://github.com/krestomatio/" rel="noopener noreferrer"&gt;operators for Kubernetes&lt;/a&gt;. I hope this guide makes it easy for you to do the same. Good luck with your K3s Cluster setup on the Orange Pi 5 Plus, and I hope you too have fun!&lt;/p&gt;

</description>
      <category>orangepi</category>
      <category>armbian</category>
      <category>kubernetes</category>
      <category>krestomatio</category>
    </item>
    <item>
      <title>Building a K3s Cluster with Fedora CoreOS on Orange Pi 5 Plus: Lessons from My Unsuccessful Attempt</title>
      <dc:creator>Job Céspedes Ortiz</dc:creator>
      <pubDate>Mon, 13 Nov 2023 15:43:17 +0000</pubDate>
      <link>https://dev.to/getdevopspro/building-a-k3s-cluster-with-fedora-coreos-on-orange-pi-5-plus-lessons-from-my-unsuccessful-attempt-2hf</link>
      <guid>https://dev.to/getdevopspro/building-a-k3s-cluster-with-fedora-coreos-on-orange-pi-5-plus-lessons-from-my-unsuccessful-attempt-2hf</guid>
      <description>&lt;p&gt;This blog post summarizes my unsuccessful attempt to build a K3s Cluster on the Orange Pi 5 Plus (opi5+) using Fedora CoreOS (FCOS). It also outlines the steps taken before arriving at that conclusion and presents a list of possible alternatives to achieve a similar result.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Fedora CoreOS?
&lt;/h2&gt;

&lt;p&gt;The main reasons behind selecting FCOS as the Operating System (OS) were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Automatic Updates&lt;/strong&gt;: Fedora CoreOS follows an automated update model, and reboots can also be orchestrated using Zincati.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Immutable OS&lt;/strong&gt;: The operating system is designed to be immutable, meaning that changes are made by replacing the entire OS image rather than modifying the existing system. This helps improve stability and reproducibility.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Container-Optimized&lt;/strong&gt;: It is optimized for running containers and container orchestration platforms like Kubernetes. This makes it well-suited for modern cloud-native applications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;RPM-OSTree&lt;/strong&gt;: Fedora CoreOS uses RPM-OSTree, which allows for atomic updates and rollbacks, making it easier to maintain system consistency and recover from issues.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;: Frequent updates and immutability contribute to a more secure system. Security patches are quickly applied to minimize vulnerabilities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Community, Ecosystem, and Open Source&lt;/strong&gt;: Being part of the Fedora Project and Open Source, Fedora CoreOS benefits from a vibrant community and a rich ecosystem of tools and applications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Don't start from scratch&lt;/strong&gt;: As part of &lt;a href="https://krestomatio.com/" rel="noopener noreferrer"&gt;Krestomatio tools for automating infrastructure&lt;/a&gt;, a &lt;a href="https://registry.terraform.io/modules/krestomatio/butane-snippets/ct/latest/submodules/k3s" rel="noopener noreferrer"&gt;terraform module&lt;/a&gt; was developed to help the deployment of a K3s Cluster using FCOS. The module outputs ignitions (ign) files required, just by setting some variables.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Warning
&lt;/h2&gt;

&lt;p&gt;There are a couple of things you should be aware of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This is a laboratory environment.&lt;/li&gt;
&lt;li&gt;Ensure that you use the correct official images and URL for your device model, where aplicable. For instance, the opi5+ images and urls differs from the opi5 ones.&lt;/li&gt;
&lt;li&gt;Some steps involve commands that will erase data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Assumptions
&lt;/h2&gt;

&lt;p&gt;The following assumptions have been made:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Device is Orange Pi 5+ version.&lt;/li&gt;
&lt;li&gt;There is another Fedora-based laptop/PC for preparations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Preparations
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Items
&lt;/h3&gt;

&lt;p&gt;The items used for this task are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1x SD Card with at least 4GB&lt;/li&gt;
&lt;li&gt;1x USB Drive with at least 4GB&lt;/li&gt;
&lt;li&gt;1x Orange Pi5 Plus 16G + 256G EMMC&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  SD Card
&lt;/h3&gt;

&lt;p&gt;For the SD card:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check SD card requirements in &lt;a href="http://www.orangepi.org/" rel="noopener noreferrer"&gt;opi5+ manual&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Install OS image, following the &lt;a href="http://www.orangepi.org/" rel="noopener noreferrer"&gt;opi5 official docs for burning it to the SD&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  USB Drive
&lt;/h3&gt;

&lt;p&gt;In the USB drive;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copy &lt;a href="https://github.com/edk2-porting/edk2-rk3588/releases" rel="noopener noreferrer"&gt;EDK2 latest release&lt;/a&gt;, naming it &lt;code&gt;edk2-firmware.img&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Copy FCOS image, generate it with the step below, naming it &lt;code&gt;fcos.img&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  FCOS image
&lt;/h3&gt;

&lt;p&gt;To prepare the FCOS image:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create an ignition file and store it in &lt;code&gt;/tmp/config.ign&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Create FCOS image
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create FCOS image&lt;/span&gt;
&lt;span class="nv"&gt;STREAM&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;next &lt;span class="c"&gt;# CHANGEME: `stable` or `testing` or `next`&lt;/span&gt;
&lt;span class="nv"&gt;FCOS_IMG&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;fcos.img
&lt;span class="nv"&gt;IGN_FILE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/config.ign &lt;span class="c"&gt;# CHANGEME&lt;/span&gt;
&lt;span class="nv"&gt;CONTAINER_BUILDER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;podman &lt;span class="c"&gt;# CHANGEME: `podman` or `docker`&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;losetup &lt;span class="nt"&gt;-D&lt;/span&gt;
&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PWD&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;FCOS_IMG&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;truncate&lt;/span&gt; &lt;span class="nt"&gt;-s&lt;/span&gt; 3GB &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PWD&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;FCOS_IMG&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;losetup &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="nt"&gt;-P&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PWD&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;FCOS_IMG&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;sudo&lt;/span&gt; &lt;span class="nv"&gt;$CONTAINER_BUILDER&lt;/span&gt; run &lt;span class="nt"&gt;--pull&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;always &lt;span class="nt"&gt;--privileged&lt;/span&gt; &lt;span class="nt"&gt;--rm&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; /dev:/dev &lt;span class="nt"&gt;-v&lt;/span&gt; /run/udev:/run/udev &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="nv"&gt;$IGN_FILE&lt;/span&gt;:&lt;span class="nv"&gt;$IGN_FILE&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  quay.io/coreos/coreos-installer:release &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--firstboot-args&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;console&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;tty0 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"metal"&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; aarch64 &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nv"&gt;$STREAM&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="nv"&gt;$IGN_FILE&lt;/span&gt; /dev/loop0
&lt;span class="nb"&gt;sudo sync
sudo &lt;/span&gt;losetup &lt;span class="nt"&gt;-D&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  First Boot
&lt;/h2&gt;

&lt;p&gt;Once preparations are done, continue:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Insert and boot from SD Card&lt;/li&gt;
&lt;li&gt;Insert USB drive and mount it to &lt;code&gt;/mnt&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Copy EDK2 to SPI, following steps below
&lt;/li&gt;
&lt;li&gt;Copy FCOS image to eMMC, following steps below
&lt;/li&gt;
&lt;li&gt;Power off&lt;/li&gt;
&lt;li&gt;Remove SD Card&lt;/li&gt;
&lt;li&gt;Boot from eMMC&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  EDK2 to SPI
&lt;/h3&gt;

&lt;p&gt;To install EDK2 to SPI:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Erase SPI&lt;/li&gt;
&lt;li&gt;Copy EDK2 to SPI
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# erase SPI
sudo dd if=/dev/zero of=/dev/mtdblock0
sudo sync
# copy EDK2 to SPI
sudo dd if=edk2-firmware.img of=/dev/mtdblock0
sudo sync
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  FCOS image to eMMC
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Identify eMMC device&lt;/li&gt;
&lt;li&gt;Erase eMMC device&lt;/li&gt;
&lt;li&gt;Copy FCOS image to eMMC
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# identify emmc device. Ex: /dev/mmcblk1
ls /dev/mmcblk*boot0 | cut -c1-12
# erase
sudo dd bs=1M if=/dev/zero of=/dev/mmcblk1 count=1000 status=progress
sudo sync
# copy
sudo dd bs=1M if=fcos.img of=/dev/mmcblk1 count=1000 status=progress
sudo sync
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Result
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Remember to power off and remove the SD card. Then test booting from FCOS image in eMMC on the opi5+.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The generic FCOS image does not work out of the box. It throws the error &lt;code&gt;Timed out wating for device&lt;/code&gt; for boot and root devices and then enters emergency mode. Attempts to run using F39 and F40 were made, with the same result though. I suspect that the eMMC is not being recognized. I did not proceed beyond this point. Instead, I began considering alternatives to achieve my goal of building a K3s cluster.&lt;/p&gt;

&lt;h2&gt;
  
  
  Alternatives
&lt;/h2&gt;

&lt;p&gt;After this result, there are at least four (4) alternatives I am considering to build a K3s Cluster using opi5+ devices. Those are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use official or third party images + K3s&lt;/li&gt;
&lt;li&gt;Use &lt;a href="https://github.com/Joshua-Riek/ubuntu-rockchip#installation" rel="noopener noreferrer"&gt;Ubuntu + Libvirt&lt;/a&gt; + Fedora CoreOS VM + K3s&lt;/li&gt;
&lt;li&gt;Build a custom Fedora CoreOS, with &lt;a href="https://github.com/orangepi-xunlong/linux-orangepi" rel="noopener noreferrer"&gt;Orange Pi linux Kernel&lt;/a&gt; + K3s&lt;/li&gt;
&lt;li&gt;Wait for full &lt;a href="https://gitlab.collabora.com/hardware-enablement/rockchip-3588/notes-for-rockchip-3588/-/blob/main/mainline-status.md" rel="noopener noreferrer"&gt;RK3588 Mainline Kernel support&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>orangepi</category>
      <category>fedora</category>
      <category>kubernetes</category>
      <category>krestomatio</category>
    </item>
    <item>
      <title>Running Virtual Machines on Orange Pi 5 with Libvirt and Ubuntu</title>
      <dc:creator>Job Céspedes Ortiz</dc:creator>
      <pubDate>Thu, 09 Nov 2023 21:49:11 +0000</pubDate>
      <link>https://dev.to/getdevopspro/running-virtual-machines-on-orange-pi-5-with-libvirt-and-ubuntu-3n33</link>
      <guid>https://dev.to/getdevopspro/running-virtual-machines-on-orange-pi-5-with-libvirt-and-ubuntu-3n33</guid>
      <description>&lt;p&gt;In this guide, we'll walk through the steps to install libvirt on the Single Board Computer (SBC) Orange Pi 5 (opi5) for running virtual machines (VMs). I've compiled these steps after dealing with the opi5 instructions, searching on the internet and communities, and my own experience. I hope this guide helps someone accomplish this task more quickly than I did initially.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing Orange Pi 5
&lt;/h2&gt;

&lt;p&gt;The first step is to install an Operating System (OS) on the opi5. You have several options here: you can use official images, third-party images, or build your own. In this case, I used a third-party image, &lt;a href="https://github.com/Joshua-Riek/ubuntu-rockchip" rel="noopener noreferrer"&gt;Ubuntu&lt;/a&gt;. Additionally, I used a PCIe NVMe SSD for storage. Here are the installation steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://github.com/Joshua-Riek/ubuntu-rockchip#installation" rel="noopener noreferrer"&gt;Install Ubuntu&lt;/a&gt; on the NVMe, following the &lt;a href="http://www.orangepi.org/" rel="noopener noreferrer"&gt;opi5 official docs for burning it to the SSD&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Apply basic configurations, including:

&lt;ul&gt;
&lt;li&gt;Network&lt;/li&gt;
&lt;li&gt;Locale&lt;/li&gt;
&lt;li&gt;Keyboard&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Perform a package update/upgrade.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Installing Libvirt
&lt;/h2&gt;

&lt;p&gt;To install libvirt, you will need to install some other related packages and add a user to the libvirt group. You may also consider applying a workaround for running UEFI VMs. Afterward, you can easily test with a Cirros VM. Follow these steps to accomplish this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;## `--no-install-recommends` for avoiding recommended pkgs in a server&lt;/span&gt;
&lt;span class="c"&gt;## alternative or additional pkgs&lt;/span&gt;
&lt;span class="c"&gt;## `qemu-system`  for all qemu architecture or&lt;/span&gt;
&lt;span class="c"&gt;## `qemu-efi-arm` for arm 32bits efi&lt;/span&gt;
&lt;span class="c"&gt;## `u-boot-qemu` if planning to use uboot&lt;/span&gt;
&lt;span class="c"&gt;# install pkgs in ubuntu 22.04&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--no-install-recommends&lt;/span&gt; libvirt-daemon &lt;span class="se"&gt;\&lt;/span&gt;
  libvirt-daemon-system libvirt-clients qemu-kvm qemu-system-arm &lt;span class="se"&gt;\&lt;/span&gt;
  qemu-utils qemu-efi-aarch64 qemu-efi-arm arm-trusted-firmware &lt;span class="se"&gt;\&lt;/span&gt;
  seabios bridge-utils virtinst dnsmasq-base ipxe-qemu

&lt;span class="c"&gt;# add user to libvirt group&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;adduser &lt;span class="nv"&gt;$USER&lt;/span&gt; libvirt
newgrp libvirt
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;LIBVIRT_DEFAULT_URI&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;qemu:///system

&lt;span class="c"&gt;# workaround&lt;/span&gt;
&lt;span class="c"&gt;# set `60-edk2-aarch64.json` as the default uefi configuration&lt;/span&gt;
&lt;span class="c"&gt;# using a symlink to place the descritor file first&lt;/span&gt;
&lt;span class="c"&gt;# https://bugzilla.redhat.com/show_bug.cgi?id=1564270&lt;/span&gt;
&lt;span class="nb"&gt;sudo ln&lt;/span&gt; &lt;span class="nt"&gt;-s&lt;/span&gt;  /usr/share/qemu/firmware/60-edk2-aarch64.json &lt;span class="se"&gt;\&lt;/span&gt;
  /usr/share/qemu/firmware/00-edk2-aarch64.json

&lt;span class="c"&gt;# test cirros VM&lt;/span&gt;
&lt;span class="c"&gt;## download cirros image&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;wget http://download.cirros-cloud.net/0.5.2/cirros-0.5.2-aarch64-disk.img &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-P&lt;/span&gt; /var/lib/libvirt/images
&lt;span class="c"&gt;## create root qcow2 from image&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;qemu-img create &lt;span class="nt"&gt;-b&lt;/span&gt; /var/lib/libvirt/images/cirros-0.5.2-aarch64-disk.img &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-F&lt;/span&gt; qcow2 &lt;span class="nt"&gt;-f&lt;/span&gt; qcow2 /var/lib/libvirt/images/test.qcow2
&lt;span class="c"&gt;## autostart default net&lt;/span&gt;
virsh net-autostart &lt;span class="nt"&gt;--network&lt;/span&gt; default
virsh net-start default
&lt;span class="c"&gt;## install test VM in ubuntu host&lt;/span&gt;
virt-install &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="nb"&gt;test&lt;/span&gt; &lt;span class="nt"&gt;--memory&lt;/span&gt; 1024 &lt;span class="nt"&gt;--arch&lt;/span&gt; aarch64 &lt;span class="nt"&gt;--vcpus&lt;/span&gt; 1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--disk&lt;/span&gt; /var/lib/libvirt/images/test.qcow2,device&lt;span class="o"&gt;=&lt;/span&gt;disk,bus&lt;span class="o"&gt;=&lt;/span&gt;virtio &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--os-variant&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;cirros0.5.2 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--nographic&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--boot&lt;/span&gt; &lt;span class="nv"&gt;loader&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/usr/share/AAVMF/AAVMF_CODE.fd,loader.readonly&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;yes&lt;/span&gt;,loader.type&lt;span class="o"&gt;=&lt;/span&gt;pflash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  On Debian?
&lt;/h2&gt;

&lt;p&gt;I attempted to install libvirt on a Debian image on the opi5, but I was not successful. I subsequently switched to Ubuntu. Here are the steps that I used to install libvirt on Debian, in case anyone wants to explore that route.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--no-install-recommends&lt;/span&gt; qemu-system-arm libvirt-clients &lt;span class="se"&gt;\&lt;/span&gt;
  libvirt-daemon-system bridge-utils virtinst libvirt-daemon qemu-utils &lt;span class="se"&gt;\&lt;/span&gt;
  qemu-efi-aarch64
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Have Fun
&lt;/h2&gt;

&lt;p&gt;Originally, my goal with a Single Board Computer (SBC) was to unwind and take a break from the usual work routine. I opted for an opi5 in the way. However, lo and behold, here I am, enabling virtualization, almost like it's a rarity in my line of work over at &lt;a href="https://krestomatio.com/" rel="noopener noreferrer"&gt;Krestomatio&lt;/a&gt;! It's been a fun experience, nonetheless.&lt;/p&gt;

</description>
      <category>orangepi</category>
      <category>virtualization</category>
      <category>ubuntu</category>
      <category>krestomatio</category>
    </item>
    <item>
      <title>A KeyDB Operator for Kubernetes</title>
      <dc:creator>Job Céspedes Ortiz</dc:creator>
      <pubDate>Sun, 23 Jan 2022 05:53:46 +0000</pubDate>
      <link>https://dev.to/jobcespedes/a-keydb-operator-for-kubernetes-1034</link>
      <guid>https://dev.to/jobcespedes/a-keydb-operator-for-kubernetes-1034</guid>
      <description>&lt;p&gt;&lt;a href="https://keydb.dev/"&gt;KeyDB&lt;/a&gt; is a multithreading, drop-in alternative to Redis. The &lt;a href="https://github.com/krestomatio/keydb-operator"&gt;Keydb-operator&lt;/a&gt; can easily create either a standalone instance (1 replica) or a multimaster setup (3 replicas) of the &lt;a href="https://github.com/EQ-Alpha/KeyDB"&gt;KeyDB in-memory database&lt;/a&gt;. When KeyDB is in &lt;a href="https://docs.keydb.dev/docs/multi-master/"&gt;multimaster mode&lt;/a&gt;, it is possible to have more than one master, allowing for read/write operations across all of them. This capability enhances high availability and fault tolerance.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This operator is part of the Kubernetes operators and tools developed by &lt;a href="https://krestomatio.com"&gt;Krestomatio, a managed service for Moodle™ instances&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;The Kubernetes Operator in this project is in &lt;strong&gt;Alpha&lt;/strong&gt; version. &lt;strong&gt;Use at your own risk&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Check out the &lt;a href="//config/samples/keydb_v1alpha1_keydb.yaml"&gt;sample CR&lt;/a&gt;. Follow the next steps to first install the KeyDB Operatorn and then a KeyDB instance:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# install the operator&lt;/span&gt;
make deploy

&lt;span class="c"&gt;# create KeyDB instance from sample&lt;/span&gt;
kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; config/samples/keydb_v1alpha1_keydb.yaml

&lt;span class="c"&gt;# follow/check KeyDB operator logs&lt;/span&gt;
kubectl &lt;span class="nt"&gt;-n&lt;/span&gt; keydb-operator-system logs &lt;span class="nt"&gt;-l&lt;/span&gt; control-plane&lt;span class="o"&gt;=&lt;/span&gt;controller-manager &lt;span class="nt"&gt;-c&lt;/span&gt; manager  &lt;span class="nt"&gt;-f&lt;/span&gt;

&lt;span class="c"&gt;# follow sample CR status&lt;/span&gt;
kubectl get keydb keydb-sample &lt;span class="nt"&gt;-o&lt;/span&gt; yaml &lt;span class="nt"&gt;-w&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Uninstall
&lt;/h2&gt;

&lt;p&gt;Follow the next steps to uninstall it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# delete the KeyDB object&lt;/span&gt;
&lt;span class="c"&gt;# CAUTION with data loss&lt;/span&gt;
kubectl delete &lt;span class="nt"&gt;-f&lt;/span&gt; config/samples/keydb_v1alpha1_keydb.yaml

&lt;span class="c"&gt;# uninstall the operator&lt;/span&gt;
make undeploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Advanced Options
&lt;/h3&gt;

&lt;p&gt;For different or advanced configuration via the CR spec, take a look at the &lt;a href="https://github.com/krestomatio/ansible-collection-k8s/blob/master/roles/v1alpha1/database/keydb/defaults/main/keydb.yml"&gt;variables available&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Want to contribute?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use github issues to report bugs, send enhancement, new feature requests and questions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://krestomatio.com/about"&gt;About Krestomatio&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://krestomatio.com/"&gt;Krestomatio is a managed service for Moodle™ e-learning platforms&lt;/a&gt;. It allows you to have open-source instances managed by a service optimized for Moodle™, complete with an additional plugin pack and customization options.&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>keydb</category>
      <category>redis</category>
      <category>krestomatio</category>
    </item>
    <item>
      <title>NFS Operator with Extra Functionality</title>
      <dc:creator>Job Céspedes Ortiz</dc:creator>
      <pubDate>Mon, 05 Jul 2021 22:27:04 +0000</pubDate>
      <link>https://dev.to/jobcespedes/nfs-operator-with-extra-functionality-on-top-of-rook-nfs-10j8</link>
      <guid>https://dev.to/jobcespedes/nfs-operator-with-extra-functionality-on-top-of-rook-nfs-10j8</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/krestomatio/nfs-operator"&gt;NFS Operator&lt;/a&gt; creates NFSv4 ganesha servers in Kubernetes, allowing to set ownership/permissions of their NFS export directory; to autoexpand their PVC; and to enable RWX storage from them:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It can set ownership and permissions for export parent directory of the (NFS) Ganesha server.&lt;/li&gt;
&lt;li&gt;It is able to expand/adjust the PVC size of the (NFS) Ganesha server automatically, as it grows.&lt;/li&gt;
&lt;li&gt;It could autogenerate an StorageClass that uses the (NFS) Ganesha server for RWX storage.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;It is based on &lt;a href="https://sdk.operatorframework.io/docs/building-operators/ansible/tutorial/"&gt;Ansible Operator SDK&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This operator is part of the Kubernetes operators and tools developed by &lt;a href="https://krestomatio.com"&gt;Krestomatio, a managed service for Moodle™ instances&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Dependencies
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;A previous version had NFS Rook as a dependency. However, it is no longer the case&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/kubernetes-csi/csi-driver-nfs"&gt;NFS CSI&lt;/a&gt; driver &lt;code&gt;version &amp;gt;= v3.0.0&lt;/code&gt; for dynamic provisioning&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;The Kubernetes Operator in this project is in &lt;strong&gt;Alpha&lt;/strong&gt; version. &lt;strong&gt;Use at your own risk&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Follow the next steps to install the NFS Operator:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# install this operator&lt;/span&gt;
make deploy

&lt;span class="c"&gt;# create a nfs ganesha server cr/object from sample&lt;/span&gt;
kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; config/samples/nfs_v1alpha1_ganesha.yaml

&lt;span class="c"&gt;# follow/check nfs operator logs&lt;/span&gt;
kubectl &lt;span class="nt"&gt;-n&lt;/span&gt; nfs-operator-system logs &lt;span class="nt"&gt;-l&lt;/span&gt; control-plane&lt;span class="o"&gt;=&lt;/span&gt;controller-manager &lt;span class="nt"&gt;-c&lt;/span&gt; manager  &lt;span class="nt"&gt;-f&lt;/span&gt;

&lt;span class="c"&gt;# follow sample nfs ganesha server cr/object status&lt;/span&gt;
kubectl get ganesha ganesha-sample &lt;span class="nt"&gt;-o&lt;/span&gt; yaml &lt;span class="nt"&gt;-w&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Uninstall
&lt;/h2&gt;

&lt;p&gt;Follow the next steps to uninstall it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# delete the nfs ganesha server cr/object&lt;/span&gt;
&lt;span class="c"&gt;# CAUTION with data loss&lt;/span&gt;
kubectl delete &lt;span class="nt"&gt;-f&lt;/span&gt; config/samples/nfs_v1alpha1_ganesha.yaml

&lt;span class="c"&gt;# uninstall this operator&lt;/span&gt;
make undeploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Configuration Options
&lt;/h2&gt;

&lt;p&gt;For a Custom Resource (CR) sample of a (NFS) Ganesha server, see: &lt;a href="//config/samples/nfs_v1alpha1_ganesha.yaml"&gt;sample&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Ownership/Permissions
&lt;/h3&gt;

&lt;p&gt;To set export folder ownership, set &lt;em&gt;ganeshaExportUserid&lt;/em&gt; and &lt;em&gt;ganeshaExportGroupid&lt;/em&gt;. For export folder permissions, set &lt;em&gt;ganeshaExportMode&lt;/em&gt;. For instance:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="c1"&gt;# Ownership/permissions&lt;/span&gt;
  &lt;span class="c1"&gt;## Set export folder userid to 48&lt;/span&gt;
  &lt;span class="na"&gt;ganeshaExportUserid&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;48&lt;/span&gt;
  &lt;span class="c1"&gt;## Set export folder groupid to 0&lt;/span&gt;
  &lt;span class="na"&gt;ganeshaExportGroupid&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;
  &lt;span class="c1"&gt;## Set export folder permissions to 775&lt;/span&gt;
  &lt;span class="na"&gt;ganeshaExportMode&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;755&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Autoexpansion
&lt;/h3&gt;

&lt;p&gt;When autoexpansion is enabled (&lt;em&gt;ganeshaPvcDataAutoexpansion&lt;/em&gt;), if storage available is less than 20% or below &lt;em&gt;ganeshaPvcDataAutoexpansionIncrementGib&lt;/em&gt;, PVC storage size is auto incremented according to &lt;em&gt;ganeshaPvcDataAutoexpansionIncrementGib&lt;/em&gt;. However, it will not be increment beyond &lt;em&gt;ganeshaPvcDataAutoexpansionCapGib&lt;/em&gt; (see related &lt;a href="https://github.com/krestomatio/ansible-collection-k8s/blob/c8768df3d9af4ddf7258c31d37cc3f54cc5a4cf6/plugins/module_utils/storage.py#L62"&gt;function&lt;/a&gt;). The following is a config example for it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="c1"&gt;# Autoexpansion&lt;/span&gt;
  &lt;span class="c1"&gt;## Enable autoexpansion&lt;/span&gt;
  &lt;span class="na"&gt;ganeshaPvcDataAutoexpansion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
  &lt;span class="c1"&gt;## Every time autoexpansion is required, increment 5 GiB&lt;/span&gt;
  &lt;span class="na"&gt;ganeshaPvcDataAutoexpansionIncrementGib&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;
  &lt;span class="c1"&gt;### But no more than 25 GiB&lt;/span&gt;
  &lt;span class="na"&gt;ganeshaPvcDataAutoexpansionCapGib&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;25&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Please, you should take into consideration the following:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Not all types of storage are compatible. For instance, hostpath is not.&lt;/li&gt;
&lt;li&gt;Kubernetes cluster and PVC must support expansion of volumes&lt;/li&gt;
&lt;li&gt;In older K8s versions, (NFS) Ganesha server pod may be restart when autoexpansion is enabled if Kubernetes feature gate &lt;em&gt;ExpandInUsePersistentVolumes&lt;/em&gt; is false. See: Kubernetes &lt;a href="https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/"&gt;Feature Gates&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  RWX Storage
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;StorageClass&lt;/code&gt; (SC) autocreation could be specified in the (NFS) Ganesha server CR. The default is to generate one SC.&lt;/p&gt;

&lt;p&gt;SC default name is defined using (NFS) Ganesha server CR name + suffix &lt;strong&gt;-nfs-sc&lt;/strong&gt;. For example: if a CR is created with the name: &lt;a href="//config/samples/nfs_v1alpha1_ganesha.yaml"&gt;&lt;strong&gt;ganesha-sample&lt;/strong&gt;&lt;/a&gt;, a storage class named &lt;strong&gt;ganesha-sample-sc&lt;/strong&gt; is also created and showed in the CR status.&lt;/p&gt;

&lt;h3&gt;
  
  
  Advanced Options
&lt;/h3&gt;

&lt;p&gt;For advanced configuration options available for CR spec, take a look at &lt;a href="https://github.com/krestomatio/ansible-collection-k8s/blob/master/roles/v1alpha1/nfs/ganesha/defaults/main/ganesha.yml"&gt;the options&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Want to contribute?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;a href="https://github.com/krestomatio/nfs-operator/issues"&gt;Github issues&lt;/a&gt; to report bugs, send enhancement, new feature requests and questions&lt;/li&gt;
&lt;li&gt;Join &lt;a href="https://t.me/nfs_operator"&gt;our telegram group&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://krestomatio.com/about"&gt;About Krestomatio&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://krestomatio.com/"&gt;Krestomatio is a managed service for Moodle™ e-learning platforms&lt;/a&gt;. It allows you to have open-source instances managed by a service optimized for Moodle™, complete with an additional plugin pack and customization options.&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>cloudnative</category>
      <category>krestomatio</category>
    </item>
    <item>
      <title>A Minimal Container Image for Rocky Linux 8</title>
      <dc:creator>Job Céspedes Ortiz</dc:creator>
      <pubDate>Sat, 26 Jun 2021 02:03:22 +0000</pubDate>
      <link>https://dev.to/jobcespedes/a-minimal-container-image-for-rocky-linux-8-5goc</link>
      <guid>https://dev.to/jobcespedes/a-minimal-container-image-for-rocky-linux-8-5goc</guid>
      <description>&lt;p&gt;Now that &lt;a href="https://rockylinux.org/news/rocky-linux-8-4-ga-release/"&gt;Rocky Linux is GA&lt;/a&gt;, here is a &lt;a href="https://github.com/krestomatio/container_builder/tree/master/rocky8-minimal"&gt;repo&lt;/a&gt; for a &lt;a href="https://quay.io/krestomatio/rocky8-minimal/"&gt;minimal container image for Rocky Linux&lt;/a&gt;. Its size is around ~37 MB (compressed). It is based on &lt;a href="https://registry.fedoraproject.org/repo/fedora-minimal/tags/"&gt;Fedora Minimal&lt;/a&gt; and &lt;a href="https://catalog.redhat.com/software/containers/ubi8/ubi-minimal/5c359a62bed8bd75a2c3fba8"&gt;UBI8 minimal&lt;/a&gt; from Red Hat. You can &lt;a href="https://quay.io/krestomatio/rocky8-minimal/"&gt;download it from Quay&lt;/a&gt; or build it, following the instructions in the &lt;a href="https://github.com/krestomatio/container_builder/tree/master/rocky8-minimal"&gt;repo&lt;/a&gt;. You could also generate a new rootfs yourself before building the image, again, following the short instructions in the &lt;a href="https://github.com/krestomatio/container_builder/tree/master/rocky8-minimal"&gt;repo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;At &lt;a href="https://krestomatio.com/"&gt;Krestomatio&lt;/a&gt;, we were in search of a Centos 8 minimal container image a couple months ago. Since it was not available, we did a test drive of &lt;a href="https://catalog.redhat.com/software/containers/ubi8/ubi-minimal/5c359a62bed8bd75a2c3fba8"&gt;UBI8 minimal&lt;/a&gt;. I believe it is a really good alternative as long as you understand its &lt;a href="https://www.redhat.com/licenses/EULA_Red_Hat_Universal_Base_Image_English_20190422.pdf"&gt;End User License Agreement&lt;/a&gt; and &lt;a href="https://developers.redhat.com/articles/ubi-faq"&gt;FAQ&lt;/a&gt;. There was also &lt;a href="https://registry.fedoraproject.org/repo/fedora-minimal/tags/"&gt;Fedora Minimal&lt;/a&gt;. However, none seemed to fit perfectly in our use cases. So, we began building our own &lt;a href="https://github.com/krestomatio/container_builder/tree/master/centos8-minimal"&gt;Centos 8 minimal container image&lt;/a&gt; based on &lt;a href="https://registry.fedoraproject.org/repo/fedora-minimal/tags/"&gt;Fedora Minimal&lt;/a&gt; and &lt;a href="https://catalog.redhat.com/software/containers/ubi8/ubi-minimal/5c359a62bed8bd75a2c3fba8"&gt;UBI8 minimal&lt;/a&gt;. Then, Red Hat made &lt;a href="https://blog.centos.org/2020/12/future-is-centos-stream/"&gt;its announcement&lt;/a&gt; about Centos Stream replacing Centos 8. We began planning for its replacement right away.&lt;/p&gt;

&lt;p&gt;Immediately, and admirably, initiatives and communities were formed around the idea of a serious alternative. Two of them were &lt;a href="https://almalinux.org/"&gt;Alma Linux&lt;/a&gt; and &lt;a href="https://rockylinux.org/"&gt;Rocky Linux&lt;/a&gt;. Even though Alma Linux did &lt;a href="https://almalinux.org/blog/almalinux-os-stable-release-is-live/"&gt;its first stable release&lt;/a&gt; a couple weeks ago; we were waiting for a stable release of Rocky Linux. In the meantime, we started using &lt;a href="https://www.centos.org/centos-stream/"&gt;Centos Stream&lt;/a&gt;. A funny thing is we reached to the conclusion that the &lt;a href="https://www.centos.org/centos-stream/"&gt;Centos Stream project&lt;/a&gt; and &lt;a href="https://www.redhat.com/es/blog/faq-centos-stream-updates"&gt;its release cadence&lt;/a&gt; worked well for our container workloads. Still, we recognize the need of many for a Centos 8 alternative.&lt;/p&gt;

&lt;p&gt;Therefore, we are building a &lt;a href="https://quay.io/krestomatio/rocky8-minimal/"&gt;Rocky Linux minimal container image&lt;/a&gt;. However, most of our workloads at &lt;a href="https://krestomatio.com/"&gt;Krestomatio&lt;/a&gt; are using our own &lt;a href="https://quay.io/repository/krestomatio/centos8-stream-minimal"&gt;Centos Stream minimal container image&lt;/a&gt;. In case anyone has a use for any of those two, check out the &lt;a href="https://github.com/krestomatio/container_builder"&gt;repo&lt;/a&gt;. Cheers!&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>cloudnative</category>
      <category>krestomatio</category>
    </item>
  </channel>
</rss>
