Skip to content

Commit da81c14

Browse files
author
Matt Pryor
authored
Update example environment + small tweaks to docs (azimuth-cloud#124)
* Update example environment + small tweaks to docs * Replace local docs URL * Address review comments
1 parent bcb4a91 commit da81c14

File tree

6 files changed

+122
-133
lines changed

6 files changed

+122
-133
lines changed

docs/configuration/03-kubernetes-config.md

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -179,18 +179,7 @@ is enabled, then Kubernetes clusters should be configured to use the OVN provide
179179
any load-balancers that are created:
180180

181181
```yaml title="environments/my-site/inventory/group_vars/all/variables.yml"
182-
#### For the HA cluster ####
183-
184-
# The provider for the API server load-balancer created by Cluster API
185-
capi_cluster_apiserver_loadbalancer_provider: ovn
186-
# The provider for load-balancers created for LoadBalancer services
187-
capi_cluster_addons_openstack_loadbalancer_provider: ovn
188-
189-
#### For tenant clusters ####
190-
191-
# Tenant API servers are load-balanced using Zenith
192-
# This variable applies to load-balancers created for LoadBalancer services
193-
azimuth_capi_operator_capi_helm_openstack_loadbalancer_provider: ovn
182+
openstack_loadbalancer_provider: ovn
194183
```
195184

196185
!!! tip

docs/configuration/04-target-cloud.md

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@ for the target OpenStack cloud.
66
Azimuth uses the
77
[Keystone Service Catalog](https://docs.openstack.org/keystone/latest/contributor/service-catalog.html)
88
to discover the endpoints for OpenStack services, so only needs to be told where to find the
9-
Keystone v3 endpoint:
9+
Keystone v3 endpoint.
10+
11+
By default, the auth URL from the application credential used to deploy Azimuth will be used.
12+
If you want Azimuth to target a different OpenStack cloud than the one it is deployed in, this
13+
can be overridden:
1014

1115
```yaml title="environments/my-site/inventory/group_vars/all/variables.yml"
1216
azimuth_openstack_auth_url: https://openstack.example-cloud.org:5000/v3
@@ -24,8 +28,8 @@ trustroots, TLS verification must be disabled:
2428
azimuth_openstack_verify_ssl: false
2529
```
2630

27-
If you use a domain other than `default`, you will also need to tell Azimuth the name of the
28-
domain to use when authenticating:
31+
If you are using the password authenticator and use a domain other than `default`,
32+
you will also need to tell Azimuth the name of the domain to use when authenticating:
2933

3034
```yaml title="environments/my-site/inventory/group_vars/all/variables.yml"
3135
azimuth_openstack_domain: my-domain
@@ -129,25 +133,25 @@ azimuth_openstack_internal_net_cidr: 10.0.3.0/24
129133

130134
## Monitoring Cloud Capacity
131135

132-
Azimuth is able to federate cloud metrics from a prometheus running within
133-
your cloud enviroment, such as the one deployed by:
134-
https://github.com/stackhpc/stackhpc-kayobe-config
136+
Azimuth is able to federate cloud metrics from a Prometheus running within
137+
your OpenStack cloud enviroment, such as the one deployed by
138+
[stackhpc-kayobe-config](https://github.com/stackhpc/stackhpc-kayobe-config).
139+
140+
We also assume the [os-capacity exporter](https://github.com/stackhpc/os-capacity)
141+
is being used to query the current capacity of your cloud, mostly using data from
142+
OpenStack placement.
135143

136-
Typically we also assume the following exporter is being used to
137-
query the current capacity of your cloud, mostly using data from
138-
OpenStack placement:
139-
https://github.com/stackhpc/os-capacity
144+
First you need to enable the project metrics and cloud metrics links within
145+
Azimuth by configuring:
140146

141-
First you need to enable the project metrics and cloud metrics
142-
links within Azimuth by configuring:
143-
```yaml
147+
```yaml title="environments/my-site/inventory/group_vars/all/variables.yml"
144148
# Defaults to no
145149
cloud_metrics_enabled: yes
146150
```
147151

148-
To make sure Azimuth knows how to access the prometheus running
149-
in your cloud, you need to configure:
150-
```yaml
152+
You then need to tell Azimuth how to access the OpenStack cloud Prometheus:
153+
154+
```yaml title="environments/my-site/inventory/group_vars/all/variables.yml"
151155
# hostname needed to match TLS certificate name
152156
cloud_metrics_prometheus_host: "mycloud.example.com"
153157
# ip that matches the above hostname

docs/configuration/10-kubernetes-clusters.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ The Harbor registry can be disabled entirely:
170170

171171
```yaml title="environments/my-site/inventory/group_vars/all/variables.yml"
172172
harbor_enabled: no
173+
```
173174

174175
### Additional proxy caches
175176

environments/base/inventory/group_vars/all.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,8 @@ infra_external_network_id: >-
172172
if __os_external_networks | length == 1
173173
else undef(hint = 'Unable to determine external network ID')
174174
}}
175+
capi_cluster_external_network_id: "{{ infra_external_network_id }}"
176+
azimuth_capi_operator_external_network_id: "{{ infra_external_network_id }}"
175177

176178
# If there is only one load balancer provider, use it by default
177179
# Note that 'octavia' is excluded as it is an alias of 'amphora'

environments/example/inventory/group_vars/all/secrets.yml

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,36 @@
22
# This file contains environment-specific secrets for an Azimuth deployment
33
#
44
# It should be encrypted if stored in version control
5+
# https://stackhpc.github.io/azimuth-config/repository/secrets/
56
#####
67

7-
# The password for the Harbor admin account
8-
harbor_admin_password: "<secure password>"
9-
# The secret key for Harbor
10-
harbor_secret_key: "<secure secret key>"
11-
# The admin password for the cloud metrics Grafana
12-
cloud_metrics_grafana_admin_password: "<secure password>"
13-
# The admin password for the Keycloak master realm
14-
keycloak_admin_password: "<secure password>"
8+
# https://stackhpc.github.io/azimuth-config/configuration/05-secret-key/
159
# The secret key for signing Azimuth cookies
1610
azimuth_secret_key: "<secure secret key>"
11+
12+
# https://stackhpc.github.io/azimuth-config/configuration/07-platform-identity/#keycloak-admin-password
13+
# The admin password for the Keycloak master realm
14+
keycloak_admin_password: "<secure password>"
15+
16+
# https://stackhpc.github.io/azimuth-config/configuration/08-zenith/
1717
# The secret key for signing Zenith registrar tokens
1818
zenith_registrar_subdomain_token_signing_key: "<secure secret key>"
19+
20+
# https://stackhpc.github.io/azimuth-config/configuration/10-kubernetes-clusters/#harbor-registry
21+
# The password for the Harbor admin account
22+
harbor_admin_password: "<secure password>"
23+
# The secret key for Harbor
24+
harbor_secret_key: "<secure secret key>"
25+
26+
# https://stackhpc.github.io/azimuth-config/configuration/14-monitoring/#accessing-web-interfaces
1927
# The admin password for Azimuth administrative dashboards
2028
admin_dashboard_ingress_basic_auth_password: "<secure password>"
2129

22-
# The Slack webhook URL for monitoring alerts (optional)
23-
# alertmanager_config_slack_webhook_url: https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
30+
# https://stackhpc.github.io/azimuth-config/configuration/14-monitoring/#slack-alerts
31+
# The Slack webhook URL for monitoring alerts
32+
alertmanager_config_slack_webhook_url: https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
33+
34+
# https://stackhpc.github.io/azimuth-config/configuration/15-disaster-recovery/
35+
# The S3 access key and secret for backups
36+
velero_aws_access_key_id: "<access key id>"
37+
velero_aws_secret_access_key: "<secret key>"
Lines changed: 74 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -1,124 +1,103 @@
11
#####
2-
# Configuration for the seed node (HA) or single node
2+
# This file, combined with secrets.yml, shows an example configuration for a
3+
# minimal, but still best-practice, Azimuth deployment on a "well-behaved" cloud
4+
#
5+
# https://stackhpc.github.io/azimuth-config/best-practice/
6+
#
7+
# It is recommended to read the "Configuration" section of the Azimuth Operator
8+
# Documentation in full to understand all the available options
9+
#
10+
# https://stackhpc.github.io/azimuth-config/configuration/
311
#####
412

5-
# The ID of an existing network to create the node on
6-
infra_network_id: "<internal network id>"
7-
# OR
8-
# The CIDR of the subnet that should be created
9-
infra_network_cidr: 192.168.100.0/24
10-
# The ID of the external network to connect to via a router
11-
infra_external_network_id: "<external network id>"
13+
## Configuration for OpenTofu state
14+
## https://stackhpc.github.io/azimuth-config/repository/opentofu/
1215

13-
# The fixed floating IP to associate with the machine
14-
# This IP must be pre-allocated to the project
15-
# For a single node deployment, this IP should have the wildcard ingress domain assigned to it
16-
infra_fixed_floatingip: "<pre-allocated floating ip>"
17-
# OR
18-
# The name of the floating IP pool to allocate a floating IP from
19-
infra_floatingip_pool: "<floating ip pool>"
20-
# OR
21-
# The ID of a provisioning network that will be used to access the seed node
22-
infra_provisioning_network_id: "<provisioning network id>"
23-
24-
# The image id of an Ubuntu 20.04 image to use for the node
25-
# N.B. This is populated automatically using community images by default
26-
# infra_image_id: "<image id>"
16+
# The Terraform backend type to use (HTTP and S3 supported)
17+
terraform_backend_type: "<http or s3>"
18+
19+
# The backend configuration (depends on the selected backend type)
20+
terraform_backend_config: {}
21+
22+
23+
## Configuration for the seed node (HA) or single node deployment
24+
## https://stackhpc.github.io/azimuth-config/configuration/02-deployment-method/
25+
26+
# The ID of the external network to use
27+
# This network must provide _egress_ to the internet
28+
# https://stackhpc.github.io/azimuth-config/configuration/01-prerequisites/#networking
29+
infra_external_network_id: "<network id>"
2730

2831
# The id of the flavor to use for the node
2932
# For a seed node for an HA cluster, 8GB RAM is fine (maybe even 4GB)
3033
# For a single node deployment, >= 16GB RAM is recommended
3134
infra_flavor_id: "<flavor id>"
3235

33-
# The size in GB for the data volume
34-
# This will hold all cluster data, including Kubernetes resources, and also PVC data
36+
# The size of the volume to use for K3S cluster data
3537
infra_data_volume_size: 100
3638

37-
#####
38-
# Configuration for the HA cluster
39-
#####
39+
# SINGLE NODE DEPLOYMENT ONLY
40+
# The fixed floating IP to associate with the machine
41+
# Must be pre-allocated to the project and have the wildcard ingress domain assigned to it
42+
# infra_fixed_floatingip: "<pre-allocated floating ip>"
43+
44+
45+
## Configuration for the HA cluster
46+
## https://stackhpc.github.io/azimuth-config/configuration/02-deployment-method/
47+
## https://stackhpc.github.io/azimuth-config/configuration/03-kubernetes-config/
4048

41-
# The Kubernetes version that will be used for the HA cluster
42-
# N.B. This is populated automatically using community images by default
43-
# capi_cluster_kubernetes_version: 1.23.8
44-
# The ID of the image that will be used for the nodes of the HA cluster
45-
# N.B. This is populated automatically using community images by default
46-
# capi_cluster_machine_image_id: "<image id>"
4749
# The name of the flavor to use for control plane nodes
50+
# A flavor with at least 2 CPUs, 8GB RAM and 100GB root disk is recommended
4851
capi_cluster_control_plane_flavor: "<flavor name>"
52+
4953
# The name of the flavor to use for worker nodes
54+
# A flavor with at least 4 CPUs, 16GB RAM and 100GB root disk is recommended
5055
capi_cluster_worker_flavor: "<flavor name>"
56+
5157
# The number of worker nodes
5258
capi_cluster_worker_count: 3
53-
# The fixed floating IP to associate with the load balancer for the ingress controller
54-
# This IP must be pre-allocated to the project and should have the wildcard ingress domain assigned to it
55-
capi_cluster_addons_ingress_load_balancer_ip: "<pre-allocated floating ip>"
5659

57-
#####
58-
# Ingress configuration
59-
#####
60-
# The base domain to use for ingress resources
61-
ingress_base_domain: "<base domain>"
62-
63-
# Indicates if cert-manager should be enabled
64-
# Currently, TLS is enabled for ingress iff cert-manager is enabled
65-
certmanager_enabled: yes
60+
# The floating IP to which to wildcard DNS entry has been assigned
61+
capi_cluster_addons_ingress_load_balancer_ip: "<pre-allocated floating ip>"
6662

67-
# Indicates if Harbor should be enabled to provide pull-through caches
68-
harbor_enabled: no
6963

70-
#####
71-
# Azimuth configuration
72-
#####
73-
# Indicates if the Zenith app proxy should be enabled
74-
azimuth_apps_enabled: yes
75-
# Indicates if Kubernetes support should be enabled
76-
azimuth_kubernetes_enabled: yes
77-
# Indicates if Cluster-as-a-Service (CaaS) should be enabled
78-
azimuth_clusters_enabled: yes
64+
## Target cloud configuration
65+
## https://stackhpc.github.io/azimuth-config/configuration/04-target-cloud/
7966

8067
# The name of the current cloud
8168
azimuth_current_cloud_name: example
69+
8270
# The label for the current cloud
8371
azimuth_current_cloud_label: Example
84-
# The auth URL for the target OpenStack cloud
85-
azimuth_openstack_auth_url: https://cloud.example.com:5000/v3
8672

87-
#####
88-
# Configuration of authenticators / authentication methods
89-
#####
90-
# Whether the password authenticator should be enabled (enabled by default)
91-
azimuth_authenticator_password_enabled: true
92-
# The label for the password authenticator
93-
azimuth_authenticator_password_label: "Username + Password"
94-
95-
# Whether the appcred authenticator should be enabled (not enabled by default)
96-
azimuth_authenticator_appcred_enabled: false
97-
# The label for the appcred authenticator
98-
azimuth_authenticator_appcred_label: "Application Credential"
99-
100-
# Whether the federated authenticator should be enabled (not enabled by default)
101-
azimuth_authenticator_federated_enabled: false
102-
# The label for the federated authenticator
103-
azimuth_authenticator_federated_label: "Federated"
104-
# The provider for the federated authenticator
105-
# This should correspond to the Keystone federation URL, e.g. <auth url>/auth/OS-FEDERATION/websso/<provider>
106-
azimuth_authenticator_federated_provider: oidc
10773

108-
#####
109-
# Configuration for CaaS appliances
110-
#####
111-
# If CaaS is enabled and the StackHPC Slurm appliance is enabled (the default), this
112-
# is the id of a Rocky 8 image that will be used for Slurm clusters
113-
# N.B. This is populated automatically using community images by default
114-
# azimuth_caas_stackhpc_slurm_appliance_image: "<image id>"
115-
116-
# The ID of the desktop or webconsole image to use for the workstation appliance
117-
# See https://object.arcus.openstack.hpc.cam.ac.uk/swift/v1/AUTH_f0dc9cb312144d0aa44037c9149d2513/azimuth-images-prerelease/
118-
# N.B. This is populated automatically using community images by default
119-
# azimuth_caas_stackhpc_workstation_image: "<image id>"
120-
121-
# The ID of the repo2docker image to use for the repo2docker appliance
122-
# See https://object.arcus.openstack.hpc.cam.ac.uk/swift/v1/AUTH_f0dc9cb312144d0aa44037c9149d2513/azimuth-images-prerelease/
123-
# N.B. This is populated automatically using community images by default
124-
# azimuth_caas_stackhpc_repo2docker_image: "<image id>"
74+
## Ingress configuration
75+
## https://stackhpc.github.io/azimuth-config/configuration/06-ingress/
76+
77+
# The base domain to use for ingress resources
78+
ingress_base_domain: "<base domain>"
79+
80+
81+
## Persistence and retention for monitoring (HA only)
82+
## https://stackhpc.github.io/azimuth-config/configuration/14-monitoring/#persistence-and-retention
83+
84+
# Prometheus retention and volume size
85+
capi_cluster_addons_monitoring_prometheus_retention: 90d
86+
capi_cluster_addons_monitoring_prometheus_volume_size: 50Gi
87+
88+
# Loki retention and volume size
89+
capi_cluster_addons_monitoring_loki_retention: 744h
90+
capi_cluster_addons_monitoring_loki_volume_size: 50Gi
91+
92+
93+
## Disaster recovery
94+
## https://stackhpc.github.io/azimuth-config/configuration/15-disaster-recovery/
95+
96+
# Enable Velero for backup
97+
velero_enabled: true
98+
99+
# The URL of the S3 endpoint to use for backups
100+
velero_s3_url: "<endpoint URL>"
101+
102+
# The name of the S3 bucket to use for backups (must already exist)
103+
velero_bucket_name: "<bucket name>"

0 commit comments

Comments
 (0)