pfab 0.12.0 → 0.16.0

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: 44e68c756c9f6d131629ce9a8df02cd64f307deccc0ccd65c54d4333417ed51c
4
- data.tar.gz: 605415a8325fb6c7e34857d87a0db498304e51620aeb8220d9102c9ecd5777fe
3
+ metadata.gz: b9b74403a3e35834fc91e161a00965bd13444cd6dc5f4189947e7a5e92168a29
4
+ data.tar.gz: fbac3572c2f5b0f59b20195fcdd77657b511f6af95d430fc8d71c23e7a079748
5
5
  SHA512:
6
- metadata.gz: 4b909077e5797e562428f6de5d7715b934d935803dd0defa34a6ffada850dbd1e339ca6f4bd1ca22b3485141b4246f04e569591d23318c1343dcc4e2c691f132
7
- data.tar.gz: 2ad2b3cf8d71b962d33626b5cd7af421d6a4bc3eddbe601a405a4e722fc95dd265094341c9dc6af491927bca83c48a0b757519c42bbbeb434da9b6008cdfeb11
6
+ metadata.gz: 01031a7a713ec836556fc3351c92955d46e67a6ed5dbdc73281fdb96b16d6aaa368a34b9fc61590d0f0aaa1cfcf13393e743b98a8cfc72c415f364b0f1e9f6ee
7
+ data.tar.gz: cc337ac58b41e94928356bfa846099f29546966da829799dd07d1661da308ca12e606b2ccfef2d9ebb6bfd8cfb98ecd96e65a37e5cf8ef77b0b7a3c49d714e7e
data/README.markdown CHANGED
@@ -40,6 +40,7 @@ deployables:
40
40
  type: web
41
41
  port: 8443
42
42
  protocol: h2c # tell traefik this is going to be http2
43
+ tls_cert_secret: my-tls-secret
43
44
  command: java -Xmx550m -javaagent:/app/dd-java-agent.jar -jar myjar.jar server /app/grpc.yml
44
45
  readinessProbe:
45
46
  exec:
@@ -114,8 +115,11 @@ Releasing
114
115
  -----------------------------------------
115
116
 
116
117
  - modify version.rb
117
- - ```rake gemspec:release```
118
- - ```rake gemcutter:release```
118
+ - ```bundle exec rake gemspec```
119
+ - ```git commit ```
120
+ - ```bundle exec rake git:release```
121
+ - ```bundle exec rake build```
122
+ - ```gem push pkg/pfab-0.15.0.gem```
119
123
 
120
124
  Copyright
121
125
  ---------
data/lib/pfab/cli.rb CHANGED
@@ -27,8 +27,6 @@ module Pfab
27
27
  $app_name = app_name
28
28
  end
29
29
 
30
- @apps = apps
31
-
32
30
  command :build do |c|
33
31
  c.syntax = "pfab build"
34
32
  c.summary = "build image"
@@ -142,14 +140,14 @@ module Pfab
142
140
  c.option "-c", "--command COMMAND", "Run a command with the ENV vars of the selected app"
143
141
  c.action do |_args, options|
144
142
  $env = :development
145
- app_name = get_app_name
143
+ app_name = get_app_name(include_run_locals: true)
146
144
  puts "RUNNING THE FOLLOWING LOCALLY"
147
145
 
148
146
  env_vars = yy.env_vars(app_name).
149
147
  reject { |v| v.has_key? :valueFrom }
150
148
 
151
149
  env_var_string = env_vars.map { |item| "#{item[:name]}=\"#{item[:value]}\"" }.join(" ")
152
- options.default command: @apps[app_name][:command]
150
+ options.default command: all_runnables[app_name][:command]
153
151
 
154
152
  puts_and_system "#{env_var_string} #{options.command}"
155
153
  end
@@ -182,11 +180,10 @@ module Pfab
182
180
  run!
183
181
  end
184
182
 
185
-
186
183
  def cmd_apply
187
184
  set_kube_context
188
185
  get_apps.each do |app_name|
189
- app = @apps[app_name]
186
+ app = deployables[app_name]
190
187
  if app[:deployable_type] == "cron"
191
188
  deployed_name = deployed_name(app)
192
189
  puts_and_system("kubectl delete cronjob -l deployed-name=#{deployed_name}")
@@ -237,7 +234,7 @@ module Pfab
237
234
  end
238
235
  end
239
236
 
240
- puts_and_system "docker build -t #{image_name} ."
237
+ puts_and_system "docker build -t #{image_name} --platform amd64 ."
241
238
 
242
239
  puts_and_system "docker tag #{image_name}:latest #{image_name}:#{rev}"
243
240
  puts_and_system "docker tag #{image_name}:#{rev} #{full_image_name}"
@@ -247,7 +244,7 @@ module Pfab
247
244
  end
248
245
 
249
246
  def yy
250
- Pfab::Yamls.new(apps: @apps,
247
+ Pfab::Yamls.new(apps: all_runnables,
251
248
  application_yaml: @application_yaml,
252
249
  env: $env,
253
250
  sha: get_current_sha,
@@ -257,7 +254,7 @@ module Pfab
257
254
  end
258
255
 
259
256
  def cmd_generate_yaml
260
- wrote = yy.generate_all
257
+ wrote = yy.generate(deployables.keys)
261
258
  puts "Generated #{wrote}"
262
259
  end
263
260
 
@@ -295,14 +292,22 @@ module Pfab
295
292
  end
296
293
  end
297
294
 
298
- def apps
299
- @_apps ||= calculate_apps
295
+ def deployables
296
+ @_deployables ||= calculate_runnables("deployables")
297
+ end
298
+
299
+ def run_locals
300
+ @_rl ||= calculate_runnables("run_locals")
301
+ end
302
+
303
+ def all_runnables
304
+ deployables.merge(run_locals)
300
305
  end
301
306
 
302
- def calculate_apps
307
+ def calculate_runnables(runnable_type)
303
308
  application = @application_yaml["name"]
304
309
  apps = {}
305
- @application_yaml["deployables"].each do |deployable, dep|
310
+ (@application_yaml[runnable_type] || []).each do |deployable, dep|
306
311
  deployable_type = dep["type"]
307
312
  app_name = [application, deployable_type, deployable].join("-")
308
313
  apps[app_name] = {
@@ -329,16 +334,17 @@ module Pfab
329
334
  JSON.parse(pods_str)
330
335
  end
331
336
 
332
- def get_app_name(all: false)
337
+ def get_app_name(all: false, include_run_locals: false)
333
338
  return $app_name unless $app_name.nil?
334
- apps = @apps.keys
339
+ apps = deployables.keys
340
+ apps.concat(run_locals.keys) if include_run_locals
335
341
  apps << "all" if all
336
342
  $app_name = choose("which app?", *apps)
337
343
  end
338
344
 
339
345
  def get_apps
340
346
  name = get_app_name(all: true)
341
- (name == "all") ? @apps.keys : [name]
347
+ (name == "all") ? deployables.keys : [name]
342
348
  end
343
349
  end
344
350
  end
@@ -2,9 +2,13 @@ module Pfab
2
2
  module Templates
3
3
  class Web < Base
4
4
  def write_to(f)
5
- f << YAML.dump(service.deep_stringify_keys)
6
- f << YAML.dump(ingress.deep_stringify_keys)
7
- f << YAML.dump(deployment.deep_stringify_keys)
5
+ if get("host").nil?
6
+ puts "No host to deploy to for #{@data['deployed_name']}. Skipping."
7
+ else
8
+ f << YAML.dump(service.deep_stringify_keys)
9
+ f << YAML.dump(ingress.deep_stringify_keys)
10
+ f << YAML.dump(deployment.deep_stringify_keys)
11
+ end
8
12
  end
9
13
 
10
14
  def service
@@ -17,7 +21,8 @@ module Pfab
17
21
  labels: {
18
22
  application: @data['application'],
19
23
  "deployed-name" => @data['deployed_name'],
20
- }
24
+ },
25
+ annotations: service_annotations,
21
26
  },
22
27
  spec: {
23
28
  selector: {
@@ -34,6 +39,12 @@ module Pfab
34
39
  }
35
40
  end
36
41
 
42
+ def service_annotations
43
+ h = {}
44
+ h["traefik.ingress.kubernetes.io/service.serversscheme"] = "h2c" if get("protocol") == "h2c"
45
+ h
46
+ end
47
+
37
48
  def ingress
38
49
  {
39
50
  apiVersion: "networking.k8s.io/v1",
@@ -49,12 +60,25 @@ module Pfab
49
60
  },
50
61
  spec: {
51
62
  rules: rules,
63
+ tls: tls_hosts
52
64
  },
53
65
  }
54
66
  end
55
67
 
68
+ def tls_hosts
69
+ hosts.map do |host|
70
+ {
71
+ hosts: [host],
72
+ secretName: get("tls_cert_secret")
73
+ }
74
+ end
75
+ end
76
+
77
+ def hosts
78
+ get("host").split(",")
79
+ end
80
+
56
81
  def rules
57
- hosts = get("host").split(",")
58
82
  hosts.map do |host|
59
83
  {
60
84
  host: host,
@@ -62,9 +86,14 @@ module Pfab
62
86
  paths: [
63
87
  {
64
88
  path: "/",
89
+ pathType: "Prefix",
65
90
  backend: {
66
- serviceName: @data['deployed_name'],
67
- servicePort: "http",
91
+ service: {
92
+ name: @data['deployed_name'],
93
+ port: {
94
+ name: "http"
95
+ }
96
+ }
68
97
  },
69
98
  },
70
99
  ],
@@ -82,8 +111,9 @@ module Pfab
82
111
  "traefik.protocol" => get("protocol") || "http",
83
112
  "traefik.frontend.headers.SSLRedirect" => "true",
84
113
  "traefik.docker.network" => "traefik",
114
+ "traefik.ingress.kubernetes.io/router.entrypoints" => "websecure",
115
+ "traefik.ingress.kubernetes.io/router.tls" => "true"
85
116
  }
86
- h["ingress.kubernetes.io/protocol"] = "h2c" if get("protocol") == "h2c"
87
117
  h
88
118
  end
89
119
 
data/lib/pfab/version.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module Pfab
2
2
  module Version
3
3
  MAJOR = 0
4
- MINOR = 12
4
+ MINOR = 16
5
5
  PATCH = 0
6
6
  BUILD = nil
7
7
 
data/lib/pfab/yamls.rb CHANGED
@@ -27,13 +27,13 @@ module Pfab
27
27
  data
28
28
  end
29
29
 
30
- def generate_all
30
+ def generate(keys)
31
31
 
32
- @apps.map do |app, props|
32
+ keys.each do |key|
33
+ props = @apps[key]
34
+ data = data_for(key, props)
33
35
 
34
- data = data_for(app, props)
35
-
36
- filename = ".application-k8s-#{data["env"]}-#{app}.yaml"
36
+ filename = ".application-k8s-#{data["env"]}-#{key}.yaml"
37
37
  File.open(filename, "w") do |f|
38
38
  case props[:deployable_type]
39
39
  when "web" then
data/pfab.gemspec CHANGED
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: pfab 0.12.0 ruby lib
5
+ # stub: pfab 0.16.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "pfab".freeze
9
- s.version = "0.12.0"
9
+ s.version = "0.16.0"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["Jeff Dwyer".freeze]
14
- s.date = "2021-12-06"
14
+ s.date = "2022-01-18"
15
15
  s.description = "k8s helper".freeze
16
16
  s.email = "jdwyer@prefab.cloud".freeze
17
17
  s.executables = ["pfab".freeze]
@@ -21,7 +21,6 @@ Gem::Specification.new do |s|
21
21
  ]
22
22
  s.files = [
23
23
  ".document",
24
- ".ruby-version",
25
24
  ".tool-versions",
26
25
  "Gemfile",
27
26
  "Gemfile.lock",
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pfab
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0
4
+ version: 0.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Dwyer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-06 00:00:00.000000000 Z
11
+ date: 2022-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: commander
@@ -132,7 +132,6 @@ extra_rdoc_files:
132
132
  - README.markdown
133
133
  files:
134
134
  - ".document"
135
- - ".ruby-version"
136
135
  - ".tool-versions"
137
136
  - Gemfile
138
137
  - Gemfile.lock
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 2.5.3