Add an availability zone
The console lists an availability zone only after the management API knows which controller to call. That registration is separate from installing the AZ stack, and it is the same whether the AZ runs on the management cluster or somewhere else.
Install the management plane and the AZ first. Then connect them with the settings below.
AZ on the management cluster
A hyperconverged AZ on the management cluster is already registered. The system chart defines it under the code local, with destination in-cluster. Install that AZ as clusters.local. Do not add a second code for the same cluster.
See The default local AZ. Set local to null there when the management cluster should not host an AZ.
Add any other AZ
Pick a code, for example paris-1. Use that same code as the key under clusters when you install the AZ.
1. Controller
On the AZ cluster, set the controller name and the secret the API will send. The secret must match the API entry in the next step.
When the API is not running on this cluster, expose the controller so the management cluster can reach it:
clusters:
paris-1:
systemConfiguration:
apps:
superphenix-controller:
values:
config:
azName: "Paris 1"
http:
authSecret: "replace-with-a-shared-secret"
ingress:
enabled: true
hosts:
- host: controller.paris-1.example
paths:
- path: /
Apply this with the same Helm upgrade you use to install the AZ. The controller chart leaves ingress disabled; the in-cluster Service is enough only when the API runs in this cluster.
2. API
On the management cluster, add the AZ to the API configuration and upgrade the operator release.
management:
systemConfiguration:
apps:
superphenix-api:
values:
config:
azs:
paris-1:
name: "Paris 1"
# URL the API can call. Use the controller Service URL when both
# run in one cluster; otherwise use the ingress hostname.
controllerUrl: "https://controller.paris-1.example"
authSecret: "replace-with-a-shared-secret"
# Cluster name, from `.clusters` in the superphenix-operator chart.
destination: "paris-1"
productsConfig:
argoApp:
kubernetes:
azDomains:
paris-1:
# Host the in-cluster API proxy uses to reach control planes.
internal: console.example.org
# "%s" is replaced by the Kubernetes cluster ID.
external: "%s.console.example.org"
| Field | Role |
|---|---|
name |
Name shown in the console. |
controllerUrl |
Base URL of that AZ's Superphenix controller. |
authSecret |
Shared with apps.superphenix-controller.values.config.http.authSecret on that AZ. |
destination |
Argo CD cluster that receives this AZ's applications. |
logoUrl |
Optional logo for the console. |
whitelist |
Optional list of organization IDs allowed to see this AZ. Empty means every organization. |
azDomains.<code>.internal |
Host used inside the cluster to reach Kubernetes control planes for this AZ. |
azDomains.<code>.external |
Public control-plane hostname template. %s is the cluster ID. |
OPERATOR_VERSION="$(curl -fsSL -o /dev/null -w '%{url_effective}' https://github.com/super-phenix/superphenix/releases/latest | sed 's#.*/v##')"
helm upgrade superphenix-operator \
"oci://ghcr.io/super-phenix/charts/superphenix-operator:${OPERATOR_VERSION}" \
--namespace superphenix-system \
-f values.yaml
The AZ appears in the console once the API can reach the controller. Open it from Accessing Superphenix.