...

Source file src/sigs.k8s.io/kustomize/api/internal/generators/configmap.go

Documentation: sigs.k8s.io/kustomize/api/internal/generators

     1  // Copyright 2020 The Kubernetes Authors.
     2  // SPDX-License-Identifier: Apache-2.0
     3  
     4  package generators
     5  
     6  import (
     7  	"sigs.k8s.io/kustomize/api/ifc"
     8  	"sigs.k8s.io/kustomize/api/types"
     9  	"sigs.k8s.io/kustomize/kyaml/yaml"
    10  )
    11  
    12  // MakeConfigMap makes a configmap.
    13  //
    14  // ConfigMap: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#configmap-v1-core
    15  //
    16  // ConfigMaps and Secrets are similar.
    17  //
    18  // Both objects have a `data` field, which contains a map from keys to
    19  // values that must be UTF-8 valid strings.  Such data might be simple text,
    20  // or whoever made the data may have done so by performing a base64 encoding
    21  // on binary data. Regardless, k8s has no means to know this, so it treats
    22  // the data field as a string.
    23  //
    24  // The ConfigMap has an additional field `binaryData`, also a map, but its
    25  // values are _intended_ to be interpreted as a base64 encoding of []byte,
    26  // by whatever makes use of the ConfigMap.
    27  //
    28  // In a ConfigMap, any key used in `data` cannot also be used in `binaryData`
    29  // and vice-versa.  A key must be unique across both maps.
    30  func MakeConfigMap(
    31  	ldr ifc.KvLoader, args *types.ConfigMapArgs) (rn *yaml.RNode, err error) {
    32  	rn, err = makeBaseNode("ConfigMap", args.Name, args.Namespace)
    33  	if err != nil {
    34  		return nil, err
    35  	}
    36  	m, err := makeValidatedDataMap(ldr, args.Name, args.KvPairSources)
    37  	if err != nil {
    38  		return nil, err
    39  	}
    40  	if err = rn.LoadMapIntoConfigMapData(m); err != nil {
    41  		return nil, err
    42  	}
    43  	err = copyLabelsAndAnnotations(rn, args.Options)
    44  	if err != nil {
    45  		return nil, err
    46  	}
    47  	err = setImmutable(rn, args.Options)
    48  	if err != nil {
    49  		return nil, err
    50  	}
    51  	return rn, nil
    52  }
    53  

View as plain text