matsuri 0.1.0 → 0.3.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.
Files changed (157) hide show
  1. checksums.yaml +5 -5
  2. data/.envrc +1 -0
  3. data/.gitignore +2 -0
  4. data/.rubocop.yml +9 -0
  5. data/AGENTS.md +18 -0
  6. data/CHANGELOG.md +642 -0
  7. data/Gemfile +2 -0
  8. data/README.md +86 -8
  9. data/Rakefile +20 -0
  10. data/bin/console +1 -0
  11. data/bin/matsuri +6 -0
  12. data/bin/setup +2 -0
  13. data/docs/acceptors.md +181 -0
  14. data/docs/boot.md +101 -0
  15. data/docs/design/acceptors.md +157 -0
  16. data/docs/design/boot.md +131 -0
  17. data/docs/design/ssa.md +142 -0
  18. data/docs/design/stacks.md +153 -0
  19. data/docs/diff.md +85 -0
  20. data/docs/known-issues.md +19 -0
  21. data/docs/local-dev.md +173 -0
  22. data/docs/presenters.md +317 -0
  23. data/docs/resources.md +121 -0
  24. data/docs/setup.md +97 -0
  25. data/docs/ssa.md +149 -0
  26. data/docs/stacks.md +146 -0
  27. data/flake.lock +61 -0
  28. data/flake.nix +35 -0
  29. data/lib/matsuri/acceptor.rb +33 -0
  30. data/lib/matsuri/acceptors/image_tag.rb +15 -0
  31. data/lib/matsuri/cmd.rb +46 -0
  32. data/lib/matsuri/cmds/apply.rb +78 -0
  33. data/lib/matsuri/cmds/cli.rb +147 -0
  34. data/lib/matsuri/cmds/create.rb +87 -0
  35. data/lib/matsuri/cmds/delete.rb +86 -0
  36. data/lib/matsuri/cmds/diff.rb +105 -0
  37. data/lib/matsuri/cmds/generate.rb +24 -0
  38. data/lib/matsuri/cmds/kubectl.rb +16 -0
  39. data/lib/matsuri/cmds/recreate.rb +65 -0
  40. data/lib/matsuri/cmds/scale.rb +37 -0
  41. data/lib/matsuri/cmds/show.rb +123 -0
  42. data/lib/matsuri/cmds/status.rb +67 -0
  43. data/lib/matsuri/concerns/awaiting.rb +24 -0
  44. data/lib/matsuri/concerns/diffable.rb +135 -0
  45. data/lib/matsuri/concerns/export_manifest.rb +56 -0
  46. data/lib/matsuri/concerns/import_manifest.rb +64 -0
  47. data/lib/matsuri/concerns/pod_template.rb +37 -0
  48. data/lib/matsuri/concerns/pods/spread_pods.rb +47 -0
  49. data/lib/matsuri/concerns/pods/spread_topology.rb +63 -0
  50. data/lib/matsuri/concerns/registry_helpers.rb +59 -0
  51. data/lib/matsuri/config.rb +101 -0
  52. data/lib/matsuri/core_ext.rb +107 -0
  53. data/lib/matsuri/dsl/cluster/aggregated_cluster_role.rb +75 -0
  54. data/lib/matsuri/dsl/cluster/binding.rb +118 -0
  55. data/lib/matsuri/dsl/cluster/cluster_role.rb +41 -0
  56. data/lib/matsuri/dsl/cluster/role.rb +49 -0
  57. data/lib/matsuri/dsl/cluster/scope.rb +245 -0
  58. data/lib/matsuri/dsl/cluster/service_account.rb +76 -0
  59. data/lib/matsuri/dsl/concerns/default_binding.rb +34 -0
  60. data/lib/matsuri/dsl/concerns/manifest_set.rb +21 -0
  61. data/lib/matsuri/dsl/concerns/metadata.rb +56 -0
  62. data/lib/matsuri/dsl/concerns/rbac_rules.rb +39 -0
  63. data/lib/matsuri/initializer.rb +41 -0
  64. data/lib/matsuri/kubernetes/base.rb +107 -0
  65. data/lib/matsuri/kubernetes/config_map.rb +100 -0
  66. data/lib/matsuri/kubernetes/cron_job.rb +115 -0
  67. data/lib/matsuri/kubernetes/daemon_set.rb +62 -0
  68. data/lib/matsuri/kubernetes/deployment.rb +65 -0
  69. data/lib/matsuri/kubernetes/endpoints.rb +57 -0
  70. data/lib/matsuri/kubernetes/horizontal_pod_autoscaler.rb +116 -0
  71. data/lib/matsuri/kubernetes/imported_manifest.rb +61 -0
  72. data/lib/matsuri/kubernetes/ingress.rb +66 -0
  73. data/lib/matsuri/kubernetes/persistent_volume.rb +56 -0
  74. data/lib/matsuri/kubernetes/persistent_volume_claim.rb +41 -0
  75. data/lib/matsuri/kubernetes/pod.rb +355 -0
  76. data/lib/matsuri/kubernetes/replica_set.rb +46 -0
  77. data/lib/matsuri/kubernetes/secret.rb +86 -0
  78. data/lib/matsuri/kubernetes/service.rb +49 -0
  79. data/lib/matsuri/kubernetes/stateful_set.rb +75 -0
  80. data/lib/matsuri/kubernetes/storage_class.rb +45 -0
  81. data/lib/matsuri/platform.rb +38 -0
  82. data/lib/matsuri/presenter.rb +47 -0
  83. data/lib/matsuri/presenters/helpers.rb +39 -0
  84. data/lib/matsuri/presenters/prune_empty.rb +59 -0
  85. data/lib/matsuri/presenters/seed_image.rb +28 -0
  86. data/lib/matsuri/presenters/seed_replicas.rb +25 -0
  87. data/lib/matsuri/presenters/seed_resources.rb +29 -0
  88. data/lib/matsuri/registry.rb +267 -0
  89. data/lib/matsuri/shell_out.rb +119 -0
  90. data/lib/matsuri/stack.rb +276 -0
  91. data/lib/matsuri/task.rb +20 -0
  92. data/lib/matsuri/tasks/cluster.rb +79 -0
  93. data/lib/matsuri/tasks/docker.rb +25 -0
  94. data/lib/matsuri/tasks/hash_diff.rb +61 -0
  95. data/lib/matsuri/tasks/kubectl.rb +21 -0
  96. data/lib/matsuri/tasks/kubectl_ops/apply.rb +24 -0
  97. data/lib/matsuri/tasks/kubectl_ops/create.rb +27 -0
  98. data/lib/matsuri/tasks/kubectl_ops/delete.rb +21 -0
  99. data/lib/matsuri/tasks/kubectl_ops/diff.rb +47 -0
  100. data/lib/matsuri/tasks/kubectl_ops/get.rb +36 -0
  101. data/lib/matsuri/tasks/kubectl_ops/recreate.rb +35 -0
  102. data/lib/matsuri/tasks/kubectl_ops/replace.rb +29 -0
  103. data/lib/matsuri/tasks/kubectl_ops/rollout_status.rb +22 -0
  104. data/lib/matsuri/tasks/kubectl_ops/scale.rb +22 -0
  105. data/lib/matsuri/tasks/kubectl_ops/server_side_apply.rb +32 -0
  106. data/lib/matsuri/tasks/kubectl_ops/status.rb +20 -0
  107. data/lib/matsuri/tasks/kubectl_ops.rb +218 -0
  108. data/lib/matsuri/tasks/pod.rb +56 -0
  109. data/lib/matsuri/tasks/stacks/seed.rb +93 -0
  110. data/lib/matsuri/tasks/stacks.rb +31 -0
  111. data/lib/matsuri/transform/algebra.rb +52 -0
  112. data/lib/matsuri/transform/callable.rb +54 -0
  113. data/lib/matsuri/transform/combinators.rb +61 -0
  114. data/lib/matsuri/transform/env.rb +43 -0
  115. data/lib/matsuri/transform/kubernetes.rb +89 -0
  116. data/lib/matsuri/transform.rb +20 -0
  117. data/lib/matsuri/version.rb +3 -1
  118. data/lib/matsuri.rb +158 -2
  119. data/matsuri.gemspec +20 -7
  120. data/tests/bin/minikube-start.sh +27 -0
  121. data/tests/bin/probe-save-config.sh +46 -0
  122. data/tests/bin/probe-ssa.sh +206 -0
  123. data/tests/example/.gitignore +1 -0
  124. data/tests/example/Gemfile +7 -0
  125. data/tests/example/README.md +91 -0
  126. data/tests/example/bin/matsuri +14 -0
  127. data/tests/example/config/initializer.rb +12 -0
  128. data/tests/example/config/matsuri.rb +9 -0
  129. data/tests/example/config/platform.rb +39 -0
  130. data/tests/example/lib/acme/nodes/dedicated.rb +26 -0
  131. data/tests/example/lib/acme/nodes/preemptible.rb +17 -0
  132. data/tests/example/lib/acme/nodes/required_cores.rb +26 -0
  133. data/tests/example/lib/acme/nodes/resource_class.rb +26 -0
  134. data/tests/example/lib/acme/pods/cacerts.rb +15 -0
  135. data/tests/example/lib/acme/pods/healthcheck.rb +36 -0
  136. data/tests/example/lib/acme.rb +26 -0
  137. data/tests/example/platform/config_maps/billing-settings.rb +8 -0
  138. data/tests/example/platform/config_maps/cacerts.rb +9 -0
  139. data/tests/example/platform/deployments/billing-web.rb +5 -0
  140. data/tests/example/platform/deployments/checkout-web.rb +6 -0
  141. data/tests/example/platform/namespaces/billing-dev.yaml +7 -0
  142. data/tests/example/platform/namespaces/checkout-dev.yaml +7 -0
  143. data/tests/example/platform/pods/billing.rb +31 -0
  144. data/tests/example/platform/pods/checkout.rb +27 -0
  145. data/tests/example/platform/services/billing-web.rb +6 -0
  146. data/tests/example/platform/services/checkout-web.rb +4 -0
  147. data/tests/example/platform/stacks/billing.rb +8 -0
  148. data/tests/example/platform/stacks/checkout.rb +19 -0
  149. data/tests/k8s/save-config/deployment-declared.yaml +19 -0
  150. data/tests/k8s/save-config/deployment-seeded.yaml +20 -0
  151. data/tests/k8s/save-config/namespace.yaml +4 -0
  152. data/tests/k8s/ssa/declared-bumped.yaml +22 -0
  153. data/tests/k8s/ssa/declared.yaml +22 -0
  154. data/tests/k8s/ssa/namespace.yaml +4 -0
  155. data/tests/k8s/ssa/seed-via-create.yaml +24 -0
  156. metadata +288 -20
  157. data/.travis.yml +0 -4
@@ -0,0 +1,27 @@
1
+ # Checkout runs on its dedicated pool where one exists. The container
2
+ # carries no image and no resources: a deployment operator owns the tag
3
+ # and an in-place autoscaler owns the sizing. The stack seeds both at
4
+ # creation.
5
+ Matsuri.define :pod, 'checkout' do
6
+ include Acme::Pods::Healthcheck
7
+
8
+ let(:labels) { { 'app' => 'checkout' } }
9
+
10
+ # Node selection is per-environment: local clusters have no dedicated
11
+ # pool, so the scheduling vocabulary stays out entirely.
12
+ case Matsuri.environment
13
+ when 'checkout_staging'
14
+ include Acme::Nodes::Dedicated
15
+ let(:dedicated_key) { 'checkout' }
16
+ let(:node_selector) { dedicated_node_selector }
17
+ let(:tolerations) { [dedicated_toleration] }
18
+ end
19
+
20
+ let(:volumes) { [] }
21
+ let(:container) do
22
+ {
23
+ name: 'checkout',
24
+ readinessProbe: readiness_probe
25
+ }
26
+ end
27
+ end
@@ -0,0 +1,6 @@
1
+ # Selects on the same labels the deployment selects on, by asking the
2
+ # deployment rather than restating them.
3
+ Matsuri.define :service, 'billing-web' do
4
+ let(:port_num) { 8000 }
5
+ let(:selector) { deployment('billing-web').match_labels }
6
+ end
@@ -0,0 +1,4 @@
1
+ Matsuri.define :service, 'checkout-web' do
2
+ let(:port_num) { 8000 }
3
+ let(:selector) { deployment('checkout-web').match_labels }
4
+ end
@@ -0,0 +1,8 @@
1
+ # Classic delivery: matsuri owns every field and converges by
2
+ # client-side apply. One management promise, in this sequence.
3
+ Matsuri.define :stack, 'billing' do
4
+ needs :config_map, 'cacerts'
5
+ needs :config_map, 'billing-settings'
6
+ needs :deployment, 'billing-web'
7
+ needs :service, 'billing-web'
8
+ end
@@ -0,0 +1,19 @@
1
+ # Server-side delivery: matsuri manages the fields it declares and
2
+ # cedes the rest. The seeds complete the create payload only — the
3
+ # first converge routes through the seeding protocol (seeded create,
4
+ # declared apply, cede), then the deployment operator takes the image,
5
+ # the HPA takes the count, and the in-place autoscaler takes sizing.
6
+ Matsuri.define :stack, 'checkout' do
7
+ needs :deployment, 'checkout-web'
8
+ needs :service, 'checkout-web'
9
+
10
+ present :on_create, match_deployments(seed_replicas(2))
11
+ present :on_create, match_deployments(seed_image('registry.acme.io/checkout:boot'))
12
+ present :on_create, match_deployments(seed_resources(requests: { cpu: '250m', memory: '256Mi' }))
13
+
14
+ # Both regimes declare in persistence normal form: an empty value is a
15
+ # ceded field, never an ownership claim, so the create's echo equals
16
+ # the declaration and co-ownership holds.
17
+ present :on_create, prune_empty
18
+ present :on_apply, prune_empty
19
+ end
@@ -0,0 +1,19 @@
1
+ # The ongoing apply payload: the declaration with the seeded field absent.
2
+ # Don't-clobber is structural — replicas is simply not here to send.
3
+ apiVersion: apps/v1
4
+ kind: Deployment
5
+ metadata:
6
+ name: save-config-probe
7
+ namespace: matsuri-probes
8
+ spec:
9
+ selector:
10
+ matchLabels:
11
+ app: save-config-probe
12
+ template:
13
+ metadata:
14
+ labels:
15
+ app: save-config-probe
16
+ spec:
17
+ containers:
18
+ - name: pause
19
+ image: registry.k8s.io/pause:3.9
@@ -0,0 +1,20 @@
1
+ # The create payload: the declaration plus the seeded replicas. Sent once,
2
+ # by create, without --save-config.
3
+ apiVersion: apps/v1
4
+ kind: Deployment
5
+ metadata:
6
+ name: save-config-probe
7
+ namespace: matsuri-probes
8
+ spec:
9
+ replicas: 3
10
+ selector:
11
+ matchLabels:
12
+ app: save-config-probe
13
+ template:
14
+ metadata:
15
+ labels:
16
+ app: save-config-probe
17
+ spec:
18
+ containers:
19
+ - name: pause
20
+ image: registry.k8s.io/pause:3.9
@@ -0,0 +1,4 @@
1
+ apiVersion: v1
2
+ kind: Namespace
3
+ metadata:
4
+ name: matsuri-probes
@@ -0,0 +1,22 @@
1
+ # The first ordinary deploy after creation: same declaration, one
2
+ # declared value changed. Probes whether the ongoing manager can change
3
+ # its own fields cleanly while still omitting the seeds.
4
+ apiVersion: apps/v1
5
+ kind: Deployment
6
+ metadata:
7
+ name: seed-via-create
8
+ namespace: matsuri-probes
9
+ spec:
10
+ selector:
11
+ matchLabels:
12
+ app: seed-via-create
13
+ template:
14
+ metadata:
15
+ labels:
16
+ app: seed-via-create
17
+ spec:
18
+ containers:
19
+ - name: pause
20
+ env:
21
+ - name: DECLARED
22
+ value: two
@@ -0,0 +1,22 @@
1
+ # The ongoing declaration: image and replicas are seeds, so the payload
2
+ # omits both — the container entry rides on its name key alone. Fields
3
+ # not sent are never contested; that is the whole seeds+SSA bet.
4
+ apiVersion: apps/v1
5
+ kind: Deployment
6
+ metadata:
7
+ name: seed-via-create
8
+ namespace: matsuri-probes
9
+ spec:
10
+ selector:
11
+ matchLabels:
12
+ app: seed-via-create
13
+ template:
14
+ metadata:
15
+ labels:
16
+ app: seed-via-create
17
+ spec:
18
+ containers:
19
+ - name: pause
20
+ env:
21
+ - name: DECLARED
22
+ value: one
@@ -0,0 +1,4 @@
1
+ apiVersion: v1
2
+ kind: Namespace
3
+ metadata:
4
+ name: matsuri-probes
@@ -0,0 +1,24 @@
1
+ # Seed via create: the declaration plus the seeded image and replicas,
2
+ # sent once by an imperative create. Seeded = declared + seeds; both
3
+ # come from the same definition, so shared fields agree by construction.
4
+ apiVersion: apps/v1
5
+ kind: Deployment
6
+ metadata:
7
+ name: seed-via-create
8
+ namespace: matsuri-probes
9
+ spec:
10
+ replicas: 3
11
+ selector:
12
+ matchLabels:
13
+ app: seed-via-create
14
+ template:
15
+ metadata:
16
+ labels:
17
+ app: seed-via-create
18
+ spec:
19
+ containers:
20
+ - name: pause
21
+ image: registry.k8s.io/pause:3.9
22
+ env:
23
+ - name: DECLARED
24
+ value: one
metadata CHANGED
@@ -1,43 +1,168 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: matsuri
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ho-Sheng Hsiao
8
- autorequire:
9
- bindir: exe
8
+ bindir: bin
10
9
  cert_chain: []
11
- date: 2015-09-14 00:00:00.000000000 Z
10
+ date: 1980-01-01 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
- name: bundler
13
+ name: base64
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: thor
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: mixlib-shellout
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: mixlib-config
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ - !ruby/object:Gem::Dependency
69
+ name: rlet
15
70
  requirement: !ruby/object:Gem::Requirement
16
71
  requirements:
17
72
  - - "~>"
18
73
  - !ruby/object:Gem::Version
19
- version: '1.10'
20
- type: :development
74
+ version: 0.7.0
75
+ type: :runtime
21
76
  prerelease: false
22
77
  version_requirements: !ruby/object:Gem::Requirement
23
78
  requirements:
24
79
  - - "~>"
25
80
  - !ruby/object:Gem::Version
26
- version: '1.10'
81
+ version: 0.7.0
82
+ - !ruby/object:Gem::Dependency
83
+ name: map
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ - !ruby/object:Gem::Dependency
97
+ name: hashdiff
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: rainbow
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ type: :runtime
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ - !ruby/object:Gem::Dependency
125
+ name: unit
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: 0.5.0
131
+ type: :runtime
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: 0.5.0
138
+ - !ruby/object:Gem::Dependency
139
+ name: bundler
140
+ requirement: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '2.4'
145
+ type: :development
146
+ prerelease: false
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '2.4'
27
152
  - !ruby/object:Gem::Dependency
28
153
  name: rake
29
154
  requirement: !ruby/object:Gem::Requirement
30
155
  requirements:
31
156
  - - "~>"
32
157
  - !ruby/object:Gem::Version
33
- version: '10.0'
158
+ version: '13.0'
34
159
  type: :development
35
160
  prerelease: false
36
161
  version_requirements: !ruby/object:Gem::Requirement
37
162
  requirements:
38
163
  - - "~>"
39
164
  - !ruby/object:Gem::Version
40
- version: '10.0'
165
+ version: '13.0'
41
166
  - !ruby/object:Gem::Dependency
42
167
  name: rspec
43
168
  requirement: !ruby/object:Gem::Requirement
@@ -54,27 +179,173 @@ dependencies:
54
179
  version: '0'
55
180
  description: Framework and toolkit to build a dev environment using Docker and Kubernetes
56
181
  email:
57
- - hosh@shopapps.co
58
- executables: []
182
+ - ho-sheng.hsiao@solace.health
183
+ executables:
184
+ - console
185
+ - matsuri
186
+ - setup
59
187
  extensions: []
60
188
  extra_rdoc_files: []
61
189
  files:
190
+ - ".envrc"
62
191
  - ".gitignore"
63
192
  - ".rspec"
64
- - ".travis.yml"
193
+ - ".rubocop.yml"
194
+ - AGENTS.md
195
+ - CHANGELOG.md
65
196
  - Gemfile
66
197
  - LICENSE
67
198
  - README.md
68
199
  - Rakefile
69
200
  - bin/console
201
+ - bin/matsuri
70
202
  - bin/setup
203
+ - docs/acceptors.md
204
+ - docs/boot.md
205
+ - docs/design/acceptors.md
206
+ - docs/design/boot.md
207
+ - docs/design/ssa.md
208
+ - docs/design/stacks.md
209
+ - docs/diff.md
210
+ - docs/known-issues.md
211
+ - docs/local-dev.md
212
+ - docs/presenters.md
213
+ - docs/resources.md
214
+ - docs/setup.md
215
+ - docs/ssa.md
216
+ - docs/stacks.md
217
+ - flake.lock
218
+ - flake.nix
71
219
  - lib/matsuri.rb
220
+ - lib/matsuri/acceptor.rb
221
+ - lib/matsuri/acceptors/image_tag.rb
222
+ - lib/matsuri/cmd.rb
223
+ - lib/matsuri/cmds/apply.rb
224
+ - lib/matsuri/cmds/cli.rb
225
+ - lib/matsuri/cmds/create.rb
226
+ - lib/matsuri/cmds/delete.rb
227
+ - lib/matsuri/cmds/diff.rb
228
+ - lib/matsuri/cmds/generate.rb
229
+ - lib/matsuri/cmds/kubectl.rb
230
+ - lib/matsuri/cmds/recreate.rb
231
+ - lib/matsuri/cmds/scale.rb
232
+ - lib/matsuri/cmds/show.rb
233
+ - lib/matsuri/cmds/status.rb
234
+ - lib/matsuri/concerns/awaiting.rb
235
+ - lib/matsuri/concerns/diffable.rb
236
+ - lib/matsuri/concerns/export_manifest.rb
237
+ - lib/matsuri/concerns/import_manifest.rb
238
+ - lib/matsuri/concerns/pod_template.rb
239
+ - lib/matsuri/concerns/pods/spread_pods.rb
240
+ - lib/matsuri/concerns/pods/spread_topology.rb
241
+ - lib/matsuri/concerns/registry_helpers.rb
242
+ - lib/matsuri/config.rb
243
+ - lib/matsuri/core_ext.rb
244
+ - lib/matsuri/dsl/cluster/aggregated_cluster_role.rb
245
+ - lib/matsuri/dsl/cluster/binding.rb
246
+ - lib/matsuri/dsl/cluster/cluster_role.rb
247
+ - lib/matsuri/dsl/cluster/role.rb
248
+ - lib/matsuri/dsl/cluster/scope.rb
249
+ - lib/matsuri/dsl/cluster/service_account.rb
250
+ - lib/matsuri/dsl/concerns/default_binding.rb
251
+ - lib/matsuri/dsl/concerns/manifest_set.rb
252
+ - lib/matsuri/dsl/concerns/metadata.rb
253
+ - lib/matsuri/dsl/concerns/rbac_rules.rb
254
+ - lib/matsuri/initializer.rb
255
+ - lib/matsuri/kubernetes/base.rb
256
+ - lib/matsuri/kubernetes/config_map.rb
257
+ - lib/matsuri/kubernetes/cron_job.rb
258
+ - lib/matsuri/kubernetes/daemon_set.rb
259
+ - lib/matsuri/kubernetes/deployment.rb
260
+ - lib/matsuri/kubernetes/endpoints.rb
261
+ - lib/matsuri/kubernetes/horizontal_pod_autoscaler.rb
262
+ - lib/matsuri/kubernetes/imported_manifest.rb
263
+ - lib/matsuri/kubernetes/ingress.rb
264
+ - lib/matsuri/kubernetes/persistent_volume.rb
265
+ - lib/matsuri/kubernetes/persistent_volume_claim.rb
266
+ - lib/matsuri/kubernetes/pod.rb
267
+ - lib/matsuri/kubernetes/replica_set.rb
268
+ - lib/matsuri/kubernetes/secret.rb
269
+ - lib/matsuri/kubernetes/service.rb
270
+ - lib/matsuri/kubernetes/stateful_set.rb
271
+ - lib/matsuri/kubernetes/storage_class.rb
272
+ - lib/matsuri/platform.rb
273
+ - lib/matsuri/presenter.rb
274
+ - lib/matsuri/presenters/helpers.rb
275
+ - lib/matsuri/presenters/prune_empty.rb
276
+ - lib/matsuri/presenters/seed_image.rb
277
+ - lib/matsuri/presenters/seed_replicas.rb
278
+ - lib/matsuri/presenters/seed_resources.rb
279
+ - lib/matsuri/registry.rb
280
+ - lib/matsuri/shell_out.rb
281
+ - lib/matsuri/stack.rb
282
+ - lib/matsuri/task.rb
283
+ - lib/matsuri/tasks/cluster.rb
284
+ - lib/matsuri/tasks/docker.rb
285
+ - lib/matsuri/tasks/hash_diff.rb
286
+ - lib/matsuri/tasks/kubectl.rb
287
+ - lib/matsuri/tasks/kubectl_ops.rb
288
+ - lib/matsuri/tasks/kubectl_ops/apply.rb
289
+ - lib/matsuri/tasks/kubectl_ops/create.rb
290
+ - lib/matsuri/tasks/kubectl_ops/delete.rb
291
+ - lib/matsuri/tasks/kubectl_ops/diff.rb
292
+ - lib/matsuri/tasks/kubectl_ops/get.rb
293
+ - lib/matsuri/tasks/kubectl_ops/recreate.rb
294
+ - lib/matsuri/tasks/kubectl_ops/replace.rb
295
+ - lib/matsuri/tasks/kubectl_ops/rollout_status.rb
296
+ - lib/matsuri/tasks/kubectl_ops/scale.rb
297
+ - lib/matsuri/tasks/kubectl_ops/server_side_apply.rb
298
+ - lib/matsuri/tasks/kubectl_ops/status.rb
299
+ - lib/matsuri/tasks/pod.rb
300
+ - lib/matsuri/tasks/stacks.rb
301
+ - lib/matsuri/tasks/stacks/seed.rb
302
+ - lib/matsuri/transform.rb
303
+ - lib/matsuri/transform/algebra.rb
304
+ - lib/matsuri/transform/callable.rb
305
+ - lib/matsuri/transform/combinators.rb
306
+ - lib/matsuri/transform/env.rb
307
+ - lib/matsuri/transform/kubernetes.rb
72
308
  - lib/matsuri/version.rb
73
309
  - matsuri.gemspec
74
- homepage: https://github.com/shopappsio/matsuri
310
+ - tests/bin/minikube-start.sh
311
+ - tests/bin/probe-save-config.sh
312
+ - tests/bin/probe-ssa.sh
313
+ - tests/example/.gitignore
314
+ - tests/example/Gemfile
315
+ - tests/example/README.md
316
+ - tests/example/bin/matsuri
317
+ - tests/example/config/initializer.rb
318
+ - tests/example/config/matsuri.rb
319
+ - tests/example/config/platform.rb
320
+ - tests/example/lib/acme.rb
321
+ - tests/example/lib/acme/nodes/dedicated.rb
322
+ - tests/example/lib/acme/nodes/preemptible.rb
323
+ - tests/example/lib/acme/nodes/required_cores.rb
324
+ - tests/example/lib/acme/nodes/resource_class.rb
325
+ - tests/example/lib/acme/pods/cacerts.rb
326
+ - tests/example/lib/acme/pods/healthcheck.rb
327
+ - tests/example/platform/config_maps/billing-settings.rb
328
+ - tests/example/platform/config_maps/cacerts.rb
329
+ - tests/example/platform/deployments/billing-web.rb
330
+ - tests/example/platform/deployments/checkout-web.rb
331
+ - tests/example/platform/namespaces/billing-dev.yaml
332
+ - tests/example/platform/namespaces/checkout-dev.yaml
333
+ - tests/example/platform/pods/billing.rb
334
+ - tests/example/platform/pods/checkout.rb
335
+ - tests/example/platform/services/billing-web.rb
336
+ - tests/example/platform/services/checkout-web.rb
337
+ - tests/example/platform/stacks/billing.rb
338
+ - tests/example/platform/stacks/checkout.rb
339
+ - tests/k8s/save-config/deployment-declared.yaml
340
+ - tests/k8s/save-config/deployment-seeded.yaml
341
+ - tests/k8s/save-config/namespace.yaml
342
+ - tests/k8s/ssa/declared-bumped.yaml
343
+ - tests/k8s/ssa/declared.yaml
344
+ - tests/k8s/ssa/namespace.yaml
345
+ - tests/k8s/ssa/seed-via-create.yaml
346
+ homepage: https://github.com/matsuri-rb/matsuri
75
347
  licenses: []
76
348
  metadata: {}
77
- post_install_message:
78
349
  rdoc_options: []
79
350
  require_paths:
80
351
  - lib
@@ -82,17 +353,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
82
353
  requirements:
83
354
  - - ">="
84
355
  - !ruby/object:Gem::Version
85
- version: '0'
356
+ version: '3.2'
86
357
  required_rubygems_version: !ruby/object:Gem::Requirement
87
358
  requirements:
88
359
  - - ">="
89
360
  - !ruby/object:Gem::Version
90
361
  version: '0'
91
362
  requirements: []
92
- rubyforge_project:
93
- rubygems_version: 2.4.5
94
- signing_key:
363
+ rubygems_version: 3.7.2
95
364
  specification_version: 4
96
365
  summary: Build a dev environment using Docker and Kubernetes
97
366
  test_files: []
98
- has_rdoc:
data/.travis.yml DELETED
@@ -1,4 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.2.2
4
- before_install: gem install bundler -v 1.10.6