Ruby Data extract from Kubernetes API

12/11/2017

Trying to get the node role from Kubeclient api

Command: client.get_nodes()[0].metadata.labels

Kubeclient::Node beta.kubernetes.io/arch="amd64", 
  beta.kubernetes.io/instance-type="t2.medium", 
  beta.kubernetes.io/os="linux",
  failure-domain.beta.kubernetes.io/region="eu-west-1",
  failure-domain.beta.kubernetes.io/zone="eu-west-1a", 
  kubernetes.io/hostname="ip-X-X-XX-XX.eu-west-1.compute.internal", 
  kubernetes.io/role="**node**", node-role.kubernetes.io/node="">

I need to get the value for kubernetes.io/role="node" which is node, can some one help with the Ruby code to format this output.

-- renuraj
kubernetes
ruby

1 Answer

12/15/2017

maybe you can do this:

require 'kubeclient'

config = Kubeclient::Config.read('/path/to/.kube/config')

client = Kubeclient::Client.new(
    config.context.api_endpoint,
    config.context.api_version,
    {
        ssl_options: config.context.ssl_options,
        auth_options: config.context.auth_options
    }
)

// prints the label kubernetes.io/role
puts client.get_nodes()[0].metadata.labels['kubernetes.io/role']

// Iterate over all labels
client.get_nodes()[0].metadata.labels.each_pair do |key, value|
    puts "#{key} = #{value}"
end
-- cpanato
Source: StackOverflow