kuby-sidekiq 0.3.0 → 0.4.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/CHANGELOG.md +3 -0
- data/Gemfile +1 -0
- data/README.md +75 -0
- data/Rakefile +1 -0
- data/kuby-sidekiq.gemspec +3 -2
- data/lib/kuby/sidekiq/plugin.rb +20 -42
- data/lib/kuby/sidekiq/version.rb +1 -1
- metadata +30 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a3d59d851bea4b84f5e198288cb2392b374a1a5bbd750cc669e771598bd0c828
|
4
|
+
data.tar.gz: 8360b03ccdb9e024cb92c3b2511d08349e4ffedabd4ef128cbfb947e61b091a4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 00d1ba24c781023e82453e345bc8fdb68a28cb138b9e7181ba80b5692b1964b8dd138e01b46d7d67e1b414f741380e78c7a9417f9da93e5a6352a8077112c91e
|
7
|
+
data.tar.gz: c001858e4d4b8a82c631482a990da8c3b3aa5eb8fdf89766f4e1e067406ae641512919be2f8f893519b0a9d49ed41e64f52e67d4b03b8c1bf334e3e18c56310c
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/README.md
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
**NOTE**: The documentation below refers to an unreleased version of kuby-sidekiq.
|
2
|
+
|
3
|
+
## kuby-sidekiq
|
4
|
+
|
5
|
+
Sidekiq plugin for [Kuby](https://github.com/getkuby/kuby-core).
|
6
|
+
|
7
|
+
## Intro
|
8
|
+
|
9
|
+
The Sidekiq plugin makes it easy to run a deployment of Sidekiq workers for your Rails app. Behind the scenes it uses [kuby-redis](https://github.com/getkuby/kuby-redis) to stand up an instance of Redis and Kubernetes deployments to start the desired number of workers.
|
10
|
+
|
11
|
+
## Configuration
|
12
|
+
|
13
|
+
Add the kuby-sidekiq and [sidekiq](https://github.com/mperham/sidekiq) gems to your Gemfile and run `bundle install`.
|
14
|
+
|
15
|
+
Require the plugin in your kuby.rb file and configure it, eg:
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
require 'kuby/sidekiq'
|
19
|
+
|
20
|
+
Kuby.define(:production) do
|
21
|
+
kubernetes do
|
22
|
+
|
23
|
+
add_plugin(:sidekiq) do
|
24
|
+
replicas 2 # run two workers
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
```
|
30
|
+
|
31
|
+
Next, run the setup command, eg:
|
32
|
+
|
33
|
+
```bash
|
34
|
+
bundle exec kuby -e production setup
|
35
|
+
```
|
36
|
+
|
37
|
+
## Connecting to Redis
|
38
|
+
|
39
|
+
Add a Sidekiq initializer to your Rails app and tell Sidekiq how to connect to Redis:
|
40
|
+
|
41
|
+
```ruby
|
42
|
+
# config/initializers/sidekiq.rb
|
43
|
+
|
44
|
+
if Rails.env.production?
|
45
|
+
require 'kuby'
|
46
|
+
|
47
|
+
Kuby.load!
|
48
|
+
|
49
|
+
Sidekiq.configure_server do |config|
|
50
|
+
config.redis = Kuby.environment.kubernetes.plugin(:sidekiq).connection_params
|
51
|
+
end
|
52
|
+
|
53
|
+
Sidekiq.configure_client do |config|
|
54
|
+
config.redis = Kuby.environment.kubernetes.plugin(:sidekiq).connection_params
|
55
|
+
end
|
56
|
+
end
|
57
|
+
```
|
58
|
+
|
59
|
+
### Build and Deploy
|
60
|
+
|
61
|
+
Now that Sidekiq has been installed and configured, build, push, and deploy your app the usual way, eg:
|
62
|
+
|
63
|
+
```bash
|
64
|
+
bundle exec kuby -e production build
|
65
|
+
bundle exec kuby -e production push
|
66
|
+
bundle exec kuby -e production deploy
|
67
|
+
```
|
68
|
+
|
69
|
+
## License
|
70
|
+
|
71
|
+
Licensed under the MIT license. See LICENSE for details.
|
72
|
+
|
73
|
+
## Authors
|
74
|
+
|
75
|
+
* Cameron C. Dutro: http://github.com/camertron
|
data/Rakefile
CHANGED
data/kuby-sidekiq.gemspec
CHANGED
@@ -12,8 +12,9 @@ Gem::Specification.new do |s|
|
|
12
12
|
|
13
13
|
s.platform = Gem::Platform::RUBY
|
14
14
|
|
15
|
-
s.add_dependency 'kuby-
|
16
|
-
s.add_dependency 'kube-dsl', '~> 0.
|
15
|
+
s.add_dependency 'kuby-core', '>= 0.16.0', '< 1.0'
|
16
|
+
s.add_dependency 'kube-dsl', '~> 0.7'
|
17
|
+
s.add_dependency 'kuby-redis', '~> 0.2'
|
17
18
|
|
18
19
|
s.require_path = 'lib'
|
19
20
|
s.files = Dir['{lib,spec}/**/*', 'Gemfile', 'LICENSE', 'CHANGELOG.md', 'README.md', 'Rakefile', 'kuby-sidekiq.gemspec']
|
data/lib/kuby/sidekiq/plugin.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'securerandom'
|
2
|
+
require 'kuby/redis'
|
2
3
|
|
3
4
|
module Kuby
|
4
5
|
module Sidekiq
|
@@ -7,26 +8,36 @@ module Kuby
|
|
7
8
|
|
8
9
|
ROLE = 'worker'.freeze
|
9
10
|
|
10
|
-
|
11
|
+
value_field :replicas, default: 1
|
11
12
|
|
12
|
-
def
|
13
|
-
|
13
|
+
def connection_params
|
14
|
+
redis_instance.connection_params
|
14
15
|
end
|
15
16
|
|
16
|
-
def
|
17
|
-
|
17
|
+
def configure(&block)
|
18
|
+
instance_eval(&block) if block
|
18
19
|
end
|
19
20
|
|
20
21
|
def after_configuration
|
22
|
+
environment.kubernetes.add_plugin(:redis) do
|
23
|
+
instance :sidekiq do
|
24
|
+
custom_config (custom_config || []).concat(['maxmemory-policy noeviction'])
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
21
28
|
return unless rails_app
|
22
29
|
|
23
30
|
deployment.spec.template.spec.container(:worker).merge!(
|
24
31
|
rails_app.deployment.spec.template.spec.container(:web), fields: [:env_from]
|
25
32
|
)
|
33
|
+
|
34
|
+
if rails_app.manage_database? && database = Kuby::Plugins::RailsApp::Database.get(rails_app)
|
35
|
+
database.plugin.configure_pod_spec(deployment.spec.template.spec)
|
36
|
+
end
|
26
37
|
end
|
27
38
|
|
28
39
|
def before_deploy(manifest)
|
29
|
-
image_with_tag = "#{docker.
|
40
|
+
image_with_tag = "#{docker.image.image_url}:#{kubernetes.tag || Kuby::Docker::LATEST_TAG}"
|
30
41
|
|
31
42
|
deployment do
|
32
43
|
spec do
|
@@ -44,8 +55,7 @@ module Kuby
|
|
44
55
|
def resources
|
45
56
|
@resources ||= [
|
46
57
|
service_account,
|
47
|
-
deployment
|
48
|
-
redis
|
58
|
+
deployment
|
49
59
|
]
|
50
60
|
end
|
51
61
|
|
@@ -131,40 +141,8 @@ module Kuby
|
|
131
141
|
@deployment
|
132
142
|
end
|
133
143
|
|
134
|
-
def
|
135
|
-
|
136
|
-
|
137
|
-
@redis ||= Kuby::KubeDB.redis do
|
138
|
-
api_version 'kubedb.com/v1alpha1'
|
139
|
-
|
140
|
-
metadata do
|
141
|
-
name "#{context.selector_app}-sidekiq-redis"
|
142
|
-
namespace context.kubernetes.namespace.metadata.name
|
143
|
-
end
|
144
|
-
|
145
|
-
spec do
|
146
|
-
version '5.0.3-v1'
|
147
|
-
storage_type 'Durable'
|
148
|
-
|
149
|
-
storage do
|
150
|
-
storage_class_name context.storage_class_name
|
151
|
-
access_modes ['ReadWriteOnce']
|
152
|
-
|
153
|
-
resources do
|
154
|
-
requests do
|
155
|
-
add :storage, '1Gi'
|
156
|
-
end
|
157
|
-
end
|
158
|
-
end
|
159
|
-
end
|
160
|
-
end
|
161
|
-
|
162
|
-
@redis.instance_eval(&block) if block
|
163
|
-
@redis
|
164
|
-
end
|
165
|
-
|
166
|
-
def storage_class_name
|
167
|
-
kubernetes.provider.storage_class_name
|
144
|
+
def redis_instance
|
145
|
+
kubernetes.plugin(:redis).instance(:sidekiq)
|
168
146
|
end
|
169
147
|
|
170
148
|
def kubernetes
|
data/lib/kuby/sidekiq/version.rb
CHANGED
metadata
CHANGED
@@ -1,43 +1,63 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kuby-sidekiq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cameron Dutro
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-05-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name: kuby-
|
14
|
+
name: kuby-core
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.16.0
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '1.0'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.16.0
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '1.0'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: kube-dsl
|
15
35
|
requirement: !ruby/object:Gem::Requirement
|
16
36
|
requirements:
|
17
37
|
- - "~>"
|
18
38
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
39
|
+
version: '0.7'
|
20
40
|
type: :runtime
|
21
41
|
prerelease: false
|
22
42
|
version_requirements: !ruby/object:Gem::Requirement
|
23
43
|
requirements:
|
24
44
|
- - "~>"
|
25
45
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0.
|
46
|
+
version: '0.7'
|
27
47
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
48
|
+
name: kuby-redis
|
29
49
|
requirement: !ruby/object:Gem::Requirement
|
30
50
|
requirements:
|
31
51
|
- - "~>"
|
32
52
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
53
|
+
version: '0.2'
|
34
54
|
type: :runtime
|
35
55
|
prerelease: false
|
36
56
|
version_requirements: !ruby/object:Gem::Requirement
|
37
57
|
requirements:
|
38
58
|
- - "~>"
|
39
59
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0.
|
60
|
+
version: '0.2'
|
41
61
|
description: Sidekiq plugin for Kuby.
|
42
62
|
email:
|
43
63
|
- camertron@gmail.com
|
@@ -48,6 +68,7 @@ files:
|
|
48
68
|
- CHANGELOG.md
|
49
69
|
- Gemfile
|
50
70
|
- LICENSE
|
71
|
+
- README.md
|
51
72
|
- Rakefile
|
52
73
|
- kuby-sidekiq.gemspec
|
53
74
|
- lib/kuby/sidekiq.rb
|
@@ -71,7 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
71
92
|
- !ruby/object:Gem::Version
|
72
93
|
version: '0'
|
73
94
|
requirements: []
|
74
|
-
rubygems_version: 3.
|
95
|
+
rubygems_version: 3.2.22
|
75
96
|
signing_key:
|
76
97
|
specification_version: 4
|
77
98
|
summary: Sidekiq plugin for Kuby.
|