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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 16ba8d64983f10c83431ce728402e36c40664b0ba89ff55f5c3677fc2291bcfe
4
- data.tar.gz: 158df48cc2d19408fe295fb745f561a8a93858cfec765fac3fdb6a06fe2cee8e
3
+ metadata.gz: a3d59d851bea4b84f5e198288cb2392b374a1a5bbd750cc669e771598bd0c828
4
+ data.tar.gz: 8360b03ccdb9e024cb92c3b2511d08349e4ffedabd4ef128cbfb947e61b091a4
5
5
  SHA512:
6
- metadata.gz: 26e27f3fc64531c064e70596d384e2d6279c63141ea0f7f1c481dbccbd144a8749927878bd1b11e64a19644e2144d02c974e2fd133981ac282b2a5bc9672f7ac
7
- data.tar.gz: 6b9f8ab50e6d994d7bbd2d8874ce1c84e7d21d41491e98017eac61d6f38b40cfef34331423b62b7bcc9027da82318aa09255c847c9cbcb286276ac64a463bfe7
6
+ metadata.gz: 00d1ba24c781023e82453e345bc8fdb68a28cb138b9e7181ba80b5692b1964b8dd138e01b46d7d67e1b414f741380e78c7a9417f9da93e5a6352a8077112c91e
7
+ data.tar.gz: c001858e4d4b8a82c631482a990da8c3b3aa5eb8fdf89766f4e1e067406ae641512919be2f8f893519b0a9d49ed41e64f52e67d4b03b8c1bf334e3e18c56310c
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## 0.4.0
2
+ * Use kuby-redis v0.2, which uses the Spotahome Redis operator instead of KubeDB.
3
+
1
4
  ## 0.3.0
2
5
  * Conform to new plugin architecture.
3
6
  * Accept `environment` instead of `definition` instances.
data/Gemfile CHANGED
@@ -6,6 +6,7 @@ gem 'kuby-core', path: '../kuby-core'
6
6
  gem 'sidekiq', '>= 6'
7
7
 
8
8
  group :development, :test do
9
+ gem 'sorbet-runtime'
9
10
  gem 'pry-byebug'
10
11
  gem 'rake'
11
12
  end
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
@@ -2,6 +2,7 @@ require 'bundler'
2
2
  require 'rspec/core/rake_task'
3
3
  require 'rubygems/package_task'
4
4
 
5
+ require 'sorbet-runtime'
5
6
  require 'kuby/sidekiq'
6
7
 
7
8
  Bundler::GemHelper.install_tasks
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-kube-db', '~> 0.4'
16
- s.add_dependency 'kube-dsl', '~> 0.3'
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']
@@ -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
- value_fields :replicas
11
+ value_field :replicas, default: 1
11
12
 
12
- def url
13
- @url ||= "redis://#{redis.metadata.name}:6379/0"
13
+ def connection_params
14
+ redis_instance.connection_params
14
15
  end
15
16
 
16
- def after_initialize
17
- @replicas = 1
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.metadata.image_url}:#{kubernetes.tag}"
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 redis(&block)
135
- context = self
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
@@ -1,5 +1,5 @@
1
1
  module Kuby
2
2
  module Sidekiq
3
- VERSION = '0.3.0'
3
+ VERSION = '0.4.0'
4
4
  end
5
5
  end
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.3.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: 2020-08-30 00:00:00.000000000 Z
11
+ date: 2022-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: kuby-kube-db
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.4'
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.4'
46
+ version: '0.7'
27
47
  - !ruby/object:Gem::Dependency
28
- name: kube-dsl
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.3'
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.3'
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.1.4
95
+ rubygems_version: 3.2.22
75
96
  signing_key:
76
97
  specification_version: 4
77
98
  summary: Sidekiq plugin for Kuby.