diff --git a/doc/source/_static/.gitkeep b/doc/source/_static/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/doc/source/_static/.gitkeep
diff --git a/doc/source/admin/images/monitoring-alertmanger-list.png b/doc/source/admin/images/monitoring-alertmanger-list.png
new file mode 100644
index 0000000..3b6e08b
--- /dev/null
+++ b/doc/source/admin/images/monitoring-alertmanger-list.png
Binary files differ
diff --git a/doc/source/admin/images/monitoring-silences-menu.png b/doc/source/admin/images/monitoring-silences-menu.png
new file mode 100644
index 0000000..a793bb1
--- /dev/null
+++ b/doc/source/admin/images/monitoring-silences-menu.png
Binary files differ
diff --git a/doc/source/admin/index.rst b/doc/source/admin/index.rst
new file mode 100644
index 0000000..87d5546
--- /dev/null
+++ b/doc/source/admin/index.rst
@@ -0,0 +1,19 @@
+Administrator Documentation
+===========================
+
+This section is designed to equip system administrators with the knowledge and
+tools necessary for the effective management and operation of the Atmosphere
+deployment. It offers comprehensive guides and resources across various aspects
+of system administration, including troubleshooting, maintenance, and more.
+
+Intended for administrators tasked with the setup and ongoing management of
+Atmosphere, this documentation aims to provide clear and practical
+information to ensure stable and efficient operation of the system.
+
+.. toctree::
+   :maxdepth: 2
+
+   integration
+   monitoring
+   maintenance
+   troubleshooting
diff --git a/doc/source/admin/integration.rst b/doc/source/admin/integration.rst
new file mode 100644
index 0000000..7350c61
--- /dev/null
+++ b/doc/source/admin/integration.rst
@@ -0,0 +1,77 @@
+#################
+Integration Guide
+#################
+
+This section provides detailed instructions on integrating external systems
+and services with Atmosphere, enhancing functionality and streamlining workflows.
+
+********
+Keycloak
+********
+
+Keycloak serves as a comprehensive identity and access management solution,
+facilitating the integration of various identity providers for centralized user
+authentication and authorization. By leveraging federated identity, Keycloak enables
+seamless Single Sign-On (SSO) capabilities across a suite of applications, enhancing
+the user experience and bolstering security measures.
+
+Identity Providers
+==================
+
+Incorporating identity providers into Keycloak allows users to authenticate via trusted
+external sources. This federated authentication scheme simplifies the login process by
+using existing credentials, whether from enterprise directories like LDAP or other
+identity services.
+
+Azure AD
+--------
+
+Azure AD is recognized for its extensive adoption and integration within the enterprise
+ecosystem, offers a secure and familiar authentication method for countless users.
+
+You can begin the integration process by creating an application registration in Azure AD
+and configuring the necessary settings in Keycloak. The following steps outline the
+procedure:
+
+1. Sign in to the Azure portal and access the **Azure Active Directory** service.
+2. Navigate to **App registrations** and click **New registration**.
+3. Fill in the application name, select the account types it will serve, and
+   specify a **Redirect URI**.
+
+At this point, you'll need to grab the **Redirect URI** from the Keycloak client settings
+using the following steps:
+
+1. Log into the Keycloak admin console using your administrator credentials.
+2. Switch to the ``atmosphere`` realm where you'll be configuring Azure AD.
+3. In the **Identity Providers** section, select **Add provider** and choose **Microsoft**.
+4. Keycloak will generate a **Redirect URI** which you will use in the Azure AD
+   application registration process to ensure that authentication responses are
+   correctly routed.
+
+At this point, you'll be able to finalize the Azure AD application registration by
+following these remaining steps:
+
+1. Return to the Azure AD application registration page and input the Redirect
+   URI from Keycloak.
+2. After the application is registered, navigate to **Certificates & secrets**
+   to create a client secret.
+3. Record the **Client ID** and **Client Secret** provided, as they will be
+   needed to configure Keycloak.
+
+At this point, you're ready to configure Keycloak with the Azure AD settings:
+
+1. In the Keycloak admin console, navigate back to the `atmosphere` realm's
+   **Identity Providers** section.
+2. For the Microsoft provider configuration, enter the **Client ID** and
+   **Client Secret** obtained from Azure AD.
+3. Adjust any additional settings according to your requirements, such as the
+   default scopes, mappers, and other provider-specific configurations.
+4. Save your changes to finalize the integration.
+
+By integrating Azure AD with Keycloak, you enable users to authenticate with
+their corporate credentials across all applications that are secured by
+Keycloak. This provides a consistent and secure user experience, leveraging
+the robust features of Azure AD within the flexible framework of Keycloak.
+
+For a deeper dive into the Azure AD configuration within Keycloak, consult the
+`Keycloak Microsoft Identity Provider documentation <https://www.keycloak.org/docs/latest/server_admin/#_microsoft>`_.
diff --git a/doc/source/admin/maintenance.rst b/doc/source/admin/maintenance.rst
new file mode 100644
index 0000000..362b152
--- /dev/null
+++ b/doc/source/admin/maintenance.rst
@@ -0,0 +1,31 @@
+#################
+Maintenance Guide
+#################
+
+This guide provides instructions for regular maintenance tasks necessary to
+ensure the smooth and secure operation of the system.
+
+*********************
+Renewing Certificates
+*********************
+
+The certificates used by the Kubernetes cluster are valid for one year.  They
+are automatically renewed when the cluster is upgraded to a new version of
+Kubernetes.  However, if you are running the same version of Kubernetes for
+more than a year, you will need to manually renew the certificates.
+
+To renew the certificates, run the following command on each one of your
+control plane nodes:
+
+.. code-block:: console
+
+    $ sudo kubeadm certs renew all
+
+Once the certificates have been renewed, you will need to restart the
+Kubernetes control plane components to pick up the new certificates.  You need
+to do this on each one of your control plane nodes by running the following
+command one at a time on each node:
+
+.. code-block:: console
+
+    $ ps auxf | egrep '(kube-(apiserver|controller-manager|scheduler)|etcd)' | awk '{ print $2 }' | xargs sudo kill
diff --git a/doc/source/admin/monitoring.rst b/doc/source/admin/monitoring.rst
new file mode 100644
index 0000000..d196e15
--- /dev/null
+++ b/doc/source/admin/monitoring.rst
@@ -0,0 +1,463 @@
+#########################
+Monitoring and Operations
+#########################
+
+There is a Grafana deployment with a few dashboards that are created by default
+and a Prometheus deployment that is used to collect metrics from the cluster
+which sends alerts to AlertManager. In addition, Loki is deployed to collect
+logs from the cluster using Vector.
+
+******************************
+Philosophy and Alerting Levels
+******************************
+
+Atmosphere's monitoring philosophy is strongly aligned with the principles
+outlined in the Google Site Reliability Engineering (SRE) book. Our approach
+focuses on alerting on conditions that are symptomatic of issues which directly
+impact the service or system health, rather than simply monitoring the state of
+individual components.
+
+Alerting Philosophy
+===================
+
+Our alerting philosophy aims to alert the right people at the right time. Most
+alerts, if they are affecting a single system, would trigger a lower priority
+level (P4 or P5). However, if an issue is affecting the entire control plane of
+a specific service, it might escalate to a P3 or P2. And if the whole service
+is unavailable, it becomes a P1.
+
+We believe in minimizing alert noise to ensure that alerts are meaningful and
+actionable. Our goal is to have every alert provide enough information to
+initiate an immediate and effective response, regardless of business hours for
+high priority alerts.
+
+We continue to refine our monitoring and alerting strategies to ensure that we
+are effectively identifying and responding to incidents. The ultimate goal is
+to provide a reliable and high-quality service to all our users.
+
+Severity Levels
+===============
+
+Our alerting system classifies incidents into different severity levels based on
+their impact on the system and users.
+
+**P1**: Critical
+  This level is used for incidents causing a complete service disruption or
+  significant loss of functionality across the entire Atmosphere platform.
+  Immediate response, attention, and action are necessary regardless of
+  business hours.
+
+**P2**: High
+  This level is for incidents that affect a large group of users or critical
+  system components. These incidents require swift attention and action,
+  regardless of business hours, but do not cause a total disruption.
+
+**P3**: Moderate
+  This level is for incidents that affect a smaller group of users or a single
+  system. These incidents require attention and may necessitate action during
+  business hours.
+
+**P4**: Low
+  This level is used for minor issues that have a limited impact on a small
+  subset of users or system functionality. These incidents require attention
+  and action, if necessary, during standard business hours.
+
+**P5**: Informational
+  This is the lowest level of severity, used for providing information about
+  normal system activities or minor issues that don't significantly impact
+  users or system functionality. These incidents typically do not require
+  immediate attention or action and are addressed during standard business
+  hours.
+
+**********************
+Operational Procedures
+**********************
+
+Creating silences
+=================
+
+In order to create a silence, you'll need to login to your Grafana instance that
+is deployed as part of Atmosphere as an admin user.
+
+1. Click on the hamburger menu in the top left corner and select "Alerting"
+   and then "Silences" from the menu.
+
+   .. image:: images/monitoring-silences-menu.png
+      :alt: Silences menu
+      :width: 200
+
+2. Ensure that you select "AlertManager" on the top right corner of the page,
+   this will make sure that you create a silence inside of the AlertManager
+   that is managed by the Prometheus operator instead of the built-in Grafana
+   AlertManager which is not used.
+
+    .. image:: images/monitoring-alertmanger-list.png
+        :alt: AlertManager list
+        :width: 200
+
+   .. admonition:: AlertManager selection
+    :class: warning
+
+    It's important that you select the AlertManager that is managed by the
+    Prometheus operator, otherwise your silence will not be applied to the
+    Prometheus instance that is deployed as part of Atmosphere.
+
+3. Click the "Add Silence" button and use the AlertManager format to create
+   your silence, which you can test by seeing if it matches any alerts in the
+   list labeled "Affected alert instances".
+
+.. admonition:: Limit the number of labels
+    :class: info
+
+    It is important to limit the number of labels that you use in your silence
+    to ensure that it will continue to work even if the alerts are modified.
+
+    For example, if you have an alert that is labeled with the following labels:
+
+    - ``alertname``
+    - ``instance``
+    - ``job``
+    - ``severity``
+
+    You should only use the ``alertname`` and ``severity`` labels in your
+    silence to ensure that it will continue to work even if the ``instance``
+    or ``job`` labels are modified.
+
+**************
+Configurations
+**************
+
+Dashboard Management
+====================
+
+For Grafana, rather than enabling persistence through the application's user
+interface or manual Helm chart modifications, dashboards should be managed
+directly via the Helm chart values.
+
+.. admonition:: Avoid Manual Persistence Configurations!
+    :class: warning
+
+    It is important to avoid manual persistence configurations, especially for
+    services like Grafana, where dashboards and data sources can be saved. Such
+    practices are not captured in version control and pose a risk of data loss,
+    configuration drift, and upgrade complications.
+
+To manage Grafana dashboards through Helm, you can include the dashboard
+definitions within your configuration file. By doing so, you facilitate
+version-controlled dashboard configurations that can be replicated across
+different deployments without manual intervention.
+
+For example, a dashboard can be defined in the Helm values like this:
+
+.. code-block:: yaml
+
+  kube_prometheus_stack_helm_values:
+    grafana:
+      dashboards:
+        default:
+          my-dashboard:
+            gnetId: 10000
+            revision: 1
+            datasource: Prometheus
+
+This instructs Helm to fetch and configure the specified dashboard from
+`Grafana.com dashboards <https://grafana.com/grafana/dashboards/>`_, using
+Prometheus as the data source.  You can find more examples of how to do
+this in the Grafana Helm chart `Import Dashboards <https://github.com/grafana/helm-charts/tree/main/charts/grafana#import-dashboards>`_
+documentation.
+
+************
+Viewing data
+************
+
+There are a few different ways to view the data that is collected by the
+monitoring stack.  The most common ways are through AlertManager, Grafana, and
+Prometheus.
+
+Grafana dashboard
+=================
+
+By default, an ``Ingress`` is created for Grafana using the
+``kube_prometheus_stack_grafana_host`` variable.  The authentication is done
+using the Keycloak service which is deployed by default.
+
+Inside Keycloak, there are two client roles that are created for Grafana:
+
+``grafana:admin``
+  Has access to all organization resources, including dashboards, users, and
+  teams.
+
+``grafana:editor``
+  Can view and edit dashboards, folders, and playlists.
+
+``grafana:viewer``
+  Can view dashboards, playlists, and query data sources.
+
+You can view the existing dashboards by going to *Manage* > *Dashboards*. You
+can also check any alerts that are currently firing by going to *Alerting* >
+*Alerts*.
+
+Prometheus
+==========
+
+By default, Prometheus is exposed behind an ``Ingress`` using the
+``kube_prometheus_stack_prometheus_host`` variable.  In addition, it is also
+running behind the `oauth2-proxy` service which is used for authentication
+so that only authenticated users can access the Prometheus UI.
+
+Alternative Authentication
+--------------------------
+
+It is possible to by-pass the `oauth2-proxy` service and use an alternative
+authentication method to access the Prometheus UI.  In both cases, we will
+be overriding the ``servicePort`` on the ``Ingress`` to point to the port
+where Prometheus is running and not the `oauth2-proxy` service.
+
+.. admonition:: Advanced Usage Only
+    :class: warning
+
+    It's strongly recommended that you stick to keeping the `oauth2-proxy`
+    service in front of the Prometheus UI.  The `oauth2-proxy` service is
+    responsible for authenticating users and ensuring that only authenticated
+    users can access the Prometheus UI.
+
+Basic Authentication
+~~~~~~~~~~~~~~~~~~~~
+
+If you want to rely on basic authentication to access the Prometheus UI instead
+of using the `oauth2-proxy` service to expose it over single sign-on, you can
+do so by making the following changes to your inventory:
+
+.. code-block:: yaml
+
+  kube_prometheus_stack_helm_values:
+    prometheus:
+      ingress:
+        servicePort: 8080
+        annotations:
+          nginx.ingress.kubernetes.io/auth-type: basic
+          nginx.ingress.kubernetes.io/auth-secret: basic-auth-secret-name
+
+In the example above, we are using the ``basic-auth-secret-name`` secret to
+authenticate users.  The secret should be created in the same namespace as the
+Prometheus deployment based on the `Ingress NGINX Annotations <https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md#annotations>`_.
+
+IP Whitelisting
+~~~~~~~~~~~~~~~
+
+If you want to whitelist specific IPs to access the Prometheus UI, you can do
+so by making the following changes to your inventory:
+
+.. code-block:: yaml
+
+  kube_prometheus_stack_helm_values:
+    prometheus:
+      ingress:
+        servicePort: 8080
+        annotations:
+          nginx.ingress.kubernetes.io/whitelist-source-range: "10.0.0.0/24,172.10.0.1"
+
+In the example above, we are whitelisting the IP range ``10.0.0.0/24`` and the IP address
+``172.10.0.1``.
+
+AlertManager
+============
+
+By default, the AlertManager dashboard is pointing to the Ansible variable
+``kube_prometheus_stack_alertmanager_host`` and is exposed using an ``Ingress``
+behind the `oauth2-proxy` service, protected by Keycloak similar to Prometheus.
+
+************
+Integrations
+************
+
+Since Atmosphere relies on AlertManager to send alerts, it is possible to
+integrate it with services like OpsGenie, PagerDuty, email and more.  To
+receive monitoring alerts using your preferred notification tools, you'll
+need to integrate them with AlertManager.
+
+OpsGenie
+========
+
+In order to get started, you will need to complete the following steps inside
+OpsGenie:
+
+1. Create an integration inside OpsGenie, you can do this by going to
+   *Settings* > *Integrations* > *Add Integration* and selecting *Prometheus*.
+2. Copy the API key that is generated for you and setup correct assignment
+   rules inside OpsGenie.
+3. Create a new heartbeat inside OpsGenie, you can do this by going to
+   *Settings* > *Heartbeats* > *Create Heartbeat*. Set the interval to 1 minute.
+
+Afterwards, you can configure the following options for the Atmosphere config,
+making sure that you replace the placeholders with the correct values:
+
+``API_KEY``
+  The API key that you copied from the OpsGenie integration.
+
+``HEARTBEAT_NAME``
+  The name of the heartbeat that you created inside OpsGenie
+
+.. code-block:: yaml
+
+  kube_prometheus_stack_helm_values:
+    alertmanager:
+      config:
+        receivers:
+          - name: "null"
+          - name: notifier
+            opsgenie_configs:
+              - api_key: API_KEY
+                message: >-
+                  {% raw -%}
+                  {{ .GroupLabels.alertname }}
+                  {%- endraw %}
+                priority: >-
+                  {% raw -%}
+                  {{- if eq .GroupLabels.severity "critical" -}}
+                  P1
+                  {{- else if eq .GroupLabels.severity "warning" -}}
+                  P3
+                  {{- else if eq .GroupLabels.severity "info" -}}
+                  P5
+                  {{- else -}}
+                  {{ .GroupLabels.severity }}
+                  {{- end -}}
+                  {%- endraw %}
+                description: |-
+                  {% raw -%}
+                  {{ if gt (len .Alerts.Firing) 0 -}}
+                  Alerts Firing:
+                  {{ range .Alerts.Firing }}
+                    - Message: {{ .Annotations.message }}
+                      Labels:
+                  {{ range .Labels.SortedPairs }}   - {{ .Name }} = {{ .Value }}
+                  {{ end }}   Annotations:
+                  {{ range .Annotations.SortedPairs }}   - {{ .Name }} = {{ .Value }}
+                  {{ end }}   Source: {{ .GeneratorURL }}
+                  {{ end }}
+                  {{- end }}
+                  {{ if gt (len .Alerts.Resolved) 0 -}}
+                  Alerts Resolved:
+                  {{ range .Alerts.Resolved }}
+                    - Message: {{ .Annotations.message }}
+                      Labels:
+                  {{ range .Labels.SortedPairs }}   - {{ .Name }} = {{ .Value }}
+                  {{ end }}   Annotations:
+                  {{ range .Annotations.SortedPairs }}   - {{ .Name }} = {{ .Value }}
+                  {{ end }}   Source: {{ .GeneratorURL }}
+                  {{ end }}
+                  {{- end }}
+                  {%- endraw %}
+          - name: heartbeat
+            webhook_configs:
+              - url: https://api.opsgenie.com/v2/heartbeats/HEARTBEAT_NAME/ping
+                send_resolved: false
+                http_config:
+                  basic_auth:
+                    password: API_KEY
+
+Once this is done and deployed, you'll start to see alerts inside OpsGenie and
+you can also verify that the heartbeat is listed as *ACTIVE*.
+
+PagerDuty
+=========
+
+To integrate with Pagerduty, first you need to prepare an *Integration key*. In
+order to do that, you must decide how you want to integrate with PagerDuty since
+there are two ways to do it:
+
+**Event Orchestration**
+  This method is beneficial if you want to build different routing rules based
+  on the events coming from the integrated tool.
+
+**PagerDuty Service Integration**
+  This method is beneficial if you don't need to route alerts from the integrated
+  tool to different responders based on the event payload.
+
+For both of these methods, you need to create an *Integration key* in PagerDuty
+using the `PagerDuty Integration Guide <https://www.pagerduty.com/docs/guides/prometheus-integration-guide/>`_.
+
+Once you're done, you'll need to configure the inventory with the following
+options:
+
+.. code-block:: yaml
+
+  kube_prometheus_stack_helm_values:
+    alertmanager:
+      config:
+        receivers:
+          - name: notifier
+            pagerduty_configs:
+              - service_key: '<your integration key here>'
+
+You can find more details about
+`pagerduty_configs <https://prometheus.io/docs/alerting/latest/configuration/#pagerduty_config>`_
+in the Prometheus documentation.
+
+Email
+=====
+
+To integrate with email, you need to configure the following options in the
+inventory:
+
+.. code-block:: yaml
+
+  kube_prometheus_stack_helm_values:
+    alertmanager:
+      config:
+        receivers:
+          - name: notifier
+            email_configs:
+              - smarthost: 'smtp.gmail.com:587'
+                auth_username: '<your email id here>'
+                auth_password: '<your email password here>'
+                from: '<your email id here>'
+                to: '<receiver's email id here>'
+                headers:
+                  subject: 'Prometheus Mail Alerts'
+
+You can find more details about
+`email_configs <https://prometheus.io/docs/alerting/latest/configuration/#email_configs>`_
+in the Prometheus documentation.
+
+****************
+Alerts Reference
+****************
+
+``etcdDatabaseHighFragmentationRatio``
+  This alert is triggered when the etcd database has a high fragmentation ratio
+  which can cause performance issues on the cluster.  In order to resolve this
+  issue, you can use the following command:
+
+  .. code-block:: console
+
+    kubectl -n kube-system exec svc/kube-prometheus-stack-kube-etcd -- \
+      etcdctl defrag \
+      --cluster \
+      --cacert /etc/kubernetes/pki/etcd/ca.crt \
+      --key /etc/kubernetes/pki/etcd/server.key \
+      --cert /etc/kubernetes/pki/etcd/server.crt
+
+``NodeNetworkMulticast``
+  This alert is triggered when a node is receiving large volumes of multicast
+  traffic which can be a sign of a misconfigured network or a malicious actor.
+
+  This can result in high CPU usage on the node and can cause the node to become
+  unresponsive. Also, it can be the cause of a very high amount of software
+  interrupts on the node.
+
+  In order to find the root cause of this issue, you can use the following
+  commands:
+
+  .. code-block:: console
+
+    iftop -ni $DEV -f 'multicast and not broadcast'
+
+  With the command above, you're able to see which IP addresses are sending the
+  multicast traffic. Once you have the IP address, you can use the following
+  command to find the server behind it:
+
+  .. code-block:: console
+
+    openstack server list --all-projects --long -n --ip $IP
diff --git a/doc/source/admin/troubleshooting.rst b/doc/source/admin/troubleshooting.rst
new file mode 100644
index 0000000..49f247a
--- /dev/null
+++ b/doc/source/admin/troubleshooting.rst
@@ -0,0 +1,155 @@
+#####################
+Troubleshooting Guide
+#####################
+
+This document aims to provide solutions to common issues encountered during the deployment and operation of Atmosphere. The guide is organized by component and issue type to help you quickly find the most relevant information.
+
+**************************
+Open Virtual Network (OVN)
+**************************
+
+Recovering clusters
+===================
+
+If any of the OVN database pods fail, they will no longer be ready.  You can
+recover the cluster by deleting the pods and allowing them to be recreated.
+
+For example, if the ``ovn-ovsdb-nb-0`` pod fails, you can recover the cluster by
+deleting the pod:
+
+.. code-block:: console
+
+    $ kubectl -n openstack delete pods/ovn-ovsdb-nb-0
+
+If the entire cluster fails, you can recover the cluster by deleting all of the
+pods.  For example, if the southbound database fails, you can recover the
+cluster with this command:
+
+.. code-block:: console
+
+    $ kubectl -n openstack delete pods -lcomponent=ovn-ovsdb-sb
+
+If the state of Neutron is lost from the cluster, you can recover it by running
+the repair command:
+
+.. code-block:: console
+
+    $ kubectl -n openstack exec deploy/neutron-server -- \
+      neutron-ovn-db-sync-util \
+        --debug \
+        --config-file /etc/neutron/neutron.conf \
+        --config-file /tmp/pod-shared/ovn.ini \
+        --config-file /etc/neutron/plugins/ml2/ml2_conf.ini \
+        --ovn-neutron_sync_mode repair
+
+**********************
+Compute Service (Nova)
+**********************
+
+Provisioning Failure Due to ``downloading`` Volume
+==================================================
+
+If you're trying to provision a new instance that is using a volume where the
+backend needs to download images directly from Glance (such as PowerStore for
+example) and it fails with the following error:
+
+.. code-block:: text
+
+    Build of instance 54a41735-a4cb-4312-b812-52e4f3d8c500 aborted: Volume 728bdc40-fc22-4b65-b6b6-c94ee7f98ff0 did not finish being created even after we waited 187 seconds or 61 attempts. And its status is downloading.
+
+This means that the volume service could not download the image before the
+compute service timed out.  Out of the box, Atmosphere ships with the volume
+cache enabled to help offset this issue.  However, if you're using a backend
+that does not support the volume cache, you can increase the timeout by setting
+the following in your ``inventory/group_vars/all/nova.yml`` file:
+
+.. code-block:: yaml
+
+    nova_helm_values:
+      conf:
+        enable_iscsi: true
+        nova:
+          DEFAULT:
+            block_device_allocate_retries: 300
+
+*******************************
+Load Balancer Service (Octavia)
+*******************************
+
+Accessing Amphorae
+==================
+
+Atmosphere configures an SSH keypair which allows you to login to the Amphorae
+for debugging purposes.  The ``octavia-worker`` containers are fully configured
+to allow you to SSH to the Amphorae.
+
+If you have an Amphora running with the IP address ``172.24.0.148``, you can login
+to it by simply executing the following:
+
+.. code-block:: console
+
+    $ kubectl -n openstack exec -it deploy/octavia-worker -- ssh 172.24.0.148
+
+
+Listener with ``provisioning_status`` stuck in ``ERROR``
+========================================================
+
+There are scenarios where the load balancer could be in an ``ACTIVE`` state however
+the listener can be stuck in a ``provisioning_status`` of ``ERROR``.  This is usually
+related to an expired TLS certificate not cleanly recovering.
+
+Another symptom of this issue will be that you'll see the following inside the
+``octavia-worker`` logs:
+
+.. code-block:: text
+
+    ERROR oslo_messaging.rpc.server [None req-ad303faf-7a53-4c55-94a5-28cd61c46619 - e83856ceda5c42df8810df42fef8fc1c - - - -] Exception during message handling: octavia.amphorae.drivers.haproxy.exceptions.InternalServerError: Internal Server Erro
+    ERROR oslo_messaging.rpc.server Traceback (most recent call last):
+    ERROR oslo_messaging.rpc.server   File "/var/lib/openstack/lib/python3.10/site-packages/oslo_messaging/rpc/server.py", line 165, in _process_incoming
+    ERROR oslo_messaging.rpc.server     res = self.dispatcher.dispatch(message)
+    ERROR oslo_messaging.rpc.server   File "/var/lib/openstack/lib/python3.10/site-packages/oslo_messaging/rpc/dispatcher.py", line 309, in dispatch
+    ERROR oslo_messaging.rpc.server     return self._do_dispatch(endpoint, method, ctxt, args)
+    ERROR oslo_messaging.rpc.server   File "/var/lib/openstack/lib/python3.10/site-packages/oslo_messaging/rpc/dispatcher.py", line 229, in _do_dispatch
+    ERROR oslo_messaging.rpc.server     result = func(ctxt, **new_args)
+    ERROR oslo_messaging.rpc.server   File "/var/lib/openstack/lib/python3.10/site-packages/octavia/controller/queue/v2/endpoints.py", line 90, in update_pool
+    ERROR oslo_messaging.rpc.server     self.worker.update_pool(original_pool, pool_updates)
+    ERROR oslo_messaging.rpc.server   File "/var/lib/openstack/lib/python3.10/site-packages/octavia/controller/worker/v2/controller_worker.py", line 733, in update_pool
+    ERROR oslo_messaging.rpc.server     self.run_flow(
+    ERROR oslo_messaging.rpc.server   File "/var/lib/openstack/lib/python3.10/site-packages/octavia/controller/worker/v2/controller_worker.py", line 113, in run_flow
+    ERROR oslo_messaging.rpc.server     tf.run()
+    ERROR oslo_messaging.rpc.server   File "/var/lib/openstack/lib/python3.10/site-packages/taskflow/engines/action_engine/engine.py", line 247, in run
+    ERROR oslo_messaging.rpc.server     for _state in self.run_iter(timeout=timeout):
+    ERROR oslo_messaging.rpc.server   File "/var/lib/openstack/lib/python3.10/site-packages/taskflow/engines/action_engine/engine.py", line 340, in run_iter
+    ERROR oslo_messaging.rpc.server     failure.Failure.reraise_if_any(er_failures)
+    ERROR oslo_messaging.rpc.server   File "/var/lib/openstack/lib/python3.10/site-packages/taskflow/types/failure.py", line 338, in reraise_if_any
+    ERROR oslo_messaging.rpc.server     failures[0].reraise()
+    ERROR oslo_messaging.rpc.server   File "/var/lib/openstack/lib/python3.10/site-packages/taskflow/types/failure.py", line 350, in reraise
+    ERROR oslo_messaging.rpc.server     raise value
+    ERROR oslo_messaging.rpc.server   File "/var/lib/openstack/lib/python3.10/site-packages/taskflow/engines/action_engine/executor.py", line 52, in _execute_task
+    ERROR oslo_messaging.rpc.server     result = task.execute(**arguments)
+    ERROR oslo_messaging.rpc.server   File "/var/lib/openstack/lib/python3.10/site-packages/octavia/controller/worker/v2/tasks/amphora_driver_tasks.py", line 157, in execute
+    ERROR oslo_messaging.rpc.server     self.amphora_driver.update(loadbalancer)
+    ERROR oslo_messaging.rpc.server   File "/var/lib/openstack/lib/python3.10/site-packages/octavia/amphorae/drivers/haproxy/rest_api_driver.py", line 236, in update
+    ERROR oslo_messaging.rpc.server     self.update_amphora_listeners(loadbalancer, amphora)
+    ERROR oslo_messaging.rpc.server   File "/var/lib/openstack/lib/python3.10/site-packages/octavia/amphorae/drivers/haproxy/rest_api_driver.py", line 205, in update_amphora_listeners
+    ERROR oslo_messaging.rpc.server     self.clients[amphora.api_version].upload_config(
+    ERROR oslo_messaging.rpc.server   File "/var/lib/openstack/lib/python3.10/site-packages/octavia/amphorae/drivers/haproxy/rest_api_driver.py", line 758, in upload_config
+    ERROR oslo_messaging.rpc.server     return exc.check_exception(r)
+    ERROR oslo_messaging.rpc.server   File "/var/lib/openstack/lib/python3.10/site-packages/octavia/amphorae/drivers/haproxy/exceptions.py", line 44, in check_exception
+    ERROR oslo_messaging.rpc.server     raise responses[status_code]()
+    ERROR oslo_messaging.rpc.server octavia.amphorae.drivers.haproxy.exceptions.InternalServerError: Internal Server Error
+
+You can simply trigger a complete failover of the load balancer which will solve
+the issue:
+
+.. code-block:: console
+
+    $ openstack loadbalancer failover ${LOAD_BALANCER_ID}
+
+.. admonition:: Help us improve Atmosphere!
+    :class: info
+
+    We're trying to collect data with when these failures occur to better understand
+    the root cause.  If you encounter this issue, please reach out to the Atmosphere
+    team so we can better understand the issue by filing an issue with the output of
+    the ``amphora-agent`` logs from the Amphora.
diff --git a/doc/source/conf.py b/doc/source/conf.py
new file mode 100644
index 0000000..f99817d
--- /dev/null
+++ b/doc/source/conf.py
@@ -0,0 +1,35 @@
+# Copyright (c) 2024 VEXXHOST, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from dunamai import Version
+
+project = "Atmosphere"
+copyright = "2024, VEXXHOST, Inc."
+author = "VEXXHOST, Inc."
+release = Version.from_git().serialize()
+
+# -- General configuration ---------------------------------------------------
+# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
+
+extensions = ["sphinx_copybutton"]
+
+templates_path = ["_templates"]
+exclude_patterns = []
+
+
+# -- Options for HTML output -------------------------------------------------
+# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
+
+html_theme = "furo"
+html_static_path = ["_static"]
diff --git a/doc/source/config/index.rst b/doc/source/config/index.rst
new file mode 100644
index 0000000..6e6cb56
--- /dev/null
+++ b/doc/source/config/index.rst
@@ -0,0 +1,8 @@
+###################
+Configuration Guide
+###################
+
+.. toctree::
+   :maxdepth: 2
+
+   ingress
diff --git a/doc/source/config/ingress.rst b/doc/source/config/ingress.rst
new file mode 100644
index 0000000..7f31536
--- /dev/null
+++ b/doc/source/config/ingress.rst
@@ -0,0 +1,70 @@
+=======
+Ingress
+=======
+
+The ingress component is the primary entry point for all traffic to the cluster,
+it is currently deployed as an instance of ``ingress-nginx``.  It is tuned to work
+out of the box and should require no changes
+
+.. admonition:: Warning
+  :class: warning
+
+  The ingress component is a critical part of the cluster, and should be
+  managed with care.  Any changes to the ingress configuration should be
+  carefully reviewed and tested before being applied to the cluster.
+
+  If you make any changes to the ingress configuration, you may see a small
+  outage as the ingress controller is restarted.
+
+**********
+Helm Chart
+**********
+
+The ingress component is deployed using the ``ingress-nginx`` helm chart.  The
+chart is configured with a number of values to ensure it works correctly with
+the cluster out of the box, however, you can override these values by adding
+the following to your inventory:
+
+.. code-block:: yaml
+
+  ingress_nginx_helm_values:
+    foo: bar
+
+These values will be merged with the default values in the chart, and will be
+used to configure the ingress controller.
+
+***********************
+TLS Version and Ciphers
+***********************
+
+To provide the most secure baseline configuration possible, ``ingress-nginx``
+defaults to using TLS 1.2 and 1.3 only, with a `secure set of TLS ciphers <https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/#ssl-ciphers>`_.
+
+Verifying TLS Version and Ciphers
+=================================
+
+In order to check the TLS version and ciphers used by the ingress controller,
+you can use the [sslscan](https://github.com/rbsec/sslscan) tool:
+
+.. code-block:: console
+
+  sslscan dashboard.cloud.example.com
+
+Legacy TLS
+==========
+
+The default configuration, though secure, does not support some older browsers
+and operating systems.
+
+In order to change this behaviour, you can make to make the following changes
+to the ``ingress_nginx_helm_values`` variable, the following example is using the
+`Mozilla SSL Configuration Generator <https://ssl-config.mozilla.org/#server=nginx&config=old>`_
+configured for the *old* profile:
+
+.. code-block:: yaml
+
+  ingress_nginx_helm_values:
+    controller:
+      config:
+        ssl-protocols: "TLSv1 TLSv1.1 TLSv1.2 TLSv1.3"
+        ssl-ciphers: "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA"
diff --git a/doc/source/deploy/cinder.rst b/doc/source/deploy/cinder.rst
new file mode 100644
index 0000000..41a0bc2
--- /dev/null
+++ b/doc/source/deploy/cinder.rst
@@ -0,0 +1,178 @@
+####################
+Cinder Configuration
+####################
+
+Cinder, the block storage service for OpenStack, can be configured to use a
+variety of storage backends. This section guides you through setting up Cinder
+with different backend technologies, each of which might require specific
+configuration steps.
+
+********
+Ceph RBD
+********
+
+When using the integrated Ceph cluster provided with Atmosphere, no additional
+configuration is needed for Cinder. The deployment process automatically
+configures Cinder to use Ceph as the backend, simplifying setup and integration.
+
+***************
+Dell PowerStore
+***************
+
+In order to be able to use Dell PowerStore, you'll need to make sure that you
+setup the hosts inside of your storage array. You'll also need to make sure
+that they are not inside a host group or otherwise individual attachments will
+not work.
+
+You can enable the native PowerStore driver for Cinder with the following
+configuration inside your Ansible inventory:
+
+.. code-block:: yaml
+
+    cinder_helm_values:
+      storage: powerstore
+      dependencies:
+        static:
+          api:
+            jobs:
+              - cinder-db-sync
+              - cinder-ks-user
+              - cinder-ks-endpoints
+              - cinder-rabbit-init
+          scheduler:
+            jobs:
+              - cinder-db-sync
+              - cinder-ks-user
+              - cinder-ks-endpoints
+              - cinder-rabbit-init
+          volume:
+            jobs:
+              - cinder-db-sync
+              - cinder-ks-user
+              - cinder-ks-endpoints
+              - cinder-rabbit-init
+          volume_usage_audit:
+            jobs:
+              - cinder-db-sync
+              - cinder-ks-user
+              - cinder-ks-endpoints
+              - cinder-rabbit-init
+      conf:
+        cinder:
+          DEFAULT:
+            enabled_backends: powerstore
+            default_volume_type: powerstore
+        backends:
+          rbd1: null
+          powerstore:
+            volume_backend_name: powerstore
+            volume_driver: cinder.volume.drivers.dell_emc.powerstore.driver.PowerStoreDriver
+            san_ip: <FILL IN>
+            san_login: <FILL IN>
+            san_password: <FILL IN>
+            storage_protocol: <FILL IN> # FC or iSCSI
+      manifests:
+        deployment_backup: true
+        job_backup_storage_init: true
+        job_storage_init: false
+
+    nova_helm_values:
+      conf:
+        enable_iscsi: true
+
+.. admonition:: About ``conf.enable_iscsi``
+    :class: info
+
+    The ``enable_iscsi`` setting is required to allow the Nova instances to
+    expose volumes by making the `/dev` devices available to the containers,
+    not necessarily to use iSCSI as the storage protocol. In this case, the
+    PowerStore driver will use the storage protocol specified inside Cinder,
+
+********
+StorPool
+********
+
+Using StorPool as a storage backend requires additional configuration to ensure
+proper integration. These adjustments include network settings and file system mounts.
+
+Configure Cinder to use StorPool by implementing the following settings:
+
+.. code-block:: yaml
+
+    cinder_helm_values:
+      storage: storpool
+      pod:
+        useHostNetwork:
+          volume: true
+        mounts:
+          cinder_volume:
+            volumeMounts:
+              - name: etc-storpool-conf
+                mountPath: /etc/storpool.conf
+                readOnly: true
+              - name: etc-storpool-conf-d
+                mountPath: /etc/storpool.conf.d
+                readOnly: true
+            volumes:
+              - name: etc-storpool-conf
+                hostPath:
+                  type: File
+                  path: /etc/storpool.conf
+              - name: etc-storpool-conf-d
+                hostPath:
+                  type: Directory
+                  path: /etc/storpool.conf.d
+      dependencies:
+        static:
+          api:
+            jobs:
+              - cinder-db-sync
+              - cinder-ks-user
+              - cinder-ks-endpoints
+              - cinder-rabbit-init
+          scheduler:
+            jobs:
+              - cinder-db-sync
+              - cinder-ks-user
+              - cinder-ks-endpoints
+              - cinder-rabbit-init
+          volume:
+            jobs:
+              - cinder-db-sync
+              - cinder-ks-user
+              - cinder-ks-endpoints
+              - cinder-rabbit-init
+          volume_usage_audit:
+            jobs:
+              - cinder-db-sync
+              - cinder-ks-user
+              - cinder-ks-endpoints
+              - cinder-rabbit-init
+      conf:
+        cinder:
+          DEFAULT:
+            enabled_backends: hybrid-2ssd
+            default_volume_type: hybrid-2ssd
+        backends:
+          rbd1: null
+          hybrid-2ssd:
+            volume_backend_name: hybrid-2ssd
+            volume_driver: cinder.volume.drivers.storpool.StorPoolDriver
+            storpool_template: hybrid-2ssd
+            report_discard_supported: true
+      manifests:
+        deployment_backup: false
+        job_backup_storage_init: false
+        job_storage_init: false
+
+    nova_helm_values:
+      conf:
+        enable_iscsi: true
+
+.. admonition:: About ``conf.enable_iscsi``
+    :class: info
+
+    The ``enable_iscsi`` setting is required to allow the Nova instances to
+    expose volumes by making the `/dev` devices available to the containers,
+    not necessarily to use iSCSI as the storage protocol. In this case, the
+    StorPool devices will be exposed as block devices to the containers.
diff --git a/doc/source/deploy/csi.rst b/doc/source/deploy/csi.rst
new file mode 100644
index 0000000..fc89945
--- /dev/null
+++ b/doc/source/deploy/csi.rst
@@ -0,0 +1,56 @@
+#################
+CSI Configuration
+#################
+
+This section details how to configure Container Storage Interfaces (CSI) for
+your Kubernetes cluster that Atmosphere runs on. You will need to follow the
+steps below to enable specific CSI drivers based on your storage requirements.
+
+********
+Ceph RBD
+********
+
+If you are using the Ceph storage solution that Atmosphere deploys out of the
+box, no additional configuration is required. The necessary settings are
+automatically applied during the installation process.
+
+***************
+Dell PowerStore
+***************
+
+For environments requiring the integration of PowerStore for storage,
+configure the PowerStore CSI driver by updating your Ansible inventory as
+follows:
+
+.. code-block:: yaml
+
+    csi_driver: powerstore
+    powerstore_csi_config:
+      arrays:
+        - endpoint: https://<FILL IN>/api/rest
+          globalID: <FILL IN>
+          username: <FILL IN>
+          password: <FILL IN>
+          skipCertificateValidation: true
+          isDefault: true
+          blockProtocol: <FILL IN> # FC or iSCSI
+
+Ensure that you replace ``<FILL IN>`` with actual values relevant to your
+PowerStore configuration. This includes specifying the block protocol, which
+can either be Fibre Channel (FC) or iSCSI, depending on your network
+infrastructure.
+
+********
+StorPool
+********
+
+For environments requiring the integration of StorPool for storage, configure
+the StorPool CSI driver by updating your Ansible inventory as follows:
+
+.. code-block:: yaml
+
+    csi_driver: storpool
+    storpool_csi_template: k8s
+
+The ``storpool_csi_template`` variable specifies the StorPool template to use
+for the deployment which is set to ``k8s`` in the example above.
diff --git a/doc/source/deploy/glance.rst b/doc/source/deploy/glance.rst
new file mode 100644
index 0000000..f2f560b
--- /dev/null
+++ b/doc/source/deploy/glance.rst
@@ -0,0 +1,96 @@
+####################
+Glance Configuration
+####################
+
+Glance, the image service used by OpenStack, can be configured to use different
+storage backends depending on your deployment needs. This document provides
+guidance on setting up Glance with either the integrated Ceph cluster that
+comes with Atmosphere or using Cinder as a storage backend, with additional
+details for configurations that require special handling.
+
+****
+Ceph
+****
+
+The Atmosphere deployment includes a pre-configured Ceph cluster that is
+ready to use with Glance, requiring no additional configuration steps. This
+setup is recommended for most users as it provides a seamless and integrated
+storage solution.
+
+******
+Cinder
+******
+
+To configure Glance to use Cinder as its storage backend, which allows for
+managing images as block storage volumes, apply the following configuration:
+
+.. code-block:: yaml
+
+    glance_helm_values:
+      storage: cinder
+      conf:
+        glance:
+          glance_store:
+            stores: cinder
+            default_store: cinder
+          image_formats:
+            disk_formats: raw
+
+This configuration sets Cinder as the default and only storage backend for
+Glance, with images stored in the ``raw`` disk format.  The configuration
+above will use the Cinder default volume type for image storage.
+
+If you want to use a specific volume type, you can merge the following with
+the above configuration:
+
+.. code-block:: yaml
+
+    glance_helm_values:
+      conf:
+        glance:
+          glance_store:
+            cinder_volume_type: slow
+
+Vendor-Specific Configurations
+==============================
+
+Depending on the vendor you use for your Cinder storage backend, you may need
+to make some additional changes to accommodate specific requirements or
+capabilities offered by that vendor. Below are the configuration details for
+common providers.
+
+StorPool
+--------
+
+For deployments utilizing StorPool as the storage backend, additional
+configuration settings are necessary to ensure proper integration and
+functionality.  You can merge the following with the base Cinder configuration
+above:
+
+.. code-block:: yaml
+
+    glance_helm_values:
+      pod:
+        useHostNetwork:
+          api: true
+        mounts:
+          glance_api:
+            volumeMounts:
+              - name: etc-storpool-conf
+                mountPath: /etc/storpool.conf
+                readOnly: true
+              - name: etc-storpool-conf-d
+                mountPath: /etc/storpool.conf.d
+                readOnly: true
+            volumes:
+              - name: etc-storpool-conf
+                hostPath:
+                  type: File
+                  path: /etc/storpool.conf
+              - name: etc-storpool-conf-d
+                hostPath:
+                  type: Directory
+                  path: /etc/storpool.conf.d
+
+These adjustments include network settings and mounting necessary configuration
+files into the Glance API pod to interact efficiently with the StorPool backend.
diff --git a/doc/source/deploy/index.rst b/doc/source/deploy/index.rst
new file mode 100644
index 0000000..ff9238f
--- /dev/null
+++ b/doc/source/deploy/index.rst
@@ -0,0 +1,20 @@
+################
+Deployment Guide
+################
+
+Welcome to the Deployment Guide for the Atmosphere project. This guide provides
+detailed instructions and resources for setting up and configuring the
+Atmosphere deployment on a Kubernetes cluster.
+
+It is designed to assist you through the entire process, from initial system
+requirements to post-deployment verification, ensuring a successful installation
+and setup.
+
+.. toctree::
+   :maxdepth: 2
+
+   inventory
+   csi
+   cinder
+   glance
+   neutron
diff --git a/doc/source/deploy/inventory.rst b/doc/source/deploy/inventory.rst
new file mode 100644
index 0000000..62293ee
--- /dev/null
+++ b/doc/source/deploy/inventory.rst
@@ -0,0 +1,64 @@
+==================
+Building Inventory
+==================
+
+Atmosphere relies on an Ansible inventory in order to drive the deployment of
+all the components.
+
+In order to deploy Atmosphere, you will need to build a directory structure
+that will contain all the configuration files and secrets required to deploy
+the platform.
+
+The recommended layout is as follows:
+
+.. code-block:: text
+
+    cloud-config
+    ├── inventory
+    │   ├── group_vars
+    │   │   ├── all
+    │   │   │   ├── ceph.yml
+    │   │   │   ├── cluster_issuer.yml
+    │   │   │   ├── endpoints.yml
+    │   │   │   ├── keepalived.yml
+    │   │   │   ├── kube-prometheus-stack.yml
+    │   │   │   ├── kubernetes.yml
+    │   │   │   ├── neutron.yml
+    │   │   │   └── secrets.sops.yml
+    │   │   ├── cephs
+    │   │   │   └── osds.yml
+    │   └── hosts.ini
+    ├── playbooks
+    │   └── site.yml
+    └── requirements.yml
+
+*************
+``hosts.ini``
+*************
+
+The ``hosts.ini`` file is the Ansible inventory file that will be used to deploy
+the platform. It is recommended to use the following layout:
+
+.. code-block:: ini
+
+    [controllers]
+    ctl1.cloud.atmosphere.dev
+    ctl2.cloud.atmosphere.dev
+    ctl3.cloud.atmosphere.dev
+
+    [computes]
+    kvm1.cloud.atmosphere.dev
+    kvm2.cloud.atmosphere.dev
+    kvm3.cloud.atmosphere.dev
+
+    [cephs]
+    ceph1.cloud.atmosphere.dev
+    ceph2.cloud.atmosphere.dev
+    ceph3.cloud.atmosphere.dev
+
+.. admonition:: FQDNs are required!
+
+      The hostnames listed in the inventory file must be a FQDN that resolves to
+      the IP address of the host.  If they do not, you will have failures such
+      as agents failing to start, live migration failures and other transient
+      and hard to diagnose issues.
diff --git a/doc/source/deploy/neutron.rst b/doc/source/deploy/neutron.rst
new file mode 100644
index 0000000..f327e7a
--- /dev/null
+++ b/doc/source/deploy/neutron.rst
@@ -0,0 +1,200 @@
+#####################
+Neutron Configuration
+#####################
+
+Neutron, the network service for OpenStack, supports a variety of
+configurations to optimize and tailor network performance. This includes
+integrating hardware acceleration technologies to enhance networking
+capabilities within your OpenStack environment.
+
+*********************
+Hardware Acceleration
+*********************
+
+Hardware acceleration can significantly improve network performance by
+offloading specific network functions to directly to the network interface
+card (NIC). This reduces the load on the host CPU and improves network
+throughput and latency.
+
+ML2/OVS
+=======
+
+Mellanox Accelerated Switching And Packet Processing (ASAP\ :sup:`2`)
+---------------------------------------------------------------------
+
+Mellanox ASAP\ :sup:`2` is a technology that enables the offloading of the Open vSwitch
+datapath to the NIC. This offloading is done by the NIC's firmware, and is
+transparent to the host.
+
+Atmosphere uses the `netoffload <https://github.com/vexxhost/netoffload>`_
+project which takes care of validating and preparing the host for SR-IOV.
+
+It is recommended to follow the ``netoffload`` `BIOS, Kernel & NIC configuration <https://github.com/vexxhost/netoffload#bios-configuration>`_
+steps documented before getting started.
+
+Open vSwitch configuration
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+In order to enable hardware off-loading in Open vSwitch, you must make sure that
+you deploy with the following configuration:
+
+.. code-block:: yaml
+
+    openvswitch_helm_values:
+      conf:
+        ovs_hw_offload:
+          enabled: true
+
+Neutron configuration
+^^^^^^^^^^^^^^^^^^^^^
+
+In order to enable hardware off-loading in Neutron, you can simply deploy it
+with the following configuration and it will use `netoffload <https://github.com/vexxhost/netoffload>`_
+to automatically configure ASAP\ :sup:`2`.
+
+.. admonition:: About ``Init`` errors
+    :class: info
+
+    If you see an Init error when deploying Neutron, you may need to look at the
+    logs of the ``netoffload`` container to see what went wrong.
+
+.. code-block:: yaml
+
+    neutron_helm_values:
+      conf:
+        netoffload:
+          asap2:
+            - dev: enp97s0f0
+              vfs: 16
+
+ML2/OVN
+=======
+
+DPDK for provider & tenant networks
+-----------------------------------
+
+DPDK is a set of libraries and drivers for fast packet processing. It is
+designed to run mostly in userspace, and can be used to accelerate network
+functions in OpenStack.
+
+DPDK can be used with OVN to accelerate the processing of packets in the
+datapath. This can be done by enabling the DPDK support in the OVN
+configuration.
+
+Open vSwitch configuration
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+In order to enable hardware off-loading in Open vSwitch, you must make sure that
+you deploy with the following configuration:
+
+.. code-block:: yaml
+
+    openvswitch_helm_values:
+      conf:
+        ovs_dpdk:
+          enabled: true
+          socket_memory: 2048
+          hugepages_mountpath: /dev/hugepages
+          vhostuser_socket_dir: vhostuser
+          lcore_mask: 0x1
+          driver: mlx5_core
+          vhost_iommu_support: true
+
+For more details about configuring `socket_memory`, `lcore_mask`, and `driver`
+parameters, please refer to the `OpenvSwitch documentation <https://docs.openvswitch.org/en/latest/intro/install/dpdk/#setup-ovs>`_.
+
+OVN configuration
+^^^^^^^^^^^^^^^^^
+
+In order to enable hardware off-loading in OVN, you must make sure that
+you deploy with the following configuration:
+
+.. code-block:: yaml
+
+    ovn_helm_values:
+      network:
+        interface:
+          tunnel: br-ex
+          tunnel_network_cidr: 192.168.0.0/19
+      conf:
+        ovn_bridge_mappings: external:br-ex
+        ovn_bridge_datapath_type: netdev
+
+Neutron configuration
+^^^^^^^^^^^^^^^^^^^^^
+
+In order to enable hardware off-loading in Neutron, you can simply deploy it
+with the following configuration and it will take care of creating the
+DPDK interfaces for you.
+
+.. code-block:: yaml
+
+    neutron_helm_values:
+      conf:
+        neutron:
+          DEFAULT:
+            global_physnet_mtu: 9100
+        plugins:
+          ml2_conf:
+            ml2:
+              path_mtu: 9100
+              physical_network_mtus: external:9100
+            ml2_type_vxlan:
+              vni_ranges: 2000:1000000
+        ovs_dpdk:
+          enabled: true
+          update_dpdk_bond_config: true
+          driver: mlx5_core
+          bonds:
+            - name: dpdkbond
+              bridge: br-ex
+              migrate_ip: true
+              mtu: 9100
+              n_rxq: 2
+              n_txq: 2
+              n_rxq_size: 2048
+              n_txq_size: 2048
+              vhost_iommu_support: true
+              ovs_options: 'bond_mode=balance-tcp lacp=active bond_updelay=10 bond_downdelay=10 other_config:lacp-time=fast'
+              nics:
+                - name: dpdk_b0s0
+                  pci_id: '0000:c1:00.0'
+                - name: dpdk_b0s1
+                  pci_id: '0000:c1:00.1'
+          modules:
+            - name: dpdk
+              log_level: info
+          nics: null
+
+Flavor configuration
+^^^^^^^^^^^^^^^^^^^^
+
+In order to use DPDK with OVN, you must create a flavor that supports DPDKw
+which also includes making changes for the services that use the service
+virtual machine model such as Octavia and Manila.
+
+.. code-block:: yaml
+
+    nova_flavors:
+      - disk: 1
+        name: m1.tiny
+        ram: 512
+        vcpus: 1
+        extra_specs:
+          "hw:vif_multiqueue_enabled": 'true'
+          "hw:mem_page_size": 'large'
+      - disk: 20
+        name: m1.small
+        ram: 2048
+        vcpus: 1
+        extra_specs:
+          "hw:vif_multiqueue_enabled": 'true'
+          "hw:mem_page_size": 'large'
+
+    manila_flavor_extra_specs:
+      "hw:vif_multiqueue_enabled": 'true'
+      "hw:mem_page_size": large
+
+    octavia_amphora_flavor_extra_specs:
+      "hw:vif_multiqueue_enabled": 'true'
+      "hw:mem_page_size": large
diff --git a/doc/source/index.rst b/doc/source/index.rst
new file mode 100644
index 0000000..f7150fc
--- /dev/null
+++ b/doc/source/index.rst
@@ -0,0 +1,38 @@
+##########
+Atmosphere
+##########
+
+Atmosphere is an advanced OpenStack distribution that is powered by open source
+technologies & built by `VEXXHOST <https://vexxhost.com>`_ powered by Kuberentes,
+which allows you to easily deliver virtual machines, Kubernetes and bare-metal
+on your on-premise hardware.
+
+The difference between Atmosphere and other deployment tools is that it is
+fully open source with batteries included.  It ships with settings that are
+curated by years of experience from our team alongside other features such as:
+
+- Built on top of Kubernetes for the life-cycle of the OpenStack cloud.
+- Native integration with Keycloak for robust identity management.
+- Native integration with `Cluster API driver for Magnum <https://github.com/vexxhost/magnum-cluster-api>`_
+- Simplified deployment and management of the cloud using Kubernetes.
+- Pre-integrated with many popular OpenStack projects with no additional configuration.
+- Native integration with many storage platforms out of the box.
+- Full day 2 operations for monitoring, logging and alerting out of the box using Prometheus, AlertManager, Grafana, Loki and more.
+
+.. toctree::
+   :maxdepth: 2
+   :caption: Contents:
+
+   quick-start
+   config/index
+   deploy/index
+   admin/index
+
+
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
diff --git a/doc/source/quick-start.rst b/doc/source/quick-start.rst
new file mode 100644
index 0000000..9479f25
--- /dev/null
+++ b/doc/source/quick-start.rst
@@ -0,0 +1,228 @@
+###########
+Quick Start
+###########
+
+There are several ways that you can quickly get started with Atmosphere to explore
+it's capabilities.
+
+**********
+Deployment
+**********
+
+This section covers all of the different ways you can deploy a quick start
+environment for Atmosphere.
+
+.. admonition:: Testing & Development Only
+    :class: info
+
+    The quick start installation is not for production use, it's perfect
+    for testing and development.
+
+All-in-one
+==========
+
+The easiest way to get started with Atmosphere is to deploy the all-in-one
+installation.  This will install an entire stack of Atmosphere, with Ceph
+and all the OpenStack services inside a single machine.
+
+.. admonition:: Non-reversible Changes
+    :class: warning
+
+    The all-in-one will fully take-over the machine by making system-level
+    changes.  It's recommended to run it inside a virtual machine or a
+    physical machine that can be dedicated to this purpose.
+
+In order to get started, you'll need a **Ubuntu 22.04** system with the
+following minimum system requirements:
+
+- Cores: 8 threads (or vCPUs)
+- Memory: 32GB
+
+If you're looking to run Kubernetes clusters, you'll need more memory
+for the workloads, it following minimum is recommended (but more memory
+is always better!):
+
+- Cores: 16 threads (or vCPUs)
+- Memory: 64GB
+
+.. admonition:: Nested Virtualization
+    :class: warning
+
+    If you're running this inside a virtual machine, it is **extremely**
+    important that the virtual machines supported nested virtualization,
+    otherwise the performance of the VMs will be un-usable.
+
+You'll need to start all of the necessary dependencies first:
+
+.. code-block:: bash
+
+    $ sudo apt-get update
+    $ sudo apt-get install git python3-pip
+    $ sudo pip install poetry
+
+Once done, you can clone the repository locally and switch to the
+``atmosphere`` directory:
+
+.. code-block:: bash
+
+    $ git clone https://github.com/vexxhost/atmosphere.git
+    $ cd atmosphere
+
+Once you're in the directory, you can deploy the all-in-one environment
+by running the following command:
+
+.. code-block:: bash
+
+    $ cd atmosphere
+    $ sudo poetry install --with dev
+    $ sudo poetry run molecule converge -s aio
+
+Once the deployment is done, it will have a full deployment of all services
+inside the same host, so you can use the cloud from the same machine by
+referencing the usage section.
+
+Multi-node
+==========
+
+The multi-node intends to provide the most near-production experience possible,
+as it is architected purely towards production-only environments. In order to
+get a quick production-ready experience of Atmosphere, this will deploy a full
+stack of Atmosphere, with Ceph and all the OpenStack services across multiple
+machines in a lab environment.
+
+OpenStack
+---------
+
+You can deploy Atmosphere on top of an existing OpenStack environment where many
+virtual machines will be deployed in the same way that you'd have multiple
+physical machines in a datacenter for a production environment.
+
+The quick start is powered by Molecule and it is used in continuous integration
+running against the VEXXHOST public cloud so that would be an easy target to
+use to try it out.
+
+ou will need the following quotas set up in your cloud account:
+
+* 8 instances
+* 32 cores
+* 128GB RAM
+* 360GB storage
+
+These resources will be used to create a total of 8 instances broken up as
+follows:
+
+* 3 Controller nodes
+* 3 Ceph OSD nodes
+* 2 Compute nodes
+
+First of all, you'll have to make sure you clone the repository locally to your
+system with `git` by running the following command:
+
+.. code-block:: console
+
+    $ git clone https://github.com/vexxhost/atmosphere
+
+You will need ``poetry`` installed on your operating system.  You will need to make
+sure that you have the appropriate OpenStack environment variables set (such
+as ``OS_CLOUD`` or ``OS_AUTH_URL``, etc.).  You can also use the following
+environment variables to tweak the behaviour of the Heat stack that is created:
+
+* ``ATMOSPHERE_STACK_NAME``: The name of the Heat stack to be created (defaults to
+  `atmosphere`).
+* ``ATMOSPHERE_PUBLIC_NETWORK``: The name of the public network to attach floating
+  IPs from (defaults to ``public``).
+* ``ATMOSPHERE_IMAGE``: The name or UUID of the image to be used for deploying the
+  instances (defaults to ``Ubuntu 20.04.3 LTS (x86_64) [2021-10-04]``).
+* ``ATMOSPHERE_INSTANCE_TYPE``(Deprecated): The instance type used to deploy all of the
+  different instances.(It doesn't have its own default value.)
+  This has been deprecated from v1.4.0. You can configure the instance type per a
+  machine role using ``ATMOSPHERE_CONTROLLER_INSTANCE_TYPE``,
+  ``ATMOSPHERE_COMPUTE_INSTANCE_TYPE``, and ``ATMOSPHERE_STORAGE_INSTANCE_TYPE``
+  variables. For backwards compatibility, if variables specific to the machine roles
+  are not set and ``ATMOSPHERE_INSTANCE_TYPE`` is set, ``ATMOSPHERE_INSTANCE_TYPE`` value
+  is used.
+* ``ATMOSPHERE_CONTROLLER_INSTANCE_TYPE``: The instance type used to deploy controller
+  instances (defaults to ``v3-standard-16``).
+* ``ATMOSPHERE_COMPUTE_INSTANCE_TYPE``: The instance type used to deploy compute
+  instances (defaults to ``v3-standard-4``).
+* ``ATMOSPHERE_STORAGE_INSTANCE_TYPE``: The instance type used to deploy storage
+  instances (defaults to ``v3-standard-4``).
+* ``ATMOSPHERE_NAMESERVERS``: A comma-separated list of nameservers to be used for
+  the instances (defaults to ``1.1.1.1``).
+* ``ATMOSPHERE_USERNAME``: The username what is used to login into the instances (
+  defaults to ``ubuntu``).
+* ``ATMOSPHERE_DNS_SUFFIX_NAME``: The DNS domainname that is used for the API and
+  Horizon. (defaults to ``nip.io``).
+* ``ATMOSPHERE_ACME_SERVER``: The ACME server, currenly this is from LetsEncrypt,
+  with StepCA from SmallStep it is possible to run a internal ACME server.
+  The CA of that ACME server should be present in the instance image.
+* ``ATMOSPHERE_ANSIBLE_VARS_PATH``: The path for ansible group_vars and host_vars.
+  This to build a multinode development cluster with own configs, that are not
+  generated by molecule. This way you can test your configs before you bring
+  them to production.
+
+Once you're ready to get started, you can run the following command to install
+poetry dependencies:
+
+.. code-block:: console
+
+    $ poetry install
+
+Then you can run the following command to build the Heat stack:
+
+.. code-block:: console
+
+    $ poetry run molecule converge
+
+This will create a Heat stack with the name `atmosphere` and start deploying
+the cloud.  Once it's complete, you can login to any of the systems by using
+the `login` sub-command.  For exampel, to login to the first controller node,
+you can run the following:
+
+.. code-block:: console
+
+    $ poetry run molecule login -h ctl1
+
+At this point, you can proceed to the usage section to see how to interact
+with the cloud.
+
+Once you're done with your environment and you need to tear it down, you can
+use the `destroy` sub-command:
+
+.. code-block:: console
+
+    $ poetry run molecule destroy
+
+For more information about the different commands used by Molecule, you can
+refer to the Molecule documentation.
+
+*****
+Usage
+*****
+
+Once the deployment is done, you can either use the CLI to interact with
+the OpenStack environment, or you can access the Horizon dashboard.
+
+For the CLI, you can ``source /root/openrc`` and then use the ``openstack``
+CLI.  For example, if you want to list the networks, you can run the
+following command:
+
+.. code-block:: console
+
+    $ source /root/openrc
+    $ openstack network list
+
+For the Horizon dashboard, you can find the URL to access it by running
+the following command:
+
+.. code-block:: console
+
+    $ kubectl -n openstack get ingress/dashboard -ojsonpath='{.spec.rules[0].host}'
+
+You can find the credentials to login to the dashboard reading the
+`/root/openrc` file.  You can use the following variables to match
+the credentials:
+
+- Username: ``OS_USERNAME``
+- Password: ``OS_PASSWORD``
+- Domain: ``OS_USER_DOMAIN_NAME``
