// Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 package main import ( "sigs.k8s.io/kustomize/api/kv" "sigs.k8s.io/kustomize/api/resmap" "sigs.k8s.io/kustomize/api/types" "sigs.k8s.io/yaml" ) // A secret generator example that gets data // from a database (simulated by a hardcoded map). type plugin struct { h *resmap.PluginHelpers types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` // List of keys to use in database lookups Keys []string `json:"keys,omitempty" yaml:"keys,omitempty"` } var KustomizePlugin plugin //nolint:gochecknoglobals var database = map[string]string{ "TREE": "oak", "ROCKET": "SaturnV", "FRUIT": "apple", "VEGETABLE": "carrot", "SIMPSON": "homer", } func (p *plugin) Config(h *resmap.PluginHelpers, c []byte) error { p.h = h return yaml.Unmarshal(c, p) } // The plan here is to convert the plugin's input // into the format used by the builtin secret generator plugin. func (p *plugin) Generate() (resmap.ResMap, error) { args := types.SecretArgs{} args.Name = p.Name args.Namespace = p.Namespace for _, k := range p.Keys { if v, ok := database[k]; ok { args.LiteralSources = append( args.LiteralSources, k+"="+v) } } return p.h.ResmapFactory().FromSecretArgs( kv.NewLoader(p.h.Loader(), p.h.Validator()), args) }