Deployment with Helm
This section explains the new installation and upgrade process of the nexeed-infra Helm chart.
Prerequisites
The following prerequisites must be in place:
-
Kubernetes Cluster installed and configured (K3s, kind, aks, eks etc.)
-
Installation of the kubernetes manifests from
iaschart, that the following has been installed:-
namespaces
-
CRDs
-
cluster role or the availability of kubernetes cluster admin for Nexeed IAS application deployment
-
-
Access to Kubernetes API with a non-kubernetes admin user for deployment of namespaced-scoped objects
-
Helm binary installed (version >= 3.15)
-
Access to
BCIDockerRegistryor a mirror of it, which provides modules' images for deployment -
The
nexeed-infraHelmUmbrellaChart artifact for the specific version (which can also be retrieved fromBCIDockerRegistry)
Custom values file
It is required to have the custom-values-infra.yaml file to deploy the
nexeed-infra Helm chart.
The minimal custom-values-infra.yaml file is layed out below:
# custom-values-infra.yaml
global:
targetDeployment: <platform_name>
imageCredentials:
docker-registry-secret:
registry: <registry_hostname>
email: <registry_login_email>
username: <username>
password: <password>
embeddedRabbitMQAdminPassword: <rabbitmq_admin_password>
nexeedHost: <hostname>
nexeedCACerts: |
<CACertChain>
modules:
rabbitmq:
enabled: true
contextPath: <optional>
loadBalancer:
enabled: <true/false>
# if enabled: true, the following parameters are required
## For Azure platform
ip: <load_balancer_ip>
azure:
public_ip_resource_group: <resource_group_name>
sourceRanges:
- <whitelisted_ip1_ranges_in_cidr>
- <whitelisted_ip2_ranges_in_cidr>
The explanation of the minimal parameters under global:
-
targetDeployment: the target platform deployment, i.e.azure,k3s, etc -
imageCredentialblock: the credential for the Container image registry -
embeddedRabbitMQAdminPassword: The admin password for RabbitMQ admin portal, should be the same as the one in theiaschart -
nexeedHost: the primary hostname for the targetingiasdeployment, should be the same as the one in theiaschart -
nexeedCACerts: should be the same as theiaschart -
modules: the block of the middleware components this chart manages
Module: RabbitMQ
This section explains the RabbitMQ chart available parameters.
global.modules.rabbitmq section:
-
enabled:trueorfalse- Enables or disables the RabbitMQ cluster -
contextPath: default torabbitmq- The URL context path of the RabbitMQ management portal -
loadBalancer: TheloadBalancersection states if a cloud-provided loadbalancer is needed.-
loadBalancer.enabled:trueorfalse(default) - Iffalsethen only Kubernetesserviceresource will be used.
-
-
The other platform specific parameters under
loadBalancerare not needed if set tofalse.
|
The following parameters under loadBalancer are valid for Azure platform:
-
ip: The IP address string of the Azure loadbalancer for the RabbitMQ cluster -
sourceRange: List of the whitelisted inbound IP sources in CIDR range format for accessing this RabbitMQ cluster -
azure: The Azure specific parameters-
public_ip_resource_group: The resource group name of the public IP address for the RabbitMQ cluster
-
rabbitmq.local section:
-
extraPlugins: it is a list of extra plugins to be enabled in Rabbitmq instances
If rabbitmq_prometheus is added to the extraPlugins list, the chart also exposes prometheus metrics via ingress controller with a configuration similar with the one for the management plugin (under same subdomain or contextpath). The prometheus metrics will be available on the same context path as the management plugin, i.e. /rabbitmq/node0/metrics, /rabbitmq/node1/metrics and so on, one entry for each rabbitmq instance.
Deploy to Kubernetes
You may deploy the nexeed-infra Helm chart by the following steps:
-
Login to the registry that hosts the
nexeed-infra(one time setup):helm registry login <registry_host> --username <username> --password <password> -
Download the
nexeed-infraHelm chart:helm pull oci://<registry_host>/nexeed-infra/helmchart/nexeed-infra --version <version> -
Extract the downloaded tgz file:
tar xvzf nexeed-infra-<version>.tgz -
Change directory to the
nexeed-infrafoldercd nexeed-infra -
Connect to your Kubernetes cluster by updating your
<home>/.kube/configfile -
Assuming the
custom-values-infra.yamlis written, then perform the command for installation or upgrade:helm upgrade -i -n infra --create-namespace nexeed-infra -f <path_to_custom-values-infra.yaml> . -
Wait until the enabled services are up and running
-
Continue with the
iaschart deployment
The RabbitMQ StatefulSet will be deployed, the size of the cluster will automatically adjust based on available nodes.
Add the cluster info to IAS chart
Now you should add the RabbitMQ information to the main ias chart in their
custom-values.yaml file.
See RMQCustomValueRemote for reference.