versionedsecretstore

package
v0.4.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 7, 2019 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// VersionSecretKind is the kind of versioned secret
	VersionSecretKind = "versionedSecret"
)

Variables

View Source
var (
	// LabelSecretKind is the label key for secret kind
	LabelSecretKind = fmt.Sprintf("%s/secret-kind", apis.GroupName)
	// LabelVersion is the label key for secret version
	LabelVersion = fmt.Sprintf("%s/secret-version", apis.GroupName)
	// LabelAPIVersion is the lable for kube APIVersion
	LabelAPIVersion = fmt.Sprintf("%s/v1alpha1", apis.GroupName)
	// AnnotationSourceDescription is the label key for source description
	AnnotationSourceDescription = fmt.Sprintf("%s/source-description", apis.GroupName)
)

Functions

func ContainsSecretName added in v0.3.0

func ContainsSecretName(names []string, name string) bool

ContainsSecretName checks a list of secret names for our secret's name while ignoring the versions

func GenerateSecretName added in v0.4.2

func GenerateSecretName(namePrefix string, version int) (string, error)

func GetConfigNamesFromSpec added in v0.4.0

func GetConfigNamesFromSpec(spec corev1.PodSpec) (map[string]struct{}, map[string]struct{})

GetConfigNamesFromSpec parses the owner object and returns two sets, the first containing the names of all referenced ConfigMaps, the second containing the names of all referenced Secrets

func IsInitialVersion added in v0.3.0

func IsInitialVersion(secret corev1.Secret) bool

IsInitialVersion returns true if it's a v1 secret

func IsVersionedSecret added in v0.3.0

func IsVersionedSecret(secret corev1.Secret) bool

IsVersionedSecret returns true if the secret has a label identifying it as versioned secret

func NamePrefix added in v0.3.0

func NamePrefix(name string) string

NamePrefix returns the name prefix of a versioned secret name, by removing the version suffix /-v\d+/

func Version added in v0.3.0

func Version(secret corev1.Secret) (int, error)

Version returns the versioned secrets version from the labels

func VersionFromName added in v0.3.0

func VersionFromName(name string) (int, error)

VersionFromName gets version from versioned secret name return -1 if not find valid version

Types

type VersionedSecretImpl added in v0.4.0

type VersionedSecretImpl struct {
	// contains filtered or unexported fields
}

VersionedSecretImpl contains the required fields to persist a secret

func NewVersionedSecretStore

func NewVersionedSecretStore(client client.Client) VersionedSecretImpl

NewVersionedSecretStore returns a VersionedSecretStore implementation to be used when working with desired secret secrets

func (VersionedSecretImpl) Create added in v0.4.0

func (p VersionedSecretImpl) Create(ctx context.Context, namespace string, ownerName string, ownerID types.UID, secretName string, secretData map[string]string, labels map[string]string, sourceDescription string) error

Create creates a new version of the secret from secret data

func (VersionedSecretImpl) Decorate added in v0.4.0

func (p VersionedSecretImpl) Decorate(ctx context.Context, namespace string, secretName string, key string, value string) error

Decorate adds a label to the latest version of the secret

func (VersionedSecretImpl) Delete added in v0.4.0

func (p VersionedSecretImpl) Delete(ctx context.Context, namespace string, secretName string) error

Delete removes all versions of the secret and therefore the secret itself.

func (VersionedSecretImpl) Get added in v0.4.0

func (p VersionedSecretImpl) Get(ctx context.Context, namespace string, deploymentName string, version int) (*corev1.Secret, error)

Get returns a specific version of the secret

func (VersionedSecretImpl) Latest added in v0.4.0

func (p VersionedSecretImpl) Latest(ctx context.Context, namespace string, secretName string) (*corev1.Secret, error)

Latest returns the latest version of the secret

func (VersionedSecretImpl) List added in v0.4.0

func (p VersionedSecretImpl) List(ctx context.Context, namespace string, secretName string) ([]corev1.Secret, error)

List returns all versions of the secret

func (VersionedSecretImpl) SetSecretReferences added in v0.4.0

func (p VersionedSecretImpl) SetSecretReferences(ctx context.Context, namespace string, podSpec *corev1.PodSpec) error

SetSecretReferences update versioned secret references in pod spec

func (VersionedSecretImpl) VersionCount added in v0.4.0

func (p VersionedSecretImpl) VersionCount(ctx context.Context, namespace string, secretName string) (int, error)

VersionCount returns the number of versions for this secret

type VersionedSecretStore

type VersionedSecretStore interface {
	SetSecretReferences(ctx context.Context, namespace string, podSpec *corev1.PodSpec) error
	Create(ctx context.Context, namespace string, ownerName string, ownerID types.UID, secretName string, secretData map[string]string, labels map[string]string, sourceDescription string) error
	Get(ctx context.Context, namespace string, secretName string, version int) (*corev1.Secret, error)
	Latest(ctx context.Context, namespace string, secretName string) (*corev1.Secret, error)
	List(ctx context.Context, namespace string, secretName string) ([]corev1.Secret, error)
	VersionCount(ctx context.Context, namespace string, secretName string) (int, error)
	Delete(ctx context.Context, namespace string, secretName string) error
	Decorate(ctx context.Context, namespace string, secretName string, key string, value string) error
}

VersionedSecretStore is the interface to version secrets in Kubernetes

Each update to the secret results in a new persisted version. An existing persisted version of a secret cannot be altered or deleted. The deletion of a secret will result in the removal of all persisted version of that secret.

The version number is an integer that is incremented with each version of the secret, which the greatest number being the current/latest version.

When saving a new secret, a source description is required, which should explain the sources of the rendered secret, e.g. the location of the Custom Resource Definition that generated it.

Source Files

  • config_names.go
  • versioned_secret.go
  • versioned_secret_store.go

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL