module Mortar::ClientHelper

Public Instance Methods

build_kubeconfig_from_env() click to toggle source

@return [K8s::Config]

# File lib/mortar/mixins/client_helper.rb, line 23
def build_kubeconfig_from_env
  token = ENV['KUBE_TOKEN']
  token = Base64.strict_decode64(token)

  K8s::Config.new(
    clusters: [
      {
        name: 'kubernetes',
        cluster: {
          server: ENV['KUBE_SERVER'],
          certificate_authority_data: ENV['KUBE_CA']
        }
      }
    ],
    users: [
      {
        name: 'mortar',
        user: {
          token: token
        }
      }
    ],
    contexts: [
      {
        name: 'mortar',
        context: {
          cluster: 'kubernetes',
          user: 'mortar'
        }
      }
    ],
    preferences: {},
    current_context: 'mortar'
  )
rescue ArgumentError
  signal_usage_error "KUBE_TOKEN env doesn't seem to be base64 encoded!"
end
client() click to toggle source

@return [K8s::Client]

# File lib/mortar/mixins/client_helper.rb, line 6
def client
  @client ||= create_client
end
create_client() click to toggle source
# File lib/mortar/mixins/client_helper.rb, line 10
def create_client
  if ENV['KUBE_TOKEN'] && ENV['KUBE_CA'] && ENV['KUBE_SERVER']
    K8s::Client.new(K8s::Transport.config(build_kubeconfig_from_env))
  elsif ENV['KUBECONFIG']
    K8s::Client.config(K8s::Config.load_file(ENV['KUBECONFIG']))
  elsif File.exist?(File.join(Dir.home, '.kube', 'config'))
    K8s::Client.config(K8s::Config.load_file(File.join(Dir.home, '.kube', 'config')))
  else
    K8s::Client.in_cluster_config
  end
end