kube_cluster 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f35a6fb5b6ece5ffc32651a5ad104c896bc8cb80810c80ecb560a22fe0a59eca
4
- data.tar.gz: df13e8af081ff1bba21254570f12eef80f82fe2ab47804877e76c0f360c9212c
3
+ metadata.gz: 143c409d80b81ee281ed0b8a11fcfedc2d1ae76aa15bae26cbf5a6a1e4d820df
4
+ data.tar.gz: 8866e6cecdca078a5ceb6df8003b3c0433c915bf97ca0b9650e6d0e07a2decd6
5
5
  SHA512:
6
- metadata.gz: cbfd8728fd22e79cc2429dc503cbba4f931da5d2f36e99d210b189863bdaa9fcf21965b13b1af231029d973dfafc03f1d44dba48f0f51eb07ba3d6597d8dfea1
7
- data.tar.gz: 4dd4cec8ee94d15cce4430e6ee1b6a80a5db1e5aa97995b4aa58c3d5180dc9ac7829dbb4d36e9ba2b55c17ec025de097d0622d808dc24ba9e87ee5fadf4a2478
6
+ metadata.gz: 8d35f3da0f04b39e204a4a2df015ce7723537d7cf08f3cecd30d6a2532ec1cb1ce7005ae00173e7549a6223ce7312b67353e3aa20dc4693fbf1f75f66bb0de43
7
+ data.tar.gz: 497038c1324cff9eab76b0b15e1ab6e6cd91d88526af313db21bca45387b48efb2b35827f5320be8f13465a2b45c8b2a09880c66e36200ea5dccdcc8762d3863
data/Gemfile.lock CHANGED
@@ -1,17 +1,16 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- kube_cluster (0.2.1)
4
+ kube_cluster (0.3.1)
5
5
  kube_kit (> 0)
6
6
  kube_kubectl (~> 2.0.0)
7
- kube_schema (~> 1.2.0)
7
+ kube_schema (~> 1.3.0)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
12
  ast (2.4.3)
13
13
  bigdecimal (4.1.2)
14
- black_hole_struct (0.1.3)
15
14
  date (3.5.1)
16
15
  debug (1.11.1)
17
16
  irb (~> 1.10)
@@ -37,10 +36,9 @@ GEM
37
36
  rubyshell (~> 1.5)
38
37
  shellwords (~> 0.2.2)
39
38
  string_builder (~> 1.2.0)
40
- kube_schema (1.2.3)
41
- black_hole_struct (~> 0.1)
42
- json_schemer (~> 2.5)
43
- rubyshell (~> 1.5)
39
+ kube_schema (1.3.1)
40
+ json_schemer (~> 2.5.0)
41
+ rubyshell (~> 1.5.0)
44
42
  language_server-protocol (3.17.0.5)
45
43
  lint_roller (1.1.0)
46
44
  minitest (5.27.0)
@@ -83,7 +81,7 @@ GEM
83
81
  rubyshell (1.5.0)
84
82
  shellwords (0.2.2)
85
83
  simpleidn (0.2.3)
86
- string_builder (1.2.0)
84
+ string_builder (1.2.1)
87
85
  stringio (3.2.0)
88
86
  tsort (0.2.0)
89
87
  unicode-display_width (3.2.0)
@@ -1,9 +1,9 @@
1
1
  require "bundler/setup"
2
- require "kube/schema"
2
+ require "kube/cluster"
3
3
 
4
4
  class RedisPod < Kube::Cluster['Pod']
5
5
  def initialize(container_name: 'my-redis-container', **options, &block)
6
- super {
6
+ super(**options) {
7
7
  spec.containers = [
8
8
  {
9
9
  name: container_name,
@@ -1,37 +1,37 @@
1
+ require "bundler/setup"
2
+ require "kube/cluster"
3
+
4
+ APP_NAME = "my-app"
5
+ FULLNAME = "my-app"
6
+ IMAGE = "my-app:latest"
7
+ MATCH_LABELS = { app: APP_NAME }
8
+ STANDARD_LABELS = { app: APP_NAME, version: "1.0" }
9
+ RESOURCES = { requests: { cpu: "100m", memory: "128Mi" }, limits: { cpu: "500m", memory: "256Mi" } }
10
+
1
11
  require_relative 'templates/config_map'
2
12
  require_relative 'templates/deployment'
3
13
  require_relative 'templates/ingress'
4
14
  require_relative 'templates/service'
5
15
  require_relative 'templates/horizontal_pod_autoscaler'
6
16
 
7
- require_relative 'middlware/labels'
8
- require_relative 'middlware/namespace'
17
+ require_relative 'middleware/labels'
18
+ require_relative 'middleware/namespace'
9
19
 
10
- class MyApp < Kube::Schema::Manifest
11
- stack do
12
- use Middleware::Namespace
13
- use Middleware::Labels
14
- end
15
- end
20
+ namespace = APP_NAME
16
21
 
17
- puts MyApp.new(
18
- Templates::ConfigMap.new {
19
- # no overrides today
20
- },
22
+ manifest = Kube::Cluster::Manifest.new(
23
+ ConfigMap.new(namespace: namespace),
24
+ Deployment.new(namespace: namespace),
25
+ Ingress.new(namespace: namespace),
26
+ Service.new(namespace: namespace),
27
+ HorizontalPodAutoscaler.new(namespace: namespace),
28
+ )
21
29
 
22
- Templates::Deployment.new {
23
- # no overrides today
24
- },
25
-
26
- Templates::Ingress.new {
27
- # no overrides today
28
- },
30
+ stack = Kube::Cluster::Middleware::Stack.new do
31
+ use Middleware::Namespace
32
+ use Middleware::Labels
33
+ end
29
34
 
30
- Templates::Service.new {
31
- # no overrides today
32
- },
35
+ stack.call(manifest)
33
36
 
34
- Templates::HorizontalPodScaler.new {
35
- # no overrides today
36
- },
37
- ).to_yaml
37
+ puts manifest.to_yaml
@@ -1,4 +1,4 @@
1
1
  module Middleware
2
- class Labels < Kube::Cluster::Manifest::Middleware
2
+ class Labels < Kube::Cluster::Middleware
3
3
  end
4
4
  end
@@ -1,4 +1,4 @@
1
1
  module Middleware
2
- class Namespace < Kube::Cluster::Manifest::Middleware
2
+ class Namespace < Kube::Cluster::Middleware
3
3
  end
4
4
  end
@@ -1,12 +1,12 @@
1
1
  class ConfigMap < Kube::Cluster["ConfigMap"]
2
2
  def initialize(namespace:)
3
- build {
3
+ super {
4
4
  metadata.name = "#{namespace}-config"
5
5
  spec.data = {
6
- RAILS_ENV: "production",
7
- LOG_LEVEL: "info",
8
- WORKERS: "4",
9
- PORT: "3000",
6
+ "RAILS_ENV": "production",
7
+ "LOG_LEVEL": "info",
8
+ "WORKERS": "4",
9
+ "PORT": "3000",
10
10
  }
11
11
  }
12
12
  end
@@ -1,6 +1,6 @@
1
1
  class Deployment < Kube::Cluster["Deployment"]
2
2
  def initialize(namespace:)
3
- build {
3
+ super {
4
4
  metadata.name = namespace
5
5
 
6
6
  spec.replicas = 3
@@ -1,6 +1,6 @@
1
1
  class HorizontalPodAutoscaler < Kube::Cluster["HorizontalPodAutoscaler"]
2
2
  def initialize(namespace:)
3
- build {
3
+ super {
4
4
  metadata.name = namespace
5
5
 
6
6
  spec.scaleTargetRef.apiVersion = "apps/v1"
@@ -1,6 +1,6 @@
1
1
  class Ingress < Kube::Cluster["Ingress"]
2
2
  def initialize(namespace:)
3
- build {
3
+ super {
4
4
  metadata.name = namespace
5
5
  metadata.annotations = {
6
6
  "cert-manager.io/cluster-issuer": "letsencrypt-prod",
@@ -1,6 +1,6 @@
1
1
  class Service < Kube::Cluster["Service"]
2
2
  def initialize(namespace:)
3
- build {
3
+ super {
4
4
  metadata.name = namespace
5
5
 
6
6
  spec.selector = MATCH_LABELS
data/kube_cluster.gemspec CHANGED
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
32
32
  spec.add_development_dependency "rake", "~> 13.0"
33
33
  spec.add_development_dependency "rubocop", "~> 1.21"
34
34
 
35
- spec.add_dependency "kube_schema", "~> 1.2.0"
35
+ spec.add_dependency "kube_schema", "~> 1.3.0"
36
36
  spec.add_dependency "kube_kit", "> 0"
37
37
  spec.add_dependency "kube_kubectl", "~> 2.0.0"
38
38
  end
@@ -94,7 +94,7 @@ module Kube
94
94
  if current[key] == original[key]
95
95
  next
96
96
  else
97
- hash[key] = [original[key], current[key]]
97
+ hash[key] = [deep_dup(original[key]), deep_dup(current[key])]
98
98
  end
99
99
  end
100
100
  end
@@ -46,7 +46,7 @@ module Kube
46
46
  tap do
47
47
  kubectl("get", resource_type, name, *ns_flags, "-o", "json").then do |json|
48
48
  JSON.parse(json).then do |hash|
49
- @data = BlackHoleStruct.new(hash)
49
+ @data = deep_symbolize_keys(hash)
50
50
  snapshot!
51
51
  end
52
52
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Kube
4
4
  module Cluster
5
- VERSION = "0.3.0"
5
+ VERSION = "0.3.2"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kube_cluster
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan K
@@ -57,14 +57,14 @@ dependencies:
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: 1.2.0
60
+ version: 1.3.0
61
61
  type: :runtime
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: 1.2.0
67
+ version: 1.3.0
68
68
  - !ruby/object:Gem::Dependency
69
69
  name: kube_kit
70
70
  requirement: !ruby/object:Gem::Requirement