You can set limits and parameters for deploying microservices from portable services in modules using ConfigMap. This allows you to limit the dedicated resources, define the number of microservice instances that are deployed in Kubernetes, and configure their autoscaling. In addition, you can configure the distribution of microservice pods across cluster nodes in ConfigMap.
You can specify global settings for portable services configured in all modules of the system, as well as add individual settings for a specific service.
You can use ConfigMap for:
- Fine tuning of microservice deployment. You can specify parameter values that are not available when editing a portable service in a module.
- Changing settings without editing the module. It is useful for paid modules. For example, you can set the number of microservice instances because the parameter in ConfigMap is prioritized over the value set by the developer when creating the module.
To configure ConfigMap, do the following steps:
Step 1: Enable ConfigMap
To use ConfigMap for configuration of portable services, enable the ELMA365_BABYSITTER_ENABLE_CONFIGMAP_WATCHER environment variable for the babysitter service. To do this, make changes to the values-elma365.yaml configuration file:
- Create a backup copy of the
values-elma365.yamlfile filled in when installing BRIX. This is required before editing, as incorrect parameter settings may cause BRIX application malfunction.
- In the
values-elma365.yamlconfiguration file, enable the following parameters:
global:
...
# Enable portable services
managedServices:
enabled: true
...
# ConfigMap use
watchableConfigMap:
enabled: true
- Update the BRIX application using the following command:
helm upgrade elma365 ./elma365 -f values-elma365.yaml --timeout=30m
After that, a file that stores ConfigMap parameters will be automatically created. It will be added to the namespace where the portable services are placed, which is elma365-applets by default. The file is preconfigured with a ConfigMap named elma365-babysitter-config. For correct operation, it is recommended to not change the default name.
Now you can set the parameters in ConfigMap.
To return to the default settings and start the configuration again, delete the cfg.yaml file and run the following command to regenerate it:
kubectl apply -f cfg.yaml -n elma365-applets
Where elma365-applets is the namespace for placing the portable services.
Step 2: Set parameters in ConfigMap
To change the settings:
- Run the command to open the ConfigMap file for editing:
kubectl edit configmap elma365-babysitter-config -n elma365-applets
Where:
elma365-babysitter-configis the name of the ConfigMap in the cfg.yaml file.elma365-appletsis the namespace that hosts the portable services.
- In the opened file, set:
- Global parameters. They are applied by default to portable services in all modules. Set them in the
globalblock. - Parameters for a particular service. To set them, add a block with the service name according to the template:
{company}.ext_{id}.{unique_name}where:
companyis the BRIX company code. You can find it in its URL address.idis the identifier of the module where the portable service is configured. You can copy it from the URL address of the module in BRIX.unique_nameis the unique name of the portable service from the module settings.
apiVersion: v1 |
Available parameters:
- Resources (
resources):
requestsare memory and CPU resources to be dedicated for the microservice.limitsis the maximum values of dedicated resources.
Read more about possible values of these parameters in the official Kubernetes documentation.
начало примера
Example
resources:
requests:
memory: "512Mi"
cpu: "500m"
limits:
memory: "2048Mi"
cpu: "1000m"
конец примера
- Number of instances (
replicaCount). How many pods to start for the microservice. Available values: 0-32k.
начало примера
Example
replicaCount: 4
конец примера
- Autoscaling (
autoscaling):
enabledenables autoscaling.minReplicasis the minimum number of microservice instances. Available values: 0-32k.maxReplicasis the maximum number of instances. Available values: 0-32k.targetMemoryUtilizationPercentageis desired memory usage in percentage. Available values: 0-100.targetCPUUtilizationPercentageis desired CPU resource utilization in percentage. Available values: 0-100.
начало примера
Example
autoscaling:
enabled: true
minReplicas: 1
maxReplicas: 9
targetMemoryUtilizationPercentage: 80
targetCPUUtilizationPercentage: 80
конец примера
- Select nodes for pod placement (
nodeSelector). Configure microservices pods to be placed on specific cluster nodes using special tags.
Read more about using the parameter in the official Kubernetes documentation.
начало примера
Example
nodeSelector:
role: brix
disk: ssd
конец примера
- Tolerations for placing pods (
tolerations). Set tolerations for microservice pods so that they can be placed on nodes with appropriate taints.
начало примера
Example
tolerations:
- effect: NoSchedule
key: dedicated
operator: Equal
value: monitoring
конец примера
- After making the changes, apply them using the command specifying the
namespacethat hosts the portable services:
kubectl apply -f cfg.yaml -n elma365-applets
The settings will be applied automatically as the babysitter service tracks changes in ConfigMap. All microservices for which the settings have changed will restart.
Found a typo? Select it and press Ctrl+Enter to send us feedback