Though resourceQuotas
may limit the number of configmaps in a namespace, is there any such option to limit the size of the individual configmap?
I will not like some user to start uploading large text files as configmaps.
What is the max size of ConfigMap etcd support? If there is a reasonable limit on the etcd side, should be fine then.
Using ConfigMaps as Files from a Pod. To ingest a ConfigMap in a volume within a pod: Use an existing ConfigMap or create a new one. The same ConfigMap can be referenced by multiple pods.
Updating the config map in Kubernetes POD requires the restart of POD. A possible approach to auto-update configmap inside pod without restart is mounting it's content as volume. Kubernetes auto-updates the config map into POD if mounted as a volume, however, it has a limitation like it won't work if subpath used.
Both ConfigMaps and secrets store the data the same way, with key/value pairs, but ConfigMaps are meant for plain text data, and secrets are meant for data that you don't want anything or anyone to know about except the application.
ConfigMaps are the Kubernetes way to inject application pods with configuration data. ConfigMaps allow you to decouple configuration artifacts from image content to keep containerized applications portable.
There are no hard-limits on either the ConfigMap or Secret objects as of this writing.
There's, however, a 1MB limit from the etcd side which is where Kubernetes stores its objects.
From the API side, if you actually see the API code and the ConfigMap type, you'll see that its data field is Golang map of strings so this appears memory bound and managed at runtime unless somewhere else it gets defined with make()
. Technically the max size for the number of keys on hashmap is the map length which is an int
and the max value is explained here: Maximum number of elements in map. That would also be the theoretical limit for the value of data as the maximum value for len(string)
.
If you actually want to get more insights from the API side where the kube-apiserver receives protobufs (or JSON for that matter) you can take a look at the google protobuf maximum size. That will give you some measure as to the limitation of sending the data
field through the wire. There may be other limitation from the kube-apiserver itself when it comes to processing any large message.
The size of the individual configmap is limited to 1mb, according to kubernetes.io:
A ConfigMap is not designed to hold large chunks of data. The data stored in a ConfigMap cannot exceed 1 MiB. If you need to store settings that are larger than this limit, you may want to consider mounting a volume or use a separate database or file service.
The quote is taken from here - https://kubernetes.io/docs/concepts/configuration/configmap/#motivation
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With