pfab 0.6.0 → 0.7.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 +4 -4
- data/README.markdown +64 -3
- data/VERSION +1 -1
- data/lib/pfab/cli.rb +34 -7
- data/lib/pfab/templates/base.rb +4 -4
- data/lib/pfab/yamls.rb +33 -18
- data/pfab.gemspec +3 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '03967e0911ee09d5b46c3c9b3f65b40cfcf3eaa4160edea4f877a12a3262a157'
|
4
|
+
data.tar.gz: b0f26e10f910e669dc40cd370179084eb0bdb9097ac07eb4cb72fe1894856b4c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 43446c3185c0ea5dab111015c490aa41f823f83aeeaa91928cc4b016c6c52a7e4a1faf2f26295e538fd6abb4b15cbc5e7ddab95ff17bab36137aa70f82df7b9f
|
7
|
+
data.tar.gz: 617049c6303bfaf34c79063f6910555466dd340964b53c4c5da6740f4c62ec94dd20b01f2497ec1c9cd4f877ba99baa4438fa7c8c6bb9e75bbdcb38365863345
|
data/README.markdown
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
pfab
|
2
2
|
===================
|
3
3
|
|
4
|
-
|
4
|
+
The missing k8s deployer
|
5
5
|
|
6
6
|
|
7
|
-
|
7
|
+
## Setup
|
8
|
+
|
9
|
+
Configure ~/.pfab.yaml
|
8
10
|
```
|
9
11
|
container.repository: "gcr.io/$$$$$$$"
|
10
12
|
default_cpu_string: "50m/250m"
|
@@ -16,10 +18,69 @@ envs:
|
|
16
18
|
context: "k8s-production-context"
|
17
19
|
```
|
18
20
|
|
19
|
-
|
21
|
+
# application.yaml
|
22
|
+
```$yaml
|
23
|
+
name: myapp
|
24
|
+
prebuild: "mvn -T 4 clean package"
|
25
|
+
|
26
|
+
deployables:
|
27
|
+
kafkaconsumer:
|
28
|
+
type: daemon
|
29
|
+
command: java -Xmx550m -javaagent:/app/dd-java-agent.jar -jar myjar.jar kafkarunner
|
30
|
+
cpu: 50m/250m
|
31
|
+
memory: 400Mi/600Mi
|
32
|
+
dbmigrate:
|
33
|
+
type: job
|
34
|
+
command: java -jar myjar.jar db_migrate
|
35
|
+
upsert-usage-logs:
|
36
|
+
type: cron
|
37
|
+
schedule: 2 6 * * *
|
38
|
+
command: java -jar myjar.jar my_nightly_job
|
39
|
+
grpc:
|
40
|
+
type: web
|
41
|
+
port: 8443
|
42
|
+
protocol: h2c # tell traefik this is going to be http2
|
43
|
+
command: java -Xmx550m -javaagent:/app/dd-java-agent.jar -jar myjar.jar server /app/grpc.yml
|
44
|
+
readinessProbe:
|
45
|
+
exec:
|
46
|
+
command: ["/bin/grpc_health_probe", "-addr=:8443"]
|
47
|
+
initialDelaySeconds: 5
|
48
|
+
livenessProbe:
|
49
|
+
exec:
|
50
|
+
command: ["/bin/grpc_health_probe", "-addr=:8443"]
|
51
|
+
initialDelaySeconds: 120
|
52
|
+
staging:
|
53
|
+
host: api.staginghost.com
|
54
|
+
replicas: 1
|
55
|
+
production:
|
56
|
+
host: api.host.com
|
57
|
+
replicas: 2
|
58
|
+
cpu: 50m/250m
|
59
|
+
memory: 600Mi/768Mi
|
60
|
+
|
61
|
+
|
62
|
+
staging:
|
63
|
+
environment:
|
64
|
+
ENV: staging
|
65
|
+
production:
|
66
|
+
environment:
|
67
|
+
ENV: production
|
68
|
+
env_secrets:
|
69
|
+
AWS_SECRET_ACCESS_KEY: secretstore/aws_secret_access_key
|
70
|
+
environment:
|
71
|
+
DD_AGENT_HOST: field/status.hostIP
|
72
|
+
AWS_ACCESS_KEY_ID: "1234"
|
73
|
+
```
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
# Profit
|
20
78
|
```
|
21
79
|
pfab shipit
|
22
80
|
pfab status
|
81
|
+
pfab logs
|
82
|
+
pfab exec
|
83
|
+
pfab run_local
|
23
84
|
```
|
24
85
|
|
25
86
|
Contributing to pfab
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.7.0
|
data/lib/pfab/cli.rb
CHANGED
@@ -133,6 +133,29 @@ module Pfab
|
|
133
133
|
end
|
134
134
|
end
|
135
135
|
|
136
|
+
command :run_local do |c|
|
137
|
+
c.syntax = "pfab run_local"
|
138
|
+
c.summary = "run an app LOCALLY"
|
139
|
+
c.description = "run the application command with all env vars set"
|
140
|
+
c.example "run a command locally",
|
141
|
+
"pfab run_local"
|
142
|
+
c.option "-c", "--command COMMAND", "Run a command with the ENV vars of the selected app"
|
143
|
+
c.action do |_args, options|
|
144
|
+
$env = :development
|
145
|
+
app_name = get_app_name
|
146
|
+
puts "RUNNING THE FOLLOWING LOCALLY"
|
147
|
+
|
148
|
+
env_vars = yy.env_vars(app_name).
|
149
|
+
reject { |v| v.has_key? :valueFrom }
|
150
|
+
|
151
|
+
env_var_string = env_vars.map { |item| "#{item[:name]}=#{item[:value]}" }.join(" ")
|
152
|
+
options.default command: @apps[app_name][:command]
|
153
|
+
|
154
|
+
puts_and_system "#{env_var_string} #{options.command}"
|
155
|
+
end
|
156
|
+
end
|
157
|
+
alias_command :rl, :run_local
|
158
|
+
|
136
159
|
default_command :help
|
137
160
|
|
138
161
|
run!
|
@@ -196,14 +219,18 @@ module Pfab
|
|
196
219
|
return true
|
197
220
|
end
|
198
221
|
|
199
|
-
def
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
222
|
+
def yy
|
223
|
+
Pfab::Yamls.new(apps: @apps,
|
224
|
+
application_yaml: @application_yaml,
|
225
|
+
env: $env,
|
226
|
+
sha: get_current_sha,
|
227
|
+
image_name: image_name,
|
228
|
+
config: config
|
206
229
|
)
|
230
|
+
end
|
231
|
+
|
232
|
+
def cmd_generate_yaml
|
233
|
+
wrote = yy.generate_all
|
207
234
|
puts "Generated #{wrote}"
|
208
235
|
end
|
209
236
|
|
data/lib/pfab/templates/base.rb
CHANGED
@@ -49,11 +49,11 @@ module Pfab
|
|
49
49
|
{ name: "DEPLOYED_NAME", value: @data['deployed_name'] },
|
50
50
|
]
|
51
51
|
|
52
|
-
load_env_vars(env_vars, @data
|
53
|
-
load_env_vars(env_vars, @data
|
52
|
+
load_env_vars(env_vars, @data.dig("application_yaml", :environment))
|
53
|
+
load_env_vars(env_vars, @data.dig("application_yaml", @data["env"], :environment))
|
54
54
|
|
55
|
-
load_secrets(env_vars, @data
|
56
|
-
load_secrets(env_vars, @data
|
55
|
+
load_secrets(env_vars, @data.dig("application_yaml", :env_secrets))
|
56
|
+
load_secrets(env_vars, @data.dig("application_yaml", @data["env"], :env_secrets))
|
57
57
|
|
58
58
|
env_vars
|
59
59
|
end
|
data/lib/pfab/yamls.rb
CHANGED
@@ -1,24 +1,39 @@
|
|
1
1
|
require 'pry'
|
2
2
|
module Pfab
|
3
3
|
class Yamls
|
4
|
-
|
5
|
-
|
6
|
-
apps
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
4
|
+
|
5
|
+
def initialize(apps:, application_yaml:, image_name:, env:, sha:, config:)
|
6
|
+
@apps = apps
|
7
|
+
@base_data = {
|
8
|
+
"env" => env.to_s,
|
9
|
+
'image_name' => image_name,
|
10
|
+
'sha' => sha,
|
11
|
+
'container_repository' => config["container.repository"],
|
12
|
+
'config' => config,
|
13
|
+
'application' => application_yaml["name"],
|
14
|
+
'application_yaml' => application_yaml
|
15
|
+
}
|
16
|
+
end
|
17
|
+
|
18
|
+
def env_vars(app)
|
19
|
+
template = Pfab::Templates::Base.new(data_for(app, @apps[app]))
|
20
|
+
template.env_vars
|
21
|
+
end
|
22
|
+
|
23
|
+
def data_for(app, props)
|
24
|
+
data = @base_data.clone
|
25
|
+
data['props'] = props
|
26
|
+
data['deployed_name'] = app
|
27
|
+
data
|
28
|
+
end
|
29
|
+
|
30
|
+
def generate_all
|
31
|
+
|
32
|
+
@apps.map do |app, props|
|
33
|
+
|
34
|
+
data = data_for(app, props)
|
35
|
+
|
36
|
+
filename = ".application-k8s-#{data["env"]}-#{app}.yaml"
|
22
37
|
File.open(filename, "w") do |f|
|
23
38
|
case props[:deployable_type]
|
24
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.
|
5
|
+
# stub: pfab 0.7.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "pfab".freeze
|
9
|
-
s.version = "0.
|
9
|
+
s.version = "0.7.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 = "2019-01-
|
14
|
+
s.date = "2019-01-10"
|
15
15
|
s.description = "k8s helper".freeze
|
16
16
|
s.email = "jdwyer@prefab.cloud".freeze
|
17
17
|
s.executables = ["pfab".freeze]
|
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.
|
4
|
+
version: 0.7.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: 2019-01-
|
11
|
+
date: 2019-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: commander
|