1
- # Best practice for deployments
1
+ # Best practice for production deployments
2
2
3
3
This document guides you through the process of setting up a production-ready Azimuth
4
4
deployment following recommended best practice.
5
5
6
- ## Prerequisites
7
-
8
- Before proceeding with an Azimuth deployment, you should ensure that the target cloud
9
- meets the [ prerequisites] ( ./configuration/01-prerequisites.md ) .
10
-
11
- ## OpenStack projects
12
-
13
- Azimuth is usually deployed on the cloud that is being targeted for workloads. It is
14
- recommended to have three OpenStack projects for a production Azimuth deployment, to contain:
15
-
16
- * A highly-available (HA) production deployment, e.g. ` azimuth-production `
17
- * A HA staging deployment, e.g. ` azimuth-staging `
18
- * All-in-one (AIO) deployments for validating changes, e.g. ` azimuth-cicd `
19
-
20
- The production and staging projects must have
21
- [ sufficient quota] ( ./configuration/01-prerequisites.md#prerequisites ) for a HA Azimuth
22
- deployment. The required quota in the CI/CD project will depend on the number of
23
- proposed changes that are open concurrently.
24
-
25
6
## Repository
26
7
27
8
Before building your Azimuth configuration, you must first
@@ -32,17 +13,6 @@ It is recommended to use a
32
13
[ feature branch workflow] ( ./repository/index.md#making-changes-to-your-configuration )
33
14
to make changes to your Azimuth configuration in a controlled way.
34
15
35
- ## OpenTofu state
36
-
37
- Azimuth deployments use [ OpenTofu] ( https://opentofu.org/ ) , an open-source fork of
38
- [ Terraform] ( https://www.terraform.io/ ) , to manage some parts of the infrastructure.
39
-
40
- A [ remote state store] ( ./repository/opentofu.md#remote-state ) must be configured in
41
- order to persist the OpenTofu state across playbook executions. If GitLab is being
42
- used for the Azimuth configuration repository, it is recommended to use
43
- [ GitLab-managed Terraform state] ( ./repository/opentofu.md#gitlab ) for this. If not,
44
- [ S3] ( ./repository/opentofu.md#s3 ) is the preferred approach.
45
-
46
16
## Environments
47
17
48
18
An Azimuth configuration repository contains multiple [ environments] ( ./environments.md ) ,
@@ -83,6 +53,47 @@ base --> ha --> site --> site-ha --> production
83
53
84
54
with only necessary differences configured in each environment, e.g. the ingress base domain, between ` staging ` and ` production ` .
85
55
56
+ ## OpenStack projects
57
+
58
+ Azimuth is usually deployed on the cloud that is being targeted for workloads. It is
59
+ recommended to have three OpenStack projects for a production Azimuth deployment, to contain:
60
+
61
+ * A highly-available (HA) production deployment, e.g. ` azimuth-production `
62
+ * A HA staging deployment, e.g. ` azimuth-staging `
63
+ * All-in-one (AIO) deployments for validating changes, e.g. ` azimuth-cicd `
64
+
65
+ The production and staging projects must have
66
+ [ sufficient quota] ( ./configuration/01-prerequisites.md#prerequisites ) for a HA Azimuth
67
+ deployment. The required quota in the CI/CD project will depend on the number of
68
+ proposed changes that are open concurrently.
69
+
70
+ Users that login to Azimuth will see a list of the OpenStack projects
71
+ they can access. Any OpenStack project can be used to deploy Azimuth
72
+ workloads, as long as the networking requirements have been met.
73
+ Azimuth creates application credentials to be able to create the
74
+ user workloads using the appropriate automation.
75
+
76
+ ## Deployment Prerequisites
77
+
78
+ Before proceeding with an Azimuth [ deployment] ( ./deployment/index.md ) ,
79
+ you should ensure that you can fulfil
80
+ [ all the prerequisites] ( ./configuration/01-prerequisites.md ) .
81
+
82
+ The prerequisites include verifying that the target cloud has the required features available,
83
+ generating OpenStack application credentials
84
+ and ensuring that the required DNS records and TLS certificates are available.
85
+
86
+ ## OpenTofu state
87
+
88
+ Azimuth deployments use [ OpenTofu] ( https://opentofu.org/ ) , an open-source fork of
89
+ [ Terraform] ( https://www.terraform.io/ ) , to manage some parts of the infrastructure.
90
+
91
+ A [ remote state store] ( ./repository/opentofu.md#remote-state ) must be configured in
92
+ order to persist the OpenTofu state across playbook executions. If GitLab is being
93
+ used for the Azimuth configuration repository, it is recommended to use
94
+ [ GitLab-managed Terraform state] ( ./repository/opentofu.md#gitlab ) for this. If not,
95
+ [ S3] ( ./repository/opentofu.md#s3 ) is the preferred approach.
96
+
86
97
## Continuous delivery
87
98
88
99
A production Azimuth deployment should use [ continuous delivery] ( ./deployment/automation.md ) ,
103
114
[ sample GitLab CI/CD configuration] ( https://github.com/stackhpc/azimuth-config/tree/stable/.gitlab-ci.yml.sample )
104
115
is provided that implements this workflow for GitLab-hosted repositories.
105
116
117
+ ## Monitoring
118
+
119
+ Before going into production, be sure you can
120
+ [ access the monitoring] ( ./debugging/access-monitoring.md ) .
121
+
122
+ Also ensure you have
123
+ [ configured alert manager] ( ./configuration/14-monitoring.md )
124
+ such that you will notice any alerts on staging and production.
125
+
106
126
## Disaster recovery
107
127
108
128
Azimuth uses [ Velero] ( https://velero.io/ ) to backup the data that is required to restore an
@@ -117,3 +137,7 @@ a production deployment.
117
137
You are now ready to begin adding configuration to your environments. When building an environment
118
138
for the first time, it is recommended to follow each documentation page in order, beginning with
119
139
the [ Deployment method] ( ./configuration/02-deployment-method.md ) .
140
+
141
+ !!! tip
142
+
143
+ Remember to share as much configuration as possible between all your [environments](./environments.md)!
0 commit comments