kuby-redis 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile +4 -1
- data/README.md +37 -32
- data/Rakefile +158 -0
- data/kuby-redis.gemspec +3 -2
- data/lib/kuby/redis/dsl/databases/v1/redis_failover.rb +34 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_list.rb +34 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec.rb +39 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_auth.rb +27 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_bootstrap_node.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis.rb +90 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_node_affinity.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_node_affinity_preferred_during_scheduling_ignored_dur_2699b98c.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_node_affinity_preferred_during_scheduling_ignored_dur_57a88803.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_node_affinity_preferred_during_scheduling_ignored_dur_669412ec.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_node_affinity_preferred_during_scheduling_ignored_dur_f45e68a1.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_node_affinity_required_during_scheduling_ignored_duri_514c9d0d.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_node_affinity_required_during_scheduling_ignored_duri_7f2feab2.rb +27 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_node_affinity_required_during_scheduling_ignored_duri_cf734467.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_node_affinity_required_during_scheduling_ignored_duri_d0fbeba3.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_pod_affinity.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_pod_affinity_preferred_during_scheduling_ignored_duri_0aa6c4f1.rb +36 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_pod_affinity_preferred_during_scheduling_ignored_duri_39d7e0e9.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_pod_affinity_preferred_during_scheduling_ignored_duri_3f891b9d.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_pod_affinity_preferred_during_scheduling_ignored_duri_72161698.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_pod_affinity_preferred_during_scheduling_ignored_duri_b9e599ce.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_pod_affinity_preferred_during_scheduling_ignored_duri_d3b686c5.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_pod_affinity_required_during_scheduling_ignored_durin_14cc16d9.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_pod_affinity_required_during_scheduling_ignored_durin_5626284b.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_pod_affinity_required_during_scheduling_ignored_durin_a83e115a.rb +36 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_pod_affinity_required_during_scheduling_ignored_durin_a9c63682.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_pod_affinity_required_during_scheduling_ignored_durin_d9b1f08a.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_pod_anti_affinity.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_pod_anti_affinity_preferred_during_scheduling_ignored_1c7b7986.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_pod_anti_affinity_preferred_during_scheduling_ignored_4a682c1c.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_pod_anti_affinity_preferred_during_scheduling_ignored_4a99f849.rb +36 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_pod_anti_affinity_preferred_during_scheduling_ignored_9559ef01.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_pod_anti_affinity_preferred_during_scheduling_ignored_a79bf5f3.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_pod_anti_affinity_preferred_during_scheduling_ignored_fb54ab7a.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_pod_anti_affinity_required_during_scheduling_ignored__203ed839.rb +36 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_pod_anti_affinity_required_during_scheduling_ignored__3f37a05b.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_pod_anti_affinity_required_during_scheduling_ignored__5b67fae1.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_pod_anti_affinity_required_during_scheduling_ignored__86b357eb.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_affinity_pod_anti_affinity_required_during_scheduling_ignored__e2fb95e3.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_custom_command_renames.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_exporter.rb +39 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_exporter_env.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_exporter_env_value_from.rb +36 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_exporter_env_value_from_config_map_key_ref.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_exporter_env_value_from_field_ref.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_exporter_env_value_from_resource_field_ref.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_exporter_env_value_from_secret_key_ref.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_image_pull_secrets.rb +27 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_resources.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_security_context.rb +54 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_security_context_se_linux_options.rb +36 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_security_context_seccomp_profile.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_security_context_sysctls.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_security_context_windows_options.rb +36 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_storage.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_storage_empty_dir.rb +27 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_storage_persistent_volume_claim.rb +39 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_storage_persistent_volume_claim_metadata.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_storage_persistent_volume_claim_spec.rb +48 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_storage_persistent_volume_claim_spec_data_source.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_storage_persistent_volume_claim_spec_data_source_ref.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_storage_persistent_volume_claim_spec_resources.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_storage_persistent_volume_claim_spec_selector.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_storage_persistent_volume_claim_spec_selector_match_expressions.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_storage_persistent_volume_claim_status.rb +36 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_storage_persistent_volume_claim_status_conditions.rb +42 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_redis_tolerations.rb +39 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel.rb +78 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_node_affinity.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_node_affinity_preferred_during_scheduling_ignored__0d41d4f8.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_node_affinity_preferred_during_scheduling_ignored__97efa5a4.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_node_affinity_preferred_during_scheduling_ignored__bdaec101.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_node_affinity_preferred_during_scheduling_ignored__f0775874.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_node_affinity_required_during_scheduling_ignored_d_2895d62e.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_node_affinity_required_during_scheduling_ignored_d_2b5753ed.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_node_affinity_required_during_scheduling_ignored_d_41e3b807.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_node_affinity_required_during_scheduling_ignored_d_67aa2728.rb +27 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_pod_affinity.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_pod_affinity_preferred_during_scheduling_ignored_d_0aac483c.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_pod_affinity_preferred_during_scheduling_ignored_d_1422bcc7.rb +36 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_pod_affinity_preferred_during_scheduling_ignored_d_4adcb8e9.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_pod_affinity_preferred_during_scheduling_ignored_d_4ea60ad7.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_pod_affinity_preferred_during_scheduling_ignored_d_78d72154.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_pod_affinity_preferred_during_scheduling_ignored_d_b6dc802c.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_pod_affinity_required_during_scheduling_ignored_du_27358e83.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_pod_affinity_required_during_scheduling_ignored_du_3ed2dfac.rb +36 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_pod_affinity_required_during_scheduling_ignored_du_60665747.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_pod_affinity_required_during_scheduling_ignored_du_b8662dab.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_pod_affinity_required_during_scheduling_ignored_du_c7cd5719.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_pod_anti_affinity.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_pod_anti_affinity_preferred_during_scheduling_igno_13d0762f.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_pod_anti_affinity_preferred_during_scheduling_igno_2a2acc24.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_pod_anti_affinity_preferred_during_scheduling_igno_38a65fc5.rb +36 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_pod_anti_affinity_preferred_during_scheduling_igno_50d3e927.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_pod_anti_affinity_preferred_during_scheduling_igno_74a32220.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_pod_anti_affinity_preferred_during_scheduling_igno_f8cf26c5.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_pod_anti_affinity_required_during_scheduling_ignor_02f9c7b7.rb +36 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_pod_anti_affinity_required_during_scheduling_ignor_8222d6bf.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_pod_anti_affinity_required_during_scheduling_ignor_8384f426.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_pod_anti_affinity_required_during_scheduling_ignor_8cb6cb26.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_affinity_pod_anti_affinity_required_during_scheduling_ignor_95a14c65.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_exporter.rb +39 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_exporter_env.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_exporter_env_value_from.rb +36 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_exporter_env_value_from_config_map_key_ref.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_exporter_env_value_from_field_ref.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_exporter_env_value_from_resource_field_ref.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_exporter_env_value_from_secret_key_ref.rb +33 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_image_pull_secrets.rb +27 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_resources.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_security_context.rb +54 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_security_context_se_linux_options.rb +36 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_security_context_seccomp_profile.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_security_context_sysctls.rb +30 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_security_context_windows_options.rb +36 -0
- data/lib/kuby/redis/dsl/databases/v1/redis_failover_spec_sentinel_tolerations.rb +39 -0
- data/lib/kuby/redis/dsl/databases/v1.rb +120 -0
- data/lib/kuby/redis/dsl/databases.rb +3 -0
- data/lib/kuby/redis/dsl.rb +3 -0
- data/lib/kuby/redis/entrypoint.rb +15 -0
- data/lib/kuby/redis/instance.rb +73 -27
- data/lib/kuby/redis/plugin.rb +84 -0
- data/lib/kuby/redis/version.rb +1 -1
- data/lib/kuby/redis.rb +4 -0
- metadata +151 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 69bffb46215d12382fd38781fd0b53d6ec8c73db4e8e94902fc46d844d72dc7f
|
4
|
+
data.tar.gz: 322bcccaec7830bbddaa8ce829f64682c83ec16ebc2b0db5898f8dcd630cb732
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e4857e14a64a878411e27f72d268303e38282e31a71bfe221362f96db9f75c5b7a85eb43e8088690b09aee09237955b0f477b7c28dc2fb533ed23644f723b656
|
7
|
+
data.tar.gz: 37ea5f91b73bd1ce226e78508141e6c097eaf7dc317d21e1c1db340f2169846f37df0ed1cfa5236bef9afaf10248d6c8dab5bc7cfac690efd4c3fc97b67a9b42
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
@@ -3,9 +3,12 @@ source 'https://rubygems.org'
|
|
3
3
|
gemspec
|
4
4
|
|
5
5
|
gem 'kuby-core', path: '../kuby-core'
|
6
|
-
gem 'kube-dsl', path: '../kube-dsl'
|
7
6
|
|
8
7
|
group :development, :test do
|
8
|
+
gem 'sorbet'
|
9
|
+
gem 'sorbet-runtime'
|
10
|
+
gem 'tapioca', '~> 0.7'
|
11
|
+
gem 'parlour', github: 'camertron/parlour', branch: 'initialize_void'
|
9
12
|
gem 'pry-byebug'
|
10
13
|
gem 'rake'
|
11
14
|
end
|
data/README.md
CHANGED
@@ -1,14 +1,22 @@
|
|
1
|
+
**NOTE**: The documentation below refers to an unreleased version of kuby-redis. Please [click here](https://github.com/getkuby/kuby-redis/blob/v0.1.0/README.md) for the documentation for the currently released version.
|
2
|
+
|
1
3
|
## kuby-redis
|
2
4
|
|
3
|
-
Redis plugin for [Kuby](https://github.com/getkuby/kuby-core).
|
5
|
+
Redis plugin for [Kuby](https://github.com/getkuby/kuby-core). If you're looking for an easy way to add Sidekiq to your app, check out [kuby-sidekiq](https://github.com/getkuby/kuby-sidekiq).
|
4
6
|
|
5
7
|
## Intro
|
6
8
|
|
7
|
-
The redis plugin provides the ability to stand up arbitrary redis instances. Behind the scenes it uses the excellent [
|
9
|
+
The redis plugin provides the ability to stand up arbitrary redis instances. Behind the scenes it uses the excellent [Spotahome Redis operator](https://github.com/spotahome/redis-operator).
|
8
10
|
|
9
11
|
## Configuration
|
10
12
|
|
11
|
-
Add the kuby-redis gem to your Gemfile
|
13
|
+
Add the kuby-redis gem to your Gemfile and run the setup command, eg:
|
14
|
+
|
15
|
+
```bash
|
16
|
+
bundle exec kuby -e production setup
|
17
|
+
```
|
18
|
+
|
19
|
+
Add a Redis instance like this:
|
12
20
|
|
13
21
|
```ruby
|
14
22
|
require 'kuby/redis'
|
@@ -24,13 +32,20 @@ Kuby.define(:production) do
|
|
24
32
|
end
|
25
33
|
```
|
26
34
|
|
27
|
-
The kuby-redis plugin
|
35
|
+
The kuby-redis plugin supports a number of additional configuration options:
|
28
36
|
|
37
|
+
* `cpu_request`, (default: `'100m'`). The number of CPU units to request from Kubernetes. 1 CPU core = 1000 units.
|
38
|
+
* `memory_request`, (default: `'100Mi'`). The amount of memory to request from Kubernetes.
|
39
|
+
* `cpu_limit`, (default: `'400m'`). A limit on the number of CPU units the Redis instance may consume. 1 CPU core = 1000 units.
|
40
|
+
* `memory_limit`, (default: `'500Mi'`). A limit on the amount of memory the Redis instance may consume.
|
41
|
+
* `sentinel_replicas` (default: `1`). The number of [Redis sentinels](https://redis.io/docs/manual/sentinel/) to run.
|
42
|
+
* `redis_replicas` (default: `1`). The number of replicated Redis servers to run. For a highly-available configuration, set this option to a value >= 3.
|
43
|
+
* `storage_access_modes`, (default: `['ReadWriteOnce']`). An array of Kubernetes [storage access modes](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes) for the persistent volume that the Redis instance will use to persist data.
|
44
|
+
* `storage`, (default: `'1Gi'`). The amount of persistent storage to request. Note that this is not a Redis memory limit, but rather a request for an amount of persistent (i.e. disk-based) storage Redis will write to. Persistent storage is necessary to prevent data loss if/when an individual Redis instance fails.
|
29
45
|
|
30
|
-
|
31
|
-
value_field :storage, default: '1Gi'
|
32
|
-
value_field :access_modes, default: ['ReadWriteOnce']
|
46
|
+
**NOTE**: All memory amounts must be strings parseable by Go's [go-units module](https://pkg.go.dev/github.com/docker/go-units#example-FromHumanSize). Valid examples include '100Mi' (100 megabytes) and '2Gi' (2 gigabytes).
|
33
47
|
|
48
|
+
Example:
|
34
49
|
|
35
50
|
```ruby
|
36
51
|
Kuby.define(:production) do
|
@@ -38,15 +53,12 @@ Kuby.define(:production) do
|
|
38
53
|
|
39
54
|
add_plugin(:redis) do
|
40
55
|
instance(:my_rails_cache) do
|
41
|
-
#
|
42
|
-
|
43
|
-
|
44
|
-
# set the port redis listens on and that you'll
|
45
|
-
# use to connect to the instance
|
46
|
-
port 6379 # this is the default port
|
56
|
+
# Launch three redis replicas (this is the recommended configuration
|
57
|
+
# for high availability).
|
58
|
+
redis_replicas 3
|
47
59
|
|
48
|
-
#
|
49
|
-
storage '
|
60
|
+
# The amount of persistent storage to request.
|
61
|
+
storage '5Gi'
|
50
62
|
end
|
51
63
|
end
|
52
64
|
|
@@ -54,47 +66,40 @@ Kuby.define(:production) do
|
|
54
66
|
end
|
55
67
|
```
|
56
68
|
|
57
|
-
Get a list of the redis versions your cluster supports by running:
|
58
|
-
|
59
|
-
```bash
|
60
|
-
bundle exec kuby -e production kubectl -- get redisversions
|
61
|
-
```
|
62
|
-
|
63
69
|
## Usage
|
64
70
|
|
65
|
-
Redis instances defined in your Kuby config respond to `#
|
71
|
+
Redis instances defined in your Kuby config respond to the `#service_name`, `#service_port`, and `#connection_params` methods to facilitate connecting to them from your Rails app. One caveat is that clients must be [sentinel-aware](https://redis.io/docs/reference/sentinel-clients/), but for the most part users won't have to worry about this since the redis-rb gem [supports sentinel configurations](https://github.com/redis/redis-rb#sentinel-support).
|
66
72
|
|
67
73
|
### Rails Cache
|
68
74
|
|
69
75
|
In your Rails config (eg. config/environments/production.rb), point your cache store at your redis instance like so:
|
70
76
|
|
71
|
-
|
72
77
|
```ruby
|
78
|
+
# make sure Kuby config is loaded
|
73
79
|
Kuby.load!
|
74
80
|
|
75
|
-
|
81
|
+
redis_instance = Kuby.environment.kubernetes
|
76
82
|
.plugin(:redis)
|
77
83
|
.instance(:my_rails_cache)
|
78
|
-
.url
|
79
84
|
|
80
|
-
config.cache_store = :redis_cache_store,
|
85
|
+
config.cache_store = :redis_cache_store, redis_instance.connection_params
|
81
86
|
```
|
82
87
|
|
83
88
|
### Redis Gem
|
84
89
|
|
85
|
-
You can also use
|
90
|
+
You can also use the [redis-rb gem](https://github.com/redis/redis-rb) directly:
|
86
91
|
|
87
92
|
```ruby
|
93
|
+
# make sure Kuby config is loaded
|
94
|
+
Kuby.load!
|
95
|
+
|
88
96
|
require 'redis'
|
89
97
|
|
90
|
-
|
98
|
+
redis_instance = Kuby.environment.kubernetes
|
91
99
|
.plugin(:redis)
|
92
100
|
.instance(:my_rails_cache)
|
93
|
-
.url
|
94
101
|
|
95
|
-
redis = Redis.new(
|
96
|
-
redis.set('abc', 123)
|
97
|
-
value = redis.get('abc')
|
102
|
+
redis = Redis.new(**redis_instance.connection_params)
|
98
103
|
```
|
99
104
|
|
100
105
|
## License
|
data/Rakefile
CHANGED
@@ -2,6 +2,8 @@ require 'bundler'
|
|
2
2
|
require 'rspec/core/rake_task'
|
3
3
|
require 'rubygems/package_task'
|
4
4
|
|
5
|
+
require 'pry-byebug'
|
6
|
+
require 'sorbet-runtime'
|
5
7
|
require 'kuby/redis'
|
6
8
|
|
7
9
|
Bundler::GemHelper.install_tasks
|
@@ -12,3 +14,159 @@ desc 'Run specs'
|
|
12
14
|
RSpec::Core::RakeTask.new do |t|
|
13
15
|
t.pattern = './spec/**/*_spec.rb'
|
14
16
|
end
|
17
|
+
|
18
|
+
task generate: [:schemagen, :codegen]
|
19
|
+
|
20
|
+
task :schemagen do
|
21
|
+
require 'base64'
|
22
|
+
require 'json'
|
23
|
+
require 'kind-rb'
|
24
|
+
require 'net/http'
|
25
|
+
require 'uri'
|
26
|
+
require 'yaml'
|
27
|
+
require 'helm-cli'
|
28
|
+
|
29
|
+
# delete first just in case
|
30
|
+
system("#{KindRb.executable} delete cluster --name kuby-redis")
|
31
|
+
system("#{KindRb.executable} create cluster --name kuby-redis")
|
32
|
+
|
33
|
+
kubeconfig = `#{KindRb.executable} get kubeconfig --name kuby-redis`
|
34
|
+
File.write('.kubeconfig', kubeconfig)
|
35
|
+
|
36
|
+
helm = HelmCLI.new('.kubeconfig')
|
37
|
+
helm.add_repo('redis-operator', 'https://spotahome.github.io/redis-operator')
|
38
|
+
helm.update_repos
|
39
|
+
|
40
|
+
unless helm.release_exists?('redis-operator')
|
41
|
+
helm.install_chart('redis-operator/redis-operator', release: 'redis-operator', version: '3.1.4')
|
42
|
+
end
|
43
|
+
|
44
|
+
cluster_name = 'kind-kuby-redis'
|
45
|
+
kubeconfig = YAML.load(kubeconfig)
|
46
|
+
cluster = kubeconfig['clusters'].find { |cluster| cluster['name'] == cluster_name }
|
47
|
+
ca_cert_data = Base64.decode64(cluster.dig(*%w(cluster certificate-authority-data)))
|
48
|
+
|
49
|
+
cert_store = OpenSSL::X509::Store.new
|
50
|
+
cert_store.add_cert(OpenSSL::X509::Certificate.new(ca_cert_data))
|
51
|
+
server = URI.parse(cluster.dig(*%w(cluster server)))
|
52
|
+
|
53
|
+
http = Net::HTTP.new(server.host, server.port).tap do |http|
|
54
|
+
http.use_ssl = true
|
55
|
+
http.cert_store = cert_store
|
56
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
57
|
+
end
|
58
|
+
|
59
|
+
token = nil
|
60
|
+
STDOUT.write("Getting API token from cluster...")
|
61
|
+
|
62
|
+
loop do
|
63
|
+
secrets = JSON.parse(`kubectl --context #{cluster_name} get secrets -o json`)
|
64
|
+
secret = secrets['items'].find do |secret|
|
65
|
+
secret.dig(*%w(metadata annotations kubernetes.io/service-account.name)) == 'default'
|
66
|
+
end
|
67
|
+
|
68
|
+
if secret
|
69
|
+
token = Base64.decode64(secret.dig(*%w(data token)))
|
70
|
+
puts ' done'
|
71
|
+
break
|
72
|
+
else
|
73
|
+
STDOUT.write('.')
|
74
|
+
sleep 1
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
get = Net::HTTP::Get.new('/openapi/v2')
|
79
|
+
get['Authorization'] = "Bearer #{token}"
|
80
|
+
|
81
|
+
crds = []
|
82
|
+
schema = nil
|
83
|
+
STDOUT.write("Requesting OpenAPI v2 schema from cluster...")
|
84
|
+
|
85
|
+
loop do
|
86
|
+
response = http.request(get)
|
87
|
+
schema = JSON.parse(response.body)
|
88
|
+
|
89
|
+
crds = schema['definitions'].each_with_object({}) do |(id, data), memo|
|
90
|
+
memo[id] = data if id.start_with?('com.spotahome')
|
91
|
+
end
|
92
|
+
|
93
|
+
if crds.empty?
|
94
|
+
STDOUT.write('.')
|
95
|
+
sleep 1
|
96
|
+
else
|
97
|
+
puts ' done'
|
98
|
+
break
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
FileUtils.rm_rf('vendor')
|
103
|
+
FileUtils.mkdir('vendor')
|
104
|
+
|
105
|
+
schema = schema.merge('definitions' => crds)
|
106
|
+
File.write(File.join('vendor', 'open_api.json'), schema.to_json)
|
107
|
+
|
108
|
+
puts 'Pulling openapi2jsonschema Docker image'
|
109
|
+
system('docker pull garethr/openapi2jsonschema')
|
110
|
+
|
111
|
+
puts 'Converting OpenAPI format to JSON schema format'
|
112
|
+
system(<<~END)
|
113
|
+
docker run --rm \
|
114
|
+
-v #{File.expand_path('vendor')}:/usr/local/scratch \
|
115
|
+
garethr/openapi2jsonschema \
|
116
|
+
--kubernetes --output /usr/local/scratch/json_schema /usr/local/scratch/open_api.json
|
117
|
+
END
|
118
|
+
|
119
|
+
puts "Cleaning up"
|
120
|
+
system("#{KindRb.executable} delete cluster --name kuby-redis")
|
121
|
+
File.unlink('.kubeconfig')
|
122
|
+
end
|
123
|
+
|
124
|
+
task :codegen do
|
125
|
+
require 'dry/inflector'
|
126
|
+
require 'fileutils'
|
127
|
+
|
128
|
+
# delete anything that should be re-generated
|
129
|
+
FileUtils.rm_rf('./lib/kuby/redis/dsl.rb')
|
130
|
+
FileUtils.rm_rf('./lib/kuby/redis/dsl')
|
131
|
+
FileUtils.rm_rf('./lib/kuby/redis/entrypoint.rb')
|
132
|
+
FileUtils.rm_rf('./sorbet/rbi/kuby/redis')
|
133
|
+
FileUtils.mkdir_p('./lib/kuby/redis/dsl')
|
134
|
+
|
135
|
+
local_json_schema_path = 'vendor/json_schema'
|
136
|
+
|
137
|
+
generator = KubeDSL::Generator.new(
|
138
|
+
schema_dir: local_json_schema_path,
|
139
|
+
output_dir: File.join('lib'),
|
140
|
+
autoload_prefix: File.join('kuby', 'redis', 'dsl'),
|
141
|
+
dsl_namespace: ['Kuby', 'Redis', 'DSL'],
|
142
|
+
entrypoint_namespace: ['Kuby', 'Redis'],
|
143
|
+
inflector: Dry::Inflector.new do |inflections|
|
144
|
+
inflections.acronym('DSL')
|
145
|
+
end
|
146
|
+
)
|
147
|
+
|
148
|
+
generator.builder.register_resolver('io.k8s') do |ref_str, builder|
|
149
|
+
external_ref = ::KubeDSL::ExternalRef.new(
|
150
|
+
ref_str,
|
151
|
+
['KubeDSL', 'DSL'],
|
152
|
+
builder.inflector,
|
153
|
+
builder.schema_dir,
|
154
|
+
builder.autoload_prefix,
|
155
|
+
builder.serialize_handlers
|
156
|
+
)
|
157
|
+
|
158
|
+
ns = external_ref.ruby_namespace + [external_ref.kind]
|
159
|
+
exists = ns.inject(Object) { |mod, n| mod.const_get(n, false) } rescue false
|
160
|
+
exists ? external_ref : builder.parse_ref(ref_str)
|
161
|
+
end
|
162
|
+
|
163
|
+
generator.generate_resource_files
|
164
|
+
generator.generate_autoload_files
|
165
|
+
generator.generate_entrypoint_file do |resource, ns|
|
166
|
+
# only generate entrypoint methods for resources defined at the top-level, i.e.
|
167
|
+
# not resources defined inside other resources
|
168
|
+
!resource.ref.inline?
|
169
|
+
end
|
170
|
+
|
171
|
+
FileUtils.rm_rf(File.join('lib', 'kuby.rb'))
|
172
|
+
end
|
data/kuby-redis.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 'helm-cli', '~> 0.3'
|
17
18
|
|
18
19
|
s.require_path = 'lib'
|
19
20
|
s.files = Dir['{lib,spec}/**/*', 'Gemfile', 'LICENSE', 'CHANGELOG.md', 'README.md', 'Rakefile', 'kuby-redis.gemspec']
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# typed: true
|
2
|
+
|
3
|
+
module Kuby
|
4
|
+
module Redis
|
5
|
+
module DSL
|
6
|
+
module Databases
|
7
|
+
module V1
|
8
|
+
class RedisFailover < ::KubeDSL::DSLObject
|
9
|
+
object_field(:spec) { Kuby::Redis::DSL::Databases::V1::RedisFailoverSpec.new }
|
10
|
+
value_field :api_version
|
11
|
+
object_field(:metadata) { KubeDSL::DSL::Meta::V1::ObjectMeta.new }
|
12
|
+
|
13
|
+
validates :spec, object: { kind_of: Kuby::Redis::DSL::Databases::V1::RedisFailoverSpec }
|
14
|
+
validates :api_version, field: { format: :string }, presence: false
|
15
|
+
validates :metadata, object: { kind_of: KubeDSL::DSL::Meta::V1::ObjectMeta }
|
16
|
+
|
17
|
+
def serialize
|
18
|
+
{}.tap do |result|
|
19
|
+
result[:kind] = "RedisFailover"
|
20
|
+
result[:spec] = spec.serialize
|
21
|
+
result[:apiVersion] = api_version
|
22
|
+
result[:metadata] = metadata.serialize
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def kind_sym
|
27
|
+
:redis_failover
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# typed: true
|
2
|
+
|
3
|
+
module Kuby
|
4
|
+
module Redis
|
5
|
+
module DSL
|
6
|
+
module Databases
|
7
|
+
module V1
|
8
|
+
class RedisFailoverList < ::KubeDSL::DSLObject
|
9
|
+
array_field(:item) { Kuby::Redis::DSL::Databases::V1::RedisFailover.new }
|
10
|
+
value_field :api_version
|
11
|
+
object_field(:metadata) { KubeDSL::DSL::Meta::V1::ListMeta.new }
|
12
|
+
|
13
|
+
validates :items, array: { kind_of: Kuby::Redis::DSL::Databases::V1::RedisFailover }, presence: false
|
14
|
+
validates :api_version, field: { format: :string }, presence: false
|
15
|
+
validates :metadata, object: { kind_of: KubeDSL::DSL::Meta::V1::ListMeta }
|
16
|
+
|
17
|
+
def serialize
|
18
|
+
{}.tap do |result|
|
19
|
+
result[:items] = items.map(&:serialize)
|
20
|
+
result[:kind] = "RedisFailoverList"
|
21
|
+
result[:apiVersion] = api_version
|
22
|
+
result[:metadata] = metadata.serialize
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def kind_sym
|
27
|
+
:redis_failover_list
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# typed: true
|
2
|
+
|
3
|
+
module Kuby
|
4
|
+
module Redis
|
5
|
+
module DSL
|
6
|
+
module Databases
|
7
|
+
module V1
|
8
|
+
class RedisFailoverSpec < ::KubeDSL::DSLObject
|
9
|
+
object_field(:sentinel) { Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecSentinel.new }
|
10
|
+
object_field(:bootstrap_node) { Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecBootstrapNode.new }
|
11
|
+
object_field(:redis) { Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedis.new }
|
12
|
+
object_field(:auth) { Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecAuth.new }
|
13
|
+
value_field :label_whitelist
|
14
|
+
|
15
|
+
validates :sentinel, object: { kind_of: Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecSentinel }
|
16
|
+
validates :bootstrap_node, object: { kind_of: Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecBootstrapNode }
|
17
|
+
validates :redis, object: { kind_of: Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedis }
|
18
|
+
validates :auth, object: { kind_of: Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecAuth }
|
19
|
+
validates :label_whitelist, field: { format: :string }, presence: false
|
20
|
+
|
21
|
+
def serialize
|
22
|
+
{}.tap do |result|
|
23
|
+
result[:sentinel] = sentinel.serialize
|
24
|
+
result[:bootstrapNode] = bootstrap_node.serialize
|
25
|
+
result[:redis] = redis.serialize
|
26
|
+
result[:auth] = auth.serialize
|
27
|
+
result[:labelWhitelist] = label_whitelist
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def kind_sym
|
32
|
+
:redis_failover_spec
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# typed: true
|
2
|
+
|
3
|
+
module Kuby
|
4
|
+
module Redis
|
5
|
+
module DSL
|
6
|
+
module Databases
|
7
|
+
module V1
|
8
|
+
class RedisFailoverSpecAuth < ::KubeDSL::DSLObject
|
9
|
+
value_field :secret_path
|
10
|
+
|
11
|
+
validates :secret_path, field: { format: :string }, presence: false
|
12
|
+
|
13
|
+
def serialize
|
14
|
+
{}.tap do |result|
|
15
|
+
result[:secretPath] = secret_path
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def kind_sym
|
20
|
+
:redis_failover_spec_auth
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# typed: true
|
2
|
+
|
3
|
+
module Kuby
|
4
|
+
module Redis
|
5
|
+
module DSL
|
6
|
+
module Databases
|
7
|
+
module V1
|
8
|
+
class RedisFailoverSpecBootstrapNode < ::KubeDSL::DSLObject
|
9
|
+
value_field :host
|
10
|
+
value_field :allow_sentinels
|
11
|
+
value_field :port
|
12
|
+
|
13
|
+
validates :host, field: { format: :string }, presence: false
|
14
|
+
validates :allow_sentinels, field: { format: :boolean }, presence: true
|
15
|
+
validates :port, field: { format: :string }, presence: false
|
16
|
+
|
17
|
+
def serialize
|
18
|
+
{}.tap do |result|
|
19
|
+
result[:host] = host
|
20
|
+
result[:allowSentinels] = allow_sentinels
|
21
|
+
result[:port] = port
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def kind_sym
|
26
|
+
:redis_failover_spec_bootstrap_node
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# typed: true
|
2
|
+
|
3
|
+
module Kuby
|
4
|
+
module Redis
|
5
|
+
module DSL
|
6
|
+
module Databases
|
7
|
+
module V1
|
8
|
+
class RedisFailoverSpecRedis < ::KubeDSL::DSLObject
|
9
|
+
value_field :dns_policy
|
10
|
+
key_value_field(:pod_annotations, format: :string)
|
11
|
+
value_field :image
|
12
|
+
value_field :host_network
|
13
|
+
object_field(:exporter) { Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisExporter.new }
|
14
|
+
key_value_field(:node_selector, format: :string)
|
15
|
+
value_field :priority_class_name
|
16
|
+
object_field(:security_context) { Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisSecurityContext.new }
|
17
|
+
object_field(:storage) { Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisStorage.new }
|
18
|
+
array_field(:custom_command_rename) { Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisCustomCommandRenames.new }
|
19
|
+
value_field :custom_config
|
20
|
+
object_field(:affinity) { Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisAffinity.new }
|
21
|
+
array_field(:toleration) { Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisTolerations.new }
|
22
|
+
object_field(:resources) { Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisResources.new }
|
23
|
+
value_field :shutdown_config_map
|
24
|
+
value_field :termination_grace_period
|
25
|
+
value_field :service_account_name
|
26
|
+
value_field :replicas
|
27
|
+
key_value_field(:service_annotations, format: :string)
|
28
|
+
value_field :command
|
29
|
+
value_field :image_pull_policy
|
30
|
+
array_field(:image_pull_secret) { Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisImagePullSecrets.new }
|
31
|
+
|
32
|
+
validates :dns_policy, field: { format: :string }, presence: false
|
33
|
+
validates :pod_annotations, kv: { value_format: :string }, presence: true
|
34
|
+
validates :image, field: { format: :string }, presence: false
|
35
|
+
validates :host_network, field: { format: :boolean }, presence: true
|
36
|
+
validates :exporter, object: { kind_of: Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisExporter }
|
37
|
+
validates :node_selector, kv: { value_format: :string }, presence: true
|
38
|
+
validates :priority_class_name, field: { format: :string }, presence: false
|
39
|
+
validates :security_context, object: { kind_of: Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisSecurityContext }
|
40
|
+
validates :storage, object: { kind_of: Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisStorage }
|
41
|
+
validates :custom_command_renames, array: { kind_of: Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisCustomCommandRenames }, presence: false
|
42
|
+
validates :custom_config, field: { format: :string }, presence: false
|
43
|
+
validates :affinity, object: { kind_of: Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisAffinity }
|
44
|
+
validates :tolerations, array: { kind_of: Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisTolerations }, presence: false
|
45
|
+
validates :resources, object: { kind_of: Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisResources }
|
46
|
+
validates :shutdown_config_map, field: { format: :string }, presence: false
|
47
|
+
validates :termination_grace_period, field: { format: :integer }, presence: true
|
48
|
+
validates :service_account_name, field: { format: :string }, presence: false
|
49
|
+
validates :replicas, field: { format: :integer }, presence: true
|
50
|
+
validates :service_annotations, kv: { value_format: :string }, presence: true
|
51
|
+
validates :command, field: { format: :string }, presence: false
|
52
|
+
validates :image_pull_policy, field: { format: :string }, presence: false
|
53
|
+
validates :image_pull_secrets, array: { kind_of: Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisImagePullSecrets }, presence: false
|
54
|
+
|
55
|
+
def serialize
|
56
|
+
{}.tap do |result|
|
57
|
+
result[:dnsPolicy] = dns_policy
|
58
|
+
result[:podAnnotations] = pod_annotations.serialize
|
59
|
+
result[:image] = image
|
60
|
+
result[:hostNetwork] = host_network
|
61
|
+
result[:exporter] = exporter.serialize
|
62
|
+
result[:nodeSelector] = node_selector.serialize
|
63
|
+
result[:priorityClassName] = priority_class_name
|
64
|
+
result[:securityContext] = security_context.serialize
|
65
|
+
result[:storage] = storage.serialize
|
66
|
+
result[:customCommandRenames] = custom_command_renames.map(&:serialize)
|
67
|
+
result[:customConfig] = custom_config
|
68
|
+
result[:affinity] = affinity.serialize
|
69
|
+
result[:tolerations] = tolerations.map(&:serialize)
|
70
|
+
result[:resources] = resources.serialize
|
71
|
+
result[:shutdownConfigMap] = shutdown_config_map
|
72
|
+
result[:terminationGracePeriod] = termination_grace_period
|
73
|
+
result[:serviceAccountName] = service_account_name
|
74
|
+
result[:replicas] = replicas
|
75
|
+
result[:serviceAnnotations] = service_annotations.serialize
|
76
|
+
result[:command] = command
|
77
|
+
result[:imagePullPolicy] = image_pull_policy
|
78
|
+
result[:imagePullSecrets] = image_pull_secrets.map(&:serialize)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def kind_sym
|
83
|
+
:redis_failover_spec_redis
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# typed: true
|
2
|
+
|
3
|
+
module Kuby
|
4
|
+
module Redis
|
5
|
+
module DSL
|
6
|
+
module Databases
|
7
|
+
module V1
|
8
|
+
class RedisFailoverSpecRedisAffinity < ::KubeDSL::DSLObject
|
9
|
+
object_field(:pod_affinity) { Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisAffinityPodAffinity.new }
|
10
|
+
object_field(:node_affinity) { Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisAffinityNodeAffinity.new }
|
11
|
+
object_field(:pod_anti_affinity) { Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisAffinityPodAntiAffinity.new }
|
12
|
+
|
13
|
+
validates :pod_affinity, object: { kind_of: Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisAffinityPodAffinity }
|
14
|
+
validates :node_affinity, object: { kind_of: Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisAffinityNodeAffinity }
|
15
|
+
validates :pod_anti_affinity, object: { kind_of: Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisAffinityPodAntiAffinity }
|
16
|
+
|
17
|
+
def serialize
|
18
|
+
{}.tap do |result|
|
19
|
+
result[:podAffinity] = pod_affinity.serialize
|
20
|
+
result[:nodeAffinity] = node_affinity.serialize
|
21
|
+
result[:podAntiAffinity] = pod_anti_affinity.serialize
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def kind_sym
|
26
|
+
:redis_failover_spec_redis_affinity
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# typed: true
|
2
|
+
|
3
|
+
module Kuby
|
4
|
+
module Redis
|
5
|
+
module DSL
|
6
|
+
module Databases
|
7
|
+
module V1
|
8
|
+
class RedisFailoverSpecRedisAffinityNodeAffinity < ::KubeDSL::DSLObject
|
9
|
+
object_field(:required_during_scheduling_ignored_during_execution) { Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution.new }
|
10
|
+
array_field(:preferred_during_scheduling_ignored_during_execution) { Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution.new }
|
11
|
+
|
12
|
+
validates :required_during_scheduling_ignored_during_execution, object: { kind_of: Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution }
|
13
|
+
validates :preferred_during_scheduling_ignored_during_executions, array: { kind_of: Kuby::Redis::DSL::Databases::V1::RedisFailoverSpecRedisAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution }, presence: false
|
14
|
+
|
15
|
+
def serialize
|
16
|
+
{}.tap do |result|
|
17
|
+
result[:requiredDuringSchedulingIgnoredDuringExecution] = required_during_scheduling_ignored_during_execution.serialize
|
18
|
+
result[:preferredDuringSchedulingIgnoredDuringExecution] = preferred_during_scheduling_ignored_during_executions.map(&:serialize)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def kind_sym
|
23
|
+
:redis_failover_spec_redis_affinity_node_affinity
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|