Skip to main content

OpenStack

logo

https://www.openstack.org/

What is OpenStack?​

OpenStack is an open-source cloud computing platform, designed to provide scalable and flexible infrastructure for private cloud environments. Just as AWS, GCP, Azure exist as public clouds, OpenStack is private. The company buys the hardware (Server), puts an operating system on it, and installs OpenStack components that will manage the hardware and offer an interactive dashboard to create resources like a cloud.

Developed by a global community of contributors, OpenStack offers a variety of essential services for building and managing clouds efficiently.

Tip​

This is a tool that, either you know it very well to fix problems, or it's better not even to apply it. I've heard of many companies that stopped using OpenStack because they couldn't maintain it.

Studying is good to know about it, but it's a tool that requires a lot of study.

What is the traditional On-Premise world like?​

A company that likes to keep on-premise servers typically has a set of equipment that forms the infrastructure.

In the server part, Type 1 virtualization is typically used, meaning it occurs directly on the server hardware, without the need for a host operating system. This type of virtualization uses a bare metal hypervisor, also known as Type 1 hypervisor. Popular examples include VMware ESXi, Microsoft Hyper-V Server, KVM, ProxMox, Citrix, etc. So when a machine is needed, usually a support ticket is created for the team that will provision it. Usually these machines have plenty of processor and memory.

For storage, servers are also used, but with a focus on storage. Dell, IBM, Hitachi, and many others have solutions of various types.

For networks, we use switches, load balancers, etc. Cisco, Juniper, and Dell are usually the main suppliers of this type of equipment, but we have a vast option in the market.

If you observe, we have 3 types of equipment and everything that needs to be configured on this equipment by someone.

Let's imagine that a developer needed a machine to test the application and opened a ticket for the infrastructure team. What needs to be done?

  • Launch a VM using an ISO of the operating system
  • Adjust network settings if necessary
  • Set the VM to store data on a SAN (Storage Area Network) so the data goes to the storage servers.

What a hassle... This is a bottleneck!

Infrastructure As a Service (IaaS)​

It's a cloud computing model that provides virtualized infrastructure resources. In this model, infrastructure is made available as a service or product, allowing users to obtain resources like servers, storage, and networks, without worrying about direct hardware management. In other words, we're trying to eliminate the bottleneck of having someone having to do things.

Taking the example of the developer who asked for the machine, they could simply do it themselves if they had a way to choose the VM they need like a product off the shelf, faster and more agile.

From the infrastructure team's perspective, the developer would be the client.

How does OpenStack work?​

Actually, OpenStack is a facilitator that integrates all the infrastructure solutions a company has, but as a service. OpenStack wouldn't replace virtualization servers, storage, or networking, but it could integrate all of them to create IaaS and facilitate delivery to the client.

The idea is to unify everything you have and deliver it as a service easily, quickly, and interactively.

Alt text

When creating a VM, it's already integrating all components, already grabbing a part of storage, creating a VLAN, selecting the image, and delivering.

OpenStack does all this via API.

Brief explanation about components​

OpenStack is a set of components (services) that may or may not be active depending on your installation.

It's not necessary to install all the resources it has and that's why it's not a simple installation just by running a command in the terminal. It's necessary to launch the components and configure according to need.

Main Components​

Some services are base and practically necessary, but not mandatory.

  1. Cloud Compute (Compute):

    • The Compute service (Nova) allows provisioning and management of virtual machines, offering flexible computational power to meet varying workload demands.
  2. Cloud Storage (Storage):

    • OpenStack provides block storage services (Cinder) for volumes and object storage (Swift) for unstructured data, offering scalable and durable solutions.
  3. Software-Defined Networking (Networking):

    • The Networking service (Neutron) enables the creation and management of software-defined networks, allowing the construction of customizable and secure network infrastructures.
  4. Authentication and Authorization (Identity):

    • The Identity service (Keystone) manages authentication and authorization, ensuring secure access control to cloud resources.
      • Users
      • Permissions
      • Roles
      • Groups
  5. User Dashboard (Dashboard):

    • Horizon offers a graphical interface to simplify OpenStack infrastructure management and monitoring, making operations more accessible. It's possible to control everything via command line, but it's also possible via graphical interface.

Remembering that it's not necessary to install components you won't use.

Optional OpenStack components can be found at https://www.openstack.org/software/project-navigator/openstack-components#openstack-services.

Alt text

Flexibility and Interoperability​

OpenStack is highly modular and offers interoperability with a variety of technologies and solutions, allowing integration with different systems and facilitating the construction of customized cloud environments.

OpenStack has a provider for OpenTofu and Terraform, even allowing resource creation via Infrastructure as Code.

OpenStack Community​

With an active and diverse community of developers, users, and companies, OpenStack continues to evolve and improve its functionalities. Open collaboration is a cornerstone, driving innovation and keeping the project aligned with the ever-changing needs of the cloud computing world.

In summary, OpenStack is a robust solution for those seeking to build and manage cloud infrastructures, providing flexibility, scalability, and control in an open-source environment.