kubes_aws 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 216f223229ec7e134e52a869f36507518c8376d768e3ae72ec5b557c7e1a31a7
4
- data.tar.gz: 3fd50925b7906fe8c18f6b6e5c20065e895097aeaa57926093cf57ad1b445121
3
+ metadata.gz: 5cccbde70946470994346fb2e6464153312e4148518b46747137396682455f62
4
+ data.tar.gz: 93c32447c9c48b7feda8fc340022d763736d8d911942e3da10bb7291b8418875
5
5
  SHA512:
6
- metadata.gz: ef86d09153f32cb9bd6ae87eb905ef4de3a07ffa86abae0ed039655ee2305bae228de3d895c7d77cc3112fa2166ffa25fa4632163bd17969034947b067d30446
7
- data.tar.gz: 4437ae6bdc30d96afd98b0261893d52a4c195eeb135b14b8823d6024d601743f431eaefaccf787a90cb1600c6eedc405d59c8f94f958c76ef8109be39b6b6243
6
+ metadata.gz: 8a02025e42e55c83432dd8c3cc23d91078395474cb7ca363317ef4200df1a2747e24841ec02baaadbc6ee6808f39498edd40e9e5331ec4d34c00b87f16f94526
7
+ data.tar.gz: 8a9c098dfb2d3285cee9ef8145c71ce7a8a6d36a9e96470a2e6cffbe3e43b9c8f5edd7e3a877e80e7f1eb0d3029687f1ae621d0686e44bc4019ce91c11c7d5c0
@@ -3,5 +3,8 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/), even before v1.0.
5
5
 
6
+ ## [0.2.0]
7
+ - #1 helpers: aws_secret, aws_ssm
8
+
6
9
  ## [0.1.0]
7
10
  - Initial release.
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.require_paths = ["lib"]
24
24
 
25
25
  spec.add_dependency "activesupport"
26
+ spec.add_dependency "aws-sdk-ecr"
26
27
  spec.add_dependency "aws-sdk-eks"
27
28
  spec.add_dependency "aws-sdk-iam"
28
29
  spec.add_dependency "aws-sdk-secretsmanager"
@@ -18,3 +18,5 @@ module KubesAws
18
18
 
19
19
  extend self
20
20
  end
21
+
22
+ Kubes::Plugin.register(KubesAws)
@@ -0,0 +1,16 @@
1
+ module KubesAws
2
+ module Helpers
3
+ extend Memoist
4
+ include Services
5
+
6
+ def aws_secret(name, options={})
7
+ fetcher = Secrets::Fetcher.new(options)
8
+ fetcher.fetch(name)
9
+ end
10
+
11
+ def aws_ssm(name, options={})
12
+ fetcher = SSM::Fetcher.new(options)
13
+ fetcher.fetch(name)
14
+ end
15
+ end
16
+ end
@@ -5,7 +5,7 @@ require "json"
5
5
  module KubesAws
6
6
  class IamRole
7
7
  extend Memoist
8
- include AwsServices
8
+ include Services
9
9
  include Logging
10
10
  include Prebaked
11
11
 
@@ -5,7 +5,7 @@ require "openssl"
5
5
  module KubesAws
6
6
  class OpenId
7
7
  extend Memoist
8
- include AwsServices
8
+ include Services
9
9
  include Logging
10
10
 
11
11
  def initialize(cluster)
@@ -2,7 +2,7 @@ require "aws-sdk-secretsmanager"
2
2
 
3
3
  module KubesAws
4
4
  class Secrets
5
- include AwsServices
5
+ include Services
6
6
 
7
7
  def initialize(upcase: false, base64: false, prefix: nil, filters: [])
8
8
  @upcase, @base64, @filters = upcase, base64, filters
@@ -0,0 +1,26 @@
1
+ class KubesAws::Secrets
2
+ class Fetcher
3
+ include KubesAws::Logging
4
+ include KubesAws::Services
5
+
6
+ def initialize(options={})
7
+ @options = options
8
+ @base64 = options[:base64].nil? ? true : options[:base64]
9
+ end
10
+
11
+ def fetch(secret_id)
12
+ value = fetch_value(secret_id)
13
+ value = Base64.strict_encode64(value).strip if @base64
14
+ value
15
+ end
16
+
17
+ def fetch_value(secret_id)
18
+ secret_value = secrets.get_secret_value(secret_id: secret_id)
19
+ secret_value.secret_string
20
+ rescue Aws::SecretsManager::Errors::ResourceNotFoundException => e
21
+ logger.info "WARN: secret_id #{secret_id} not found".color(:yellow)
22
+ logger.info e.message
23
+ "NOT FOUND #{secret_id}" # simple string so Kubernetes YAML is valid
24
+ end
25
+ end
26
+ end
@@ -1,8 +1,10 @@
1
1
  require "aws-sdk-eks"
2
2
  require "aws-sdk-iam"
3
+ require "aws-sdk-secretsmanager"
4
+ require "aws-sdk-ssm"
3
5
 
4
6
  module KubesAws
5
- module AwsServices
7
+ module Services
6
8
  extend Memoist
7
9
 
8
10
  def eks
@@ -1,8 +1,6 @@
1
- require "aws-sdk-ssm"
2
-
3
1
  module KubesAws
4
2
  class SSM
5
- include AwsServices
3
+ include Services
6
4
 
7
5
  def initialize(upcase: false, base64: false, prefix: nil, filters: [])
8
6
  @upcase, @base64, @filters = upcase, base64, filters
@@ -0,0 +1,26 @@
1
+ class KubesAws::SSM
2
+ class Fetcher
3
+ include KubesAws::Logging
4
+ include KubesAws::Services
5
+
6
+ def initialize(options={})
7
+ @options = options
8
+ @base64 = options[:base64].nil? ? true : options[:base64]
9
+ end
10
+
11
+ def fetch(name)
12
+ value = fetch_value(name)
13
+ value = Base64.strict_encode64(value).strip if @base64
14
+ value
15
+ end
16
+
17
+ def fetch_value(name)
18
+ resp = ssm.get_parameter(name: name, with_decryption: true)
19
+ resp.parameter.value
20
+ rescue Aws::SSM::Errors::ParameterNotFound => e
21
+ logger.info "WARN: name #{name} not found".color(:yellow)
22
+ logger.info e.message
23
+ "NOT FOUND #{name}" # simple string so Kubernetes YAML is valid
24
+ end
25
+ end
26
+ end
@@ -1,3 +1,3 @@
1
1
  module KubesAws
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kubes_aws
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-28 00:00:00.000000000 Z
11
+ date: 2020-11-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: aws-sdk-ecr
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: aws-sdk-eks
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -139,13 +153,16 @@ files:
139
153
  - kubes_aws.gemspec
140
154
  - lib/kubes_aws.rb
141
155
  - lib/kubes_aws/autoloader.rb
142
- - lib/kubes_aws/aws_services.rb
156
+ - lib/kubes_aws/helpers.rb
143
157
  - lib/kubes_aws/iam_role.rb
144
158
  - lib/kubes_aws/iam_role/prebaked.rb
145
159
  - lib/kubes_aws/logging.rb
146
160
  - lib/kubes_aws/open_id.rb
147
161
  - lib/kubes_aws/secrets.rb
162
+ - lib/kubes_aws/secrets/fetcher.rb
163
+ - lib/kubes_aws/services.rb
148
164
  - lib/kubes_aws/ssm.rb
165
+ - lib/kubes_aws/ssm/fetcher.rb
149
166
  - lib/kubes_aws/version.rb
150
167
  homepage: https://github.com/boltops-tools/kubes_aws
151
168
  licenses:
@@ -167,7 +184,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
184
  - !ruby/object:Gem::Version
168
185
  version: '0'
169
186
  requirements: []
170
- rubygems_version: 3.1.2
187
+ rubygems_version: 3.1.4
171
188
  signing_key:
172
189
  specification_version: 4
173
190
  summary: Kubes AWS Helpers Library