blob: b49f01ac31ac4a26b0cb57ec4ba1fffe01c38e63 [file] [log] [blame]
Sergiusz Bazanski4d9e72c2019-01-13 22:06:33 +01001# Top level cluster configuration.
2
3local kube = import "../../kube/kube.libsonnet";
Sergiusz Bazanski49b9a132019-01-14 00:02:59 +01004local coredns = import "lib/coredns.libsonnet";
Sergiusz Bazanskiaf3be422019-01-17 18:57:19 +01005local metrics = import "lib/metrics.libsonnet";
6local calico = import "lib/calico.libsonnet";
Sergiusz Bazanski1e565dc2019-01-18 09:40:59 +01007local metallb = import "lib/metallb.libsonnet";
Sergiusz Bazanskia9c7e862019-04-01 17:56:28 +02008local nginx = import "lib/nginx.libsonnet";
Sergiusz Bazanskib7fcc672019-04-01 18:40:50 +02009local rook = import "lib/rook.libsonnet";
Piotr Dobrowolski79ddbc52019-04-02 13:20:15 +020010local certmanager = import "lib/cert-manager.libsonnet";
Sergiusz Bazanski4d9e72c2019-01-13 22:06:33 +010011
12local Cluster(fqdn) = {
13 local cluster = self,
14
15 // These are required to let the API Server contact kubelets.
16 crAPIServerToKubelet: kube.ClusterRole("system:kube-apiserver-to-kubelet") {
17 metadata+: {
18 annotations+: {
19 "rbac.authorization.kubernetes.io/autoupdate": "true",
20 },
21 labels+: {
22 "kubernets.io/bootstrapping": "rbac-defaults",
23 },
24 },
25 rules: [
26 {
27 apiGroups: [""],
28 resources: ["nodes/%s" % r for r in [ "proxy", "stats", "log", "spec", "metrics" ]],
29 verbs: ["*"],
30 },
31 ],
32 },
Sergiusz Bazanski5bebbeb2019-01-13 22:08:05 +010033 crbAPIServer: kube.ClusterRoleBinding("system:kube-apiserver") {
Sergiusz Bazanski4d9e72c2019-01-13 22:06:33 +010034 roleRef: {
35 apiGroup: "rbac.authorization.k8s.io",
36 kind: "ClusterRole",
37 name: cluster.crAPIServerToKubelet.metadata.name,
38 },
39 subjects: [
40 {
41 apiGroup: "rbac.authorization.k8s.io",
42 kind: "User",
43 # A cluster API Server authenticates with a certificate whose CN is == to the FQDN of the cluster.
44 name: fqdn,
45 },
46 ],
Sergiusz Bazanski49b9a132019-01-14 00:02:59 +010047 },
48
Sergiusz Bazanskiaf3be422019-01-17 18:57:19 +010049 // Calico network fabric
50 calico: calico.Environment {},
Sergiusz Bazanski49b9a132019-01-14 00:02:59 +010051 // CoreDNS for this cluster.
Sergiusz Bazanskiaf3be422019-01-17 18:57:19 +010052 dns: coredns.Environment {},
53 // Metrics Server
54 metrics: metrics.Environment {},
Sergiusz Bazanski1e565dc2019-01-18 09:40:59 +010055 // Metal Load Balancer
Sergiusz Bazanski14cbacb2019-04-01 18:00:44 +020056 metallb: metallb.Environment {
57 cfg+: {
58 addressPools: [
59 { name: "public-v4-1", protocol: "layer2", addresses: ["185.236.240.50-185.236.240.63"] },
60 ],
61 },
62 },
Sergiusz Bazanskia9c7e862019-04-01 17:56:28 +020063 // Main nginx Ingress Controller
64 nginx: nginx.Environment {},
Piotr Dobrowolski79ddbc52019-04-02 13:20:15 +020065 certmanager: certmanager.Environment {},
Sergiusz Bazanskic6da1272019-04-02 00:06:13 +020066
Sergiusz Bazanskib7fcc672019-04-01 18:40:50 +020067 // Rook Ceph storage
Sergiusz Bazanskic6da1272019-04-02 00:06:13 +020068 rook: rook.Operator {},
69 // waw1 ceph cluster
70 cephWaw1: rook.Cluster(cluster.rook, "ceph-waw1") {
71 spec: {
72 mon: {
73 count: 3,
74 allowMultiplePerNode: false,
75 },
76 storage: {
77 useAllNodes: false,
78 useAllDevices: false,
79 config: {
80 databaseSizeMB: "1024",
81 journalSizeMB: "1024",
82 },
83 nodes: [
84 {
85 name: "bc01n01.hswaw.net",
86 location: "rack=dcr01 chassis=bc01 host=bc01n01",
87 devices: [ { name: "sda" } ],
88 },
89 {
90 name: "bc01n02.hswaw.net",
91 location: "rack=dcr01 chassis=bc01 host=bc01n02",
92 devices: [ { name: "sda" } ],
93 },
94 {
95 name: "bc01n03.hswaw.net",
96 location: "rack=dcr01 chassis=bc01 host=bc01n03",
97 devices: [ { name: "sda" } ],
98 },
99 ],
100 },
101 },
102 },
Sergiusz Bazanski65f3b1d2019-04-02 01:05:38 +0200103 // redundant block storage
104 cephWaw1Redundant: rook.ECBlockPool(cluster.cephWaw1, "waw-hdd-redundant-1") {
105 spec: {
106 failureDomain: "host",
107 erasureCoded: {
108 dataChunks: 2,
109 codingChunks: 1,
110 },
111 },
112 },
Sergiusz Bazanski4d9e72c2019-01-13 22:06:33 +0100113};
114
Sergiusz Bazanski49b9a132019-01-14 00:02:59 +0100115
Sergiusz Bazanski4d9e72c2019-01-13 22:06:33 +0100116{
117 k0: Cluster("k0.hswaw.net"),
118}