Class: KubernetesDeploy::KubeclientBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/kubernetes-deploy/kubeclient_builder.rb,
lib/kubernetes-deploy/kubeclient_builder/kube_config.rb

Defined Under Namespace

Classes: ContextMissingError, KubeConfig

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(kubeconfig: ENV["KUBECONFIG"]) ⇒ KubeclientBuilder

Returns a new instance of KubeclientBuilder.



20
21
22
# File 'lib/kubernetes-deploy/kubeclient_builder.rb', line 20

def initialize(kubeconfig: ENV["KUBECONFIG"])
  @kubeconfig = kubeconfig || "#{Dir.home}/.kube/config"
end

Instance Attribute Details

#kubeconfigObject (readonly)

Returns the value of attribute kubeconfig.



18
19
20
# File 'lib/kubernetes-deploy/kubeclient_builder.rb', line 18

def kubeconfig
  @kubeconfig
end

Class Method Details

.kubeconfigObject



14
15
16
# File 'lib/kubernetes-deploy/kubeclient_builder.rb', line 14

def self.kubeconfig
  new.kubeconfig
end

Instance Method Details

#build_apiextensions_v1beta1_kubeclient(context) ⇒ Object



71
72
73
74
75
76
77
# File 'lib/kubernetes-deploy/kubeclient_builder.rb', line 71

def build_apiextensions_v1beta1_kubeclient(context)
  build_kubeclient(
    api_version: "v1beta1",
    context: context,
    endpoint_path: "/apis/apiextensions.k8s.io"
  )
end

#build_apps_v1beta1_kubeclient(context) ⇒ Object



63
64
65
66
67
68
69
# File 'lib/kubernetes-deploy/kubeclient_builder.rb', line 63

def build_apps_v1beta1_kubeclient(context)
  build_kubeclient(
    api_version: "v1beta1",
    context: context,
    endpoint_path: "/apis/apps"
  )
end

#build_autoscaling_v1_kubeclient(context) ⇒ Object



79
80
81
82
83
84
85
# File 'lib/kubernetes-deploy/kubeclient_builder.rb', line 79

def build_autoscaling_v1_kubeclient(context)
  build_kubeclient(
    api_version: "v2beta1",
    context: context,
    endpoint_path: "/apis/autoscaling"
  )
end

#build_batch_v1_kubeclient(context) ⇒ Object



47
48
49
50
51
52
53
# File 'lib/kubernetes-deploy/kubeclient_builder.rb', line 47

def build_batch_v1_kubeclient(context)
  build_kubeclient(
    api_version: "v1",
    context: context,
    endpoint_path: "/apis/batch/"
  )
end

#build_batch_v1beta1_kubeclient(context) ⇒ Object



39
40
41
42
43
44
45
# File 'lib/kubernetes-deploy/kubeclient_builder.rb', line 39

def build_batch_v1beta1_kubeclient(context)
  build_kubeclient(
    api_version: "v1beta1",
    context: context,
    endpoint_path: "/apis/batch/"
  )
end

#build_networking_v1_kubeclient(context) ⇒ Object



95
96
97
98
99
100
101
# File 'lib/kubernetes-deploy/kubeclient_builder.rb', line 95

def build_networking_v1_kubeclient(context)
  build_kubeclient(
    api_version: "v1",
    context: context,
    endpoint_path: "/apis/networking.k8s.io"
  )
end

#build_policy_v1beta1_kubeclient(context) ⇒ Object



55
56
57
58
59
60
61
# File 'lib/kubernetes-deploy/kubeclient_builder.rb', line 55

def build_policy_v1beta1_kubeclient(context)
  build_kubeclient(
    api_version: "v1beta1",
    context: context,
    endpoint_path: "/apis/policy/"
  )
end

#build_rbac_v1_kubeclient(context) ⇒ Object



87
88
89
90
91
92
93
# File 'lib/kubernetes-deploy/kubeclient_builder.rb', line 87

def build_rbac_v1_kubeclient(context)
  build_kubeclient(
    api_version: "v1",
    context: context,
    endpoint_path: "/apis/rbac.authorization.k8s.io"
  )
end

#build_v1_kubeclient(context) ⇒ Object



24
25
26
27
28
29
# File 'lib/kubernetes-deploy/kubeclient_builder.rb', line 24

def build_v1_kubeclient(context)
  build_kubeclient(
    api_version: "v1",
    context: context
  )
end

#build_v1beta1_kubeclient(context) ⇒ Object



31
32
33
34
35
36
37
# File 'lib/kubernetes-deploy/kubeclient_builder.rb', line 31

def build_v1beta1_kubeclient(context)
  build_kubeclient(
    api_version: "v1beta1",
    context: context,
    endpoint_path: "/apis/extensions/"
  )
end

#config_filesObject



103
104
105
106
# File 'lib/kubernetes-deploy/kubeclient_builder.rb', line 103

def config_files
  # Split the list by colon for Linux and Mac, and semicolon for Windows.
  kubeconfig.split(/[:;]/).map!(&:strip).reject(&:empty?)
end

#validate_config_filesObject



108
109
110
111
112
113
114
115
116
117
118
119
120
# File 'lib/kubernetes-deploy/kubeclient_builder.rb', line 108

def validate_config_files
  errors = []
  if config_files.empty?
    errors << "Kube config file name(s) not set in $KUBECONFIG"
  else
    config_files.each do |f|
      unless File.file?(f)
        errors << "Kube config not found at #{f}"
      end
    end
  end
  errors
end