Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
FROM golang:1.12-stretch
FROM golang:1.15-buster

RUN apt-get update && apt-get install -y \
curl \
gettext \
g++ \
git
git

WORKDIR /code

RUN GO111MODULE=on go get sigs.k8s.io/kustomize/kustomize/v3@v3.2.1
RUN GO111MODULE=on go get sigs.k8s.io/kustomize/kustomize/v3@v3.8.7

COPY go.mod go.sum ./
RUN go mod download

COPY ./SecretsFromVault.go ./

RUN go build -buildmode plugin -o /opt/kustomize/plugin/kvSources/SecretsFromVault.so ./SecretsFromVault.go
RUN go build -buildmode plugin -o /opt/kustomize/plugin/kvSources/SecretsFromVault.so ./SecretsFromVault.go

FROM debian:stretch-slim
FROM debian:buster-slim

RUN apt-get update && apt-get install -y \
git

COPY --from=0 /opt/kustomize/plugin/kvSources/SecretsFromVault.so /opt/kustomize/plugin/kustomize.config.realgeeks.com/v1beta1/secretsfromvault/SecretsFromVault.so
COPY --from=0 /go/bin/kustomize /usr/bin/kustomize

WORKDIR /working
WORKDIR /working

ENV XDG_CONFIG_HOME=/opt

Expand Down
27 changes: 15 additions & 12 deletions SecretsFromVault.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ import (
"strings"

"github.com/hashicorp/vault/api"
"sigs.k8s.io/kustomize/v3/pkg/ifc"
"sigs.k8s.io/kustomize/v3/pkg/resmap"
"sigs.k8s.io/kustomize/v3/pkg/types"
"sigs.k8s.io/kustomize/api/kv"
"sigs.k8s.io/kustomize/api/resmap"
"sigs.k8s.io/kustomize/api/types"
"sigs.k8s.io/yaml"
)

Expand All @@ -21,23 +21,23 @@ type vaultSecret struct {
}

type secretSpec struct {
Secrets []vaultSecret `json:"secrets,omitempty" yaml:"secrets,omitempty"`
Options *types.GeneratorOptions `json:"options,omitempty" yaml:"options,omitempty"`
Secrets []vaultSecret `json:"secrets,omitempty" yaml:"secrets,omitempty"`
Options *types.GeneratorOptions `json:"options,omitempty" yaml:"options,omitempty"`
Behavior string `json:"behavior,omitempty" yaml:"behavior,omitempty"`
}

type plugin struct {
rf *resmap.Factory
ldr ifc.Loader
Spec secretSpec `json:"spec,omitempty" yaml:"spec,omitempty"`
h *resmap.PluginHelpers
types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
Spec secretSpec `json:"spec,omitempty" yaml:"spec,omitempty"`
VaultClient *api.Client
}

//nolint: golint
//noinspection GoUnusedGlobalVariable
var KustomizePlugin plugin

func (p *plugin) Config(ldr ifc.Loader, rf *resmap.Factory, c []byte) error {
func (p *plugin) Config(h *resmap.PluginHelpers, c []byte) error {
vaultAddr, ok := os.LookupEnv("VAULT_ADDR")
if !ok {
return errors.New("missing `VAULT_ADDR` env var: required")
Expand All @@ -59,9 +59,8 @@ func (p *plugin) Config(ldr ifc.Loader, rf *resmap.Factory, c []byte) error {

client.SetToken(vaultToken)

p.rf = rf
p.ldr = ldr
p.VaultClient = client
p.h = h

return yaml.Unmarshal(c, p)
}
Expand All @@ -70,6 +69,8 @@ func (p *plugin) Generate() (resmap.ResMap, error) {
args := types.SecretArgs{}
args.Name = p.Name
args.Namespace = p.Namespace
args.Behavior = p.Spec.Behavior
args.Options = p.Spec.Options

for _, secret := range p.Spec.Secrets {
value, err := p.getSecretFromVault(secret.Path, secret.Key)
Expand All @@ -88,7 +89,9 @@ func (p *plugin) Generate() (resmap.ResMap, error) {
args.LiteralSources = append(args.LiteralSources, entry)
}

return p.rf.FromSecretArgs(p.ldr, p.Spec.Options, args)
rf := p.h.ResmapFactory()

return rf.FromSecretArgs(kv.NewLoader(p.h.Loader(), p.h.Validator()), args)
}

func getVaultToken() (string, error) {
Expand Down
9 changes: 4 additions & 5 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
module github.com/RealGeeks/kustomize-kvsource-vault

go 1.12
go 1.15

require (
github.com/hashicorp/vault/api v1.0.5-0.20190909210825-c14bd9a2b1d2
github.com/spf13/pflag v1.0.5 // indirect
sigs.k8s.io/kustomize/v3 v3.2.0
sigs.k8s.io/yaml v1.1.0
github.com/hashicorp/vault/api v1.0.4
sigs.k8s.io/kustomize/api v0.6.5
sigs.k8s.io/yaml v1.2.0
)
Loading