Class: Kube::Cluster::Standard::ESO::ExternalSecret

Inherits:
Object
  • Object
show all
Defined in:
lib/kube/cluster/standard/eso/external_secret.rb

Defined Under Namespace

Classes: KeyRef, TemplateRef

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name:, store:, remote_key:, keys: nil, deletion_policy: nil, &block) ⇒ ExternalSecret

Returns a new instance of ExternalSecret.



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/kube/cluster/standard/eso/external_secret.rb', line 23

def initialize(name:, store:, remote_key:, keys: nil, deletion_policy: nil, &block)
  @secret_name = name
  @remote_key = remote_key
  @_template_data = {}
  @_remote_properties = {}
  @_keys = keys
  @_deletion_policy = deletion_policy

  super() do
    .name = name
    spec.refreshInterval = '1h'
    spec.secretStoreRef = { kind: 'ClusterSecretStore', name: store }

    target = { name: name, creationPolicy: 'Owner' }
    target[:deletionPolicy] = deletion_policy if deletion_policy
    spec.target = target

    if keys
      spec.data = keys.map do |secret_key, property|
        { secretKey: secret_key, remoteRef: { key: remote_key, property: property } }
      end
    end

    instance_exec(&block) if block
  end
end

Instance Attribute Details

#secret_nameObject (readonly)

Returns the value of attribute secret_name.



21
22
23
# File 'lib/kube/cluster/standard/eso/external_secret.rb', line 21

def secret_name
  @secret_name
end

Instance Method Details

#key(key_name) ⇒ Object

Returns a KeyRef for mounting a single key from this secret as a file. The volume processing layer uses this to generate the volume and mount.



59
60
61
# File 'lib/kube/cluster/standard/eso/external_secret.rb', line 59

def key(key_name)
  KeyRef.new(self, key_name)
end

#register_template!(env_key, template_string) ⇒ Object

Called by env processing to register a template entry.



64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/kube/cluster/standard/eso/external_secret.rb', line 64

def register_template!(env_key, template_string)
  @_template_data[env_key] = template_string

  template_string.scan(/\{\{\s*\.(\w+)\s*\}\}/) do |match|
    @_remote_properties[match[0]] = true
  end

  @data.spec.target.template = { data: @_template_data }
  @data.spec.data = @_remote_properties.keys.map do |prop|
    { secretKey: prop, remoteRef: { key: @remote_key, property: prop } }
  end
end

#template(template_string) ⇒ Object Also known as: with_template

Returns a TemplateRef. The env hash processor calls .register! on the ref to wire up the template data and remote properties.



52
53
54
# File 'lib/kube/cluster/standard/eso/external_secret.rb', line 52

def template(template_string)
  TemplateRef.new(self, template_string)
end