Kubernetes ConfigMap Manifest

From NovaOrdis Knowledge Base
Revision as of 18:59, 28 February 2024 by Ovidiu (talk | contribs) (→‎Internal)
Jump to navigation Jump to search

External

Internal

Example

apiVersion: v1
kind: ConfigMap
metadata:
  name: blue
  labels:
    color: blue
  annotations:
    ...
data:
  # property-like keys; each key maps to a simple value
  quantity: "3"
  file_name: "somefile.properties"
   # file-like keys
  game.properties: |
    shape=square
    strength=5    
  somefile.properties: |
    color.good=purple
    color.bad=yellow
    allow.textmode=true    
 binaryData:
  sample.txt.gz: 'H4sIAH6zH2IAAwvJyCxWAKJErpLUihIFruLE3IKcVD0uLgAXdw7tGQAAAA=='
 immutable: true|false

Elements

data

Data contains the configuration data. Each key must consist of alphanumeric characters, '-', '_' or '.'. Values with non-UTF-8 byte sequences must use the binaryData field. The keys stored in data must not overlap with the keys in the binaryData field, this is enforced during validation process.

binaryData

binaryData contains the binary data, in base64 format. Each key must consist of alphanumeric characters, '-', '_' or '.'. binaryData can contain byte sequences that are not in the UTF-8 range. The keys stored in binaryData must not overlap with the ones in the data field, this is enforced during validation process.

Exposing a Binary Data File via a ConfigMap

First base64-encode the binary fine. Assuming that the binary file is a local sample.txt.gz (which contains a gzipped text content):

cat sample.txt.gz | base64

The content such generated can be copied and pasted verbatim into the binaryData:

apiVersion: v1
kind: ConfigMap
...
binaryData:
  sample.txt.gz: 'H4sIAH6zH2IAAwvJyCxWAKJErpLUihIFruLE3IKcVD0uLgAXdw7tGQAAAA=='

Once this ConfigMap is projected into a pod via a volume, a file with the gzipped content will be exposed as sample.txt.gz.

An example of how to deploy ConfigMaps with binaryData with Helm is available here:

Helm ConfigMap with binaryData

immutable