This repository has been archived by the owner on Jun 14, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 14
/
kubernetes.go
85 lines (72 loc) · 3.52 KB
/
kubernetes.go
1
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
package apps
import (
"strings"
"github.com/flanksource/konfigadm/pkg/types"
)
var Kubernetes types.Phase = kubernetes{}
type kubernetes struct{}
func (k kubernetes) ApplyPhase(sys *types.Config, ctx *types.SystemContext) ([]types.Command, types.Filesystem, error) {
if sys.Kubernetes == nil {
return []types.Command{}, types.Filesystem{}, nil
}
version := sys.Kubernetes.Version
if strings.HasPrefix(version, "v") {
version = version[1:]
}
sys.
AppendPackageRepo(types.PackageRepo{
Name: "kubernetes",
URL: "https://apt.kubernetes.io/",
VersionCodeName: "kubernetes-xenial",
GPGKey: "https://packages.cloud.google.com/apt/doc/apt-key.gpg",
}, types.DEBIAN_LIKE).
AppendPackageRepo(types.PackageRepo{
Name: "kubernetes",
URL: "https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64",
GPGKey: "https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg",
}, types.REDHAT_LIKE).
AppendPackageRepo(types.PackageRepo{
Name: "kubernetes",
URL: "https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64",
GPGKey: "https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg",
}, types.FEDORA).
AppendPackageRepo(types.PackageRepo{
Name: "kubernetes",
URL: "https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64",
}, types.PHOTON)
sys.AppendPackages(&types.REDHAT_LIKE,
types.Package{Name: "kubelet", Version: withDefaultPatch(version, "0"), Mark: true},
types.Package{Name: "kubeadm", Version: withDefaultPatch(version, "0"), Mark: true},
types.Package{Name: "kubectl", Version: withDefaultPatch(version, "0"), Mark: true})
sys.AppendPackages(&types.FEDORA,
types.Package{Name: "kubelet", Version: withDefaultPatch(version, "0"), Mark: true},
types.Package{Name: "kubeadm", Version: withDefaultPatch(version, "0"), Mark: true},
types.Package{Name: "kubectl", Version: withDefaultPatch(version, "0"), Mark: true})
sys.AppendPackages(&types.PHOTON,
types.Package{Name: "kubelet", Version: withDefaultPatch(version, "0"), Mark: true},
types.Package{Name: "kubeadm", Version: withDefaultPatch(version, "0"), Mark: true},
types.Package{Name: "kubectl", Version: withDefaultPatch(version, "0"), Mark: true})
sys.AppendPackages(&types.DEBIAN_LIKE,
types.Package{Name: "kubelet", Version: withDefaultPatch(version, "00"), Mark: true},
types.Package{Name: "kubeadm", Version: withDefaultPatch(version, "00"), Mark: true},
types.Package{Name: "kubectl", Version: withDefaultPatch(version, "00"), Mark: true})
sys.AddPackage("socat ebtables ntp libseccomp nfs-utils tc", &types.REDHAT_LIKE)
sys.AddPackage("socat ebtables ntp libseccomp2 nfs-common", &types.DEBIAN_LIKE)
sys.AddPackage("socat ebtables ntp libseccomp nfs-utils", &types.PHOTON)
sys.AddCommand("modprobe br_filter")
sys.AddCommand("systemctl enable kubelet && systemctl start kubelet", &types.AMAZON_LINUX)
sys.Environment["KUBECONFIG"] = "/etc/kubernetes/admin.conf"
sys.Sysctls["vm.swappiness"] = "0"
sys.Sysctls["net.bridge.bridge-nf-call-iptables"] = "1"
sys.Sysctls["net.bridge.bridge-nf-call-ip6tables"] = "1"
sys.Sysctls["net.ipv4.ip_forward"] = "1"
fs := types.Filesystem{}
fs["/etc/modules-load.d/kubernetes.conf"] = types.File{Content: "overlay\nbr_netfilter"}
return []types.Command{}, fs, nil
}
func withDefaultPatch(version, patch string) string {
if strings.Contains(version, "-") {
return version
}
return version + "-" + patch
}