Customizing probe rules in ConfigMap

This section shows how to modify the default rules file in the probe ConfigMap using the command line.

Note: The ConfigMap will be deleted when the probe instance is deleted. You should keep a copy of any custom rules file in case you need to use them in the future.

Getting the ConfigMap name and rules filename

You need to determine the probe instance name and get the ConfigMap name that contains the probe rules files. The ConfigMap with the -rules suffix should contain the rules files.

The following command uses example-kafkaprobe as the probe instance name to query the ConfigMap using the app.kubernetes.io/instance label. The --namespace option can also be specified if required:

$ kubectl get configmap -l app.kubernetes.io/instance=example-kafkaprobe
NAME                                     DATA   AGE
example-kafkaprobe-probe-mb-kfk-config   8      12d
example-kafkaprobe-probe-mb-kfk-rules    5      12d

Note: The rules file(s) name from the Data field. You need to extract the files that you want to customize. This example customizes the message_bus.rules.

$ kubectl describe configmap example-kafkaprobe-probe-mb-kfk-rules
Name:         example-kafkaprobe-probe-mb-kfk-rules
Namespace:    default
Labels:       app.kubernetes.io/component=mb
              app.kubernetes.io/instance=example-kafkaprobe
              app.kubernetes.io/managed-by=Tiller
              app.kubernetes.io/name=probe-mb-kfk
              hdm.ibm.com/chartversion=3.0.0
              hdm.ibm.com/lastreconciled=
              hdm.ibm.com/resourceowner=
              helm.sh/chart=ibm-netcool-probe-messagebus-kafka-prod
              release=example-kafkaprobe
Annotations:  hdm.ibm.com/lastknownstate: 67c4b74cd6d3b5c44718b38e3cd4517b

Data
====
message_bus.rules:
----
<message_bus.rules file content omitted>

message_bus_cbe.rules:
----
<message_bus_cbe.rules file content omitted>

message_bus_netcool.rules:
----
<message_bus_netcool.rules content omitted>

message_bus_wbe.rules:
----
<message_bus_wbe.rules content omitted>

message_bus_wef.rules:
----
<message_bus_wef.rules content omitted>

Events:  <none>

Extracting and Customizing the rules file

To customize the message_bus.rules file, first extract the file into you local host:

kubectl get configmap example-kafkaprobe-probe-mb-kfk-rules -o jsonpath='{.data.message_bus\.rules}' > message_bus.rules

Then edit the file to make any customization. Ensure that the rules file's syntax is correct.

Patching the Configmap

To patch the ConfigMap, first create a YAML file of the "new" ConfigMap using the command below. Note that the name of the ConfigMap must be the same as the original ConfigMap. The output of this command is saved into the file: example-kafkaprobe-probe-mb-kfk-rules-custom.yaml.

kubectl create configmap --dry-run -o yaml \
--from-file=message_bus.rules \
example-kafkaprobe-probe-mb-kfk-rules.yaml > example-kafkaprobe-probe-mb-kfk-rules-custom.yaml

Use the kubectl patch command to patch the existing ConfigMap with the new YAML file (example-kafkaprobe-probe-mb-kfk-rules-custom.yaml)

kubectl patch configmap example-kafkaprobe-probe-mb-kfk-rules \
--patch "$(cat example-kafkaprobe-probe-mb-kfk-rules-custom.yaml)"

Verify that the ConfigMap is correctly patched.

kubectl describe configmap example-kafkaprobe-probe-mb-kfk-rules-custom

Restarting the Probe Pods

Kubernetes pods do not detect any changes to the ConfigMap and the probe pods must be restarted to reload the updated ConfigMap.

To restart the pod, scale down and scale up the deployment using the kubectl scale deployment command as shown below:

kubectl scale deployment example-kafkaprobe-probe-mb-kfk --replicas=0
kubectl scale deployment example-kafkaprobe-probe-mb-kfk --replicas=1

Verify that the container is restarting and running:

$ kubectl get pods -l app.kubernetes.io/instance=example-kafkaprobe
NAME                                               READY   STATUS                 RESTARTS   AGE
example-kafkaprobe-probe-mb-kfk-8684b6b947-jk76q   1/1     Running                0          50s