fluent-plugin-kubernetes_metadata_filter 3.1.3 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8e5a90f306729056c922bded6d93b4718b5741306bf2a3ed57f694ceca07316a
4
- data.tar.gz: 98e5e2334f10e40123654286af7ee2841e0691969c251de9e6437430af01ae7b
3
+ metadata.gz: 1425638a4efbcc9ed55bee88eb1563ba071c6d7afc9ca0b9f556a4528bfb6f05
4
+ data.tar.gz: 531e074b6271d05fade448979dc11cd7d2d075bd2941587cb2341fd8e3f7076f
5
5
  SHA512:
6
- metadata.gz: 6fd2015c041919bdde2a3a6ef817de65054b3819b684ad6ce3b216b49c0a850281b1e14ca04c2db8556d4c6d6716cb39f2d882c2c1d2ab4cba4ddc0b46dde929
7
- data.tar.gz: 35f99fc6cb137c0e2714be1c515651358fd93af8bfa18e883c1f7747f04fd4f6d43cc9b4f2e8e88a62a618087f71f3c7bdd8a42ba343dba5d7a8ec2ebc1eb731
6
+ metadata.gz: 78aca0f62942579b5c1be309857a920ee623ff71903e9d00cc6415b7b8dcc37e7a23d4be8baa024c54959963fb4c356a352e42229c08b7257bd65281bf987faf
7
+ data.tar.gz: 5dda7ace28a80bf02c28ac7f2dc016ad83f056e1d85c95bc6b599554d8ef9145dc4643c490776ce7deaf1f8e968caa720cf024a27236e45cd844cbd88538d661
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fluent-plugin-kubernetes_metadata_filter (3.1.3)
5
- fluentd (>= 0.14.0, < 1.16)
4
+ fluent-plugin-kubernetes_metadata_filter (3.3.0)
5
+ fluentd (>= 0.14.0, < 1.17)
6
6
  kubeclient (>= 4.0.0, < 5.0.0)
7
7
  lru_redux
8
8
 
@@ -16,8 +16,8 @@ GEM
16
16
  charlock_holmes (0.7.7)
17
17
  codeclimate-test-reporter (0.6.0)
18
18
  simplecov (>= 0.7.1, < 1.0.0)
19
- concurrent-ruby (1.1.10)
20
- cool.io (1.7.1)
19
+ concurrent-ruby (1.2.2)
20
+ cool.io (1.8.0)
21
21
  copyright-header (1.0.22)
22
22
  github-linguist
23
23
  crack (0.4.5)
@@ -30,17 +30,17 @@ GEM
30
30
  ffi-compiler (1.0.1)
31
31
  ffi (>= 1.0.0)
32
32
  rake
33
- fluentd (1.15.3)
33
+ fluentd (1.16.2)
34
34
  bundler
35
35
  cool.io (>= 1.4.5, < 2.0.0)
36
36
  http_parser.rb (>= 0.5.1, < 0.9.0)
37
37
  msgpack (>= 1.3.1, < 2.0.0)
38
- serverengine (>= 2.3.0, < 3.0.0)
39
- sigdump (~> 0.2.2)
38
+ serverengine (>= 2.3.2, < 3.0.0)
39
+ sigdump (~> 0.2.5)
40
40
  strptime (>= 0.2.4, < 1.0.0)
41
41
  tzinfo (>= 1.0, < 3.0)
42
42
  tzinfo-data (~> 1.0)
43
- webrick (>= 1.4.2, < 1.8.0)
43
+ webrick (~> 1.4)
44
44
  yajl-ruby (~> 1.0)
45
45
  github-linguist (7.21.0)
46
46
  charlock_holmes (~> 0.7.7)
@@ -48,32 +48,33 @@ GEM
48
48
  mini_mime (~> 1.0)
49
49
  rugged (~> 1.0)
50
50
  hashdiff (1.0.1)
51
- http (4.4.1)
52
- addressable (~> 2.3)
51
+ http (5.1.1)
52
+ addressable (~> 2.8)
53
53
  http-cookie (~> 1.0)
54
54
  http-form_data (~> 2.2)
55
- http-parser (~> 1.2.0)
55
+ llhttp-ffi (~> 0.4.0)
56
56
  http-accept (1.7.0)
57
57
  http-cookie (1.0.5)
58
58
  domain_name (~> 0.5)
59
59
  http-form_data (2.3.0)
60
- http-parser (1.2.3)
61
- ffi-compiler (>= 1.0, < 2.0)
62
60
  http_parser.rb (0.8.0)
63
- jsonpath (1.1.2)
61
+ jsonpath (1.1.3)
64
62
  multi_json
65
- kubeclient (4.10.1)
66
- http (>= 3.0, < 5.0)
63
+ kubeclient (4.11.0)
64
+ http (>= 3.0, < 6.0)
67
65
  jsonpath (~> 1.0)
68
66
  recursive-open-struct (~> 1.1, >= 1.1.1)
69
67
  rest-client (~> 2.0)
68
+ llhttp-ffi (0.4.0)
69
+ ffi-compiler (~> 1.0)
70
+ rake (~> 13.0)
70
71
  lru_redux (1.1.0)
71
- mime-types (3.4.1)
72
+ mime-types (3.5.0)
72
73
  mime-types-data (~> 3.2015)
73
- mime-types-data (3.2022.0105)
74
+ mime-types-data (3.2023.0808)
74
75
  mini_mime (1.1.2)
75
76
  minitest (4.7.5)
76
- msgpack (1.6.0)
77
+ msgpack (1.7.2)
77
78
  multi_json (1.15.0)
78
79
  netrc (0.11.0)
79
80
  parallel (1.22.1)
@@ -105,9 +106,9 @@ GEM
105
106
  parser (>= 3.1.1.0)
106
107
  ruby-progressbar (1.11.0)
107
108
  rugged (1.4.3)
108
- serverengine (2.3.0)
109
+ serverengine (2.3.2)
109
110
  sigdump (~> 0.2.2)
110
- sigdump (0.2.4)
111
+ sigdump (0.2.5)
111
112
  simplecov (0.21.2)
112
113
  docile (~> 1.1)
113
114
  simplecov-html (~> 0.11)
@@ -120,9 +121,9 @@ GEM
120
121
  test-unit-rr (1.0.5)
121
122
  rr (>= 1.1.1)
122
123
  test-unit (>= 2.5.2)
123
- tzinfo (2.0.5)
124
+ tzinfo (2.0.6)
124
125
  concurrent-ruby (~> 1.0)
125
- tzinfo-data (1.2022.6)
126
+ tzinfo-data (1.2023.3)
126
127
  tzinfo (>= 1.0.0)
127
128
  unf (0.1.4)
128
129
  unf_ext
@@ -133,7 +134,7 @@ GEM
133
134
  addressable (>= 2.8.0)
134
135
  crack (>= 0.3.2)
135
136
  hashdiff (>= 0.4.0, < 2.0.0)
136
- webrick (1.7.0)
137
+ webrick (1.8.1)
137
138
  yajl-ruby (1.4.3)
138
139
 
139
140
  PLATFORMS
data/README.md CHANGED
@@ -55,6 +55,8 @@ when true (default: `true`)
55
55
  to trust the intermediate CA certs we do have, set this to `true` - this corresponds to
56
56
  the `openssl s_client -partial_chain` flag and `X509_V_FLAG_PARTIAL_CHAIN` (default: `false`)
57
57
  * `skip_labels` - Skip all label fields from the metadata.
58
+ * `skip_pod_labels` - Skip only pod label fields from the metadata.
59
+ * `skip_namespace_labels` - Skip only namespace label fields from the metadata.
58
60
  * `skip_container_metadata` - Skip some of the container data of the metadata. The metadata will not contain the container_image and container_image_id fields.
59
61
  * `skip_master_url` - Skip the master_url field from the metadata.
60
62
  * `skip_namespace_metadata` - Skip the namespace_id field from the metadata. The fetch_namespace_metadata function will be skipped. The plugin will be faster and cpu consumption will be less.
@@ -5,7 +5,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
 
6
6
  Gem::Specification.new do |gem|
7
7
  gem.name = 'fluent-plugin-kubernetes_metadata_filter'
8
- gem.version = '3.1.3'
8
+ gem.version = '3.3.0'
9
9
  gem.authors = ['OpenShift Cluster Logging','Jimmi Dyson']
10
10
  gem.email = ['team-logging@redhat.com','jimmidyson@gmail.com']
11
11
  gem.description = 'Filter plugin to add Kubernetes metadata'
@@ -17,7 +17,7 @@ Gem::Specification.new do |gem|
17
17
 
18
18
  gem.required_ruby_version = '>= 2.6.0'
19
19
 
20
- gem.add_runtime_dependency 'fluentd', ['>= 0.14.0', '< 1.16']
20
+ gem.add_runtime_dependency 'fluentd', ['>= 0.14.0', '< 1.17']
21
21
  gem.add_runtime_dependency 'kubeclient', ['>= 4.0.0', '< 5.0.0']
22
22
  gem.add_runtime_dependency 'lru_redux'
23
23
 
@@ -77,6 +77,8 @@ module Fluent::Plugin
77
77
  # the openssl s_client -partial_chain flag and X509_V_FLAG_PARTIAL_CHAIN
78
78
  config_param :ssl_partial_chain, :bool, default: false
79
79
  config_param :skip_labels, :bool, default: false
80
+ config_param :skip_pod_labels, :bool, default: false
81
+ config_param :skip_namespace_labels, :bool, default: false
80
82
  config_param :skip_container_metadata, :bool, default: false
81
83
  config_param :skip_master_url, :bool, default: false
82
84
  config_param :skip_namespace_metadata, :bool, default: false
@@ -198,7 +200,7 @@ module Fluent::Plugin
198
200
  @namespace_cache = LruRedux::TTL::ThreadSafeCache.new(@cache_size, @cache_ttl)
199
201
 
200
202
  @tag_to_kubernetes_name_regexp_compiled = Regexp.compile(@tag_to_kubernetes_name_regexp)
201
-
203
+
202
204
  # Use Kubernetes default service account if we're in a pod.
203
205
  if @kubernetes_url.nil?
204
206
  log.debug 'Kubernetes URL is not set - inspecting environ'
@@ -351,7 +353,7 @@ module Fluent::Plugin
351
353
  tag_match_data['pod_uuid']
352
354
  else
353
355
  tag_match_data['docker_id']
354
- end
356
+ end
355
357
  docker_id = tag_match_data.names.include?('docker_id') ? tag_match_data['docker_id'] : nil
356
358
  metadata = get_metadata_for_record(tag_match_data['namespace'], tag_match_data['pod_name'], tag_match_data['container_name'],
357
359
  cache_key, time, batch_miss_cache, docker_id)
@@ -40,7 +40,7 @@ module KubernetesMetadata
40
40
 
41
41
  def parse_namespace_metadata(namespace_object)
42
42
  labels = ''
43
- labels = syms_to_strs(namespace_object[:metadata][:labels].to_h) unless @skip_labels
43
+ labels = syms_to_strs(namespace_object[:metadata][:labels].to_h) unless (@skip_labels || @skip_namespace_labels)
44
44
 
45
45
  annotations = match_annotations(syms_to_strs(namespace_object[:metadata][:annotations].to_h))
46
46
 
@@ -55,7 +55,7 @@ module KubernetesMetadata
55
55
 
56
56
  def parse_pod_metadata(pod_object)
57
57
  labels = ''
58
- labels = syms_to_strs(pod_object[:metadata][:labels].to_h) unless @skip_labels
58
+ labels = syms_to_strs(pod_object[:metadata][:labels].to_h) unless (@skip_labels || @skip_pod_labels)
59
59
 
60
60
  annotations = match_annotations(syms_to_strs(pod_object[:metadata][:annotations].to_h))
61
61
 
@@ -53,7 +53,10 @@ http_interactions:
53
53
  "selfLink": "/api/v1/namespaces/default",
54
54
  "uid": "898268c8-4a36-11e5-9d81-42010af0194c",
55
55
  "resourceVersion": "6",
56
- "creationTimestamp": "2015-05-08T09:22:01Z"
56
+ "creationTimestamp": "2015-05-08T09:22:01Z",
57
+ "labels": {
58
+ "tenant": "test"
59
+ }
57
60
  },
58
61
  "spec": {
59
62
  "finalizers": [
@@ -49,7 +49,7 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
49
49
  d.instance.dump_stats
50
50
  assert_false(d.instance.instance_variable_get("@curr_time").nil?)
51
51
  end
52
-
52
+
53
53
  test 'disables stats when <= zero' do
54
54
  d = create_driver('stats_interval 0')
55
55
  assert_equal(0, d.instance.stats_interval)
@@ -199,6 +199,9 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
199
199
  'pod_name' => 'fabric8-console-controller-98rqc',
200
200
  'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
201
201
  'namespace_name' => 'default',
202
+ 'namespace_labels' => {
203
+ 'tenant' => 'test'
204
+ },
202
205
  'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
203
206
  'pod_ip' => '172.17.0.8',
204
207
  'master_url' => 'https://localhost:8443',
@@ -231,6 +234,9 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
231
234
  'pod_name' => 'fabric8-console-controller-98rqc',
232
235
  'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
233
236
  'namespace_name' => 'default',
237
+ 'namespace_labels' => {
238
+ 'tenant' => 'test'
239
+ },
234
240
  'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
235
241
  'pod_ip' => '172.17.0.8',
236
242
  'master_url' => 'https://localhost:8443',
@@ -330,6 +336,9 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
330
336
  'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
331
337
  'namespace_name' => 'default',
332
338
  'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
339
+ 'namespace_labels' => {
340
+ 'tenant' => 'test'
341
+ },
333
342
  'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
334
343
  'pod_ip' => '172.17.0.8',
335
344
  'master_url' => 'https://localhost:8443',
@@ -360,6 +369,9 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
360
369
  'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
361
370
  'namespace_name' => 'default',
362
371
  'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
372
+ 'namespace_labels' => {
373
+ 'tenant' => 'test'
374
+ },
363
375
  'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
364
376
  'pod_ip' => '172.17.0.8',
365
377
  'master_url' => 'https://localhost:8443',
@@ -410,6 +422,9 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
410
422
  'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
411
423
  'namespace_name' => 'default',
412
424
  'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
425
+ 'namespace_labels' => {
426
+ 'tenant' => 'test'
427
+ },
413
428
  'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
414
429
  'pod_ip' => '172.17.0.8',
415
430
  'master_url' => 'https://localhost:8443',
@@ -585,8 +600,8 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
585
600
  'host' => 'jimmi-redhat.localnet',
586
601
  'pod_name' => 'fabric8-console-controller-98rqc',
587
602
  'container_name' => 'fabric8-console-container',
588
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
589
603
  'namespace_name' => 'default',
604
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
590
605
  'container_image' => 'fabric8/hawtio-kubernetes:latest',
591
606
  'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
592
607
  'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
@@ -628,8 +643,8 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
628
643
  'container_name' => 'fabric8-console-container',
629
644
  'container_image' => 'fabric8/hawtio-kubernetes:latest',
630
645
  'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
631
- 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
632
646
  'namespace_name' => 'default',
647
+ 'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
633
648
  'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
634
649
  'pod_ip' => '172.17.0.8',
635
650
  'master_url' => 'https://localhost:8443',
@@ -643,7 +658,7 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
643
658
  end
644
659
 
645
660
  test 'processes all events when reading from MessagePackEventStream' do
646
- VCR.use_cassettes([{ name: 'valid_kubernetes_api_server' },
661
+ VCR.use_cassettes([{ name: 'valid_kubernetes_api_server' },
647
662
  { name: 'kubernetes_get_api_v1' },
648
663
  { name: 'kubernetes_get_pod' },
649
664
  { name: 'kubernetes_get_namespace_default' }]) do
@@ -675,6 +690,9 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
675
690
  'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
676
691
  'namespace_name' => 'default',
677
692
  'namespace_id' => '898268c8-4a36-11e5-9d81-42010af0194c',
693
+ 'namespace_labels' => {
694
+ 'tenant' => 'test'
695
+ },
678
696
  'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
679
697
  'pod_ip' => '172.17.0.8',
680
698
  'master_url' => 'https://localhost:8443',
@@ -718,5 +736,75 @@ class KubernetesMetadataFilterTest < Test::Unit::TestCase
718
736
  assert_equal(expected_kube_metadata, filtered[0])
719
737
  end
720
738
  end
739
+
740
+ test 'with docker & kubernetes metadata using skip namespace labels config param' do
741
+ VCR.use_cassettes([{ name: 'valid_kubernetes_api_server' }, { name: 'kubernetes_get_api_v1' }, { name: 'kubernetes_get_pod' },
742
+ { name: 'kubernetes_get_namespace_default' }]) do
743
+ filtered = emit({}, '
744
+ kubernetes_url https://localhost:8443
745
+ watch false
746
+ cache_size 1
747
+ stats_interval 0
748
+ skip_namespace_labels true
749
+ skip_master_url true
750
+ ')
751
+ expected_kube_metadata = {
752
+ 'docker'=>{
753
+ 'container_id'=>'49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
754
+ },
755
+ 'kubernetes' => {
756
+ 'host' => 'jimmi-redhat.localnet',
757
+ 'pod_name' => 'fabric8-console-controller-98rqc',
758
+ 'container_name' => 'fabric8-console-container',
759
+ 'container_image' => 'fabric8/hawtio-kubernetes:latest',
760
+ 'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
761
+ 'namespace_name' => 'default',
762
+ "namespace_id"=>"898268c8-4a36-11e5-9d81-42010af0194c",
763
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
764
+ 'pod_ip' => '172.17.0.8',
765
+ 'labels' => {
766
+ 'component' => 'fabric8Console'
767
+ }
768
+ }
769
+ }
770
+
771
+ assert_equal(expected_kube_metadata, filtered[0])
772
+ end
773
+ end
774
+ test 'with docker & kubernetes metadata using skip pod labels config param' do
775
+ VCR.use_cassettes([{ name: 'valid_kubernetes_api_server' }, { name: 'kubernetes_get_api_v1' }, { name: 'kubernetes_get_pod' },
776
+ { name: 'kubernetes_get_namespace_default' }]) do
777
+ filtered = emit({}, '
778
+ kubernetes_url https://localhost:8443
779
+ watch false
780
+ cache_size 1
781
+ stats_interval 0
782
+ skip_pod_labels true
783
+ skip_master_url true
784
+ ')
785
+ expected_kube_metadata = {
786
+ 'docker'=>{
787
+ 'container_id'=>'49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459'
788
+ },
789
+ 'kubernetes' => {
790
+ 'host' => 'jimmi-redhat.localnet',
791
+ 'pod_name' => 'fabric8-console-controller-98rqc',
792
+ 'container_name' => 'fabric8-console-container',
793
+ 'container_image' => 'fabric8/hawtio-kubernetes:latest',
794
+ 'container_image_id' => 'docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303',
795
+ 'namespace_name' => 'default',
796
+ "namespace_id"=>"898268c8-4a36-11e5-9d81-42010af0194c",
797
+ 'namespace_labels' => {
798
+ 'tenant' => 'test'
799
+ },
800
+ 'pod_id' => 'c76927af-f563-11e4-b32d-54ee7527188d',
801
+ 'pod_ip' => '172.17.0.8',
802
+ }
803
+ }
804
+
805
+ assert_equal(expected_kube_metadata, filtered[0])
806
+ end
807
+ end
808
+
721
809
  end
722
810
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-kubernetes_metadata_filter
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.3
4
+ version: 3.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenShift Cluster Logging
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-11-28 00:00:00.000000000 Z
12
+ date: 2023-08-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fluentd
@@ -20,7 +20,7 @@ dependencies:
20
20
  version: 0.14.0
21
21
  - - "<"
22
22
  - !ruby/object:Gem::Version
23
- version: '1.16'
23
+ version: '1.17'
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
@@ -30,7 +30,7 @@ dependencies:
30
30
  version: 0.14.0
31
31
  - - "<"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.16'
33
+ version: '1.17'
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: kubeclient
36
36
  requirement: !ruby/object:Gem::Requirement
@@ -290,7 +290,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
290
290
  - !ruby/object:Gem::Version
291
291
  version: '0'
292
292
  requirements: []
293
- rubygems_version: 3.1.4
293
+ rubygems_version: 3.1.6
294
294
  signing_key:
295
295
  specification_version: 4
296
296
  summary: Fluentd filter plugin to add Kubernetes metadata