configmap is also supported as a Dynamic Configuration Center (DCC). To use it, please configure it as follows:
configuration: selector: ${SW_CONFIGURATION:k8s-configmap} # [example] (../../../../oap-server/server-configuration/configuration-k8s-configmap/src/test/resources/skywalking-dynamic-configmap.example.yaml) k8s-configmap: # Sync period in seconds. Defaults to 60 seconds. period: ${SW_CONFIG_CONFIGMAP_PERIOD:60} # Which namespace is configmap deployed in. namespace: ${SW_CLUSTER_K8S_NAMESPACE:default} # Labelselector is used to locate specific configmap labelSelector: ${SW_CLUSTER_K8S_LABEL:app=collector,release=skywalking}
{namespace} is the k8s namespace to which the configmap belongs. {labelSelector} is used to identify which configmaps would be selected.
e.g. These 2 configmaps would be selected by the above config:
apiversion: v1
kind: ConfigMap
metadata:
name: skywalking-dynamic-config
namespace: default
labels:
app: collector
release: skywalking
data:
configKey1: configValue1
configKey2: configValue2
...
apiversion: v1
kind: ConfigMap
metadata:
name: skywalking-dynamic-config2
namespace: default
labels:
app: collector
release: skywalking
data:
configKey3: configValue3
...
The configs are configmap data items, as the above example shows. we can organize the configs in 1 or more configmap files.
Under configmap.data:
configKey: configValue
e.g. The config is:
{agent-analyzer.default.slowDBAccessThreshold}:{default:200,mongodb:50}
The config in configmap is:
apiversion: v1
kind: ConfigMap
metadata:
name: skywalking-dynamic-config
namespace: default
labels:
app: collector
release: skywalking
data:
agent-analyzer.default.slowDBAccessThreshold: default:200,mongodb:50
The data key is composited by configKey and subItemKey to identify it is a group config:
configKey.subItemKey1: subItemValue1 configKey.subItemKey2: subItemValue2 ...
e.g. The config is:
{core.default.endpoint-name-grouping-openapi}:|{customerAPI-v1}:{value of customerAPI-v1}
|{productAPI-v1}:{value of productAPI-v1}
|{productAPI-v2}:{value of productAPI-v2}
The config can separate into 2 configmaps is:
apiversion: v1
kind: ConfigMap
metadata:
name: skywalking-dynamic-config
namespace: default
labels:
app: collector
release: skywalking
data:
core.default.endpoint-name-grouping-openapi.customerAPI-v1: value of customerAPI-v1
core.default.endpoint-name-grouping-openapi.productAPI-v1: value of productAPI-v1
apiversion: v1
kind: ConfigMap
metadata:
name: skywalking-dynamic-config2
namespace: default
labels:
app: collector
release: skywalking
data:
core.default.endpoint-name-grouping-openapi.productAPI-v2: value of productAPI-v2