Skip to content
This repository was archived by the owner on Sep 26, 2025. It is now read-only.

Commit c43f620

Browse files
authored
Merge pull request #135 from splunk/support-ipv6
Add support for IPv6
2 parents 9a5ad2c + f2af2a3 commit c43f620

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

docker/Dockerfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ RUN yum update -y \
4646
RUN groupadd -r $FLUENT_USER && \
4747
useradd -r -g $FLUENT_USER $FLUENT_USER && \
4848
mkdir -p /fluentd/log /fluentd/etc /fluentd/plugins && \
49-
chown -R $FLUENT_USER /fluentd && chgrp -R $FLUENT_USER /fluentd
49+
chown -R $FLUENT_USER /fluentd && chgrp -R $FLUENT_USER /fluentd && \
50+
chmod +t /tmp
5051

5152
USER $FLUENT_USER
5253
CMD bundle exec fluentd -c /fluentd/etc/fluent.conf

lib/fluent/plugin/in_kubernetes_metrics.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
require 'fluent/plugin/input'
1818
require 'kubeclient'
1919
require 'multi_json'
20+
require 'resolv'
2021

2122
module Fluent
2223
module Plugin
@@ -76,6 +77,8 @@ class KubernetesMetricsInput < Fluent::Plugin::Input
7677
def configure(conf)
7778
super
7879

80+
@kubelet_address = "[#{@kubelet_address}]" if @kubelet_address =~ Resolv::IPv6::Regex
81+
7982
if @use_rest_client
8083
raise Fluentd::ConfigError, 'node_name is required' if @node_name.nil? || @node_name.empty?
8184
else
@@ -136,6 +139,7 @@ def init_without_kubeconfig(_options = {})
136139
if @kubernetes_url.nil?
137140
# Use Kubernetes default service account if we're in a pod.
138141
env_host = ENV['KUBERNETES_SERVICE_HOST']
142+
env_host = "[#{env_host}]" if env_host =~ Resolv::IPv6::Regex
139143
env_port = ENV['KUBERNETES_SERVICE_PORT']
140144
if env_host && env_port
141145
@kubernetes_url = "https://#{env_host}:#{env_port}/api/"

test/plugin/test_in_kubernetes_metrics.rb

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,30 @@ def create_driver(conf = CONFIG)
109109
assert_equal true, d.instance.use_rest_client
110110
end
111111

112+
test 'IPv6 node configuration' do
113+
IPv6_CONFIG = %(
114+
type kubernetes_metrics
115+
node_name generics-aws-node-name
116+
tag kube.*
117+
insecure_ssl true
118+
interval 10s
119+
use_rest_client true
120+
use_rest_client_ssl false
121+
kubelet_port 10_255
122+
kubelet_address fd55:4d62:e00f::1
123+
)
124+
assert_nothing_raised(Fluent::ConfigError) do
125+
create_driver(IPv6_CONFIG)
126+
end
127+
128+
d = create_driver(IPv6_CONFIG)
129+
assert_equal '[fd55:4d62:e00f::1]', d.instance.kubelet_address
130+
assert_equal 'http://[fd55:4d62:e00f::1]:10255/stats/summary', d.instance.instance_variable_get('@kubelet_url')
131+
assert_equal 'http://[fd55:4d62:e00f::1]:10255/stats', d.instance.instance_variable_get('@kubelet_url_stats')
132+
assert_equal 'http://[fd55:4d62:e00f::1]:10255/metrics/cadvisor', d.instance.instance_variable_get('@cadvisor_url')
133+
134+
end
135+
112136
sub_test_case 'node_unit_tests' do
113137
test 'test_emit_cpu_metrics' do
114138
assert_not_nil @@hash_map_test.key?('kube.node.cpu.usage')

0 commit comments

Comments
 (0)