mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-11 17:12:51 +00:00
55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
// Copyright 2019 The Kubernetes Authors.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package configmapandsecret
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
corev1 "k8s.io/api/core/v1"
|
|
"sigs.k8s.io/kustomize/api/types"
|
|
)
|
|
|
|
func makeFreshSecret(
|
|
args *types.SecretArgs) *corev1.Secret {
|
|
s := &corev1.Secret{}
|
|
s.APIVersion = "v1"
|
|
s.Kind = "Secret"
|
|
s.Name = args.Name
|
|
s.Namespace = args.Namespace
|
|
s.Type = corev1.SecretType(args.Type)
|
|
if s.Type == "" {
|
|
s.Type = corev1.SecretTypeOpaque
|
|
}
|
|
s.Data = map[string][]byte{}
|
|
return s
|
|
}
|
|
|
|
// MakeSecret returns a new secret.
|
|
func (f *Factory) MakeSecret(args *types.SecretArgs) (*corev1.Secret, error) {
|
|
all, err := f.kvLdr.Load(args.KvPairSources)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
s := makeFreshSecret(args)
|
|
for _, p := range all {
|
|
err = f.addKvToSecret(s, p.Key, p.Value)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
f.copyLabelsAndAnnotations(s, args.Options)
|
|
return s, nil
|
|
}
|
|
|
|
func (f *Factory) addKvToSecret(secret *corev1.Secret, keyName, data string) error {
|
|
if err := f.kvLdr.Validator().ErrIfInvalidKey(keyName); err != nil {
|
|
return err
|
|
}
|
|
if _, entryExists := secret.Data[keyName]; entryExists {
|
|
return fmt.Errorf(keyExistsErrorMsg, keyName, secret.Data)
|
|
}
|
|
secret.Data[keyName] = []byte(data)
|
|
return nil
|
|
}
|