<?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: FouadALLAOUI</title>
    <description>The latest articles on DEV Community by FouadALLAOUI (@fouadallaoui).</description>
    <link>https://dev.to/fouadallaoui</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%2F2046760%2Fdfe66aff-62ef-416f-98ea-67bbde33f241.png</url>
      <title>DEV Community: FouadALLAOUI</title>
      <link>https://dev.to/fouadallaoui</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fouadallaoui"/>
    <language>en</language>
    <item>
      <title>Building a Robust Kubernetes Infrastructure on OpenStack with Terraform, Ansible, and Comprehensive Monitoring</title>
      <dc:creator>FouadALLAOUI</dc:creator>
      <pubDate>Tue, 10 Sep 2024 10:03:37 +0000</pubDate>
      <link>https://dev.to/fouadallaoui/openstack-streamlined-infrastructure-3de4</link>
      <guid>https://dev.to/fouadallaoui/openstack-streamlined-infrastructure-3de4</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2y8dc3gt0vxh217gz1ec.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2y8dc3gt0vxh217gz1ec.jpeg" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In today's dynamic technological landscape, the ability to deploy, manage, and scale infrastructure efficiently is paramount. Leveraging open-source tools and platforms can significantly enhance flexibility, control, and visibility. In this blog post, I’ll walk you through the infrastructure I successfully implemented, which utilizes OpenStack as the foundation, Terraform for infrastructure as code, Ansible for configuration management, and integrates essential monitoring and observability tools like Prometheus, Grafana, and Portainer. [Additionally, you could add Helm to streamline the deployment and versioning of complex application stacks within the Kubernetes cluster.]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architecture Overview&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The architecture I developed is a comprehensive and scalable solution designed to facilitate the deployment and management of Kubernetes clusters on OpenStack. Here's a high-level overview of the components and their interactions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;OpenStack: Serves as the cloud computing platform, providing scalable compute, storage, and networking resources.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Terraform: Automates the provisioning of infrastructure resources on OpenStack, ensuring reproducibility and version control.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ansible: Manages the configuration and automation of node management and supervision within the infrastructure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Kubernetes: Orchestrates containerized applications, ensuring efficient deployment, scaling, and management.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Prometheus &amp;amp; Grafana: Provide robust monitoring and observability, enabling real-time insights into the infrastructure’s performance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Portainer: Offers an intuitive interface for managing Docker containers and Kubernetes clusters.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By integrating these tools, the infrastructure achieves high levels of automation, scalability, and observability, ensuring efficient operations and reliable performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I. Installing OpenStack&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;OpenStack forms the backbone of our cloud infrastructure. Here’s how to set it up:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Switch to Root User and Update the System:&lt;br&gt;
&lt;code&gt;sudo su&lt;br&gt;
sudo apt update&lt;br&gt;
sudo apt upgrade -y&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install Essential Packages:&lt;br&gt;
&lt;code&gt;sudo apt install vim git net-tools gedit&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a Stack User:&lt;br&gt;
&lt;code&gt;sudo useradd -s /bin/bash -d /opt/stack -m stack&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Grant Sudo Privileges to Stack User:&lt;br&gt;
&lt;code&gt;echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set Permissions and Switch to Stack User:&lt;br&gt;
&lt;code&gt;sudo chmod +x /opt/stack&lt;br&gt;
sudo -u stack -i&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Clone DevStack Repository and Configure:&lt;br&gt;
&lt;code&gt;git clone https://opendev.org/openstack/devstack&lt;br&gt;
cd devstack&lt;br&gt;
cp samples/local.conf .&lt;br&gt;
nano local.conf&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Customize local.conf as per your requirements.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Run DevStack to Install OpenStack:&lt;br&gt;
&lt;code&gt;./stack.sh&lt;/code&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If errors occur, try:&lt;br&gt;
&lt;code&gt;FORCE=yes ./stack.sh&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Source OpenStack Credentials and Verify Setup:&lt;br&gt;
&lt;code&gt;source openrc admin admin&lt;br&gt;
export | grep OS_&lt;br&gt;
openstack network list&lt;br&gt;
openstack image list&lt;br&gt;
openstack instance list&lt;br&gt;
openstack user list&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Download and Create a Minimal Ubuntu Image:&lt;br&gt;
&lt;code&gt;wget https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img&lt;br&gt;
openstack image create --container-format bare --disk-format qcow2 --file focal-server-cloudimg-amd64.img Ubuntu-20.04&lt;br&gt;
openstack image list&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a Flavor for Instances:&lt;br&gt;
&lt;code&gt;openstack flavor create --ram 1024 --disk 4 --vcpus 1 Ub-flavor&lt;br&gt;
openstack flavor list&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Generate SSH Keypair:&lt;br&gt;
&lt;code&gt;openstack keypair create my-key &amp;gt; my-key.pem&lt;br&gt;
chmod 600 my-key.pem&lt;br&gt;
ls -l my-key.pem&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set Up Security Group:&lt;br&gt;
&lt;code&gt;openstack security group create minimal-security-group&lt;br&gt;
openstack security group rule create --ingress --protocol tcp --dst-port 22 minimal-security-group&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create Server Instances:&lt;br&gt;
&lt;code&gt;openstack server create \&lt;br&gt;
--image Ubuntu-20.04 \&lt;br&gt;
--flavor Ub-flavor \&lt;br&gt;
--key-name my-key \&lt;br&gt;
--security-group minimal-security-group \&lt;br&gt;
--network public \&lt;br&gt;
Ubuntu-instance&lt;br&gt;
openstack server list&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;II. Installing Docker&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>openstack</category>
      <category>devops</category>
      <category>kubernetes</category>
      <category>terraform</category>
    </item>
  </channel>
</rss>
