Class: Kubectl

Inherits:
Object
  • Object
show all
Defined in:
lib/kuberun/kubectl.rb,
lib/kuberun/kubectl/exec.rb

Overview

Handles running kubectl

Defined Under Namespace

Classes: Exec

Constant Summary collapse

CAT_MULTILINE =
'EOFCONFIG'
KUBECTL_OPTIONS =
{
  'certificate-authority': {},
  'client-certificate': {},
  'client-key': {},
  'cluster': {},
  'context': {},
  'insecure-skip-tls-verify': {},
  'kubeconfig': {},
  'namespace': { aliases: :'-n' },
  'token': {},
  'v': { type: :numeric, default: 0, desc: 'Log level passed to kubectl' },
}.freeze
SCRIPT_OPTIONS =
{
  'cluster-command': { type: 'string', default: '/bin/bash', desc: 'Command to run on cluster' },
  'use-first-pod': { type: 'boolean', default: false, desc: 'Should first existing pod be used automatically?' },
  'cleanup-pod': { type: 'boolean', default: false, desc: 'Should pod be removed after finishing?' },
  'perform-auth-check': { type: 'boolean', default: false, desc: 'Should auth check be performed?' },
  'pty': { type: 'boolean', default: false, desc: 'Should PTY be used?' },
}.freeze
OPTIONS =
KUBECTL_OPTIONS.merge(SCRIPT_OPTIONS).freeze

Instance Method Summary collapse

Instance Method Details

#auth_check(verb, resource:, resource_name: nil) ⇒ Object



38
39
40
# File 'lib/kuberun/kubectl.rb', line 38

def auth_check(verb, resource:, resource_name: nil)
  cmd.run(kubectl_base_command("auth can-i #{verb}", resource: resource, resource_name: resource_name))
end

#create(configuration:, options: nil) ⇒ Object



49
50
51
# File 'lib/kuberun/kubectl.rb', line 49

def create(configuration:, options: nil)
  cmd.run(kubectl_base_input_command('create', configuration: configuration, options: options))
end

#delete(resource:, resource_name:) ⇒ Object



57
58
59
# File 'lib/kuberun/kubectl.rb', line 57

def delete(resource:, resource_name:)
  cmd.run(kubectl_base_command('delete', resource: resource, resource_name: resource_name))
end

#exec(pod, options = {}) ⇒ Object



53
54
55
# File 'lib/kuberun/kubectl.rb', line 53

def exec(pod, options = {})
  Kubectl::Exec.new(self).exec(pod, options)
end

#get(resource:, resource_name: nil, options: nil) ⇒ Object



42
43
44
45
46
47
# File 'lib/kuberun/kubectl.rb', line 42

def get(resource:, resource_name: nil, options: nil)
  options = "#{options} --output=json"
  parsed_json do
    cmd.run(kubectl_base_command('get', resource: resource, resource_name: resource_name, options: options)).out
  end
end

#kubectl_base_command(verb, resource:, resource_name: nil, options: nil) ⇒ Object



61
62
63
64
65
# File 'lib/kuberun/kubectl.rb', line 61

def kubectl_base_command(verb, resource:, resource_name: nil, options: nil)
  base = "#{kubectl} #{options} #{verb} #{resource}"
  base = "#{base}/#{resource_name}" if resource_name
  base
end

#load_options(options) ⇒ Object



33
34
35
36
# File 'lib/kuberun/kubectl.rb', line 33

def load_options(options)
  self.options = options
  self.kubectl_options = parsed_options(options)
end