Skip to content

Deployment method

azimuth-ops supports two deployment methods - singlenode and ha.

Networking automation

azimuth-ops will create an internal network, onto which all nodes for the deployment will be placed. It will also create a router connecting the internal network to the external network where floating IPs are allocated.

Single node

In this deployment method, a single node is provisioned with OpenTofu and configured as a K3S cluster. The full Azimuth stack is then deployed onto this cluster.

Warning

This deployment method is only suitable for development or demonstration.

To use the single node deployment method, use the singlenode environment in your ansible.cfg:

ansible.cfg
[defaults]
inventory = ../base/inventory,../singlenode/inventory,./inventory

The following variables must be set to define the properties of the K3S node:

environments/my-site/inventory/group_vars/all/variables.yml
# The ID of the external network
infra_external_network_id: "<network id>"

# The floating IP to which to wildcard DNS entry has been assigned
infra_fixed_floatingip: "<pre-allocated floating ip>"

# The ID of the flavor to use for the K3S node
# A flavor with at least 4 CPUs and 16GB RAM is recommended
infra_flavor_id: "<flavor id>"

# The size of the volume to use for K3S cluster data
infra_data_volume_size: 100

Highly-available (HA)

For the HA deployment method, OpenTofu is also used to provision a single node that is configured as a K3S cluster. However rather than hosting the Azimuth components, as in the single node case, this K3S cluster is only configured as a Cluster API management cluster.

Cluster API on the K3S cluster is then used to manage a HA cluster, in the same project and on the same network. The Azimuth stack is then deployed onto this cluster.

To use the HA deployment method, use the ha environment in your ansible.cfg:

ansible.cfg
[defaults]
inventory = ../base/inventory,../ha/inventory,./inventory

The following variables must be set to define the properties of the K3S node and the Cluster API managed nodes:

environments/my-site/inventory/group_vars/all/variables.yml
# The ID of the external network
infra_external_network_id: "<network id>"

# The ID of the flavor to use for the K3S node
# A flavor with at least 2 CPUs and 8GB RAM is recommended
infra_flavor_id: "<flavor id>"

# The name of the flavor to use for control plane nodes
# A flavor with at least 2 CPUs, 8GB RAM and 100GB root disk is recommended
capi_cluster_control_plane_flavor: "<flavor name>"

# The name of the flavor to use for worker nodes
# A flavor with at least 4 CPUs, 16GB RAM and 100GB root disk is recommended
capi_cluster_worker_flavor: "<flavor name>"

# The number of worker nodes
capi_cluster_worker_count: 3

# The floating IP to which to wildcard DNS entry has been assigned
capi_cluster_addons_ingress_load_balancer_ip: "<pre-allocated floating ip>"

Last update: March 15, 2024
Created: March 15, 2024