Puppet Class: k8s::server::scheduler

Defined in:
manifests/server/scheduler.pp

Summary

Installs and configures a Kubernetes scheduler

Overview

Parameters:

  • ensure (K8s::Ensure) (defaults to: $k8s::server::ensure)
  • control_plane_url (Stdlib::HTTPUrl) (defaults to: $k8s::control_plane_url)
  • arguments (Hash[String, Data]) (defaults to: {})
  • cert_path (Stdlib::Unixpath) (defaults to: $k8s::server::tls::cert_path)
  • ca_cert (Stdlib::Unixpath) (defaults to: $k8s::server::tls::ca_cert)
  • cert (Stdlib::Unixpath) (defaults to: "${cert_path}/kube-scheduler.pem")
  • key (Stdlib::Unixpath) (defaults to: "${cert_path}/kube-scheduler.key")
  • container_registry (String[1]) (defaults to: $k8s::container_registry)
  • container_image (String[1]) (defaults to: 'kube-scheduler')
  • container_image_tag (Optional[String[1]]) (defaults to: $k8s::container_image_tag)


2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'manifests/server/scheduler.pp', line 2

class k8s::server::scheduler (
  K8s::Ensure $ensure = $k8s::server::ensure,

  Stdlib::HTTPUrl $control_plane_url = $k8s::control_plane_url,

  Hash[String, Data] $arguments = {},

  Stdlib::Unixpath $cert_path = $k8s::server::tls::cert_path,
  Stdlib::Unixpath $ca_cert   = $k8s::server::tls::ca_cert,
  Stdlib::Unixpath $cert      = "${cert_path}/kube-scheduler.pem",
  Stdlib::Unixpath $key       = "${cert_path}/kube-scheduler.key",

  String[1] $container_registry            = $k8s::container_registry,
  String[1] $container_image               = 'kube-scheduler',
  Optional[String[1]] $container_image_tag = $k8s::container_image_tag,
) {
  assert_private()

  k8s::binary { 'kube-scheduler':
    ensure => $ensure,
  }

  $_kubeconfig = '/srv/kubernetes/kube-scheduler.kubeconf'
  if $k8s::packaging != 'container' {
    $_addn_args = {
      kubeconfig => $_kubeconfig,
    }
  } else {
    $_addn_args = {}
  }

  $_args = k8s::format_arguments({
      leader_elect => true,
  } + $_addn_args + $arguments)

  if $k8s::packaging == 'container' {
    fail('Not implemented yet')
    $_image = "${container_registry}/${container_image}:${pick($container_image_tag, "v${k8s::version}")}"
    kubectl_apply { 'kube-scheduler':
      kubeconfig  => '/root/.kube/config',
      api_version => 'apps/v1',
      kind        => 'Deployment',
      namespace   => 'kube-system',
      content     => {},
    }
  } else {
    kubeconfig { $_kubeconfig:
      ensure          => $ensure,
      owner           => $k8s::user,
      group           => $k8s::group,
      server          => $control_plane_url,
      current_context => 'default',

      ca_cert         => $ca_cert,
      client_cert     => $cert,
      client_key      => $key,
    }
    $_sysconfig_path = pick($k8s::sysconfig_path, '/etc/sysconfig')
    file { "${_sysconfig_path}/kube-scheduler":
      content => epp('k8s/sysconfig.epp', {
          comment               => 'Kubernetes Scheduler configuration',
          environment_variables => {
            'KUBE_SCHEDULER_ARGS' => $_args.join(' '),
          },
      }),
      notify  => Service['kube-scheduler'],
    }
    systemd::unit_file { 'kube-scheduler.service':
      ensure  => $ensure,
      content => epp('k8s/service.epp', {
          name  => 'kube-scheduler',

          desc  => 'Kubernetes Scheduler',
          doc   => 'https://github.com/GoogleCloudPlatform/kubernetes',

          dir   => '/srv/kubernetes',
          bin   => 'kube-scheduler',
          needs => ['kube-apiserver.service'],
          user  => $k8s::user,
          group => $k8s::group,
      }),
      require => [
        File["${_sysconfig_path}/kube-scheduler"],
        User[$k8s::user],
      ],
      notify  => Service['kube-scheduler'],
    }
    service { 'kube-scheduler':
      ensure    => stdlib::ensure($ensure, 'service'),
      enable    => true,
      subscribe => K8s::Binary['kube-scheduler'],
    }
  }
}