mirror of https://github.com/k3s-io/k3s
59 lines
1.8 KiB
Go
59 lines
1.8 KiB
Go
// Copyright 2020 The Kubernetes Authors.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package generators
|
|
|
|
import (
|
|
"sigs.k8s.io/kustomize/api/ifc"
|
|
"sigs.k8s.io/kustomize/api/types"
|
|
"sigs.k8s.io/kustomize/kyaml/yaml"
|
|
)
|
|
|
|
// MakeSecret makes a kubernetes Secret.
|
|
//
|
|
// Secret: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#secret-v1-core
|
|
//
|
|
// ConfigMaps and Secrets are similar.
|
|
//
|
|
// Like a ConfigMap, a Secret has a `data` field, but unlike a ConfigMap it has
|
|
// no `binaryData` field.
|
|
//
|
|
// All of a Secret's data is assumed to be opaque in nature, and assumed to be
|
|
// base64 encoded from its original representation, regardless of whether the
|
|
// original data was UTF-8 text or binary.
|
|
//
|
|
// This encoding provides no secrecy. It's just a neutral, common means to
|
|
// represent opaque text and binary data. Beneath the base64 encoding
|
|
// is presumably further encoding under control of the Secret's consumer.
|
|
//
|
|
// A Secret has string field `type` which holds an identifier, used by the
|
|
// client, to choose the algorithm to interpret the `data` field. Kubernetes
|
|
// cannot make use of this data; it's up to a controller or some pod's service
|
|
// to interpret the value, using `type` as a clue as to how to do this.
|
|
func MakeSecret(
|
|
ldr ifc.KvLoader, args *types.SecretArgs) (rn *yaml.RNode, err error) {
|
|
rn, err = makeBaseNode("Secret", args.Name, args.Namespace)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
t := "Opaque"
|
|
if args.Type != "" {
|
|
t = args.Type
|
|
}
|
|
if _, err := rn.Pipe(
|
|
yaml.FieldSetter{
|
|
Name: "type",
|
|
Value: yaml.NewStringRNode(t)}); err != nil {
|
|
return nil, err
|
|
}
|
|
m, err := makeValidatedDataMap(ldr, args.Name, args.KvPairSources)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if err = rn.LoadMapIntoSecretData(m); err != nil {
|
|
return nil, err
|
|
}
|
|
copyLabelsAndAnnotations(rn, args.Options)
|
|
return rn, nil
|
|
}
|