pfab 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|