fluent-plugin-kubernetes-objects 1.1.2 → 1.1.3
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/Gemfile.lock +36 -29
- data/VERSION +1 -0
- data/fluent-plugin-kubernetes-objects.gemspec +5 -6
- data/lib/fluent/plugin/in_kubernetes_objects.rb +43 -22
- data/test/fluent/plugin/in_kubernetes_objects_test.rb +6 -1
- data/test/test_helper.rb +1 -2
- metadata +24 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 483397cd1c9ccdc7009f104b3c6e8ef94ecf5f56822406e862980301bb846d64
|
|
4
|
+
data.tar.gz: 523e83eda243fc7d3faf5d2ef9fac4cf9540e84f814b33d03d2f2c93006df4cb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9c6502046925124ec272b53251d3e08fcb6c0ee69a45f35f7ba87618dac86e4fa7f5665f6340f529d2bd207418314151715df0cc29b24bf0e894ce43c3c0a0b5
|
|
7
|
+
data.tar.gz: d58d7d3e507c8f77597751868918f04a3fc624785d78956b7deeeaaa7491dabfd4175bf8f331ea2e82a72c93e2e36fbda25185338c09632f37b659debb80f809
|
data/Gemfile.lock
CHANGED
|
@@ -1,64 +1,72 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
fluent-plugin-kubernetes-objects (1.1.
|
|
5
|
-
fluentd (~> 1.
|
|
6
|
-
|
|
4
|
+
fluent-plugin-kubernetes-objects (1.1.3)
|
|
5
|
+
fluentd (~> 1.9.1)
|
|
6
|
+
http_parser.rb (= 0.5.3)
|
|
7
|
+
kubeclient (~> 4.6.0)
|
|
7
8
|
|
|
8
9
|
GEM
|
|
9
10
|
remote: https://rubygems.org/
|
|
10
11
|
specs:
|
|
11
12
|
addressable (2.6.0)
|
|
12
13
|
public_suffix (>= 2.0.2, < 4.0)
|
|
13
|
-
|
|
14
|
+
concurrent-ruby (1.1.6)
|
|
15
|
+
cool.io (1.6.0)
|
|
14
16
|
crack (0.4.3)
|
|
15
17
|
safe_yaml (~> 1.0.0)
|
|
16
|
-
dig_rb (1.0.1)
|
|
17
18
|
docile (1.3.1)
|
|
18
|
-
domain_name (0.5.
|
|
19
|
+
domain_name (0.5.20190701)
|
|
19
20
|
unf (>= 0.0.5, < 1.0.0)
|
|
20
|
-
|
|
21
|
+
ffi (1.12.2)
|
|
22
|
+
ffi-compiler (1.0.1)
|
|
23
|
+
ffi (>= 1.0.0)
|
|
24
|
+
rake
|
|
25
|
+
fluentd (1.9.2)
|
|
21
26
|
cool.io (>= 1.4.5, < 2.0.0)
|
|
22
|
-
dig_rb (~> 1.0.0)
|
|
23
27
|
http_parser.rb (>= 0.5.1, < 0.7.0)
|
|
24
|
-
msgpack (>=
|
|
28
|
+
msgpack (>= 1.3.1, < 2.0.0)
|
|
25
29
|
serverengine (>= 2.0.4, < 3.0.0)
|
|
26
30
|
sigdump (~> 0.2.2)
|
|
27
31
|
strptime (>= 0.2.2, < 1.0.0)
|
|
28
|
-
tzinfo (
|
|
32
|
+
tzinfo (>= 1.0, < 3.0)
|
|
29
33
|
tzinfo-data (~> 1.0)
|
|
30
34
|
yajl-ruby (~> 1.0)
|
|
31
35
|
hashdiff (0.3.8)
|
|
32
|
-
http (
|
|
36
|
+
http (4.3.0)
|
|
33
37
|
addressable (~> 2.3)
|
|
34
38
|
http-cookie (~> 1.0)
|
|
35
|
-
http-form_data (~> 2.
|
|
36
|
-
|
|
39
|
+
http-form_data (~> 2.2)
|
|
40
|
+
http-parser (~> 1.2.0)
|
|
41
|
+
http-accept (1.7.0)
|
|
37
42
|
http-cookie (1.0.3)
|
|
38
43
|
domain_name (~> 0.5)
|
|
39
|
-
http-form_data (2.
|
|
40
|
-
|
|
44
|
+
http-form_data (2.2.0)
|
|
45
|
+
http-parser (1.2.1)
|
|
46
|
+
ffi-compiler (>= 1.0, < 2.0)
|
|
47
|
+
http_parser.rb (0.5.3)
|
|
41
48
|
json (2.1.0)
|
|
42
|
-
kubeclient (4.
|
|
43
|
-
http (
|
|
49
|
+
kubeclient (4.6.0)
|
|
50
|
+
http (>= 3.0, < 5.0)
|
|
44
51
|
recursive-open-struct (~> 1.0, >= 1.0.4)
|
|
45
52
|
rest-client (~> 2.0)
|
|
46
|
-
mime-types (3.
|
|
53
|
+
mime-types (3.3.1)
|
|
47
54
|
mime-types-data (~> 3.2015)
|
|
48
|
-
mime-types-data (3.
|
|
55
|
+
mime-types-data (3.2019.1009)
|
|
49
56
|
minitest (5.11.3)
|
|
50
|
-
msgpack (1.
|
|
57
|
+
msgpack (1.3.3)
|
|
51
58
|
netrc (0.11.0)
|
|
52
59
|
power_assert (1.1.3)
|
|
53
60
|
public_suffix (3.0.3)
|
|
54
61
|
rake (12.3.2)
|
|
55
62
|
recursive-open-struct (1.1.0)
|
|
56
|
-
rest-client (2.0
|
|
63
|
+
rest-client (2.1.0)
|
|
64
|
+
http-accept (>= 1.7.0, < 2.0)
|
|
57
65
|
http-cookie (>= 1.0.2, < 2.0)
|
|
58
66
|
mime-types (>= 1.16, < 4.0)
|
|
59
67
|
netrc (~> 0.8)
|
|
60
68
|
safe_yaml (1.0.4)
|
|
61
|
-
serverengine (2.1
|
|
69
|
+
serverengine (2.2.1)
|
|
62
70
|
sigdump (~> 0.2.2)
|
|
63
71
|
sigdump (0.2.4)
|
|
64
72
|
simplecov (0.16.1)
|
|
@@ -69,14 +77,13 @@ GEM
|
|
|
69
77
|
strptime (0.2.3)
|
|
70
78
|
test-unit (3.3.0)
|
|
71
79
|
power_assert
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
tzinfo-data (1.2019.1)
|
|
80
|
+
tzinfo (2.0.1)
|
|
81
|
+
concurrent-ruby (~> 1.0)
|
|
82
|
+
tzinfo-data (1.2019.3)
|
|
76
83
|
tzinfo (>= 1.0.0)
|
|
77
84
|
unf (0.1.4)
|
|
78
85
|
unf_ext
|
|
79
|
-
unf_ext (0.0.7.
|
|
86
|
+
unf_ext (0.0.7.6)
|
|
80
87
|
webmock (3.5.1)
|
|
81
88
|
addressable (>= 2.3.6)
|
|
82
89
|
crack (>= 0.3.2)
|
|
@@ -90,10 +97,10 @@ DEPENDENCIES
|
|
|
90
97
|
bundler (~> 2.0)
|
|
91
98
|
fluent-plugin-kubernetes-objects!
|
|
92
99
|
minitest (~> 5.11)
|
|
93
|
-
rake (~> 12.
|
|
100
|
+
rake (~> 12.0)
|
|
94
101
|
simplecov
|
|
95
102
|
test-unit (~> 3.3)
|
|
96
103
|
webmock (~> 3.5)
|
|
97
104
|
|
|
98
105
|
BUNDLED WITH
|
|
99
|
-
2.
|
|
106
|
+
2.1.4
|
data/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.1.3
|
|
@@ -24,20 +24,19 @@ Gem::Specification.new do |spec|
|
|
|
24
24
|
CODE_OF_CONDUCT.md README.md LICENSE
|
|
25
25
|
fluent-plugin-kubernetes-objects.gemspec
|
|
26
26
|
Gemfile Gemfile.lock
|
|
27
|
-
Rakefile
|
|
27
|
+
Rakefile VERSION
|
|
28
28
|
] + Dir.glob('lib/**/**').reject(&File.method(:directory?))
|
|
29
29
|
|
|
30
30
|
spec.bindir = 'exe'
|
|
31
31
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
32
|
-
|
|
33
32
|
spec.required_ruby_version = '>= 2.3.0'
|
|
34
|
-
|
|
35
|
-
spec.add_runtime_dependency '
|
|
36
|
-
spec.add_runtime_dependency '
|
|
33
|
+
spec.add_runtime_dependency 'fluentd', '~> 1.9.1'
|
|
34
|
+
spec.add_runtime_dependency 'kubeclient', '~> 4.6.0'
|
|
35
|
+
spec.add_runtime_dependency 'http_parser.rb', '= 0.5.3'
|
|
37
36
|
|
|
38
37
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
|
39
38
|
spec.add_development_dependency 'minitest', '~> 5.11'
|
|
40
|
-
spec.add_development_dependency 'rake', '~> 12.
|
|
39
|
+
spec.add_development_dependency 'rake', '~> 12.0'
|
|
41
40
|
spec.add_development_dependency 'test-unit', '~> 3.3' # required by fluent/test.rb
|
|
42
41
|
spec.add_development_dependency 'webmock', '~> 3.5'
|
|
43
42
|
end
|
|
@@ -102,7 +102,6 @@ module Fluent::Plugin
|
|
|
102
102
|
end
|
|
103
103
|
|
|
104
104
|
def close
|
|
105
|
-
@watchers.each &:finish if @watchers
|
|
106
105
|
super
|
|
107
106
|
end
|
|
108
107
|
|
|
@@ -118,6 +117,21 @@ module Fluent::Plugin
|
|
|
118
117
|
[@tag_prefix, item_name, @tag_suffix].join
|
|
119
118
|
end
|
|
120
119
|
|
|
120
|
+
def init_with_kubeconfig()
|
|
121
|
+
options = {}
|
|
122
|
+
config = Kubeclient::Config.read @kubeconfig
|
|
123
|
+
current_context = config.context
|
|
124
|
+
|
|
125
|
+
@client = Kubeclient::Client.new(
|
|
126
|
+
current_context.api_endpoint,
|
|
127
|
+
current_context.api_version,
|
|
128
|
+
options.merge(
|
|
129
|
+
ssl_options: current_context.ssl_options,
|
|
130
|
+
auth_options: current_context.auth_options
|
|
131
|
+
)
|
|
132
|
+
)
|
|
133
|
+
end
|
|
134
|
+
|
|
121
135
|
def initialize_client
|
|
122
136
|
# mostly borrowed from Fluentd Kubernetes Metadata Filter Plugin
|
|
123
137
|
if @kubernetes_url.nil?
|
|
@@ -173,16 +187,7 @@ module Fluent::Plugin
|
|
|
173
187
|
end
|
|
174
188
|
|
|
175
189
|
def start_watchers
|
|
176
|
-
@
|
|
177
|
-
o = o.to_h.dup
|
|
178
|
-
o[:as] = :raw
|
|
179
|
-
resource_name = o.delete(:resource_name)
|
|
180
|
-
watch_interval = o.delete(:interval)
|
|
181
|
-
|
|
182
|
-
version = @storage.get(resource_name)
|
|
183
|
-
o[:resource_version] = version if version
|
|
184
|
-
create_watcher_thread resource_name, o, watch_interval
|
|
185
|
-
end
|
|
190
|
+
@watch_objects.each(&method(:create_watcher_thread))
|
|
186
191
|
end
|
|
187
192
|
|
|
188
193
|
def create_pull_thread(conf)
|
|
@@ -225,19 +230,35 @@ module Fluent::Plugin
|
|
|
225
230
|
end
|
|
226
231
|
end
|
|
227
232
|
|
|
228
|
-
def create_watcher_thread(
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
233
|
+
def create_watcher_thread(conf)
|
|
234
|
+
options = conf.to_h.dup
|
|
235
|
+
options[:as] = :raw
|
|
236
|
+
resource_name = options[:resource_name]
|
|
237
|
+
version = @storage.get(resource_name)
|
|
238
|
+
if version
|
|
239
|
+
options[:resource_version] = version
|
|
240
|
+
else
|
|
241
|
+
options[:resource_version] = 0
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
thread_create :"watch_#{resource_name}" do
|
|
245
|
+
while thread_current_running?
|
|
246
|
+
@client.public_send("watch_#{resource_name}", options).tap do |watcher|
|
|
247
|
+
tag = generate_tag "#{resource_name}"
|
|
248
|
+
watcher.each do |entity|
|
|
249
|
+
begin
|
|
250
|
+
entity = JSON.parse(entity)
|
|
251
|
+
router.emit tag, Fluent::Engine.now, entity
|
|
252
|
+
options[:resource_version] = entity['object']['metadata']['resourceVersion']
|
|
253
|
+
@storage.put resource_name, entity['object']['metadata']['resourceVersion']
|
|
254
|
+
rescue => e
|
|
255
|
+
log.info "Got exception #{e} parsing entity #{entity}. Resetting watcher."
|
|
256
|
+
end
|
|
257
|
+
end
|
|
238
258
|
end
|
|
239
|
-
|
|
259
|
+
end
|
|
240
260
|
end
|
|
241
261
|
end
|
|
242
262
|
end
|
|
243
263
|
end
|
|
264
|
+
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require "test_helper"
|
|
2
|
+
require 'fluent/plugin/in_kubernetes_objects.rb'
|
|
2
3
|
|
|
3
4
|
describe Fluent::Plugin::KubernetesObjectsInput do
|
|
4
5
|
include Fluent::Test::Helpers
|
|
@@ -109,9 +110,12 @@ describe Fluent::Plugin::KubernetesObjectsInput do
|
|
|
109
110
|
</watch>
|
|
110
111
|
CONF
|
|
111
112
|
|
|
113
|
+
stub_k8s_events params: {resourceVersion: "0"}
|
|
114
|
+
stub_k8s_events params: {resourceVersion: "6621683"}
|
|
115
|
+
|
|
112
116
|
d.run expect_emits: 1, timeout: 3
|
|
113
117
|
events = d.events
|
|
114
|
-
expect(events.all? { |e| e[0] == 'kubernetes.events
|
|
118
|
+
expect(events.all? { |e| e[0] == 'kubernetes.events'}).must_equal true
|
|
115
119
|
end
|
|
116
120
|
|
|
117
121
|
it "should use checkpoints for watching" do
|
|
@@ -133,6 +137,7 @@ describe Fluent::Plugin::KubernetesObjectsInput do
|
|
|
133
137
|
CONF
|
|
134
138
|
|
|
135
139
|
stub_k8s_events params: {resourceVersion: "123456"}
|
|
140
|
+
stub_k8s_events params: {resourceVersion: "6621683"}
|
|
136
141
|
|
|
137
142
|
d.run expect_emits: 1, timeout: 3
|
|
138
143
|
ensure
|
data/test/test_helper.rb
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
require 'simplecov'
|
|
2
2
|
SimpleCov.start
|
|
3
3
|
|
|
4
|
-
$LOAD_PATH.unshift
|
|
4
|
+
$LOAD_PATH.unshift(File.expand_path('..', __dir__))
|
|
5
5
|
|
|
6
6
|
# suppress warning, when require the 'http' library shows circle require warning
|
|
7
7
|
# which is pretty annoying (kubeclient depends on http for watch_stream)
|
|
8
8
|
_verbose = $VERBOSE
|
|
9
9
|
$VERBOSE = nil
|
|
10
|
-
require 'fluent/plugin/in_kubernetes_objects'
|
|
11
10
|
$VERBOSE = _verbose
|
|
12
11
|
|
|
13
12
|
require 'fluent/test'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fluent-plugin-kubernetes-objects
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Splunk Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2020-02-21 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: fluentd
|
|
@@ -16,28 +16,42 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
19
|
+
version: 1.9.1
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version:
|
|
26
|
+
version: 1.9.1
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: kubeclient
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
33
|
+
version: 4.6.0
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version:
|
|
40
|
+
version: 4.6.0
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: http_parser.rb
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - '='
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: 0.5.3
|
|
48
|
+
type: :runtime
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - '='
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: 0.5.3
|
|
41
55
|
- !ruby/object:Gem::Dependency
|
|
42
56
|
name: bundler
|
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -72,14 +86,14 @@ dependencies:
|
|
|
72
86
|
requirements:
|
|
73
87
|
- - "~>"
|
|
74
88
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: '12.
|
|
89
|
+
version: '12.0'
|
|
76
90
|
type: :development
|
|
77
91
|
prerelease: false
|
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
93
|
requirements:
|
|
80
94
|
- - "~>"
|
|
81
95
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: '12.
|
|
96
|
+
version: '12.0'
|
|
83
97
|
- !ruby/object:Gem::Dependency
|
|
84
98
|
name: test-unit
|
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -122,6 +136,7 @@ files:
|
|
|
122
136
|
- LICENSE
|
|
123
137
|
- README.md
|
|
124
138
|
- Rakefile
|
|
139
|
+
- VERSION
|
|
125
140
|
- fluent-plugin-kubernetes-objects.gemspec
|
|
126
141
|
- lib/fluent/plugin/in_kubernetes_objects.rb
|
|
127
142
|
- test/fluent/plugin/in_kubernetes_objects_test.rb
|
|
@@ -152,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
152
167
|
- !ruby/object:Gem::Version
|
|
153
168
|
version: '0'
|
|
154
169
|
requirements: []
|
|
155
|
-
rubygems_version: 3.
|
|
170
|
+
rubygems_version: 3.1.1
|
|
156
171
|
signing_key:
|
|
157
172
|
specification_version: 4
|
|
158
173
|
summary: Fluentd Plugin for Kubernetes Objects.
|